< prev index next >
src/hotspot/share/opto/type.cpp
Print this page
@@ -440,20 +440,26 @@
FLOAT = make(FloatBot); // All floats
DOUBLE = make(DoubleBot); // All doubles
BOTTOM = make(Bottom); // Everything
HALF = make(Half); // Placeholder half of doublewide type
+ TypeF::MAX = TypeF::make(max_jfloat); // Float MAX
+ TypeF::MIN = TypeF::make(min_jfloat); // Float MIN
TypeF::ZERO = TypeF::make(0.0); // Float 0 (positive zero)
TypeF::ONE = TypeF::make(1.0); // Float 1
TypeF::POS_INF = TypeF::make(jfloat_cast(POSITIVE_INFINITE_F));
TypeF::NEG_INF = TypeF::make(-jfloat_cast(POSITIVE_INFINITE_F));
+ TypeD::MAX = TypeD::make(max_jdouble); // Double MAX
+ TypeD::MIN = TypeD::make(min_jdouble); // Double MIN
TypeD::ZERO = TypeD::make(0.0); // Double 0 (positive zero)
TypeD::ONE = TypeD::make(1.0); // Double 1
TypeD::POS_INF = TypeD::make(jdouble_cast(POSITIVE_INFINITE_D));
TypeD::NEG_INF = TypeD::make(-jdouble_cast(POSITIVE_INFINITE_D));
+ TypeInt::MAX = TypeInt::make(max_jint); // Int MAX
+ TypeInt::MIN = TypeInt::make(min_jint); // Int MIN
TypeInt::MINUS_1 = TypeInt::make(-1); // -1
TypeInt::ZERO = TypeInt::make( 0); // 0
TypeInt::ONE = TypeInt::make( 1); // 1
TypeInt::BOOL = TypeInt::make(0,1, WidenMin); // 0 or 1, FALSE or TRUE.
TypeInt::CC = TypeInt::make(-1, 1, WidenMin); // -1, 0 or 1, condition codes
@@ -478,10 +484,12 @@
assert( TypeInt::CC_GT == TypeInt::ONE, "types must match for CmpL to work" );
assert( TypeInt::CC_EQ == TypeInt::ZERO, "types must match for CmpL to work" );
assert( TypeInt::CC_GE == TypeInt::BOOL, "types must match for CmpL to work" );
assert( (juint)(TypeInt::CC->_hi - TypeInt::CC->_lo) <= SMALLINT, "CC is truly small");
+ TypeLong::MAX = TypeLong::make(max_jlong); // Long MAX
+ TypeLong::MIN = TypeLong::make(min_jlong); // Long MIN
TypeLong::MINUS_1 = TypeLong::make(-1); // -1
TypeLong::ZERO = TypeLong::make( 0); // 0
TypeLong::ONE = TypeLong::make( 1); // 1
TypeLong::POS = TypeLong::make(0,max_jlong, WidenMin); // Non-neg values
TypeLong::LONG = TypeLong::make(min_jlong,max_jlong,WidenMax); // 64-bit integers
@@ -857,10 +865,11 @@
const Type *mt = this_t->xmeet(t);
#ifdef ASSERT
if (isa_narrowoop() || t->isa_narrowoop()) return mt;
if (isa_narrowklass() || t->isa_narrowklass()) return mt;
+ if (isa_vect() || t->isa_vect()) return mt;
Compile* C = Compile::current();
if (!C->_type_verify_symmetry) {
return mt;
}
this_t->check_symmetrical(t, mt);
@@ -1113,10 +1122,12 @@
}
//=============================================================================
// Convenience common pre-built types.
+const TypeF *TypeF::MAX; // Floating point max
+const TypeF *TypeF::MIN; // Floating point min
const TypeF *TypeF::ZERO; // Floating point zero
const TypeF *TypeF::ONE; // Floating point one
const TypeF *TypeF::POS_INF; // Floating point positive infinity
const TypeF *TypeF::NEG_INF; // Floating point negative infinity
@@ -1223,10 +1234,12 @@
return false; // always exactly a singleton
}
//=============================================================================
// Convenience common pre-built types.
+const TypeD *TypeD::MAX; // Floating point max
+const TypeD *TypeD::MIN; // Floating point min
const TypeD *TypeD::ZERO; // Floating point zero
const TypeD *TypeD::ONE; // Floating point one
const TypeD *TypeD::POS_INF; // Floating point positive infinity
const TypeD *TypeD::NEG_INF; // Floating point negative infinity
@@ -1329,10 +1342,12 @@
return false; // always exactly a singleton
}
//=============================================================================
// Convience common pre-built types.
+const TypeInt *TypeInt::MAX; // INT_MAX
+const TypeInt *TypeInt::MIN; // INT_MIN
const TypeInt *TypeInt::MINUS_1;// -1
const TypeInt *TypeInt::ZERO; // 0
const TypeInt *TypeInt::ONE; // 1
const TypeInt *TypeInt::BOOL; // 0 or 1, FALSE or TRUE.
const TypeInt *TypeInt::CC; // -1,0 or 1, condition codes
@@ -1598,10 +1613,12 @@
return _lo > _hi;
}
//=============================================================================
// Convenience common pre-built types.
+const TypeLong *TypeLong::MAX;
+const TypeLong *TypeLong::MIN;
const TypeLong *TypeLong::MINUS_1;// -1
const TypeLong *TypeLong::ZERO; // 0
const TypeLong *TypeLong::ONE; // 1
const TypeLong *TypeLong::POS; // >=0
const TypeLong *TypeLong::LONG; // 64-bit integers
< prev index next >