Print this page
rev 1838 : 6961690: load oops from constant table on SPARC
Summary: oops should be loaded from the constant table of an nmethod instead of materializing them with a long code sequence.
Reviewed-by:

Split Close
Expand all
Collapse all
          --- old/src/cpu/x86/vm/assembler_x86.hpp
          +++ new/src/cpu/x86/vm/assembler_x86.hpp
↓ open down ↓ 1341 lines elided ↑ open up ↑
1342 1342  
1343 1343    void shrq(Register dst, int imm8);
1344 1344    void shrq(Register dst);
1345 1345  
1346 1346    void smovl(); // QQQ generic?
1347 1347  
1348 1348    // Compute Square Root of Scalar Double-Precision Floating-Point Value
1349 1349    void sqrtsd(XMMRegister dst, Address src);
1350 1350    void sqrtsd(XMMRegister dst, XMMRegister src);
1351 1351  
     1352 +  // Compute Square Root of Scalar Single-Precision Floating-Point Value
     1353 +  void sqrtss(XMMRegister dst, Address src);
     1354 +  void sqrtss(XMMRegister dst, XMMRegister src);
     1355 +
1352 1356    void std() { emit_byte(0xfd); }
1353 1357  
1354 1358    void stmxcsr( Address dst );
1355 1359  
1356 1360    void subl(Address dst, int32_t imm32);
1357 1361    void subl(Address dst, Register src);
1358 1362    void subl(Register dst, int32_t imm32);
1359 1363    void subl(Register dst, Address src);
1360 1364    void subl(Register dst, Register src);
1361 1365  
↓ open down ↓ 752 lines elided ↑ open up ↑
2114 2118  
2115 2119    void andpd(XMMRegister dst, Address src) { Assembler::andpd(dst, src); }
2116 2120    void andpd(XMMRegister dst, AddressLiteral src);
2117 2121  
2118 2122    void comiss(XMMRegister dst, Address src) { Assembler::comiss(dst, src); }
2119 2123    void comiss(XMMRegister dst, AddressLiteral src);
2120 2124  
2121 2125    void comisd(XMMRegister dst, Address src) { Assembler::comisd(dst, src); }
2122 2126    void comisd(XMMRegister dst, AddressLiteral src);
2123 2127  
     2128 +  void fadd_s(Address src)        { Assembler::fadd_s(src); }
     2129 +  void fadd_s(AddressLiteral src) { Assembler::fadd_s(as_Address(src)); }
     2130 +
2124 2131    void fldcw(Address src) { Assembler::fldcw(src); }
2125 2132    void fldcw(AddressLiteral src);
2126 2133  
2127 2134    void fld_s(int index)   { Assembler::fld_s(index); }
2128 2135    void fld_s(Address src) { Assembler::fld_s(src); }
2129 2136    void fld_s(AddressLiteral src);
2130 2137  
2131 2138    void fld_d(Address src) { Assembler::fld_d(src); }
2132 2139    void fld_d(AddressLiteral src);
2133 2140  
2134 2141    void fld_x(Address src) { Assembler::fld_x(src); }
2135 2142    void fld_x(AddressLiteral src);
2136 2143  
     2144 +  void fmul_s(Address src)        { Assembler::fmul_s(src); }
     2145 +  void fmul_s(AddressLiteral src) { Assembler::fmul_s(as_Address(src)); }
     2146 +
