< prev index next >
src/share/vm/opto/type.cpp
Print this page
@@ -48,62 +48,62 @@
// Dictionary of types shared among compilations.
Dict* Type::_shared_type_dict = NULL;
// Array which maps compiler types to Basic Types
Type::TypeInfo Type::_type_info[Type::lastype] = {
- { Bad, T_ILLEGAL, "bad", false, Node::NotAMachineReg, relocInfo::none }, // Bad
- { Control, T_ILLEGAL, "control", false, 0, relocInfo::none }, // Control
- { Bottom, T_VOID, "top", false, 0, relocInfo::none }, // Top
- { Bad, T_INT, "int:", false, Op_RegI, relocInfo::none }, // Int
- { Bad, T_LONG, "long:", false, Op_RegL, relocInfo::none }, // Long
- { Half, T_VOID, "half", false, 0, relocInfo::none }, // Half
- { Bad, T_NARROWOOP, "narrowoop:", false, Op_RegN, relocInfo::none }, // NarrowOop
- { Bad, T_NARROWKLASS,"narrowklass:", false, Op_RegN, relocInfo::none }, // NarrowKlass
- { Bad, T_ILLEGAL, "tuple:", false, Node::NotAMachineReg, relocInfo::none }, // Tuple
- { Bad, T_ARRAY, "array:", false, Node::NotAMachineReg, relocInfo::none }, // Array
+ { Bad, T_ILLEGAL, "bad", false, Opcodes::NotAMachineReg, relocInfo::none }, // Bad
+ { Control, T_ILLEGAL, "control", false, Opcodes::Op_Node, relocInfo::none }, // Control
+ { Bottom, T_VOID, "top", false, Opcodes::Op_Node, relocInfo::none }, // Top
+ { Bad, T_INT, "int:", false, Opcodes::Op_RegI, relocInfo::none }, // Int
+ { Bad, T_LONG, "long:", false, Opcodes::Op_RegL, relocInfo::none }, // Long
+ { Half, T_VOID, "half", false, Opcodes::Op_Node, relocInfo::none }, // Half
+ { Bad, T_NARROWOOP, "narrowoop:", false, Opcodes::Op_RegN, relocInfo::none }, // NarrowOop
+ { Bad, T_NARROWKLASS,"narrowklass:", false, Opcodes::Op_RegN, relocInfo::none }, // NarrowKlass
+ { Bad, T_ILLEGAL, "tuple:", false, Opcodes::NotAMachineReg, relocInfo::none }, // Tuple
+ { Bad, T_ARRAY, "array:", false, Opcodes::NotAMachineReg, relocInfo::none }, // Array
#ifdef SPARC
- { Bad, T_ILLEGAL, "vectors:", false, 0, relocInfo::none }, // VectorS
- { Bad, T_ILLEGAL, "vectord:", false, Op_RegD, relocInfo::none }, // VectorD
- { Bad, T_ILLEGAL, "vectorx:", false, 0, relocInfo::none }, // VectorX
- { Bad, T_ILLEGAL, "vectory:", false, 0, relocInfo::none }, // VectorY
- { Bad, T_ILLEGAL, "vectorz:", false, 0, relocInfo::none }, // VectorZ
+ { Bad, T_ILLEGAL, "vectors:", false, Opcodes::Op_Node, relocInfo::none }, // VectorS
+ { Bad, T_ILLEGAL, "vectord:", false, Opcodes::Op_RegD, relocInfo::none }, // VectorD
+ { Bad, T_ILLEGAL, "vectorx:", false, Opcodes::Op_Node, relocInfo::none }, // VectorX
+ { Bad, T_ILLEGAL, "vectory:", false, Opcodes::Op_Node, relocInfo::none }, // VectorY
+ { Bad, T_ILLEGAL, "vectorz:", false, Opcodes::Op_Node, relocInfo::none }, // VectorZ
#elif defined(PPC64)
- { Bad, T_ILLEGAL, "vectors:", false, 0, relocInfo::none }, // VectorS
- { Bad, T_ILLEGAL, "vectord:", false, Op_RegL, relocInfo::none }, // VectorD
- { Bad, T_ILLEGAL, "vectorx:", false, 0, relocInfo::none }, // VectorX
- { Bad, T_ILLEGAL, "vectory:", false, 0, relocInfo::none }, // VectorY
- { Bad, T_ILLEGAL, "vectorz:", false, 0, relocInfo::none }, // VectorZ
+ { Bad, T_ILLEGAL, "vectors:", false, Opcodes::Op_Node, relocInfo::none }, // VectorS
+ { Bad, T_ILLEGAL, "vectord:", false, Opcodes::Op_RegL, relocInfo::none }, // VectorD
+ { Bad, T_ILLEGAL, "vectorx:", false, Opcodes::Op_Node, relocInfo::none }, // VectorX
+ { Bad, T_ILLEGAL, "vectory:", false, Opcodes::Op_Node, relocInfo::none }, // VectorY
+ { Bad, T_ILLEGAL, "vectorz:", false, Opcodes::Op_Node, relocInfo::none }, // VectorZ
#else // all other
- { Bad, T_ILLEGAL, "vectors:", false, Op_VecS, relocInfo::none }, // VectorS
- { Bad, T_ILLEGAL, "vectord:", false, Op_VecD, relocInfo::none }, // VectorD
- { Bad, T_ILLEGAL, "vectorx:", false, Op_VecX, relocInfo::none }, // VectorX
- { Bad, T_ILLEGAL, "vectory:", false, Op_VecY, relocInfo::none }, // VectorY
- { Bad, T_ILLEGAL, "vectorz:", false, Op_VecZ, relocInfo::none }, // VectorZ
+ { Bad, T_ILLEGAL, "vectors:", false, Opcodes::Op_VecS, relocInfo::none }, // VectorS
+ { Bad, T_ILLEGAL, "vectord:", false, Opcodes::Op_VecD, relocInfo::none }, // VectorD
+ { Bad, T_ILLEGAL, "vectorx:", false, Opcodes::Op_VecX, relocInfo::none }, // VectorX
+ { Bad, T_ILLEGAL, "vectory:", false, Opcodes::Op_VecY, relocInfo::none }, // VectorY
+ { Bad, T_ILLEGAL, "vectorz:", false, Opcodes::Op_VecZ, relocInfo::none }, // VectorZ
#endif
- { Bad, T_ADDRESS, "anyptr:", false, Op_RegP, relocInfo::none }, // AnyPtr
- { Bad, T_ADDRESS, "rawptr:", false, Op_RegP, relocInfo::none }, // RawPtr
- { Bad, T_OBJECT, "oop:", true, Op_RegP, relocInfo::oop_type }, // OopPtr
- { Bad, T_OBJECT, "inst:", true, Op_RegP, relocInfo::oop_type }, // InstPtr
- { Bad, T_OBJECT, "ary:", true, Op_RegP, relocInfo::oop_type }, // AryPtr
- { Bad, T_METADATA, "metadata:", false, Op_RegP, relocInfo::metadata_type }, // MetadataPtr
- { Bad, T_METADATA, "klass:", false, Op_RegP, relocInfo::metadata_type }, // KlassPtr
- { Bad, T_OBJECT, "func", false, 0, relocInfo::none }, // Function
- { Abio, T_ILLEGAL, "abIO", false, 0, relocInfo::none }, // Abio
- { Return_Address, T_ADDRESS, "return_address",false, Op_RegP, relocInfo::none }, // Return_Address
- { Memory, T_ILLEGAL, "memory", false, 0, relocInfo::none }, // Memory
- { FloatBot, T_FLOAT, "float_top", false, Op_RegF, relocInfo::none }, // FloatTop
- { FloatCon, T_FLOAT, "ftcon:", false, Op_RegF, relocInfo::none }, // FloatCon
- { FloatTop, T_FLOAT, "float", false, Op_RegF, relocInfo::none }, // FloatBot
- { DoubleBot, T_DOUBLE, "double_top", false, Op_RegD, relocInfo::none }, // DoubleTop
- { DoubleCon, T_DOUBLE, "dblcon:", false, Op_RegD, relocInfo::none }, // DoubleCon
- { DoubleTop, T_DOUBLE, "double", false, Op_RegD, relocInfo::none }, // DoubleBot
- { Top, T_ILLEGAL, "bottom", false, 0, relocInfo::none } // Bottom
+ { Bad, T_ADDRESS, "anyptr:", false, Opcodes::Op_RegP, relocInfo::none }, // AnyPtr
+ { Bad, T_ADDRESS, "rawptr:", false, Opcodes::Op_RegP, relocInfo::none }, // RawPtr
+ { Bad, T_OBJECT, "oop:", true, Opcodes::Op_RegP, relocInfo::oop_type }, // OopPtr
+ { Bad, T_OBJECT, "inst:", true, Opcodes::Op_RegP, relocInfo::oop_type }, // InstPtr
+ { Bad, T_OBJECT, "ary:", true, Opcodes::Op_RegP, relocInfo::oop_type }, // AryPtr
+ { Bad, T_METADATA, "metadata:", false, Opcodes::Op_RegP, relocInfo::metadata_type }, // MetadataPtr
+ { Bad, T_METADATA, "klass:", false, Opcodes::Op_RegP, relocInfo::metadata_type }, // KlassPtr
+ { Bad, T_OBJECT, "func", false, Opcodes::Op_Node, relocInfo::none }, // Function
+ { Abio, T_ILLEGAL, "abIO", false, Opcodes::Op_Node, relocInfo::none }, // Abio
+ { Return_Address, T_ADDRESS, "return_address",false, Opcodes::Op_RegP, relocInfo::none }, // Return_Address
+ { Memory, T_ILLEGAL, "memory", false, Opcodes::Op_Node, relocInfo::none }, // Memory
+ { FloatBot, T_FLOAT, "float_top", false, Opcodes::Op_RegF, relocInfo::none }, // FloatTop
+ { FloatCon, T_FLOAT, "ftcon:", false, Opcodes::Op_RegF, relocInfo::none }, // FloatCon
+ { FloatTop, T_FLOAT, "float", false, Opcodes::Op_RegF, relocInfo::none }, // FloatBot
+ { DoubleBot, T_DOUBLE, "double_top", false, Opcodes::Op_RegD, relocInfo::none }, // DoubleTop
+ { DoubleCon, T_DOUBLE, "dblcon:", false, Opcodes::Op_RegD, relocInfo::none }, // DoubleCon
+ { DoubleTop, T_DOUBLE, "double", false, Opcodes::Op_RegD, relocInfo::none }, // DoubleBot
+ { Top, T_ILLEGAL, "bottom", false, Opcodes::Op_Node, relocInfo::none } // Bottom
};
// Map ideal registers (machine types) to ideal types
-const Type *Type::mreg2type[_last_machine_leaf];
+const Type *Type::mreg2type[static_cast<uint>(Opcodes::_last_machine_leaf)];
// Map basic types to canonical Type* pointers.
const Type* Type:: _const_basic_type[T_CONFLICT+1];
// Map basic types to constant-zero Types.
@@ -533,19 +533,19 @@
TypeNarrowOop::NULL_PTR = TypeNarrowOop::make( TypePtr::NULL_PTR );
TypeNarrowOop::BOTTOM = TypeNarrowOop::make( TypeInstPtr::BOTTOM );
TypeNarrowKlass::NULL_PTR = TypeNarrowKlass::make( TypePtr::NULL_PTR );
- mreg2type[Op_Node] = Type::BOTTOM;
- mreg2type[Op_Set ] = 0;
- mreg2type[Op_RegN] = TypeNarrowOop::BOTTOM;
- mreg2type[Op_RegI] = TypeInt::INT;
- mreg2type[Op_RegP] = TypePtr::BOTTOM;
- mreg2type[Op_RegF] = Type::FLOAT;
- mreg2type[Op_RegD] = Type::DOUBLE;
- mreg2type[Op_RegL] = TypeLong::LONG;
- mreg2type[Op_RegFlags] = TypeInt::CC;
+ mreg2type[static_cast<uint>(Opcodes::Op_Node)] = Type::BOTTOM;
+ mreg2type[static_cast<uint>(Opcodes::Op_Set) ] = 0;
+ mreg2type[static_cast<uint>(Opcodes::Op_RegN)] = TypeNarrowOop::BOTTOM;
+ mreg2type[static_cast<uint>(Opcodes::Op_RegI)] = TypeInt::INT;
+ mreg2type[static_cast<uint>(Opcodes::Op_RegP)] = TypePtr::BOTTOM;
+ mreg2type[static_cast<uint>(Opcodes::Op_RegF)] = Type::FLOAT;
+ mreg2type[static_cast<uint>(Opcodes::Op_RegD)] = Type::DOUBLE;
+ mreg2type[static_cast<uint>(Opcodes::Op_RegL)] = TypeLong::LONG;
+ mreg2type[static_cast<uint>(Opcodes::Op_RegFlags)] = TypeInt::CC;
TypeAryPtr::RANGE = TypeAryPtr::make( TypePtr::BotPTR, TypeAry::make(Type::BOTTOM,TypeInt::POS), NULL /* current->env()->Object_klass() */, false, arrayOopDesc::length_offset_in_bytes());
TypeAryPtr::NARROWOOPS = TypeAryPtr::make(TypePtr::BotPTR, TypeAry::make(TypeNarrowOop::BOTTOM, TypeInt::POS), NULL /*ciArrayKlass::make(o)*/, false, Type::OffsetBot);
@@ -656,15 +656,15 @@
TypeVect::VECTY = TypeVect::make(T_FLOAT,8);
}
if (Matcher::vector_size_supported(T_FLOAT,16)) {
TypeVect::VECTZ = TypeVect::make(T_FLOAT,16);
}
- mreg2type[Op_VecS] = TypeVect::VECTS;
- mreg2type[Op_VecD] = TypeVect::VECTD;
- mreg2type[Op_VecX] = TypeVect::VECTX;
- mreg2type[Op_VecY] = TypeVect::VECTY;
- mreg2type[Op_VecZ] = TypeVect::VECTZ;
+ mreg2type[static_cast<uint>(Opcodes::Op_VecS)] = TypeVect::VECTS;
+ mreg2type[static_cast<uint>(Opcodes::Op_VecD)] = TypeVect::VECTD;
+ mreg2type[static_cast<uint>(Opcodes::Op_VecX)] = TypeVect::VECTX;
+ mreg2type[static_cast<uint>(Opcodes::Op_VecY)] = TypeVect::VECTY;
+ mreg2type[static_cast<uint>(Opcodes::Op_VecZ)] = TypeVect::VECTZ;
// Restore working type arena.
current->set_type_arena(save);
current->set_type_dict(NULL);
}
@@ -2222,21 +2222,21 @@
assert(is_java_primitive(elem_bt), "only primitive types in vector");
assert(length > 1 && is_power_of_2(length), "vector length is power of 2");
assert(Matcher::vector_size_supported(elem_bt, length), "length in range");
int size = length * type2aelembytes(elem_bt);
switch (Matcher::vector_ideal_reg(size)) {
- case Op_VecS:
+ case Opcodes::Op_VecS:
return (TypeVect*)(new TypeVectS(elem, length))->hashcons();
- case Op_RegL:
- case Op_VecD:
- case Op_RegD:
+ case Opcodes::Op_RegL:
+ case Opcodes::Op_VecD:
+ case Opcodes::Op_RegD:
return (TypeVect*)(new TypeVectD(elem, length))->hashcons();
- case Op_VecX:
+ case Opcodes::Op_VecX:
return (TypeVect*)(new TypeVectX(elem, length))->hashcons();
- case Op_VecY:
+ case Opcodes::Op_VecY:
return (TypeVect*)(new TypeVectY(elem, length))->hashcons();
- case Op_VecZ:
+ case Opcodes::Op_VecZ:
return (TypeVect*)(new TypeVectZ(elem, length))->hashcons();
}
ShouldNotReachHere();
return NULL;
}
< prev index next >