1.1 --- a/src/share/vm/oops/constantPoolKlass.cpp Fri Apr 11 09:56:35 2008 -0400 1.2 +++ b/src/share/vm/oops/constantPoolKlass.cpp Sun Apr 13 17:43:42 2008 -0400 1.3 @@ -29,8 +29,9 @@ 1.4 int size = constantPoolOopDesc::object_size(length); 1.5 KlassHandle klass (THREAD, as_klassOop()); 1.6 constantPoolOop c = 1.7 - (constantPoolOop)CollectedHeap::permanent_array_allocate(klass, size, length, CHECK_NULL); 1.8 + (constantPoolOop)CollectedHeap::permanent_obj_allocate(klass, size, CHECK_NULL); 1.9 1.10 + c->set_length(length); 1.11 c->set_tags(NULL); 1.12 c->set_cache(NULL); 1.13 c->set_pool_holder(NULL); 1.14 @@ -54,14 +55,14 @@ 1.15 1.16 klassOop constantPoolKlass::create_klass(TRAPS) { 1.17 constantPoolKlass o; 1.18 - KlassHandle klassklass(THREAD, Universe::arrayKlassKlassObj()); 1.19 - arrayKlassHandle k = base_create_array_klass(o.vtbl_value(), header_size(), klassklass, CHECK_NULL); 1.20 - arrayKlassHandle super (THREAD, k->super()); 1.21 - complete_create_array_klass(k, super, CHECK_NULL); 1.22 + KlassHandle h_this_klass(THREAD, Universe::klassKlassObj()); 1.23 + KlassHandle k = base_create_klass(h_this_klass, header_size(), o.vtbl_value(), CHECK_NULL); 1.24 + // Make sure size calculation is right 1.25 + assert(k()->size() == align_object_size(header_size()), "wrong size for object"); 1.26 + java_lang_Class::create_mirror(k, CHECK_NULL); // Allocate mirror 1.27 return k(); 1.28 } 1.29 1.30 - 1.31 int constantPoolKlass::oop_size(oop obj) const { 1.32 assert(obj->is_constantPool(), "must be constantPool"); 1.33 return constantPoolOop(obj)->object_size(); 1.34 @@ -275,7 +276,7 @@ 1.35 EXCEPTION_MARK; 1.36 oop anObj; 1.37 assert(obj->is_constantPool(), "must be constantPool"); 1.38 - arrayKlass::oop_print_on(obj, st); 1.39 + Klass::oop_print_on(obj, st); 1.40 constantPoolOop cp = constantPoolOop(obj); 1.41 1.42 // Temp. remove cache so we can do lookups with original indicies.