< prev index next >

src/hotspot/share/runtime/stackValue.hpp

Print this page

106     assert(type() == T_INT, "type check");
107     *(jint*)&_integer_value = value;
108   }
109 
110   BasicType type() const { return  _type; }
111 
112   bool equal(StackValue *value) {
113     if (_type != value->_type) return false;
114     if (_type == T_OBJECT)
115       return (_handle_value == value->_handle_value);
116     else {
117       assert(_type == T_INT, "sanity check");
118       // [phh] compare only low addressed portions of intptr_t slots
119       return (*(int *)&_integer_value == *(int *)&value->_integer_value);
120     }
121   }
122 
123   static StackValue* create_stack_value_from_oop_location(stackChunkOop chunk, void* addr);
124   static StackValue* create_stack_value_from_narrowOop_location(stackChunkOop chunk, void* addr, bool is_register);
125 
126   static BasicLock*  resolve_monitor_lock(const frame* fr, Location location);
127 
128   template<typename RegisterMapT>
129   static StackValue* create_stack_value(const frame* fr, const RegisterMapT* reg_map, ScopeValue* sv);
130 
131   template<typename RegisterMapT>
132   static address stack_value_address(const frame* fr, const RegisterMapT* reg_map, ScopeValue* sv);
133 
134 #ifndef PRODUCT
135  public:
136   // Printing
137   void print_on(outputStream* st) const;
138 #endif
139 
140  private:
141    template<typename RegisterMapT>
142    static StackValue* create_stack_value(ScopeValue* sv, address value_addr, const RegisterMapT* reg_map);
143 };
144 
145 #endif // SHARE_RUNTIME_STACKVALUE_HPP

106     assert(type() == T_INT, "type check");
107     *(jint*)&_integer_value = value;
108   }
109 
110   BasicType type() const { return  _type; }
111 
112   bool equal(StackValue *value) {
113     if (_type != value->_type) return false;
114     if (_type == T_OBJECT)
115       return (_handle_value == value->_handle_value);
116     else {
117       assert(_type == T_INT, "sanity check");
118       // [phh] compare only low addressed portions of intptr_t slots
119       return (*(int *)&_integer_value == *(int *)&value->_integer_value);
120     }
121   }
122 
123   static StackValue* create_stack_value_from_oop_location(stackChunkOop chunk, void* addr);
124   static StackValue* create_stack_value_from_narrowOop_location(stackChunkOop chunk, void* addr, bool is_register);
125 
126   static BasicLock*  resolve_monitor_lock(const frame& fr, Location location);
127 
128   template<typename RegisterMapT>
129   static StackValue* create_stack_value(const frame* fr, const RegisterMapT* reg_map, ScopeValue* sv);
130 
131   template<typename RegisterMapT>
132   static address stack_value_address(const frame* fr, const RegisterMapT* reg_map, ScopeValue* sv);
133 
134 #ifndef PRODUCT
135  public:
136   // Printing
137   void print_on(outputStream* st) const;
138 #endif
139 
140  private:
141    template<typename RegisterMapT>
142    static StackValue* create_stack_value(ScopeValue* sv, address value_addr, const RegisterMapT* reg_map);
143 };
144 
145 #endif // SHARE_RUNTIME_STACKVALUE_HPP
< prev index next >