src/cpu/aarch64/vm/compiledIC_aarch64.cpp

Print this page

        

*** 68,87 **** if (base == NULL) return; // CodeBuffer::expand failed // static stub relocation stores the instruction address of the call __ relocate(static_stub_Relocation::spec(mark)); // static stub relocation also tags the Method* in the code-stream. __ mov_metadata(rmethod, (Metadata*)NULL); ! __ b(__ pc()); assert((__ offset() - offset) <= (int)to_interp_stub_size(), "stub too big"); __ end_a_stub(); } #undef __ int CompiledStaticCall::to_interp_stub_size() { ! // count a mov mem --> to 3 movz/k and a branch ! return 4 * NativeInstruction::instruction_size; } // Relocation entries for call stub, compiled java to interpreter. int CompiledStaticCall::reloc_to_interp_stub() { return 4; // 3 in emit_to_interp_stub + 1 in emit_call --- 68,87 ---- if (base == NULL) return; // CodeBuffer::expand failed // static stub relocation stores the instruction address of the call __ relocate(static_stub_Relocation::spec(mark)); // static stub relocation also tags the Method* in the code-stream. __ mov_metadata(rmethod, (Metadata*)NULL); ! __ movptr(rscratch1, 0); ! __ br(rscratch1); assert((__ offset() - offset) <= (int)to_interp_stub_size(), "stub too big"); __ end_a_stub(); } #undef __ int CompiledStaticCall::to_interp_stub_size() { ! return 7 * NativeInstruction::instruction_size; } // Relocation entries for call stub, compiled java to interpreter. int CompiledStaticCall::reloc_to_interp_stub() { return 4; // 3 in emit_to_interp_stub + 1 in emit_call