Mercurial > hg > graal-jvmci-8
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 |