for review (M): 6863023: need non-perm oops in code cache for JSR 292
John.Rose at Sun.COM
Wed Jul 22 01:53:36 PDT 2009
In order to inline method handles at invokedynamic instructions, it is
necessary to manipulate MethodHandle and CallSite constants from
generated code. Since these objects are created by ordinary user code
and subject to usual GC, they are not preallocated in the perm gen.
Currently compiled code requires that any oop embedded as an
instruction constant or any other nmethod part must be
OopDesc::is_perm. For example, internal method objects and classes
and interned strings are permanent so that they can be manipulated
from compiled code.
This restriction is a bug for JSR 292. Luckily, there is a simple fix.
More information about the hotspot-compiler-dev