Mercurial > hg > truffle
diff src/share/vm/classfile/verifier.cpp @ 6147:5ba29a1db46e hs24-b14
Merge
author | amurillo |
---|---|
date | Fri, 15 Jun 2012 14:07:00 -0700 |
parents | e17b61ba7bb3 |
children | 9d5f20961bc5 8150fa46d2ed |
line wrap: on
line diff
--- a/src/share/vm/classfile/verifier.cpp Thu Jun 14 13:14:13 2012 -0700 +++ b/src/share/vm/classfile/verifier.cpp Fri Jun 15 14:07:00 2012 -0700 @@ -1738,10 +1738,14 @@ 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(