Mercurial > hg > truffle
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 |