mirror of
https://github.com/openjdk/jdk.git
synced 2026-05-26 05:18:05 +00:00
7166498: JVM crash in ClassVerifier
Fixed raw pointer being used after potential safepoint/GC Reviewed-by: acorn, fparain, dholmes
This commit is contained in:
parent
e3d25bce34
commit
1ac7879229
@ -1738,10 +1738,14 @@ void ClassVerifier::verify_switch(
|
||||
int target = bci + default_offset;
|
||||
stackmap_table->check_jump_target(current_frame, target, CHECK_VERIFY(this));
|
||||
for (int i = 0; i < keys; i++) {
|
||||
// Because check_jump_target() may safepoint, the bytecode could have
|
||||
// moved, which means 'aligned_bcp' is no good and needs to be recalculated.
|
||||
aligned_bcp = (address)round_to((intptr_t)(bcs->bcp() + 1), jintSize);
|
||||
target = bci + (jint)Bytes::get_Java_u4(aligned_bcp+(3+i*delta)*jintSize);
|
||||
stackmap_table->check_jump_target(
|
||||
current_frame, target, CHECK_VERIFY(this));
|
||||
}
|
||||
NOT_PRODUCT(aligned_bcp = NULL); // no longer valid at this point
|
||||
}
|
||||
|
||||
bool ClassVerifier::name_in_supers(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user