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 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.
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 JVM_CONSTANT_Object 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 JVM_CONSTANT_Object), 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/view_bug.do?bug_id=8000797
Tested with vm.quick.testlist (including parallel_class_loading 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 is_pseudo_string() conditionalized a pseudo_string_at()
call, but since it always failed, it went to string_at() 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/view_bug.do?bug_id=8000797
Tested with vm.mlvm.testlists and java/lang/invoke tests.
Thanks,
Coleen