[aarch64-port-dev ] Fix register usage in generate_verify_oop()
Andrew Haley
aph at redhat.com
Thu Jun 19 14:40:28 UTC 2014
generate_verify_oop's error reporting was broken. I don't think
it ever worked.
Andrew.
# HG changeset patch
# User aph
# Date 1403011817 14400
# Tue Jun 17 09:30:17 2014 -0400
# Node ID f6b18d9a37d99880e982db1ec70f68d1e17fa8c3
# Parent e1af2a22237811f065ecadbcbc2113e102fc7a29
Fix register usage in generate_verify_oop().
diff -r e1af2a222378 -r f6b18d9a37d9 src/cpu/aarch64/vm/stubGenerator_aarch64.cpp
--- a/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp Mon Jun 16 07:25:03 2014 -0400
+++ b/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp Tue Jun 17 09:30:17 2014 -0400
@@ -754,10 +754,10 @@
// Stack after saving c_rarg3:
// [tos + 0]: saved c_rarg3
// [tos + 1]: saved c_rarg2
- // [tos + 2]: saved rscratch2
- // [tos + 3]: saved lr
- // [tos + 4]: saved rscratch1
- // [tos + 5]: saved r0
+ // [tos + 2]: saved lr
+ // [tos + 3]: saved rscratch2
+ // [tos + 4]: saved r0
+ // [tos + 5]: saved rscratch1
address generate_verify_oop() {
StubCodeMark mark(this, "StubRoutines", "verify_oop");
@@ -765,9 +765,6 @@
Label exit, error;
- // __ pushf();
- // __ push(r12);
-
// save c_rarg2 and c_rarg3
__ stp(c_rarg3, c_rarg2, Address(__ pre(sp, -16)));
@@ -807,21 +804,15 @@
__ push(RegSet::range(r0, r29), sp);
// debug(char* msg, int64_t pc, int64_t regs[])
- __ ldr(c_rarg0, Address(sp, rscratch1->encoding())); // pass address of error message
- __ mov(c_rarg1, Address(sp, lr)); // pass return address
- __ mov(c_rarg2, sp); // pass address of regs on stack
+ __ mov(c_rarg0, rscratch1); // pass address of error message
+ __ mov(c_rarg1, lr); // pass return address
+ __ mov(c_rarg2, sp); // pass address of regs on stack
#ifndef PRODUCT
assert(frame::arg_reg_save_area_bytes == 0, "not expecting frame reg save area");
#endif
BLOCK_COMMENT("call MacroAssembler::debug");
__ mov(rscratch1, CAST_FROM_FN_PTR(address, MacroAssembler::debug64));
__ blrt(rscratch1, 3, 0, 1);
- __ pop(RegSet::range(r0, r29), sp);
-
- __ ldp(rscratch2, lr, Address(__ post(sp, 2 * wordSize)));
- __ ldp(r0, rscratch1, Address(__ post(sp, 2 * wordSize)));
-
- __ ret(lr);
return start;
}
More information about the aarch64-port-dev
mailing list