Mercurial > hg > graal-compiler
comparison src/share/vm/graal/graalCodeInstaller.cpp @ 6351:c5024000ff0f
fix for cyclic references in virtual objects
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Tue, 11 Sep 2012 12:10:45 +0200 |
parents | 58a607307306 |
children | 6b74f44c5059 |
comparison
equal
deleted
inserted
replaced
6350:f45d5cb03c3b | 6351:c5024000ff0f |
---|---|
187 return obj; | 187 return obj; |
188 } | 188 } |
189 } | 189 } |
190 | 190 |
191 ObjectValue* sv = new ObjectValue(id, new ConstantOopWriteValue(JNIHandles::make_local(Thread::current(), klass))); | 191 ObjectValue* sv = new ObjectValue(id, new ConstantOopWriteValue(JNIHandles::make_local(Thread::current(), klass))); |
192 objects->append(sv); | |
192 | 193 |
193 arrayOop values = (arrayOop) VirtualObject::values(value); | 194 arrayOop values = (arrayOop) VirtualObject::values(value); |
194 for (jint i = 0; i < values->length(); i++) { | |
195 ((oop*) values->base(T_OBJECT))[i]; | |
196 } | |
197 | |
198 for (jint i = 0; i < values->length(); i++) { | 195 for (jint i = 0; i < values->length(); i++) { |
199 ScopeValue* cur_second = NULL; | 196 ScopeValue* cur_second = NULL; |
200 ScopeValue* value = get_hotspot_value(((oop*) values->base(T_OBJECT))[i], total_frame_size, objects, cur_second); | 197 ScopeValue* value = get_hotspot_value(((oop*) values->base(T_OBJECT))[i], total_frame_size, objects, cur_second); |
201 | 198 |
202 if (isLongArray && cur_second == NULL) { | 199 if (isLongArray && cur_second == NULL) { |
213 if (cur_second != NULL) { | 210 if (cur_second != NULL) { |
214 sv->field_values()->append(cur_second); | 211 sv->field_values()->append(cur_second); |
215 } | 212 } |
216 sv->field_values()->append(value); | 213 sv->field_values()->append(value); |
217 } | 214 } |
218 objects->append(sv); | |
219 return sv; | 215 return sv; |
220 } else { | 216 } else { |
221 value->klass()->print(); | 217 value->klass()->print(); |
222 value->print(); | 218 value->print(); |
223 } | 219 } |