equal
deleted
inserted
replaced
311 |
311 |
312 return entry; |
312 return entry; |
313 } |
313 } |
314 |
314 |
315 |
315 |
316 address TemplateInterpreterGenerator::generate_deopt_entry_for(TosState state, int step) { |
316 address TemplateInterpreterGenerator::generate_deopt_entry_for(TosState state, int step, address continuation) { |
317 address entry = __ pc(); |
317 address entry = __ pc(); |
318 __ get_constant_pool_cache(LcpoolCache); // load LcpoolCache |
318 __ get_constant_pool_cache(LcpoolCache); // load LcpoolCache |
319 #if INCLUDE_JVMCI |
319 #if INCLUDE_JVMCI |
320 // Check if we need to take lock at entry of synchronized method. This can |
320 // Check if we need to take lock at entry of synchronized method. This can |
321 // only occur on method entry so emit it only for vtos with step 0. |
321 // only occur on method entry so emit it only for vtos with step 0. |
348 __ br_null_short(Gtemp, Assembler::pt, L); |
348 __ br_null_short(Gtemp, Assembler::pt, L); |
349 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_pending_exception)); |
349 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_pending_exception)); |
350 __ should_not_reach_here(); |
350 __ should_not_reach_here(); |
351 __ bind(L); |
351 __ bind(L); |
352 } |
352 } |
353 __ dispatch_next(state, step); |
353 if (continuation == NULL) { |
|
354 __ dispatch_next(state, step); |
|
355 } else { |
|
356 __ jump_to_entry(continuation); |
|
357 } |
354 return entry; |
358 return entry; |
355 } |
359 } |
356 |
360 |
357 // A result handler converts/unboxes a native call result into |
361 // A result handler converts/unboxes a native call result into |
358 // a java interpreter/compiler result. The current frame is an |
362 // a java interpreter/compiler result. The current frame is an |