RFR: 8199739: Use HeapAccess when loading oops from static fields in javaClasses.cpp

Roman Kennke rkennke at redhat.com
Sat Mar 17 10:39:01 UTC 2018


Am 17.03.2018 um 05:11 schrieb Kim Barrett:
>> On Mar 16, 2018, at 10:39 AM, Stefan Karlsson <stefan.karlsson at oracle.com> wrote:
>>
>> Hi all,
>>
>> Please review this patch to use HeapAccess<>::oop_load instead of oopDesc::load_decode_heap_oop when loading oops from static fields in javaClasses.cpp:
>>
>> http://cr.openjdk.java.net/~stefank/8199739/webrev.01/
>> https://bugs.openjdk.java.net/browse/JDK-8199739
>>
>> It's necessary to use HeapAccess<>::oop_load to inject load barriers for GCs that need them.
>>
>> Thanks,
>> StefanK
> 
> ------------------------------------------------------------------------------ 
> src/hotspot/share/classfile/javaClasses.cpp.
> 
> 1870   address addr = ik->static_field_addr(static_unassigned_stacktrace_offset);
> 1871   return HeapAccess<>::oop_load((HeapWord*)addr);
> 
> I'm not sure this is sufficient.  Isn't static_field_addr just
> fundamentally broken for Shenandoah?

It is not totally broken (I think _addr() calls resolve() which kinda
does what we need), but the following would be perfect:

> but I think such an access needs to be 
> HeapAccess<>::load_at(mirror, offset)

Thank you, Roman



More information about the hotspot-dev mailing list