src/share/vm/oops/constantPoolKlass.cpp

changeset 548
ba764ed4b6f2
parent 435
a61af66fc99e
child 631
d1605aabd0a1
     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.

mercurial