< prev index next >

src/hotspot/share/oops/valueKlass.cpp

Print this page

        

@@ -327,11 +327,11 @@
                                                        THREAD);
       assert(klass != NULL && !HAS_PENDING_EXCEPTION, "lookup shouldn't fail");
       const GrowableArray<SigEntry>& embedded = ValueKlass::cast(klass)->collect_fields(offset);
       sig_extended.appendAll(&embedded);
       } else {
-        sig_extended.push(SigEntry(T_OBJECT, offset));
+        sig_extended.push(SigEntry(T_VALUETYPEPTR, offset));
       }
     } else {
       sig_extended.push(SigEntry(bt, offset));
       if (bt == T_LONG || bt == T_DOUBLE) {
         sig_extended.push(SigEntry(T_VOID, offset));

@@ -431,11 +431,11 @@
   const Array<VMRegPair>* regs = return_regs();
   int j = 1;
 
   for (int i = 0; i < sig_vk->length(); i++) {
     BasicType bt = sig_vk->at(i)._bt;
-    if (bt == T_OBJECT || bt == T_ARRAY) {
+    if (bt == T_OBJECT || bt == T_VALUETYPEPTR || bt == T_ARRAY) {
       int off = sig_vk->at(i)._offset;
       VMRegPair pair = regs->at(j);
       address loc = reg_map.location(pair.first());
       oop v = *(oop*)loc;
       assert(v == NULL || oopDesc::is_oop(v), "not an oop?");

@@ -549,10 +549,11 @@
       Unimplemented();
 #endif
       break;
     }
     case T_OBJECT:
+    case T_VALUETYPEPTR:
     case T_ARRAY: {
       Handle handle = handles.at(k++);
       oop v = handle();
       if (!UseCompressedOops) {
         oop* p = (oop*)((address)new_vt + off);
< prev index next >