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

Kim Barrett kim.barrett at oracle.com
Sat Mar 17 04:11:42 UTC 2018


> 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?

Currently:
*(mirror + offset)

Proposed change:
HeapAccess<>::oop_load(mirror + offset)

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

(I have an email thread about this with me, Coleen, and ErikO from
mid-December. I don't have anything in that thread from Erik though.
I think we discussed it on slack, but that's been deleted.)

------------------------------------------------------------------------------



More information about the hotspot-dev mailing list