2 Replies Latest reply: Sep 23, 2010 12:55 AM by 843829 RSS

    "made not entrant" and "made zombie" with jit compiler

    843829
      Hi,

      I'm trying to figure out a performance issue with jit-ed methods, and the PrintCompilation option gave me :
      ...
      14 made not entrant java.util.ArrayList::indexOf (67 bytes)
      ...
      14 made zombie java.util.ArrayList::indexOf (67 bytes)
      ...

      My issue is indeed related to indexOf method. Does anyone have information on what zombie and not entrant mean ?

      Thanks !
      Christian.
        • 1. Re: "made not entrant" and "made zombie" with jit compiler
          843829
          I have the same question!
          • 2. Re: "made not entrant" and "made zombie" with jit compiler
            843829
            I have found a good explanation by Cliff Click here:
            http://www.javagaming.org/index.php?topic=8627.0

            Zombie methods are methods whose code has been made invalid by class loading. Generally the server compiler makes aggressive inlining decisions of non-final methods. As long as the inlined method is never overridden the code is correct. When a subclass is loaded and the method overridden, the compiled code is broken for all future calls to it. The code gets declared "not entrant" (no future callers to the broken code), but sometimes existing callers can keep using the code. In the case of inlining, that's not good enough; existing callers' stack frames are "deoptimized" when they return to the code from nested calls (or just if they are running in the code). When no more stack frames hold PC's into the broken code it's declared a "zombie" - ready for removal once the GC gets around to it.