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 }