< prev index next >
src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp
Print this page
rev 50904 : 8205523: Explicit barriers for interpreter
rev 50905 : [mq]: JDK-8205523-01-x86.patch
@@ -834,10 +834,11 @@
__ bind(L);
}
#endif // ASSERT
__ bind(done);
+ __ resolve(IS_NOT_NULL, r0);
}
// add space for monitor & lock
__ sub(sp, sp, entry_size); // add space for a monitor entry
__ sub(esp, esp, entry_size);
@@ -1060,10 +1061,11 @@
__ ldrw(off, Address(esp, wordSize)); // offset
__ add(buf, buf, off); // + offset
__ ldrw(crc, Address(esp, 4*wordSize)); // Initial CRC
} else {
__ ldr(buf, Address(esp, 2*wordSize)); // byte[] array
+ __ resolve(IS_NOT_NULL | ACCESS_READ, buf);
__ add(buf, buf, arrayOopDesc::base_offset_in_bytes(T_BYTE)); // + header size
__ ldrw(off, Address(esp, wordSize)); // offset
__ add(buf, buf, off); // + offset
__ ldrw(crc, Address(esp, 3*wordSize)); // Initial CRC
}
@@ -1104,10 +1106,13 @@
__ ldrw(end, Address(esp)); // int end
__ ldrw(off, Address(esp, wordSize)); // int offset
__ sub(len, end, off);
__ ldr(buf, Address(esp, 2*wordSize)); // byte[] buf | long buf
+ if (kind == Interpreter::java_util_zip_CRC32C_updateBytes) {
+ __ resolve(IS_NOT_NULL | ACCESS_READ, buf);
+ }
__ add(buf, buf, off); // + offset
if (kind == Interpreter::java_util_zip_CRC32C_updateDirectByteBuffer) {
__ ldrw(crc, Address(esp, 4*wordSize)); // long crc
} else {
__ add(buf, buf, arrayOopDesc::base_offset_in_bytes(T_BYTE)); // + header size
< prev index next >