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
|