--- a/hotspot/src/cpu/x86/vm/assembler_x86.cpp Thu Apr 07 21:32:23 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/assembler_x86.cpp Fri Apr 08 17:03:31 2011 -0700
@@ -7941,12 +7941,12 @@
#endif
push(rax); // save rax,
// addr may contain rsp so we will have to adjust it based on the push
- // we just did
+ // we just did (and on 64 bit we do two pushes)
// NOTE: 64bit seemed to have had a bug in that it did movq(addr, rax); which
// stores rax into addr which is backwards of what was intended.
if (addr.uses(rsp)) {
lea(rax, addr);
- pushptr(Address(rax, BytesPerWord));
+ pushptr(Address(rax, LP64_ONLY(2 *) BytesPerWord));
} else {
pushptr(addr);
}
@@ -8396,6 +8396,17 @@
movptr(dst, src);
}
+// Doesn't do verfication, generates fixed size code
+void MacroAssembler::load_heap_oop_not_null(Register dst, Address src) {
+#ifdef _LP64
+ if (UseCompressedOops) {
+ movl(dst, src);
+ decode_heap_oop_not_null(dst);
+ } else
+#endif
+ movptr(dst, src);
+}
+
void MacroAssembler::store_heap_oop(Address dst, Register src) {
#ifdef _LP64
if (UseCompressedOops) {