RFR: 8000818: SA constant pool need to reference to reference map after permgen removal

Coleen Phillimore coleen.phillimore at oracle.com
Wed Oct 17 18:26:10 PDT 2012


On 10/17/2012 5:15 PM, Yumin Qi wrote:
> Coleen,
>
>   This is rewrite the byte code to its original form.  SA read core(or 
> process) get the snap shot, which method code already rewrite in 
> hospot. This is the reverse process to dump java classes from SA.
>
>   _ldc and _ldc_w are got from hotspot byte code, ie, _fast_aldc and 
> _fast_aldc_w. Now we need to fix the constantpool index for them. The 
> index now is in reference map, they before are in constant pool cache.

Yes, but your code is wrong.  At lines 145 and 152 you are changing the 
index for Bytecodes::_ldc which are _not_ rewritten to point to 
reference array.    If you see Bytecodes::_fast_aldc these bytecode 
indexes have been rewritten to point to the resolved references array.

>
>     for _invoke_dynamic, the code is there, I don't know how to verify 
> if it works the way it should be.

There were changes in the VM which this code doesn't have.   See 
src/share/vm/interpreter/rewriter.cpp for the VM version, look for 
Bytecodes::_invokehandle.

Coleen

>
>   Thanks
>   Yumin
>
> On 10/17/2012 10:16 AM, Coleen Phillimore wrote:
>>
>> Yumin,
>>
>> I'm confused what this file is supposed to do.   Why is this 
>> rewriting bytecodes?   Or is it reversing bytecode rewriting?
>>
>> Before rewriting _ldc points to a constant pool index.  After, only 
>> ldc bytecodes that point to string or jsr 292 oops will be rewritten 
>> to point to the resolved_references array and the bytecode is changed 
>> to _fast_aldc, otherwise the ldc index is left alone.   So if it's 
>> reversing rewriting, then changing lines 145 and 152 to _fast_aldc 
>> would make whatever this does work.
>>
>> It looks like jsr 292 code is not reflected in this file.   More 
>> copying for another day unless this whole SA is rearchitected.
>>
>> thanks,
>> Coleen
>>
>> On 10/17/2012 12:51 AM, Yumin Qi wrote:
>>> Hi, all
>>>
>>>   May I have your codereview on
>>>
>>> http://cr.openjdk.java.net/~minqi/8000818/ 
>>> <http://cr.openjdk.java.net/%7Eminqi/8000818/>
>>>
>>> 8000818: SA constant pool need to reference to reference map after 
>>> permgen removal
>>> Summary: After permgen removal, constant pool changed to put _ldc 
>>> and _ldc_w (fast_ldc and fast_ldcw) index to reference map, no 
>>> longer calculated via constant pool cache.
>>> Also, there is a mistake in 6879063: SA should use hsdis. Bytes.swap 
>>> should only check if the underlying platform is big endian  since 
>>> java code follows big endian.  Revert it back to its orginal form, 
>>> else it will fail  ClassDump.
>>>
>>> Reviewed-by:
>>> Contributed-by: yumin.qi at oracle.com
>>>
>>>
>>> Thanks
>>> Yumin



More information about the hotspot-runtime-dev mailing list