src/cpu/sparc/vm/assembler_sparc.hpp

changeset 548
ba764ed4b6f2
parent 435
a61af66fc99e
child 559
b130b98db9cf
     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);

mercurial