951 OperandForm *ArchDesc::constructOperand(const char *ident,
952 bool ideal_only) {
953 OperandForm *opForm = new OperandForm(ident, ideal_only);
954 _globalNames.Insert(ident, opForm);
955 addForm(opForm);
956
957 return opForm;
958 }
959
960
961 // Import predefined base types: Set = 1, RegI, RegP, ...
962 void ArchDesc::initBaseOpTypes() {
963 // Create OperandForm and assign type for each opcode.
964 for (int i = 1; i < _last_machine_leaf; ++i) {
965 char *ident = (char *)NodeClassNames[i];
966 constructOperand(ident, true);
967 }
968 // Create InstructForm and assign type for each ideal instruction.
969 for ( int j = _last_machine_leaf+1; j < _last_opcode; ++j) {
970 char *ident = (char *)NodeClassNames[j];
971 if(!strcmp(ident, "ConI") || !strcmp(ident, "ConP") || !strcmp(ident, "ConN") ||
972 !strcmp(ident, "ConF") || !strcmp(ident, "ConD") ||
973 !strcmp(ident, "ConL") || !strcmp(ident, "Con" ) ||
974 !strcmp(ident, "Bool") ) {
975 constructOperand(ident, true);
976 }
977 else {
978 InstructForm *insForm = new InstructForm(ident, true);
979 // insForm->_opcode = nextUserOpType(ident);
980 _globalNames.Insert(ident,insForm);
981 addForm(insForm);
982 }
983 }
984
985 { OperandForm *opForm;
986 // Create operand type "Universe" for return instructions.
987 const char *ident = "Universe";
988 opForm = constructOperand(ident, false);
989
990 // Create operand type "label" for branch targets
991 ident = "label";
|
951 OperandForm *ArchDesc::constructOperand(const char *ident,
952 bool ideal_only) {
953 OperandForm *opForm = new OperandForm(ident, ideal_only);
954 _globalNames.Insert(ident, opForm);
955 addForm(opForm);
956
957 return opForm;
958 }
959
960
961 // Import predefined base types: Set = 1, RegI, RegP, ...
962 void ArchDesc::initBaseOpTypes() {
963 // Create OperandForm and assign type for each opcode.
964 for (int i = 1; i < _last_machine_leaf; ++i) {
965 char *ident = (char *)NodeClassNames[i];
966 constructOperand(ident, true);
967 }
968 // Create InstructForm and assign type for each ideal instruction.
969 for ( int j = _last_machine_leaf+1; j < _last_opcode; ++j) {
970 char *ident = (char *)NodeClassNames[j];
971 if(!strcmp(ident, "ConI") || !strcmp(ident, "ConP") ||
972 !strcmp(ident, "ConN") || !strcmp(ident, "ConNKlass") ||
973 !strcmp(ident, "ConF") || !strcmp(ident, "ConD") ||
974 !strcmp(ident, "ConL") || !strcmp(ident, "Con" ) ||
975 !strcmp(ident, "Bool") ) {
976 constructOperand(ident, true);
977 }
978 else {
979 InstructForm *insForm = new InstructForm(ident, true);
980 // insForm->_opcode = nextUserOpType(ident);
981 _globalNames.Insert(ident,insForm);
982 addForm(insForm);
983 }
984 }
985
986 { OperandForm *opForm;
987 // Create operand type "Universe" for return instructions.
988 const char *ident = "Universe";
989 opForm = constructOperand(ident, false);
990
991 // Create operand type "label" for branch targets
992 ident = "label";
|