< prev index next >
src/share/vm/opto/type.cpp
Print this page
@@ -644,10 +644,11 @@
TypeAryPtr::_array_body_type[T_DOUBLE] = TypeAryPtr::DOUBLES;
TypeKlassPtr::OBJECT = TypeKlassPtr::make(TypePtr::NotNull, current->env()->Object_klass(), Offset(0) );
TypeKlassPtr::OBJECT_OR_NULL = TypeKlassPtr::make(TypePtr::BotPTR, current->env()->Object_klass(), Offset(0) );
TypeKlassPtr::BOTTOM = (EnableValhalla | EnableMVT) ? TypeKlassPtr::make(TypePtr::BotPTR, NULL, Offset(0)) : TypeKlassPtr::OBJECT_OR_NULL;
+ TypeKlassPtr::VALUE = TypeKlassPtr::make(TypePtr::NotNull, current->env()->___Value_klass(), Offset(0));
const Type **fi2c = TypeTuple::fields(2);
fi2c[TypeFunc::Parms+0] = TypeInstPtr::BOTTOM; // Method*
fi2c[TypeFunc::Parms+1] = TypeRawPtr::BOTTOM; // argument pointer
TypeTuple::START_I2C = TypeTuple::make(TypeFunc::Parms+2, fi2c);
@@ -4767,17 +4768,20 @@
case DoubleTop:
case DoubleCon:
case DoubleBot:
case NarrowOop:
case NarrowKlass:
+ case Bottom: // Ye Olde Default
+ return Type::BOTTOM;
+
case MetadataPtr:
case KlassPtr:
case RawPtr:
case AryPtr:
case InstPtr:
- case Bottom: // Ye Olde Default
- return Type::BOTTOM;
+ return TypePtr::BOTTOM;
+
case Top:
return this;
default: // All else is a mistake
typerr(t);
@@ -5252,10 +5256,11 @@
// Not-null object klass or below
const TypeKlassPtr *TypeKlassPtr::OBJECT;
const TypeKlassPtr *TypeKlassPtr::OBJECT_OR_NULL;
const TypeKlassPtr* TypeKlassPtr::BOTTOM;
+const TypeKlassPtr *TypeKlassPtr::VALUE;
//------------------------------TypeKlassPtr-----------------------------------
TypeKlassPtr::TypeKlassPtr( PTR ptr, ciKlass* klass, Offset offset )
: TypePtr(KlassPtr, ptr, offset), _klass(klass), _klass_is_exact(ptr == Constant) {
}
@@ -5670,11 +5675,12 @@
} else {
domain_sig = TypeTuple::make_domain(method->holder(), method->signature(), false);
domain_cc = TypeTuple::make_domain(method->holder(), method->signature(), ValueTypePassFieldsAsArgs);
}
const TypeTuple *range_sig = TypeTuple::make_range(method->signature(), false);
- const TypeTuple *range_cc = TypeTuple::make_range(method->signature(), ValueTypeReturnedAsFields);
+ bool as_fields = ValueTypeReturnedAsFields;
+ const TypeTuple *range_cc = TypeTuple::make_range(method->signature(), as_fields);
tf = TypeFunc::make(domain_sig, domain_cc, range_sig, range_cc);
C->set_last_tf(method, tf); // fill cache
return tf;
}
< prev index next >