for review (M): 6863023: need non-perm oops in code cache for JSR 292

John Rose 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 mailing list