comparison src/share/vm/runtime/handles.hpp @ 12281:4f9a42c33738

8022887: Assertion hit while using class and redefining it with RedefineClasses simultaneously Summary: Need to refetch each method from InstanceKlass after all safepoints. Removed leaky PreviousVersionInfo code. Reviewed-by: dcubed, sspitsyn
author coleenp
date Fri, 20 Sep 2013 09:30:02 -0400
parents 9758d9f36299
children 63a4eb8bcd23 833b0f92429a
comparison
equal deleted inserted replaced
12279:6eb908998b32 12281:4f9a42c33738
134 // from being reclaimed by RedefineClasses. 134 // from being reclaimed by RedefineClasses.
135 135
136 // Specific Handles for different oop types 136 // Specific Handles for different oop types
137 #define DEF_METADATA_HANDLE(name, type) \ 137 #define DEF_METADATA_HANDLE(name, type) \
138 class name##Handle; \ 138 class name##Handle; \
139 class name##Handle { \ 139 class name##Handle : public StackObj { \
140 type* _value; \ 140 type* _value; \
141 Thread* _thread; \ 141 Thread* _thread; \
142 protected: \ 142 protected: \
143 type* obj() const { return _value; } \ 143 type* obj() const { return _value; } \
144 type* non_null_obj() const { assert(_value != NULL, "resolving NULL _value"); return _value; } \ 144 type* non_null_obj() const { assert(_value != NULL, "resolving NULL _value"); return _value; } \
173 DEF_METADATA_HANDLE(constantPool, ConstantPool) 173 DEF_METADATA_HANDLE(constantPool, ConstantPool)
174 174
175 // Writing this class explicitly, since DEF_METADATA_HANDLE(klass) doesn't 175 // Writing this class explicitly, since DEF_METADATA_HANDLE(klass) doesn't
176 // provide the necessary Klass* <-> Klass* conversions. This Klass 176 // provide the necessary Klass* <-> Klass* conversions. This Klass
177 // could be removed when we don't have the Klass* typedef anymore. 177 // could be removed when we don't have the Klass* typedef anymore.
178 class KlassHandle { 178 class KlassHandle : public StackObj {
179 Klass* _value; 179 Klass* _value;
180 protected: 180 protected:
181 Klass* obj() const { return _value; } 181 Klass* obj() const { return _value; }
182 Klass* non_null_obj() const { assert(_value != NULL, "resolving NULL _value"); return _value; } 182 Klass* non_null_obj() const { assert(_value != NULL, "resolving NULL _value"); return _value; }
183 183