< prev index next >

src/cpu/ppc/vm/compiledIC_ppc.cpp

Print this page

        

@@ -92,14 +92,16 @@
 //
 // Usage of r1 and r2 in the stubs allows to distinguish them.
 
 const int IC_pos_in_java_to_interp_stub = 8;
 #define __ _masm.
-address CompiledStaticCall::emit_to_interp_stub(CodeBuffer &cbuf) {
+address CompiledStaticCall::emit_to_interp_stub(CodeBuffer &cbuf, address mark/* = NULL*/) {
 #ifdef COMPILER2
+  if (mark == NULL) {
   // Get the mark within main instrs section which is set to the address of the call.
-  address call_addr = cbuf.insts_mark();
+    mark = cbuf.insts_mark();
+  }
 
   // Note that the code buffer's insts_mark is always relative to insts.
   // That's why we must use the macroassembler to generate a stub.
   MacroAssembler _masm(&cbuf);
 

@@ -115,11 +117,11 @@
   Register reg_scratch = R11_scratch1;
 
   // Create a static stub relocation which relates this stub
   // with the call instruction at insts_call_instruction_offset in the
   // instructions code-section.
-  __ relocate(static_stub_Relocation::spec(call_addr));
+  __ relocate(static_stub_Relocation::spec(mark));
   const int stub_start_offset = __ offset();
 
   // Now, create the stub's code:
   // - load the TOC
   // - load the inline cache oop from the constant pool
< prev index next >