Review request (M): 7118863: Move sizeof(klassOopDesc) into the *Klass::*_offset_in_bytes() functions
Tom Rodriguez
tom.rodriguez at oracle.com
Wed Dec 14 11:49:50 PST 2011
Looks good.
tom
On Dec 13, 2011, at 1:10 PM, Stefan Karlsson wrote:
> Updated patch:
> http://cr.openjdk.java.net/~stefank/7118863/webrev.02/
>
> The function names and the return types have been changed, to prevent this change from silently breaking ports of HotSpot.
>
> The compile.cpp oddity will be fixed before this is pushed.
>
> StefanK
>
> On 2011-12-07 13:52, Stefan Karlsson wrote:
>> Please review this REF.
>>
>> http://cr.openjdk.java.net/~stefank/7118863/webrev/
>>
>> The main motivation for this patch is to make it easier to merge with the permgen project. But, IMHO, they also help the code by not having different ways to go from a klass field offset to an offset against the klassOopDesc.
>>
>> Two things to note about this patch.
>> 1) There's one place in the code where we don't add sizeof(klassOopDesc). I maintain this oddity and will leave the correct fix for a later change.
>> src/share/vm/opto/compile.cpp
>>
>> 2) I have no way to verify the shark changes.
>> src/share/vm/shark/sharkIntrinsics.cpp
>> src/share/vm/shark/sharkTopLevelBlock.cpp
>>
>> From the RFE:
>> The *Klass::*_offset_in_bytes() functions are used to get the offset to a field in a Klass. All places where they are used, we add something like sizeof(klassOopDesc) to make the offset against the klassOopDesc instead.
>>
>> For example in opto/memnode.cpp:
>> if (tkls->offset() == Klass::access_flags_offset_in_bytes() + (int)sizeof(oopDesc)) {
>>
>> There's a couple of variants to this:
>> instanceKlass::init_thread_offset_in_bytes() + sizeof(klassOopDesc)
>> Klass::access_flags_offset_in_bytes() + (int)sizeof(oopDesc)
>> Klass::secondary_supers_offset_in_bytes() + klassOopDesc::header_size() * HeapWordSize
>> Klass::java_mirror_offset_in_bytes() klassOopDesc::klass_part_offset_in_bytes()
>>
>> The proposal is to move all these size adjustments into the *Klass:*_offset_in_bytes() functions.
>
More information about the hotspot-dev
mailing list