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