986 for (int i = 0; i < JVMCIENV->get_length(virtualObjects); i++) { |
986 for (int i = 0; i < JVMCIENV->get_length(virtualObjects); i++) { |
987 // HandleMark hm(THREAD); |
987 // HandleMark hm(THREAD); |
988 JVMCIObject value = JVMCIENV->get_object_at(virtualObjects, i); |
988 JVMCIObject value = JVMCIENV->get_object_at(virtualObjects, i); |
989 int id = jvmci_env()->get_VirtualObject_id(value); |
989 int id = jvmci_env()->get_VirtualObject_id(value); |
990 JVMCIObject type = jvmci_env()->get_VirtualObject_type(value); |
990 JVMCIObject type = jvmci_env()->get_VirtualObject_type(value); |
|
991 bool is_auto_box = jvmci_env()->get_VirtualObject_isAutoBox(value); |
991 Klass* klass = jvmci_env()->asKlass(type); |
992 Klass* klass = jvmci_env()->asKlass(type); |
992 oop javaMirror = klass->java_mirror(); |
993 oop javaMirror = klass->java_mirror(); |
993 ObjectValue* sv = new ObjectValue(id, new ConstantOopWriteValue(JNIHandles::make_local(Thread::current(), javaMirror))); |
994 ScopeValue *klass_sv = new ConstantOopWriteValue(JNIHandles::make_local(Thread::current(), javaMirror)); |
|
995 ObjectValue* sv = is_auto_box ? new AutoBoxObjectValue(id, klass_sv) : new ObjectValue(id, klass_sv); |
994 if (id < 0 || id >= objects->length()) { |
996 if (id < 0 || id >= objects->length()) { |
995 JVMCI_ERROR_NULL("virtual object id %d out of bounds", id); |
997 JVMCI_ERROR_NULL("virtual object id %d out of bounds", id); |
996 } |
998 } |
997 if (objects->at(id) != NULL) { |
999 if (objects->at(id) != NULL) { |
998 JVMCI_ERROR_NULL("duplicate virtual object id %d", id); |
1000 JVMCI_ERROR_NULL("duplicate virtual object id %d", id); |