comparison src/cpu/sparc/vm/assembler_sparc.hpp @ 113:ba764ed4b6f2

6420645: Create a vm that uses compressed oops for up to 32gb heapsizes Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author coleenp
date Sun, 13 Apr 2008 17:43:42 -0400
parents a61af66fc99e
children b130b98db9cf
comparison
equal deleted inserted replaced
110:a49a647afe9a 113:ba764ed4b6f2
57 // %%%% The interpreter should be revisited to reduce global scratch regs. 57 // %%%% The interpreter should be revisited to reduce global scratch regs.
58 58
59 // This global always holds the current JavaThread pointer: 59 // This global always holds the current JavaThread pointer:
60 60
61 REGISTER_DECLARATION(Register, G2_thread , G2); 61 REGISTER_DECLARATION(Register, G2_thread , G2);
62 REGISTER_DECLARATION(Register, G6_heapbase , G6);
62 63
63 // The following globals are part of the Java calling convention: 64 // The following globals are part of the Java calling convention:
64 65
65 REGISTER_DECLARATION(Register, G5_method , G5); 66 REGISTER_DECLARATION(Register, G5_method , G5);
66 REGISTER_DECLARATION(Register, G5_megamorphic_method , G5_method); 67 REGISTER_DECLARATION(Register, G5_megamorphic_method , G5_method);
1973 inline void stbool( Register d, const Address& a, int offset = 0 ) { stb(d, a, offset); } 1974 inline void stbool( Register d, const Address& a, int offset = 0 ) { stb(d, a, offset); }
1974 inline void ldbool( const Address& a, Register d, int offset = 0 ) { ldsb( a, d, offset ); } 1975 inline void ldbool( const Address& a, Register d, int offset = 0 ) { ldsb( a, d, offset ); }
1975 inline void tstbool( Register s ) { tst(s); } 1976 inline void tstbool( Register s ) { tst(s); }
1976 inline void movbool( bool boolconst, Register d) { mov( (int) boolconst, d); } 1977 inline void movbool( bool boolconst, Register d) { mov( (int) boolconst, d); }
1977 1978
1979 // klass oop manipulations if compressed
1980 void load_klass(Register src_oop, Register dst);
1981 void store_klass(Register dst_oop, Register s1);
1982
1983 // oop manipulations
1984 void load_heap_oop(const Address& s, Register d, int offset = 0);
1985 void load_heap_oop(Register s1, Register s2, Register d);
1986 void load_heap_oop(Register s1, int simm13a, Register d);
1987 void store_heap_oop(Register d, Register s1, Register s2);
1988 void store_heap_oop(Register d, Register s1, int simm13a);
1989 void store_heap_oop(Register d, const Address& a, int offset = 0);
1990
1991 void encode_heap_oop(Register src, Register dst);
1992 void encode_heap_oop(Register r) {
1993 encode_heap_oop(r, r);
1994 }
1995 void decode_heap_oop(Register src, Register dst);
1996 void decode_heap_oop(Register r) {
1997 decode_heap_oop(r, r);
1998 }
1999 void encode_heap_oop_not_null(Register r);
2000 void decode_heap_oop_not_null(Register r);
2001
1978 // Support for managing the JavaThread pointer (i.e.; the reference to 2002 // Support for managing the JavaThread pointer (i.e.; the reference to
1979 // thread-local information). 2003 // thread-local information).
1980 void get_thread(); // load G2_thread 2004 void get_thread(); // load G2_thread
1981 void verify_thread(); // verify G2_thread contents 2005 void verify_thread(); // verify G2_thread contents
1982 void save_thread (const Register threache); // save to cache 2006 void save_thread (const Register threache); // save to cache
2047 void push_FPU_state(); 2071 void push_FPU_state();
2048 void pop_FPU_state(); 2072 void pop_FPU_state();
2049 2073
2050 void push_CPU_state(); 2074 void push_CPU_state();
2051 void pop_CPU_state(); 2075 void pop_CPU_state();
2076
2077 // if heap base register is used - reinit it with the correct value
2078 void reinit_heapbase();
2052 2079
2053 // Debugging 2080 // Debugging
2054 void _verify_oop(Register reg, const char * msg, const char * file, int line); 2081 void _verify_oop(Register reg, const char * msg, const char * file, int line);
2055 void _verify_oop_addr(Address addr, const char * msg, const char * file, int line); 2082 void _verify_oop_addr(Address addr, const char * msg, const char * file, int line);
2056 2083