diff 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
line wrap: on
line diff
--- a/src/share/vm/graal/graalCodeInstaller.cpp	Mon Sep 10 15:50:31 2012 +0200
+++ b/src/share/vm/graal/graalCodeInstaller.cpp	Tue Sep 11 12:10:45 2012 +0200
@@ -189,13 +189,10 @@
     }
 
     ObjectValue* sv = new ObjectValue(id, new ConstantOopWriteValue(JNIHandles::make_local(Thread::current(), klass)));
+    objects->append(sv);
 
     arrayOop values = (arrayOop) VirtualObject::values(value);
     for (jint i = 0; i < values->length(); i++) {
-      ((oop*) values->base(T_OBJECT))[i];
-    }
-
-    for (jint i = 0; i < values->length(); i++) {
       ScopeValue* cur_second = NULL;
       ScopeValue* value = get_hotspot_value(((oop*) values->base(T_OBJECT))[i], total_frame_size, objects, cur_second);
       
@@ -215,7 +212,6 @@
       }
       sv->field_values()->append(value);
     }
-    objects->append(sv);
     return sv;
   } else {
     value->klass()->print();