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

Coleen Phillimore coleen.phillimore at oracle.com
Wed Feb 20 20:11:13 PST 2013


Thanks to John's feedback, I've modified this change again to revert back to my original change to zero out the Symbol* to indicate pseudo string (could be thought of as "patched string"). Also cleaned up unused constant pool Object constant and unused flags. Reran all the tests.

http://cr.openjdk.java.net/~coleenp/8000797_2/

Thanks, Coleen

On 2/20/2013 1:20 PM, Coleen Phillimore wrote:

Since nobody replied to my code review request, I modified the change.

Summary: Add JVMCONSTANTPseudoString in place of JVMCONSTANTObject and use this tag to distinguish patched pseudo strings. The original string is retained if it was present. 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. I noticed that JVMCONSTANTObject is no longer used so reused that constant to be PseudoString. I had an edit to go in the other direction (if a pseudo-string is patched into a constant pool, make it a JVMCONSTANTObject), but this didn't fully capture that the constant pool slot also points to a Symbol. John or Christian, can you confirm that you don't plan to use object constants anymore? open webrev at http://cr.openjdk.java.net/~coleenp/8000797/ bug link at http://bugs.sun.com/viewbug.do?bugid=8000797 Tested with vm.quick.testlist (including parallelclassloading and mlvm tests) and java/lang/invoke and java/lang/instrument tests. Thanks, Coleen On 2/8/2013 4:59 PM, Coleen Phillimore wrote: Summary: Null out the original string when patching constant pool with pseudo-string

This call ispseudostring() conditionalized a pseudostringat() call, but since it always failed, it went to stringat() which returned the same thing. The only thing that seems to treat pseudo-string and regular strings differently is the verifier. The verifier pushes an object for pseudo string vs. an object of type java/lang/String. open webrev at http://cr.openjdk.java.net/~coleenp/8000797/ bug link at http://bugs.sun.com/viewbug.do?bugid=8000797 Tested with vm.mlvm.testlists and java/lang/invoke tests. Thanks, Coleen



More information about the serviceability-dev mailing list