55 return element_type() == tak->element_type();
56 }
57
58 TypeArrayKlass* TypeArrayKlass::create_klass(BasicType type,
59 const char* name_str, TRAPS) {
60 Symbol* sym = NULL;
61 if (name_str != NULL) {
62 sym = SymbolTable::new_permanent_symbol(name_str, CHECK_NULL);
63 }
64
65 ClassLoaderData* null_loader_data = ClassLoaderData::the_null_class_loader_data();
66
67 TypeArrayKlass* ak = TypeArrayKlass::allocate(null_loader_data, type, sym, CHECK_NULL);
68
69 // Add all classes to our internal class loader list here,
70 // including classes in the bootstrap (NULL) class loader.
71 // GC walks these as strong roots.
72 null_loader_data->add_class(ak);
73
74 // Call complete_create_array_klass after all instance variables have been initialized.
75 complete_create_array_klass(ak, ak->super(), ModuleEntryTable::javabase_module(), CHECK_NULL);
76
77 return ak;
78 }
79
80 TypeArrayKlass* TypeArrayKlass::allocate(ClassLoaderData* loader_data, BasicType type, Symbol* name, TRAPS) {
81 assert(TypeArrayKlass::header_size() <= InstanceKlass::header_size(),
82 "array klasses must be same size as InstanceKlass");
83
84 int size = ArrayKlass::static_size(TypeArrayKlass::header_size());
85
86 return new (loader_data, size, THREAD) TypeArrayKlass(type, name);
87 }
88
89 TypeArrayKlass::TypeArrayKlass(BasicType type, Symbol* name) : ArrayKlass(name) {
90 set_layout_helper(array_layout_helper(type));
91 assert(is_array_klass(), "sanity");
92 assert(is_typeArray_klass(), "sanity");
93
94 set_max_length(arrayOopDesc::max_array_length(type));
95 assert(size() >= TypeArrayKlass::header_size(), "bad size");
330 case T_BYTE: print_byte_array(ta, print_len, st); break;
331 case T_SHORT: print_short_array(ta, print_len, st); break;
332 case T_INT: print_int_array(ta, print_len, st); break;
333 case T_LONG: print_long_array(ta, print_len, st); break;
334 default: ShouldNotReachHere();
335 }
336 int remaining = ta->length() - print_len;
337 if (remaining > 0) {
338 st->print_cr(" - <%d more elements, increase MaxElementPrintSize to print>", remaining);
339 }
340 }
341
342 #endif // PRODUCT
343
344 const char* TypeArrayKlass::internal_name() const {
345 return Klass::external_name();
346 }
347
348 // A TypeArrayKlass is an array of a primitive type, its defining module is java.base
349 ModuleEntry* TypeArrayKlass::module() const {
350 return ModuleEntryTable::javabase_module();
351 }
352
353 PackageEntry* TypeArrayKlass::package() const {
354 return NULL;
355 }
|
55 return element_type() == tak->element_type();
56 }
57
58 TypeArrayKlass* TypeArrayKlass::create_klass(BasicType type,
59 const char* name_str, TRAPS) {
60 Symbol* sym = NULL;
61 if (name_str != NULL) {
62 sym = SymbolTable::new_permanent_symbol(name_str, CHECK_NULL);
63 }
64
65 ClassLoaderData* null_loader_data = ClassLoaderData::the_null_class_loader_data();
66
67 TypeArrayKlass* ak = TypeArrayKlass::allocate(null_loader_data, type, sym, CHECK_NULL);
68
69 // Add all classes to our internal class loader list here,
70 // including classes in the bootstrap (NULL) class loader.
71 // GC walks these as strong roots.
72 null_loader_data->add_class(ak);
73
74 // Call complete_create_array_klass after all instance variables have been initialized.
75 complete_create_array_klass(ak, ak->super(), ModuleEntryTable::javabase_moduleEntry(), CHECK_NULL);
76
77 return ak;
78 }
79
80 TypeArrayKlass* TypeArrayKlass::allocate(ClassLoaderData* loader_data, BasicType type, Symbol* name, TRAPS) {
81 assert(TypeArrayKlass::header_size() <= InstanceKlass::header_size(),
82 "array klasses must be same size as InstanceKlass");
83
84 int size = ArrayKlass::static_size(TypeArrayKlass::header_size());
85
86 return new (loader_data, size, THREAD) TypeArrayKlass(type, name);
87 }
88
89 TypeArrayKlass::TypeArrayKlass(BasicType type, Symbol* name) : ArrayKlass(name) {
90 set_layout_helper(array_layout_helper(type));
91 assert(is_array_klass(), "sanity");
92 assert(is_typeArray_klass(), "sanity");
93
94 set_max_length(arrayOopDesc::max_array_length(type));
95 assert(size() >= TypeArrayKlass::header_size(), "bad size");
330 case T_BYTE: print_byte_array(ta, print_len, st); break;
331 case T_SHORT: print_short_array(ta, print_len, st); break;
332 case T_INT: print_int_array(ta, print_len, st); break;
333 case T_LONG: print_long_array(ta, print_len, st); break;
334 default: ShouldNotReachHere();
335 }
336 int remaining = ta->length() - print_len;
337 if (remaining > 0) {
338 st->print_cr(" - <%d more elements, increase MaxElementPrintSize to print>", remaining);
339 }
340 }
341
342 #endif // PRODUCT
343
344 const char* TypeArrayKlass::internal_name() const {
345 return Klass::external_name();
346 }
347
348 // A TypeArrayKlass is an array of a primitive type, its defining module is java.base
349 ModuleEntry* TypeArrayKlass::module() const {
350 return ModuleEntryTable::javabase_moduleEntry();
351 }
352
353 PackageEntry* TypeArrayKlass::package() const {
354 return NULL;
355 }
|