< prev index next >

src/cpu/sparc/vm/macroAssembler_sparc.hpp

Print this page
rev 13107 : imported patch jvm_h


1113 
1114   // Debugging
1115   void _verify_oop(Register reg, const char * msg, const char * file, int line);
1116   void _verify_oop_addr(Address addr, const char * msg, const char * file, int line);
1117 
1118   // TODO: verify_method and klass metadata (compare against vptr?)
1119   void _verify_method_ptr(Register reg, const char * msg, const char * file, int line) {}
1120   void _verify_klass_ptr(Register reg, const char * msg, const char * file, int line){}
1121 
1122 #define verify_oop(reg) _verify_oop(reg, "broken oop " #reg, __FILE__, __LINE__)
1123 #define verify_oop_addr(addr) _verify_oop_addr(addr, "broken oop addr ", __FILE__, __LINE__)
1124 #define verify_method_ptr(reg) _verify_method_ptr(reg, "broken method " #reg, __FILE__, __LINE__)
1125 #define verify_klass_ptr(reg) _verify_klass_ptr(reg, "broken klass " #reg, __FILE__, __LINE__)
1126 
1127         // only if +VerifyOops
1128   void verify_FPU(int stack_depth, const char* s = "illegal FPU state");
1129         // only if +VerifyFPU
1130   void stop(const char* msg);                          // prints msg, dumps registers and stops execution
1131   void warn(const char* msg);                          // prints msg, but don't stop
1132   void untested(const char* what = "");
1133   void unimplemented(const char* what = "")      { char* b = new char[1024];  jio_snprintf(b, 1024, "unimplemented: %s", what);  stop(b); }
1134   void should_not_reach_here()                   { stop("should not reach here"); }
1135   void print_CPU_state();
1136 
1137   // oops in code
1138   AddressLiteral allocate_oop_address(jobject obj);                          // allocate_index
1139   AddressLiteral constant_oop_address(jobject obj);                          // find_index
1140   inline void    set_oop             (jobject obj, Register d);              // uses allocate_oop_address
1141   inline void    set_oop_constant    (jobject obj, Register d);              // uses constant_oop_address
1142   inline void    set_oop             (const AddressLiteral& obj_addr, Register d); // same as load_address
1143 
1144   // metadata in code that we have to keep track of
1145   AddressLiteral allocate_metadata_address(Metadata* obj); // allocate_index
1146   AddressLiteral constant_metadata_address(Metadata* obj); // find_index
1147   inline void    set_metadata             (Metadata* obj, Register d);              // uses allocate_metadata_address
1148   inline void    set_metadata_constant    (Metadata* obj, Register d);              // uses constant_metadata_address
1149   inline void    set_metadata             (const AddressLiteral& obj_addr, Register d); // same as load_address
1150 
1151   void set_narrow_oop( jobject obj, Register d );
1152   void set_narrow_klass( Klass* k, Register d );
1153 




1113 
1114   // Debugging
1115   void _verify_oop(Register reg, const char * msg, const char * file, int line);
1116   void _verify_oop_addr(Address addr, const char * msg, const char * file, int line);
1117 
1118   // TODO: verify_method and klass metadata (compare against vptr?)
1119   void _verify_method_ptr(Register reg, const char * msg, const char * file, int line) {}
1120   void _verify_klass_ptr(Register reg, const char * msg, const char * file, int line){}
1121 
1122 #define verify_oop(reg) _verify_oop(reg, "broken oop " #reg, __FILE__, __LINE__)
1123 #define verify_oop_addr(addr) _verify_oop_addr(addr, "broken oop addr ", __FILE__, __LINE__)
1124 #define verify_method_ptr(reg) _verify_method_ptr(reg, "broken method " #reg, __FILE__, __LINE__)
1125 #define verify_klass_ptr(reg) _verify_klass_ptr(reg, "broken klass " #reg, __FILE__, __LINE__)
1126 
1127         // only if +VerifyOops
1128   void verify_FPU(int stack_depth, const char* s = "illegal FPU state");
1129         // only if +VerifyFPU
1130   void stop(const char* msg);                          // prints msg, dumps registers and stops execution
1131   void warn(const char* msg);                          // prints msg, but don't stop
1132   void untested(const char* what = "");
1133   void unimplemented(const char* what = "");
1134   void should_not_reach_here()                   { stop("should not reach here"); }
1135   void print_CPU_state();
1136 
1137   // oops in code
1138   AddressLiteral allocate_oop_address(jobject obj);                          // allocate_index
1139   AddressLiteral constant_oop_address(jobject obj);                          // find_index
1140   inline void    set_oop             (jobject obj, Register d);              // uses allocate_oop_address
1141   inline void    set_oop_constant    (jobject obj, Register d);              // uses constant_oop_address
1142   inline void    set_oop             (const AddressLiteral& obj_addr, Register d); // same as load_address
1143 
1144   // metadata in code that we have to keep track of
1145   AddressLiteral allocate_metadata_address(Metadata* obj); // allocate_index
1146   AddressLiteral constant_metadata_address(Metadata* obj); // find_index
1147   inline void    set_metadata             (Metadata* obj, Register d);              // uses allocate_metadata_address
1148   inline void    set_metadata_constant    (Metadata* obj, Register d);              // uses constant_metadata_address
1149   inline void    set_metadata             (const AddressLiteral& obj_addr, Register d); // same as load_address
1150 
1151   void set_narrow_oop( jobject obj, Register d );
1152   void set_narrow_klass( Klass* k, Register d );
1153 


< prev index next >