< prev index next >
src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp
Print this page
rev 50715 : 8205523: Explicit barriers for interpreter
*** 806,815 ****
--- 806,816 ----
__ bind(L);
}
#endif // ASSERT
__ bind(done);
+ __ resolve_for_write(OOP_NOT_NULL, r0);
}
// add space for monitor & lock
__ sub(sp, sp, entry_size); // add space for a monitor entry
__ sub(esp, esp, entry_size);
*** 1032,1041 ****
--- 1033,1043 ----
__ 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_for_read(OOP_NOT_NULL, 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
}
*** 1076,1085 ****
--- 1078,1090 ----
__ 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_for_read(OOP_NOT_NULL, 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 >