comparison src/cpu/sparc/vm/assembler_sparc.hpp @ 2076:7737fa7ec2b5

7006044: materialize cheap non-oop pointers on 64-bit SPARC Summary: After 6961690 we load non-oop pointers for the constant table which could easily be materialized in a few instructions. Reviewed-by: never, kvn
author twisti
date Tue, 14 Dec 2010 12:44:30 -0800
parents 2f644f85485d
children 84f36150fcc3 c17b998c5926
comparison
equal deleted inserted replaced
2016:361783318e7e 2076:7737fa7ec2b5
1882 void internal_sethi(const AddressLiteral& addrlit, Register d, bool ForceRelocatable); 1882 void internal_sethi(const AddressLiteral& addrlit, Register d, bool ForceRelocatable);
1883 public: 1883 public:
1884 void sethi(const AddressLiteral& addrlit, Register d); 1884 void sethi(const AddressLiteral& addrlit, Register d);
1885 void patchable_sethi(const AddressLiteral& addrlit, Register d); 1885 void patchable_sethi(const AddressLiteral& addrlit, Register d);
1886 1886
1887 // compute the size of a sethi/set 1887 // compute the number of instructions for a sethi/set
1888 static int size_of_sethi( address a, bool worst_case = false ); 1888 static int insts_for_sethi( address a, bool worst_case = false );
1889 static int worst_case_size_of_set(); 1889 static int worst_case_insts_for_set();
1890 1890
1891 // set may be either setsw or setuw (high 32 bits may be zero or sign) 1891 // set may be either setsw or setuw (high 32 bits may be zero or sign)
1892 private: 1892 private:
1893 void internal_set(const AddressLiteral& al, Register d, bool ForceRelocatable); 1893 void internal_set(const AddressLiteral& al, Register d, bool ForceRelocatable);
1894 static int insts_for_internal_set(intptr_t value);
1894 public: 1895 public:
1895 void set(const AddressLiteral& addrlit, Register d); 1896 void set(const AddressLiteral& addrlit, Register d);
1896 void set(intptr_t value, Register d); 1897 void set(intptr_t value, Register d);
1897 void set(address addr, Register d, RelocationHolder const& rspec); 1898 void set(address addr, Register d, RelocationHolder const& rspec);
1899 static int insts_for_set(intptr_t value) { return insts_for_internal_set(value); }
1900
1898 void patchable_set(const AddressLiteral& addrlit, Register d); 1901 void patchable_set(const AddressLiteral& addrlit, Register d);
1899 void patchable_set(intptr_t value, Register d); 1902 void patchable_set(intptr_t value, Register d);
1900 void set64(jlong value, Register d, Register tmp); 1903 void set64(jlong value, Register d, Register tmp);
1901 1904 static int insts_for_set64(jlong value);
1902 // Compute size of set64.
1903 static int size_of_set64(jlong value);
1904 1905
1905 // sign-extend 32 to 64 1906 // sign-extend 32 to 64
1906 inline void signx( Register s, Register d ) { sra( s, G0, d); } 1907 inline void signx( Register s, Register d ) { sra( s, G0, d); }
1907 inline void signx( Register d ) { sra( d, G0, d); } 1908 inline void signx( Register d ) { sra( d, G0, d); }
1908 1909