mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-22 20:14:43 +02:00
8007037: JSR 292: the VM_RedefineClasses::append_entry() should do cross-checks with indy operands
References from operands to CP entries and back must be correct after CP merge Reviewed-by: coleenp, twisti
This commit is contained in:
parent
db8bc15dd2
commit
333cf9a756
4 changed files with 344 additions and 30 deletions
|
@ -359,8 +359,15 @@ class VM_RedefineClasses: public VM_Operation {
|
|||
// _index_map_p contains any entries.
|
||||
int _index_map_count;
|
||||
intArray * _index_map_p;
|
||||
|
||||
// _operands_index_map_count is just an optimization for knowing if
|
||||
// _operands_index_map_p contains any entries.
|
||||
int _operands_cur_length;
|
||||
int _operands_index_map_count;
|
||||
intArray * _operands_index_map_p;
|
||||
|
||||
// ptr to _class_count scratch_classes
|
||||
Klass** _scratch_classes;
|
||||
Klass** _scratch_classes;
|
||||
jvmtiError _res;
|
||||
|
||||
// Performance measurement support. These timers do not cover all
|
||||
|
@ -422,12 +429,19 @@ class VM_RedefineClasses: public VM_Operation {
|
|||
// Support for constant pool merging (these routines are in alpha order):
|
||||
void append_entry(constantPoolHandle scratch_cp, int scratch_i,
|
||||
constantPoolHandle *merge_cp_p, int *merge_cp_length_p, TRAPS);
|
||||
void append_operand(constantPoolHandle scratch_cp, int scratch_bootstrap_spec_index,
|
||||
constantPoolHandle *merge_cp_p, int *merge_cp_length_p, TRAPS);
|
||||
void finalize_operands_merge(constantPoolHandle merge_cp, TRAPS);
|
||||
int find_or_append_indirect_entry(constantPoolHandle scratch_cp, int scratch_i,
|
||||
constantPoolHandle *merge_cp_p, int *merge_cp_length_p, TRAPS);
|
||||
int find_or_append_operand(constantPoolHandle scratch_cp, int scratch_bootstrap_spec_index,
|
||||
constantPoolHandle *merge_cp_p, int *merge_cp_length_p, TRAPS);
|
||||
int find_new_index(int old_index);
|
||||
int find_new_operand_index(int old_bootstrap_spec_index);
|
||||
bool is_unresolved_class_mismatch(constantPoolHandle cp1, int index1,
|
||||
constantPoolHandle cp2, int index2);
|
||||
void map_index(constantPoolHandle scratch_cp, int old_index, int new_index);
|
||||
void map_operand_index(int old_bootstrap_spec_index, int new_bootstrap_spec_index);
|
||||
bool merge_constant_pools(constantPoolHandle old_cp,
|
||||
constantPoolHandle scratch_cp, constantPoolHandle *merge_cp_p,
|
||||
int *merge_cp_length_p, TRAPS);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue