2130 cbuf.set_insts_mark(); 2131 $$$emit8$primary; 2132 2133 if (!_method) { 2134 emit_d32_reloc(cbuf, (int) ($meth$$method - ((intptr_t) cbuf.insts_end()) - 4), 2135 runtime_call_Relocation::spec(), 2136 RELOC_DISP32); 2137 } else { 2138 int method_index = resolved_method_index(cbuf); 2139 RelocationHolder rspec = _optimized_virtual ? opt_virtual_call_Relocation::spec(method_index) 2140 : static_call_Relocation::spec(method_index); 2141 emit_d32_reloc(cbuf, (int) ($meth$$method - ((intptr_t) cbuf.insts_end()) - 4), 2142 rspec, RELOC_DISP32); 2143 // Emit stubs for static call. 2144 address mark = cbuf.insts_mark(); 2145 address stub = CompiledStaticCall::emit_to_interp_stub(cbuf, mark); 2146 if (stub == NULL) { 2147 ciEnv::current()->record_failure("CodeCache is full"); 2148 return; 2149 } 2150 } 2151 %} 2152 2153 enc_class Java_Dynamic_Call(method meth) %{ 2154 MacroAssembler _masm(&cbuf); 2155 __ ic_call((address)$meth$$method, resolved_method_index(cbuf)); 2156 %} 2157 2158 enc_class Java_Compiled_Call(method meth) 2159 %{ 2160 // JAVA COMPILED CALL 2161 int disp = in_bytes(Method:: from_compiled_offset()); 2162 2163 // XXX XXX offset is 128 is 1.5 NON-PRODUCT !!! 2164 // assert(-0x80 <= disp && disp < 0x80, "compiled_code_offset isn't small"); 2165 2166 // callq *disp(%rax) 2167 cbuf.set_insts_mark(); 2168 $$$emit8$primary; 2169 if (disp < 0x80) { | 2130 cbuf.set_insts_mark(); 2131 $$$emit8$primary; 2132 2133 if (!_method) { 2134 emit_d32_reloc(cbuf, (int) ($meth$$method - ((intptr_t) cbuf.insts_end()) - 4), 2135 runtime_call_Relocation::spec(), 2136 RELOC_DISP32); 2137 } else { 2138 int method_index = resolved_method_index(cbuf); 2139 RelocationHolder rspec = _optimized_virtual ? opt_virtual_call_Relocation::spec(method_index) 2140 : static_call_Relocation::spec(method_index); 2141 emit_d32_reloc(cbuf, (int) ($meth$$method - ((intptr_t) cbuf.insts_end()) - 4), 2142 rspec, RELOC_DISP32); 2143 // Emit stubs for static call. 2144 address mark = cbuf.insts_mark(); 2145 address stub = CompiledStaticCall::emit_to_interp_stub(cbuf, mark); 2146 if (stub == NULL) { 2147 ciEnv::current()->record_failure("CodeCache is full"); 2148 return; 2149 } 2150 #if INCLUDE_AOT 2151 CompiledStaticCall::emit_to_aot_stub(cbuf, mark); 2152 #endif 2153 } 2154 %} 2155 2156 enc_class Java_Dynamic_Call(method meth) %{ 2157 MacroAssembler _masm(&cbuf); 2158 __ ic_call((address)$meth$$method, resolved_method_index(cbuf)); 2159 %} 2160 2161 enc_class Java_Compiled_Call(method meth) 2162 %{ 2163 // JAVA COMPILED CALL 2164 int disp = in_bytes(Method:: from_compiled_offset()); 2165 2166 // XXX XXX offset is 128 is 1.5 NON-PRODUCT !!! 2167 // assert(-0x80 <= disp && disp < 0x80, "compiled_code_offset isn't small"); 2168 2169 // callq *disp(%rax) 2170 cbuf.set_insts_mark(); 2171 $$$emit8$primary; 2172 if (disp < 0x80) { |