diff options
Diffstat (limited to 'src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.cpp')
-rw-r--r-- | src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.cpp | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.cpp b/src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.cpp index f28d8d6e8..547ca82c1 100644 --- a/src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.cpp +++ b/src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.cpp @@ -404,23 +404,12 @@ void C1_MacroAssembler::inline_cache_check(Register receiver, Register iCache) { // explicit NULL check not needed since load from [klass_offset] causes a trap // check against inline cache assert(!MacroAssembler::needs_explicit_null_check(oopDesc::klass_offset_in_bytes()), "must add explicit null check"); - int start_offset = offset(); - - load_klass(rscratch1, receiver); - cmp(rscratch1, iCache); - - // if icache check fails, then jump to runtime routine - // Note: RECEIVER must still contain the receiver! - Label dont; - br(Assembler::EQ, dont); - b(RuntimeAddress(SharedRuntime::get_ic_miss_stub())); - bind(dont); - const int ic_cmp_size = 4 * 4; - assert(UseCompressedClassPointers || offset() - start_offset == ic_cmp_size, "check alignment in emit_method_entry"); + + cmp_klass(receiver, iCache, rscratch1); } -void C1_MacroAssembler::build_frame(int frame_size_in_bytes) { +void C1_MacroAssembler::build_frame(int framesize) { // If we have to make this method not-entrant we'll overwrite its // first instruction with a jump. For this action to be legal we // must ensure that this first instruction is a B, BL, NOP, BKPT, @@ -428,18 +417,15 @@ void C1_MacroAssembler::build_frame(int frame_size_in_bytes) { nop(); // Make sure there is enough stack space for this method's activation. // Note that we do this before doing an enter(). - generate_stack_overflow_check(frame_size_in_bytes); - enter(); - sub(sp, sp, frame_size_in_bytes); // does not emit code for frame_size == 0 + generate_stack_overflow_check(framesize); + MacroAssembler::build_frame(framesize + 2 * wordSize); if (NotifySimulator) { notify(Assembler::method_entry); } } - -void C1_MacroAssembler::remove_frame(int frame_size_in_bytes) { - add(sp, sp, frame_size_in_bytes); // Does not emit code for frame_size == 0 - ldp(rfp, lr, Address(post(sp, 2 * wordSize))); +void C1_MacroAssembler::remove_frame(int framesize) { + MacroAssembler::remove_frame(framesize + 2 * wordSize); if (NotifySimulator) { notify(Assembler::method_reentry); } |