RFR: 8199739: Use HeapAccess when loading oops from static fields in javaClasses.cpp (original) (raw)

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<>::oopload instead of oopDesc::loaddecodeheapoop 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<>::oopload 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