< prev index next >

src/cpu/x86/vm/x86_32.ad

Print this page




1853       masm.fldcw(ExternalAddress(StubRoutines::addr_fpu_cntrl_wrd_24()));
1854     }
1855   %}
1856 
1857   enc_class Java_Static_Call (method meth) %{    // JAVA STATIC CALL
1858     // CALL to fixup routine.  Fixup routine uses ScopeDesc info to determine
1859     // who we intended to call.
1860     cbuf.set_insts_mark();
1861     $$$emit8$primary;
1862     if (!_method) {
1863       emit_d32_reloc(cbuf, ($meth$$method - (int)(cbuf.insts_end()) - 4),
1864                      runtime_call_Relocation::spec(), RELOC_IMM32 );
1865     } else if (_optimized_virtual) {
1866       emit_d32_reloc(cbuf, ($meth$$method - (int)(cbuf.insts_end()) - 4),
1867                      opt_virtual_call_Relocation::spec(), RELOC_IMM32 );
1868     } else {
1869       emit_d32_reloc(cbuf, ($meth$$method - (int)(cbuf.insts_end()) - 4),
1870                      static_call_Relocation::spec(), RELOC_IMM32 );
1871     }
1872     if (_method) {  // Emit stub for static call.
1873       CompiledStaticCall::emit_to_interp_stub(cbuf);




1874     }
1875   %}
1876 
1877   enc_class Java_Dynamic_Call (method meth) %{    // JAVA DYNAMIC CALL
1878     MacroAssembler _masm(&cbuf);
1879     __ ic_call((address)$meth$$method);
1880   %}
1881 
1882   enc_class Java_Compiled_Call (method meth) %{    // JAVA COMPILED CALL
1883     int disp = in_bytes(Method::from_compiled_offset());
1884     assert( -128 <= disp && disp <= 127, "compiled_code_offset isn't small");
1885 
1886     // CALL *[EAX+in_bytes(Method::from_compiled_code_entry_point_offset())]
1887     cbuf.set_insts_mark();
1888     $$$emit8$primary;
1889     emit_rm(cbuf, 0x01, $secondary, EAX_enc );  // R/M byte
1890     emit_d8(cbuf, disp);             // Displacement
1891 
1892   %}
1893 




1853       masm.fldcw(ExternalAddress(StubRoutines::addr_fpu_cntrl_wrd_24()));
1854     }
1855   %}
1856 
1857   enc_class Java_Static_Call (method meth) %{    // JAVA STATIC CALL
1858     // CALL to fixup routine.  Fixup routine uses ScopeDesc info to determine
1859     // who we intended to call.
1860     cbuf.set_insts_mark();
1861     $$$emit8$primary;
1862     if (!_method) {
1863       emit_d32_reloc(cbuf, ($meth$$method - (int)(cbuf.insts_end()) - 4),
1864                      runtime_call_Relocation::spec(), RELOC_IMM32 );
1865     } else if (_optimized_virtual) {
1866       emit_d32_reloc(cbuf, ($meth$$method - (int)(cbuf.insts_end()) - 4),
1867                      opt_virtual_call_Relocation::spec(), RELOC_IMM32 );
1868     } else {
1869       emit_d32_reloc(cbuf, ($meth$$method - (int)(cbuf.insts_end()) - 4),
1870                      static_call_Relocation::spec(), RELOC_IMM32 );
1871     }
1872     if (_method) {  // Emit stub for static call.
1873       address stub = CompiledStaticCall::emit_to_interp_stub(cbuf);
1874       if (stub == NULL) {
1875         ciEnv::current()->record_failure("CodeCache is full");
1876         return;
1877       } 
1878     }
1879   %}
1880 
1881   enc_class Java_Dynamic_Call (method meth) %{    // JAVA DYNAMIC CALL
1882     MacroAssembler _masm(&cbuf);
1883     __ ic_call((address)$meth$$method);
1884   %}
1885 
1886   enc_class Java_Compiled_Call (method meth) %{    // JAVA COMPILED CALL
1887     int disp = in_bytes(Method::from_compiled_offset());
1888     assert( -128 <= disp && disp <= 127, "compiled_code_offset isn't small");
1889 
1890     // CALL *[EAX+in_bytes(Method::from_compiled_code_entry_point_offset())]
1891     cbuf.set_insts_mark();
1892     $$$emit8$primary;
1893     emit_rm(cbuf, 0x01, $secondary, EAX_enc );  // R/M byte
1894     emit_d8(cbuf, disp);             // Displacement
1895 
1896   %}
1897 


< prev index next >