2137 2147    void ldmxcsr(Address src) { Assembler::ldmxcsr(src); }
2138 2148    void ldmxcsr(AddressLiteral src);
2139 2149  
2140 2150  private:
2141 2151    // these are private because users should be doing movflt/movdbl
2142 2152  
2143 2153    void movss(Address dst, XMMRegister src)     { Assembler::movss(dst, src); }
2144 2154    void movss(XMMRegister dst, XMMRegister src) { Assembler::movss(dst, src); }
2145 2155    void movss(XMMRegister dst, Address src)     { Assembler::movss(dst, src); }
2146 2156    void movss(XMMRegister dst, AddressLiteral src);
2147 2157  
2148 2158    void movlpd(XMMRegister dst, Address src)      {Assembler::movlpd(dst, src); }
2149 2159    void movlpd(XMMRegister dst, AddressLiteral src);
2150 2160  
2151 2161  public:
2152 2162  
2153      -  void movsd(XMMRegister dst, XMMRegister src) { Assembler::movsd(dst, src); }
2154      -  void movsd(Address dst, XMMRegister src)     { Assembler::movsd(dst, src); }
2155      -  void movsd(XMMRegister dst, Address src)     { Assembler::movsd(dst, src); }
2156      -  void movsd(XMMRegister dst, AddressLiteral src);
     2163 +  void addsd(XMMRegister dst, XMMRegister src)    { Assembler::addsd(dst, src); }
     2164 +  void addsd(XMMRegister dst, Address src)        { Assembler::addsd(dst, src); }
     2165 +  void addsd(XMMRegister dst, AddressLiteral src) { Assembler::addsd(dst, as_Address(src)); }
     2166 +
     2167 +  void addss(XMMRegister dst, XMMRegister src)    { Assembler::addss(dst, src); }
     2168 +  void addss(XMMRegister dst, Address src)        { Assembler::addss(dst, src); }
     2169 +  void addss(XMMRegister dst, AddressLiteral src) { Assembler::addss(dst, as_Address(src)); }
     2170 +
     2171 +  void divsd(XMMRegister dst, XMMRegister src)    { Assembler::divsd(dst, src); }
     2172 +  void divsd(XMMRegister dst, Address src)        { Assembler::divsd(dst, src); }
     2173 +  void divsd(XMMRegister dst, AddressLiteral src) { Assembler::divsd(dst, as_Address(src)); }
     2174 +
     2175 +  void divss(XMMRegister dst, XMMRegister src)    { Assembler::divss(dst, src); }
     2176 +  void divss(XMMRegister dst, Address src)        { Assembler::divss(dst, src); }
     2177 +  void divss(XMMRegister dst, AddressLiteral src) { Assembler::divss(dst, as_Address(src)); }
     2178 +
     2179 +  void movsd(XMMRegister dst, XMMRegister src)    { Assembler::movsd(dst, src); }
     2180 +  void movsd(Address dst, XMMRegister src)        { Assembler::movsd(dst, src); }
     2181 +  void movsd(XMMRegister dst, Address src)        { Assembler::movsd(dst, src); }
     2182 +  void movsd(XMMRegister dst, AddressLiteral src) { Assembler::movsd(dst, as_Address(src)); }
     2183 +
     2184 +  void mulsd(XMMRegister dst, XMMRegister src)    { Assembler::mulsd(dst, src); }
     2185 +  void mulsd(XMMRegister dst, Address src)        { Assembler::mulsd(dst, src); }
     2186 +  void mulsd(XMMRegister dst, AddressLiteral src) { Assembler::mulsd(dst, as_Address(src)); }
     2187 +
     2188 +  void mulss(XMMRegister dst, XMMRegister src)    { Assembler::mulss(dst, src); }
     2189 +  void mulss(XMMRegister dst, Address src)        { Assembler::mulss(dst, src); }
     2190 +  void mulss(XMMRegister dst, AddressLiteral src) { Assembler::mulss(dst, as_Address(src)); }
     2191 +
     2192 +  void sqrtsd(XMMRegister dst, XMMRegister src)    { Assembler::sqrtsd(dst, src); }
     2193 +  void sqrtsd(XMMRegister dst, Address src)        { Assembler::sqrtsd(dst, src); }
     2194 +  void sqrtsd(XMMRegister dst, AddressLiteral src) { Assembler::sqrtsd(dst, as_Address(src)); }
     2195 +
     2196 +  void sqrtss(XMMRegister dst, XMMRegister src)    { Assembler::sqrtss(dst, src); }
     2197 +  void sqrtss(XMMRegister dst, Address src)        { Assembler::sqrtss(dst, src); }
     2198 +  void sqrtss(XMMRegister dst, AddressLiteral src) { Assembler::sqrtss(dst, as_Address(src)); }
     2199 +
     2200 +  void subsd(XMMRegister dst, XMMRegister src)    { Assembler::subsd(dst, src); }
     2201 +  void subsd(XMMRegister dst, Address src)        { Assembler::subsd(dst, src); }
     2202 +  void subsd(XMMRegister dst, AddressLiteral src) { Assembler::subsd(dst, as_Address(src)); }
     2203 +
     2204 +  void subss(XMMRegister dst, XMMRegister src)    { Assembler::subss(dst, src); }
     2205 +  void subss(XMMRegister dst, Address src)        { Assembler::subss(dst, src); }
     2206 +  void subss(XMMRegister dst, AddressLiteral src) { Assembler::subss(dst, as_Address(src)); }
2157 2207  
2158 2208    void ucomiss(XMMRegister dst, XMMRegister src) { Assembler::ucomiss(dst, src); }
2159 2209    void ucomiss(XMMRegister dst, Address src) { Assembler::ucomiss(dst, src); }
2160 2210    void ucomiss(XMMRegister dst, AddressLiteral src);
2161 2211  
2162 2212    void ucomisd(XMMRegister dst, XMMRegister src) { Assembler::ucomisd(dst, src); }
2163 2213    void ucomisd(XMMRegister dst, Address src) { Assembler::ucomisd(dst, src); }
2164 2214    void ucomisd(XMMRegister dst, AddressLiteral src);
2165 2215  
2166 2216    // Bitwise Logical XOR of Packed Double-Precision Floating-Point Values
↓ open down ↓ 109 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX