93 _type_signatures[T_BYTE] = byte_signature();
94 _type_signatures[T_CHAR] = char_signature();
95 _type_signatures[T_DOUBLE] = double_signature();
96 _type_signatures[T_FLOAT] = float_signature();
97 _type_signatures[T_INT] = int_signature();
98 _type_signatures[T_LONG] = long_signature();
99 _type_signatures[T_SHORT] = short_signature();
100 _type_signatures[T_BOOLEAN] = bool_signature();
101 _type_signatures[T_VOID] = void_signature();
102 #ifdef ASSERT
103 for (int i = (int)T_BOOLEAN; i < (int)T_VOID+1; i++) {
104 Symbol* s = _type_signatures[i];
105 if (s == nullptr) continue;
106 SignatureStream ss(s, false);
107 assert(ss.type() == i, "matching signature");
108 assert(!ss.is_reference(), "no single-char signature for T_OBJECT, etc.");
109 }
110 #endif
111 }
112
113 #ifdef ASSERT
114 // Check for duplicates:
115
116 for (auto i1 : EnumRange<vmSymbolID>{}) {
117 Symbol* sym = symbol_at(i1);
118 for (auto i2 : EnumRange<vmSymbolID>{vmSymbolID::FIRST_SID, i1}) {
119 if (i2 != i1 && symbol_at(i2) == sym) {
120 tty->print("*** Duplicate VM symbol SIDs %s(%d) and %s(%d): \"",
121 vm_symbol_enum_name(i2), as_int(i2),
122 vm_symbol_enum_name(i1), as_int(i1));
123 sym->print_symbol_on(tty);
124 tty->print_cr("\"");
125 }
126 }
127 }
128 #endif //ASSERT
129
130 // Create an index for find_id:
131 {
132 for (auto index : EnumRange<vmSymbolID>{}) {
279 if (sym2 == symbol) {
280 sid2 = index;
281 break;
282 }
283 }
284 // Unless it's a duplicate, assert that the sids are the same.
285 if (Symbol::_vm_symbols[as_int(sid)] != Symbol::_vm_symbols[as_int(sid2)]) {
286 assert(sid == sid2, "binary same as linear search");
287 }
288 }
289 #endif //ASSERT
290
291 return sid;
292 }
293
294 vmSymbolID vmSymbols::find_sid(const char* symbol_name) {
295 Symbol* symbol = SymbolTable::probe(symbol_name, (int) strlen(symbol_name));
296 if (symbol == nullptr) return vmSymbolID::NO_SID;
297 return find_sid(symbol);
298 }
|
93 _type_signatures[T_BYTE] = byte_signature();
94 _type_signatures[T_CHAR] = char_signature();
95 _type_signatures[T_DOUBLE] = double_signature();
96 _type_signatures[T_FLOAT] = float_signature();
97 _type_signatures[T_INT] = int_signature();
98 _type_signatures[T_LONG] = long_signature();
99 _type_signatures[T_SHORT] = short_signature();
100 _type_signatures[T_BOOLEAN] = bool_signature();
101 _type_signatures[T_VOID] = void_signature();
102 #ifdef ASSERT
103 for (int i = (int)T_BOOLEAN; i < (int)T_VOID+1; i++) {
104 Symbol* s = _type_signatures[i];
105 if (s == nullptr) continue;
106 SignatureStream ss(s, false);
107 assert(ss.type() == i, "matching signature");
108 assert(!ss.is_reference(), "no single-char signature for T_OBJECT, etc.");
109 }
110 #endif
111 }
112
113 initialize_migrated_class_names();
114
115 #ifdef ASSERT
116 // Check for duplicates:
117
118 for (auto i1 : EnumRange<vmSymbolID>{}) {
119 Symbol* sym = symbol_at(i1);
120 for (auto i2 : EnumRange<vmSymbolID>{vmSymbolID::FIRST_SID, i1}) {
121 if (i2 != i1 && symbol_at(i2) == sym) {
122 tty->print("*** Duplicate VM symbol SIDs %s(%d) and %s(%d): \"",
123 vm_symbol_enum_name(i2), as_int(i2),
124 vm_symbol_enum_name(i1), as_int(i1));
125 sym->print_symbol_on(tty);
126 tty->print_cr("\"");
127 }
128 }
129 }
130 #endif //ASSERT
131
132 // Create an index for find_id:
133 {
134 for (auto index : EnumRange<vmSymbolID>{}) {
281 if (sym2 == symbol) {
282 sid2 = index;
283 break;
284 }
285 }
286 // Unless it's a duplicate, assert that the sids are the same.
287 if (Symbol::_vm_symbols[as_int(sid)] != Symbol::_vm_symbols[as_int(sid2)]) {
288 assert(sid == sid2, "binary same as linear search");
289 }
290 }
291 #endif //ASSERT
292
293 return sid;
294 }
295
296 vmSymbolID vmSymbols::find_sid(const char* symbol_name) {
297 Symbol* symbol = SymbolTable::probe(symbol_name, (int) strlen(symbol_name));
298 if (symbol == nullptr) return vmSymbolID::NO_SID;
299 return find_sid(symbol);
300 }
301
302 // The list of these migrated value classes is in
303 // open/make/modules/java.base/gensrc/GensrcValueClasses.gmk.
304
305 Symbol* vmSymbols::_migrated_class_names[_migrated_class_names_length];
306
307 void vmSymbols::initialize_migrated_class_names() {
308 int i = 0;
309 _migrated_class_names[i++] = java_lang_Byte();
310 _migrated_class_names[i++] = java_lang_Short();
311 _migrated_class_names[i++] = java_lang_Integer();
312 _migrated_class_names[i++] = java_lang_Long();
313 _migrated_class_names[i++] = java_lang_Float();
314 _migrated_class_names[i++] = java_lang_Double();
315 _migrated_class_names[i++] = java_lang_Boolean();
316 _migrated_class_names[i++] = java_lang_Character();
317 _migrated_class_names[i++] = java_lang_Number();
318 _migrated_class_names[i++] = java_lang_Record();
319 _migrated_class_names[i++] = java_util_Optional();
320 _migrated_class_names[i++] = java_util_OptionalInt();
321 _migrated_class_names[i++] = java_util_OptionalLong();
322 _migrated_class_names[i++] = java_util_OptionalDouble();
323 _migrated_class_names[i++] = java_time_LocalDate();
324 _migrated_class_names[i++] = java_time_LocalDateTime();
325 _migrated_class_names[i++] = java_time_LocalTime();
326 _migrated_class_names[i++] = java_time_Duration();
327 _migrated_class_names[i++] = java_time_Instant();
328 _migrated_class_names[i++] = java_time_MonthDay();
329 _migrated_class_names[i++] = java_time_ZonedDateTime();
330 _migrated_class_names[i++] = java_time_OffsetDateTime();
331 _migrated_class_names[i++] = java_time_OffsetTime();
332 _migrated_class_names[i++] = java_time_YearMonth();
333 _migrated_class_names[i++] = java_time_Year();
334 _migrated_class_names[i++] = java_time_Period();
335 _migrated_class_names[i++] = java_time_chrono_ChronoLocalDateImpl();
336 _migrated_class_names[i++] = java_time_chrono_MinguoDate();
337 _migrated_class_names[i++] = java_time_chrono_HijrahDate();
338 _migrated_class_names[i++] = java_time_chrono_JapaneseDate();
339 _migrated_class_names[i++] = java_time_chrono_ThaiBuddhistDate();
340 assert(i == _migrated_class_names_length, "should be");
341 }
|