1.1 --- a/src/cpu/sparc/vm/assembler_sparc.hpp Fri Apr 11 09:56:35 2008 -0400 1.2 +++ b/src/cpu/sparc/vm/assembler_sparc.hpp Sun Apr 13 17:43:42 2008 -0400 1.3 @@ -59,6 +59,7 @@ 1.4 // This global always holds the current JavaThread pointer: 1.5 1.6 REGISTER_DECLARATION(Register, G2_thread , G2); 1.7 +REGISTER_DECLARATION(Register, G6_heapbase , G6); 1.8 1.9 // The following globals are part of the Java calling convention: 1.10 1.11 @@ -1975,6 +1976,29 @@ 1.12 inline void tstbool( Register s ) { tst(s); } 1.13 inline void movbool( bool boolconst, Register d) { mov( (int) boolconst, d); } 1.14 1.15 + // klass oop manipulations if compressed 1.16 + void load_klass(Register src_oop, Register dst); 1.17 + void store_klass(Register dst_oop, Register s1); 1.18 + 1.19 + // oop manipulations 1.20 + void load_heap_oop(const Address& s, Register d, int offset = 0); 1.21 + void load_heap_oop(Register s1, Register s2, Register d); 1.22 + void load_heap_oop(Register s1, int simm13a, Register d); 1.23 + void store_heap_oop(Register d, Register s1, Register s2); 1.24 + void store_heap_oop(Register d, Register s1, int simm13a); 1.25 + void store_heap_oop(Register d, const Address& a, int offset = 0); 1.26 + 1.27 + void encode_heap_oop(Register src, Register dst); 1.28 + void encode_heap_oop(Register r) { 1.29 + encode_heap_oop(r, r); 1.30 + } 1.31 + void decode_heap_oop(Register src, Register dst); 1.32 + void decode_heap_oop(Register r) { 1.33 + decode_heap_oop(r, r); 1.34 + } 1.35 + void encode_heap_oop_not_null(Register r); 1.36 + void decode_heap_oop_not_null(Register r); 1.37 + 1.38 // Support for managing the JavaThread pointer (i.e.; the reference to 1.39 // thread-local information). 1.40 void get_thread(); // load G2_thread 1.41 @@ -2050,6 +2074,9 @@ 1.42 void push_CPU_state(); 1.43 void pop_CPU_state(); 1.44 1.45 + // if heap base register is used - reinit it with the correct value 1.46 + void reinit_heapbase(); 1.47 + 1.48 // Debugging 1.49 void _verify_oop(Register reg, const char * msg, const char * file, int line); 1.50 void _verify_oop_addr(Address addr, const char * msg, const char * file, int line);