< prev index next >

src/share/vm/oops/klass.cpp

Print this page

        

@@ -262,11 +262,10 @@
     }
 #endif
   }
 
   if (secondary_supers() == NULL) {
-    KlassHandle this_kh (THREAD, this);
 
     // Now compute the list of secondary supertypes.
     // Secondaries can occasionally be on the super chain,
     // if the inline "_primary_supers" array overflows.
     int extras = 0;

@@ -284,11 +283,11 @@
       return;
     }
 
     GrowableArray<Klass*>* primaries = new GrowableArray<Klass*>(extras);
 
-    for (p = this_kh->super(); !(p == NULL || p->can_be_primary_super()); p = p->super()) {
+    for (p = super(); !(p == NULL || p->can_be_primary_super()); p = p->super()) {
       int i;                    // Scan for overflow primaries being duplicates of 2nd'arys
 
       // This happens frequently for very deeply nested arrays: the
       // primary superclass chain overflows into the secondary.  The
       // secondary list contains the element_klass's secondaries with

@@ -322,11 +321,11 @@
     for (int j = 0; j < s2->length(); j++) {
       assert(s2->at(j) != NULL, "correct bootstrapping order");
     }
   #endif
 
-    this_kh->set_secondary_supers(s2);
+    set_secondary_supers(s2);
   }
 }
 
 GrowableArray<Klass*>* Klass::compute_secondary_supers(int num_extra_slots) {
   assert(num_extra_slots == 0, "override for complex klasses");

@@ -695,11 +694,11 @@
   guarantee(obj->is_oop(),  "should be oop");
   guarantee(obj->klass()->is_klass(), "klass field is not a klass");
 }
 
 klassVtable* Klass::vtable() const {
-  return new klassVtable(this, start_of_vtable(), vtable_length() / vtableEntry::size());
+  return new klassVtable(const_cast<Klass*>(this), start_of_vtable(), vtable_length() / vtableEntry::size());
 }
 
 vtableEntry* Klass::start_of_vtable() const {
   return (vtableEntry*) ((address)this + in_bytes(vtable_start_offset()));
 }
< prev index next >