hotspot/src/cpu/sparc/vm/assembler_sparc.hpp
changeset 360 21d113ecbf6a
parent 1 489c9b5090e2
child 371 1aacedc9db7c
--- a/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp	Fri Apr 11 09:56:35 2008 -0400
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp	Sun Apr 13 17:43:42 2008 -0400
@@ -59,6 +59,7 @@
 // This global always holds the current JavaThread pointer:
 
 REGISTER_DECLARATION(Register, G2_thread , G2);
+REGISTER_DECLARATION(Register, G6_heapbase , G6);
 
 // The following globals are part of the Java calling convention:
 
@@ -1975,6 +1976,29 @@
   inline void tstbool( Register s ) { tst(s); }
   inline void movbool( bool boolconst, Register d) { mov( (int) boolconst, d); }
 
+  // klass oop manipulations if compressed
+  void load_klass(Register  src_oop, Register dst);
+  void store_klass(Register dst_oop, Register s1);
+
+   // oop manipulations
+  void load_heap_oop(const Address& s, Register d, int offset = 0);
+  void load_heap_oop(Register s1, Register s2, Register d);
+  void load_heap_oop(Register s1, int simm13a, Register d);
+  void store_heap_oop(Register d, Register s1, Register s2);
+  void store_heap_oop(Register d, Register s1, int simm13a);
+  void store_heap_oop(Register d, const Address& a, int offset = 0);
+
+  void encode_heap_oop(Register src, Register dst);
+  void encode_heap_oop(Register r) {
+    encode_heap_oop(r, r);
+  }
+  void decode_heap_oop(Register src, Register dst);
+  void decode_heap_oop(Register r) {
+    decode_heap_oop(r, r);
+  }
+  void encode_heap_oop_not_null(Register r);
+  void decode_heap_oop_not_null(Register r);
+
   // Support for managing the JavaThread pointer (i.e.; the reference to
   // thread-local information).
   void get_thread();                                // load G2_thread
@@ -2050,6 +2074,9 @@
   void push_CPU_state();
   void pop_CPU_state();
 
+  // if heap base register is used - reinit it with the correct value
+  void reinit_heapbase();
+
   // Debugging
   void _verify_oop(Register reg, const char * msg, const char * file, int line);
   void _verify_oop_addr(Address addr, const char * msg, const char * file, int line);