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