--- old/src/share/vm/opto/type.cpp 2016-07-11 22:46:57.828337771 +0900 +++ new/src/share/vm/opto/type.cpp 2016-07-11 22:46:57.685338271 +0900 @@ -50,58 +50,58 @@ // 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(Opcodes::_last_machine_leaf)]; // Map basic types to canonical Type* pointers. const Type* Type:: _const_basic_type[T_CONFLICT+1]; @@ -535,15 +535,15 @@ 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(Opcodes::Op_Node)] = Type::BOTTOM; + mreg2type[static_cast(Opcodes::Op_Set) ] = 0; + mreg2type[static_cast(Opcodes::Op_RegN)] = TypeNarrowOop::BOTTOM; + mreg2type[static_cast(Opcodes::Op_RegI)] = TypeInt::INT; + mreg2type[static_cast(Opcodes::Op_RegP)] = TypePtr::BOTTOM; + mreg2type[static_cast(Opcodes::Op_RegF)] = Type::FLOAT; + mreg2type[static_cast(Opcodes::Op_RegD)] = Type::DOUBLE; + mreg2type[static_cast(Opcodes::Op_RegL)] = TypeLong::LONG; + mreg2type[static_cast(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()); @@ -658,11 +658,11 @@ 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(Opcodes::Op_VecS)] = TypeVect::VECTS; + mreg2type[static_cast(Opcodes::Op_VecD)] = TypeVect::VECTD; + mreg2type[static_cast(Opcodes::Op_VecX)] = TypeVect::VECTX; + mreg2type[static_cast(Opcodes::Op_VecY)] = TypeVect::VECTY; + mreg2type[static_cast(Opcodes::Op_VecZ)] = TypeVect::VECTZ; // Restore working type arena. current->set_type_arena(save); @@ -2224,17 +2224,17 @@ 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();