mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-19 10:34:38 +02:00
8055946: assert(result == NULL || result->is_oop()) failed: must be oop
Caller of popped frame doesn't have valid result during deoptimization Reviewed-by: kvn
This commit is contained in:
parent
fa27000f3c
commit
9369af8c06
1 changed files with 2 additions and 1 deletions
|
@ -191,7 +191,8 @@ Deoptimization::UnrollBlock* Deoptimization::fetch_unroll_info_helper(JavaThread
|
||||||
// It is not guaranteed that we can get such information here only
|
// It is not guaranteed that we can get such information here only
|
||||||
// by analyzing bytecode in deoptimized frames. This is why this flag
|
// by analyzing bytecode in deoptimized frames. This is why this flag
|
||||||
// is set during method compilation (see Compile::Process_OopMap_Node()).
|
// is set during method compilation (see Compile::Process_OopMap_Node()).
|
||||||
bool save_oop_result = chunk->at(0)->scope()->return_oop();
|
// If the previous frame was popped, we don't have a result.
|
||||||
|
bool save_oop_result = chunk->at(0)->scope()->return_oop() && !thread->popframe_forcing_deopt_reexecution();
|
||||||
Handle return_value;
|
Handle return_value;
|
||||||
if (save_oop_result) {
|
if (save_oop_result) {
|
||||||
// Reallocation may trigger GC. If deoptimization happened on return from
|
// Reallocation may trigger GC. If deoptimization happened on return from
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue