451 instanceKlassHandle scratch_class, TRAPS); 452 void rewrite_cp_refs_in_method(methodHandle method, 453 methodHandle * new_method_p, TRAPS); 454 bool rewrite_cp_refs_in_methods(instanceKlassHandle scratch_class, TRAPS); 455 bool rewrite_cp_refs_in_methods_annotations( 456 instanceKlassHandle scratch_class, TRAPS); 457 bool rewrite_cp_refs_in_methods_default_annotations( 458 instanceKlassHandle scratch_class, TRAPS); 459 bool rewrite_cp_refs_in_methods_parameter_annotations( 460 instanceKlassHandle scratch_class, TRAPS); 461 void rewrite_cp_refs_in_stack_map_table(methodHandle method, TRAPS); 462 void rewrite_cp_refs_in_verification_type_info( 463 address& stackmap_addr_ref, address stackmap_end, u2 frame_i, 464 u1 frame_size, TRAPS); 465 void set_new_constant_pool(ClassLoaderData* loader_data, 466 instanceKlassHandle scratch_class, 467 constantPoolHandle scratch_cp, int scratch_cp_length, TRAPS); 468 469 void flush_dependent_code(instanceKlassHandle k_h, TRAPS); 470 471 static void check_class(Klass* k_oop, ClassLoaderData* initiating_loader, TRAPS) PRODUCT_RETURN; 472 473 static void dump_methods() PRODUCT_RETURN; 474 475 public: 476 VM_RedefineClasses(jint class_count, 477 const jvmtiClassDefinition *class_defs, 478 JvmtiClassLoadKind class_load_kind); 479 VMOp_Type type() const { return VMOp_RedefineClasses; } 480 bool doit_prologue(); 481 void doit(); 482 void doit_epilogue(); 483 484 bool allow_nested_vm_operations() const { return true; } 485 jvmtiError check_error() { return _res; } 486 487 // Modifiable test must be shared between IsModifiableClass query 488 // and redefine implementation 489 static bool is_modifiable_class(oop klass_mirror); 490 }; 491 #endif // SHARE_VM_PRIMS_JVMTIREDEFINECLASSES_HPP | 451 instanceKlassHandle scratch_class, TRAPS); 452 void rewrite_cp_refs_in_method(methodHandle method, 453 methodHandle * new_method_p, TRAPS); 454 bool rewrite_cp_refs_in_methods(instanceKlassHandle scratch_class, TRAPS); 455 bool rewrite_cp_refs_in_methods_annotations( 456 instanceKlassHandle scratch_class, TRAPS); 457 bool rewrite_cp_refs_in_methods_default_annotations( 458 instanceKlassHandle scratch_class, TRAPS); 459 bool rewrite_cp_refs_in_methods_parameter_annotations( 460 instanceKlassHandle scratch_class, TRAPS); 461 void rewrite_cp_refs_in_stack_map_table(methodHandle method, TRAPS); 462 void rewrite_cp_refs_in_verification_type_info( 463 address& stackmap_addr_ref, address stackmap_end, u2 frame_i, 464 u1 frame_size, TRAPS); 465 void set_new_constant_pool(ClassLoaderData* loader_data, 466 instanceKlassHandle scratch_class, 467 constantPoolHandle scratch_cp, int scratch_cp_length, TRAPS); 468 469 void flush_dependent_code(instanceKlassHandle k_h, TRAPS); 470 471 static void check_class(Klass* k_oop, ClassLoaderData* initiating_loader, 472 TRAPS); 473 static void dump_methods(); 474 475 public: 476 VM_RedefineClasses(jint class_count, 477 const jvmtiClassDefinition *class_defs, 478 JvmtiClassLoadKind class_load_kind); 479 VMOp_Type type() const { return VMOp_RedefineClasses; } 480 bool doit_prologue(); 481 void doit(); 482 void doit_epilogue(); 483 484 bool allow_nested_vm_operations() const { return true; } 485 jvmtiError check_error() { return _res; } 486 487 // Modifiable test must be shared between IsModifiableClass query 488 // and redefine implementation 489 static bool is_modifiable_class(oop klass_mirror); 490 }; 491 #endif // SHARE_VM_PRIMS_JVMTIREDEFINECLASSES_HPP |