--- old/src/share/vm/oops/objArrayOop.inline.hpp 2015-10-08 22:15:47.694303373 +0200 +++ new/src/share/vm/oops/objArrayOop.inline.hpp 2015-10-08 22:15:47.644304567 +0200 @@ -30,12 +30,13 @@ #include "runtime/globals.hpp" inline oop objArrayOopDesc::obj_at(int index) const { + objArrayOop p = (objArrayOop) oopDesc::bs()->read_barrier((oop) this); // With UseCompressedOops decode the narrow oop in the objArray to an // uncompressed oop. Otherwise this is simply a "*" operator. if (UseCompressedOops) { - return load_decode_heap_oop(obj_at_addr(index)); + return load_decode_heap_oop(p->obj_at_addr(index)); } else { - return load_decode_heap_oop(obj_at_addr(index)); + return load_decode_heap_oop(p->obj_at_addr(index)); } }