2119 cbuf.set_insts_mark(); 2120 $$$emit8$primary; 2121 2122 if (!_method) { 2123 emit_d32_reloc(cbuf, 2124 (int) ($meth$$method - ((intptr_t) cbuf.insts_end()) - 4), 2125 runtime_call_Relocation::spec(), 2126 RELOC_DISP32); 2127 } else if (_optimized_virtual) { 2128 emit_d32_reloc(cbuf, 2129 (int) ($meth$$method - ((intptr_t) cbuf.insts_end()) - 4), 2130 opt_virtual_call_Relocation::spec(), 2131 RELOC_DISP32); 2132 } else { 2133 emit_d32_reloc(cbuf, 2134 (int) ($meth$$method - ((intptr_t) cbuf.insts_end()) - 4), 2135 static_call_Relocation::spec(), 2136 RELOC_DISP32); 2137 } 2138 if (_method) { 2139 // Emit stub for static call. 2140 address stub = CompiledStaticCall::emit_to_interp_stub(cbuf); 2141 if (stub == NULL) { 2142 ciEnv::current()->record_failure("CodeCache is full"); 2143 return; 2144 } 2145 } 2146 %} 2147 2148 enc_class Java_Dynamic_Call(method meth) %{ 2149 MacroAssembler _masm(&cbuf); 2150 __ ic_call((address)$meth$$method); 2151 %} 2152 2153 enc_class Java_Compiled_Call(method meth) 2154 %{ 2155 // JAVA COMPILED CALL 2156 int disp = in_bytes(Method:: from_compiled_offset()); 2157 2158 // XXX XXX offset is 128 is 1.5 NON-PRODUCT !!! 2159 // assert(-0x80 <= disp && disp < 0x80, "compiled_code_offset isn't small"); 2160 | 2119 cbuf.set_insts_mark(); 2120 $$$emit8$primary; 2121 2122 if (!_method) { 2123 emit_d32_reloc(cbuf, 2124 (int) ($meth$$method - ((intptr_t) cbuf.insts_end()) - 4), 2125 runtime_call_Relocation::spec(), 2126 RELOC_DISP32); 2127 } else if (_optimized_virtual) { 2128 emit_d32_reloc(cbuf, 2129 (int) ($meth$$method - ((intptr_t) cbuf.insts_end()) - 4), 2130 opt_virtual_call_Relocation::spec(), 2131 RELOC_DISP32); 2132 } else { 2133 emit_d32_reloc(cbuf, 2134 (int) ($meth$$method - ((intptr_t) cbuf.insts_end()) - 4), 2135 static_call_Relocation::spec(), 2136 RELOC_DISP32); 2137 } 2138 if (_method) { 2139 // Emit stubs for static call. 2140 address mark = cbuf.insts_mark(); 2141 address stub = CompiledStaticCall::emit_to_interp_stub(cbuf, mark); 2142 if (stub == NULL) { 2143 ciEnv::current()->record_failure("CodeCache is full"); 2144 return; 2145 } 2146 } 2147 %} 2148 2149 enc_class Java_Dynamic_Call(method meth) %{ 2150 MacroAssembler _masm(&cbuf); 2151 __ ic_call((address)$meth$$method); 2152 %} 2153 2154 enc_class Java_Compiled_Call(method meth) 2155 %{ 2156 // JAVA COMPILED CALL 2157 int disp = in_bytes(Method:: from_compiled_offset()); 2158 2159 // XXX XXX offset is 128 is 1.5 NON-PRODUCT !!! 2160 // assert(-0x80 <= disp && disp < 0x80, "compiled_code_offset isn't small"); 2161 |