src/share/vm/prims/jvmtiRedefineClasses.cpp

Print this page

        

@@ -2824,15 +2824,14 @@
                                         &trace_name_printed);
       }
     }
 
     // the previous versions' constant pool caches may need adjustment
-    PreviousVersionWalker pvw(_thread, ik);
-    for (PreviousVersionNode * pv_node = pvw.next_previous_version();
-         pv_node != NULL; pv_node = pvw.next_previous_version()) {
-      other_cp = pv_node->prev_constant_pool();
-      cp_cache = other_cp->cache();
+    for (InstanceKlass* pv_node = ik->previous_versions();
+         pv_node != NULL;
+         pv_node = pv_node->previous_versions()) {
+      cp_cache = pv_node->constants()->cache();
       if (cp_cache != NULL) {
         cp_cache->adjust_method_entries(_matching_old_methods,
                                         _matching_new_methods,
                                         _matching_methods_length,
                                         &trace_name_printed);

@@ -3469,10 +3468,12 @@
   the_class->set_enclosing_method_indices(
     scratch_class->enclosing_method_class_index(),
     scratch_class->enclosing_method_method_index());
   scratch_class->set_enclosing_method_indices(old_class_idx, old_method_idx);
 
+  the_class->set_has_been_redefined();
+
   // keep track of previous versions of this class
   the_class->add_previous_version(scratch_class, &emcp_methods,
     emcp_method_count);
 
   RC_TIMER_STOP(_timer_rsc_phase1);