mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8066679: jvmtiRedefineClasses.cpp assert cache ptrs must match
Remove the assert and deallocate cashed class file bytes that are in collision Reviewed-by: coleenp, dcubed
This commit is contained in:
parent
f84a0d02b9
commit
89256b01cb
1 changed files with 6 additions and 7 deletions
|
@ -3992,14 +3992,13 @@ void VM_RedefineClasses::redefine_single_class(jclass the_jclass,
|
||||||
// the_class doesn't have a cache yet so copy it
|
// the_class doesn't have a cache yet so copy it
|
||||||
the_class->set_cached_class_file(scratch_class->get_cached_class_file());
|
the_class->set_cached_class_file(scratch_class->get_cached_class_file());
|
||||||
}
|
}
|
||||||
#ifndef PRODUCT
|
else if (scratch_class->get_cached_class_file_bytes() !=
|
||||||
else {
|
the_class->get_cached_class_file_bytes()) {
|
||||||
assert(the_class->get_cached_class_file_bytes() ==
|
// The same class can be present twice in the scratch classes list or there
|
||||||
scratch_class->get_cached_class_file_bytes(), "cache ptrs must match");
|
// are multiple concurrent RetransformClasses calls on different threads.
|
||||||
assert(the_class->get_cached_class_file_len() ==
|
// In such cases we have to deallocate scratch_class cached_class_file_bytes.
|
||||||
scratch_class->get_cached_class_file_len(), "cache lens must match");
|
os::free(scratch_class->get_cached_class_file_bytes());
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
// NULL out in scratch class to not delete twice. The class to be redefined
|
// NULL out in scratch class to not delete twice. The class to be redefined
|
||||||
// always owns these bytes.
|
// always owns these bytes.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue