src/cpu/x86/vm/x86_64.ad
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/cpu/x86/vm

src/cpu/x86/vm/x86_64.ad

Print this page




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) {


src/cpu/x86/vm/x86_64.ad
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File