1003 BAD_ALLOCATION_TYPE = -1 1004 }; 1005 1006 static FieldAllocationType _basic_type_to_atype[2 * (T_CONFLICT + 1)] = { 1007 BAD_ALLOCATION_TYPE, // 0 1008 BAD_ALLOCATION_TYPE, // 1 1009 BAD_ALLOCATION_TYPE, // 2 1010 BAD_ALLOCATION_TYPE, // 3 1011 NONSTATIC_BYTE , // T_BOOLEAN = 4, 1012 NONSTATIC_SHORT, // T_CHAR = 5, 1013 NONSTATIC_WORD, // T_FLOAT = 6, 1014 NONSTATIC_DOUBLE, // T_DOUBLE = 7, 1015 NONSTATIC_BYTE, // T_BYTE = 8, 1016 NONSTATIC_SHORT, // T_SHORT = 9, 1017 NONSTATIC_WORD, // T_INT = 10, 1018 NONSTATIC_DOUBLE, // T_LONG = 11, 1019 NONSTATIC_OOP, // T_OBJECT = 12, 1020 NONSTATIC_OOP, // T_ARRAY = 13, 1021 BAD_ALLOCATION_TYPE, // T_VOID = 14, 1022 BAD_ALLOCATION_TYPE, // T_ADDRESS = 15, 1023 BAD_ALLOCATION_TYPE, // T_NARROWOOP= 16, 1024 BAD_ALLOCATION_TYPE, // T_METADATA = 17, 1025 BAD_ALLOCATION_TYPE, // T_CONFLICT = 18, 1026 BAD_ALLOCATION_TYPE, // 0 1027 BAD_ALLOCATION_TYPE, // 1 1028 BAD_ALLOCATION_TYPE, // 2 1029 BAD_ALLOCATION_TYPE, // 3 1030 STATIC_BYTE , // T_BOOLEAN = 4, 1031 STATIC_SHORT, // T_CHAR = 5, 1032 STATIC_WORD, // T_FLOAT = 6, 1033 STATIC_DOUBLE, // T_DOUBLE = 7, 1034 STATIC_BYTE, // T_BYTE = 8, 1035 STATIC_SHORT, // T_SHORT = 9, 1036 STATIC_WORD, // T_INT = 10, 1037 STATIC_DOUBLE, // T_LONG = 11, 1038 STATIC_OOP, // T_OBJECT = 12, 1039 STATIC_OOP, // T_ARRAY = 13, 1040 BAD_ALLOCATION_TYPE, // T_VOID = 14, 1041 BAD_ALLOCATION_TYPE, // T_ADDRESS = 15, 1042 BAD_ALLOCATION_TYPE, // T_NARROWOOP= 16, 1043 BAD_ALLOCATION_TYPE, // T_METADATA = 17, 1044 BAD_ALLOCATION_TYPE, // T_CONFLICT = 18, 1045 }; 1046 1047 static FieldAllocationType basic_type_to_atype(bool is_static, BasicType type) { 1048 assert(type >= T_BOOLEAN && type < T_VOID, "only allowable values"); 1049 FieldAllocationType result = _basic_type_to_atype[type + (is_static ? (T_CONFLICT + 1) : 0)]; 1050 assert(result != BAD_ALLOCATION_TYPE, "bad type"); 1051 return result; 1052 } 1053 1054 class FieldAllocationCount: public ResourceObj { 1055 public: 1056 u2 count[MAX_FIELD_ALLOCATION_TYPE]; 1057 1058 FieldAllocationCount() { 1059 for (int i = 0; i < MAX_FIELD_ALLOCATION_TYPE; i++) { 1060 count[i] = 0; 1061 } 1062 } 1063 1064 FieldAllocationType update(bool is_static, BasicType type) { | 1003 BAD_ALLOCATION_TYPE = -1 1004 }; 1005 1006 static FieldAllocationType _basic_type_to_atype[2 * (T_CONFLICT + 1)] = { 1007 BAD_ALLOCATION_TYPE, // 0 1008 BAD_ALLOCATION_TYPE, // 1 1009 BAD_ALLOCATION_TYPE, // 2 1010 BAD_ALLOCATION_TYPE, // 3 1011 NONSTATIC_BYTE , // T_BOOLEAN = 4, 1012 NONSTATIC_SHORT, // T_CHAR = 5, 1013 NONSTATIC_WORD, // T_FLOAT = 6, 1014 NONSTATIC_DOUBLE, // T_DOUBLE = 7, 1015 NONSTATIC_BYTE, // T_BYTE = 8, 1016 NONSTATIC_SHORT, // T_SHORT = 9, 1017 NONSTATIC_WORD, // T_INT = 10, 1018 NONSTATIC_DOUBLE, // T_LONG = 11, 1019 NONSTATIC_OOP, // T_OBJECT = 12, 1020 NONSTATIC_OOP, // T_ARRAY = 13, 1021 BAD_ALLOCATION_TYPE, // T_VOID = 14, 1022 BAD_ALLOCATION_TYPE, // T_ADDRESS = 15, 1023 BAD_ALLOCATION_TYPE, // T_NARROWOOP = 16, 1024 BAD_ALLOCATION_TYPE, // T_METADATA = 17, 1025 BAD_ALLOCATION_TYPE, // T_NARROWKLASS = 18, 1026 BAD_ALLOCATION_TYPE, // T_CONFLICT = 19, 1027 BAD_ALLOCATION_TYPE, // 0 1028 BAD_ALLOCATION_TYPE, // 1 1029 BAD_ALLOCATION_TYPE, // 2 1030 BAD_ALLOCATION_TYPE, // 3 1031 STATIC_BYTE , // T_BOOLEAN = 4, 1032 STATIC_SHORT, // T_CHAR = 5, 1033 STATIC_WORD, // T_FLOAT = 6, 1034 STATIC_DOUBLE, // T_DOUBLE = 7, 1035 STATIC_BYTE, // T_BYTE = 8, 1036 STATIC_SHORT, // T_SHORT = 9, 1037 STATIC_WORD, // T_INT = 10, 1038 STATIC_DOUBLE, // T_LONG = 11, 1039 STATIC_OOP, // T_OBJECT = 12, 1040 STATIC_OOP, // T_ARRAY = 13, 1041 BAD_ALLOCATION_TYPE, // T_VOID = 14, 1042 BAD_ALLOCATION_TYPE, // T_ADDRESS = 15, 1043 BAD_ALLOCATION_TYPE, // T_NARROWOOP = 16, 1044 BAD_ALLOCATION_TYPE, // T_METADATA = 17, 1045 BAD_ALLOCATION_TYPE, // T_NARROWKLASS = 18, 1046 BAD_ALLOCATION_TYPE, // T_CONFLICT = 19, 1047 }; 1048 1049 static FieldAllocationType basic_type_to_atype(bool is_static, BasicType type) { 1050 assert(type >= T_BOOLEAN && type < T_VOID, "only allowable values"); 1051 FieldAllocationType result = _basic_type_to_atype[type + (is_static ? (T_CONFLICT + 1) : 0)]; 1052 assert(result != BAD_ALLOCATION_TYPE, "bad type"); 1053 return result; 1054 } 1055 1056 class FieldAllocationCount: public ResourceObj { 1057 public: 1058 u2 count[MAX_FIELD_ALLOCATION_TYPE]; 1059 1060 FieldAllocationCount() { 1061 for (int i = 0; i < MAX_FIELD_ALLOCATION_TYPE; i++) { 1062 count[i] = 0; 1063 } 1064 } 1065 1066 FieldAllocationType update(bool is_static, BasicType type) { |