9ca7491b35
This is a reland of commit 8278cb5015
The reland adds the RestartFrameTrampoline to the list of
builtins that the deoptimizer is allowed to return from for
control flow integrity.
Original change's description:
> [inspector] Re-enable Debugger#restartFrame
>
> Doc: https://bit.ly/revive-restart-frame
>
> This CL "undeprecates" Debugger#restartFrame and adds a new optional
> "mode" parameter for back-wards compatibility. Moreover, the return
> values are all deprecated. They were never actually used in the
> DevTools frontend and the same information is available from the
> Debugger#paused event that fires once execution stops at the
> beginning of the restarted function.
>
> The CL also re-baselines all the restart-frame inspector tests that
> now run successfully.
>
> R=bmeurer@chromium.org, kimanh@chromium.org
>
> Bug: chromium:1303521
> Change-Id: I34bddeb1f2f4ff3dee58dd82e779c111495566f3
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3616505
> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
> Reviewed-by: Kim-Anh Tran <kimanh@chromium.org>
> Commit-Queue: Simon Zünd <szuend@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#80491}
Bug: chromium:1303521
Change-Id: I13e2f8b5011795a38e541310622b8333a3d08049
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3644624
Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
Commit-Queue: Simon Zünd <szuend@chromium.org>
Reviewed-by: Kim-Anh Tran <kimanh@chromium.org>
Cr-Commit-Position: refs/heads/main@{#80534}
21 lines
536 B
Plaintext
21 lines
536 B
Plaintext
Checks that restarting an inlined frame works.
|
|
Optimization status for function "h"? optimized
|
|
Paused at (after evaluation):
|
|
console.log('f');
|
|
return a + b;# // Breakpoint is set here.
|
|
}
|
|
|
|
Pause stack:
|
|
f:3 (canBeRestarted = true)
|
|
g:8 (canBeRestarted = true)
|
|
h:13 (canBeRestarted = true)
|
|
|
|
Optimization status for function "h" after we paused? optimized
|
|
Restarting function "g" ...
|
|
Paused at (after restart):
|
|
function g(a, b) { // We want to restart 'g'.
|
|
#console.log('g');
|
|
return 2 + f(a, b);
|
|
|
|
Called functions: h,g,f,g,f
|