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

Yumin Qi yumin.qi at oracle.com
Wed Oct 17 14:15:48 PDT 2012


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.

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

   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