src/share/vm/oops/typeArrayKlass.cpp

changeset 2497
3582bf76420e
parent 2439
d4fca0a6abde
child 2534
e5383553fd4e
equal deleted inserted replaced
2496:27e4ea99855d 2497:3582bf76420e
51 51
52 klassOop typeArrayKlass::create_klass(BasicType type, int scale, 52 klassOop typeArrayKlass::create_klass(BasicType type, int scale,
53 const char* name_str, TRAPS) { 53 const char* name_str, TRAPS) {
54 typeArrayKlass o; 54 typeArrayKlass o;
55 55
56 symbolHandle sym(symbolOop(NULL)); 56 Symbol* sym = NULL;
57 // bootstrapping: don't create sym if symbolKlass not created yet 57 if (name_str != NULL) {
58 if (Universe::symbolKlassObj() != NULL && name_str != NULL) { 58 sym = SymbolTable::new_symbol(name_str, CHECK_NULL);
59 sym = oopFactory::new_symbol_handle(name_str, CHECK_NULL);
60 } 59 }
61 KlassHandle klassklass (THREAD, Universe::typeArrayKlassKlassObj()); 60 KlassHandle klassklass (THREAD, Universe::typeArrayKlassKlassObj());
62 61
63 arrayKlassHandle k = base_create_array_klass(o.vtbl_value(), header_size(), klassklass, CHECK_NULL); 62 arrayKlassHandle k = base_create_array_klass(o.vtbl_value(), header_size(), klassklass, CHECK_NULL);
64 typeArrayKlass* ak = typeArrayKlass::cast(k()); 63 typeArrayKlass* ak = typeArrayKlass::cast(k());
65 ak->set_name(sym()); 64 ak->set_name(sym);
66 ak->set_layout_helper(array_layout_helper(type)); 65 ak->set_layout_helper(array_layout_helper(type));
67 assert(scale == (1 << ak->log2_element_size()), "scale must check out"); 66 assert(scale == (1 << ak->log2_element_size()), "scale must check out");
68 assert(ak->oop_is_javaArray(), "sanity"); 67 assert(ak->oop_is_javaArray(), "sanity");
69 assert(ak->oop_is_typeArray(), "sanity"); 68 assert(ak->oop_is_typeArray(), "sanity");
70 ak->set_max_length(arrayOopDesc::max_array_length(type)); 69 ak->set_max_length(arrayOopDesc::max_array_length(type));

mercurial