< 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 >