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