Request for review: 8000797: NPG: is_pseudo_string_at() doesn't work

Coleen Phillimore coleen.phillimore at
Wed Feb 20 11:59:41 PST 2013

On 2/20/2013 2:51 PM, John Rose wrote:
> On Feb 20, 2013, at 10:20 AM, Coleen Phillimore 
> <coleen.phillimore at <mailto:coleen.phillimore at>> 
> wrote:
>> Summary: Add JVM_CONSTANT_PseudoString in place of 
>> JVM_CONSTANT_Object and use this tag to distinguish patched pseudo 
>> strings. The original string is retained if it was present.
> This is reasonable; it is a good cleanup.  If you can propose a name 
> better than "PseudoString" I'm all ears.

If the string is really meaningless, maybe it can be deleted and we 
don't need this JVM_CONSTANT_PseudoString.  The only reason I kept 
"String" in the name is because I thought the string would have some 
meaning to be preserved.

> Consider getting rid of set_has_pseudo_string.  That flag was present 
> (IIRC) only to tell the GC that there might be non-perm oops in the 
> constant pool.  Do we still need that?

I'd be happy to.  I noticed it wasn't being used.   Neither is 
_has_invokedynamic for that matter.   _has_preresolution does do something.
>> I'm not sure how class file reconstitution for pseudo-strings is 
>> going to work, but I thought it was prudent to leave the Symbol* in 
>> the slot for the patched string.
> If you really wanted to reconstitute a class file for an anonymous 
> class, and if that class has oop patching (pseudo-strings), you would 
> need either to (a) reconstitute the patches array handed to 
> Unsafe.defineAnonymousClass, or (b) accept whatever odd strings were 
> there first, as an approximation.  The "odd strings" are totally 
> insignificant, and are typically something like 
> InvokerBytecodeGenerator::constantPlaceholder).

Maybe there isn't a way or API to reconstitute an anonymous class. I 
don't know if there is.  I'm not sure how to reconstitute a normal class 
in the first place.   Maybe Serguei can comment.   If this class cannot 
be reconsitituted, I'll change this to remove the string in the patched 
case and won't need JVM_CONSTANT_PseudoString (and the constant for 
Object can be removed too).


> — John

-------------- next part --------------
An HTML attachment was scrubbed...

More information about the hotspot-runtime-dev mailing list