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}
52 lines
1.1 KiB
Plaintext
52 lines
1.1 KiB
Plaintext
Checks that restart frame fails for generator or async functions.
|
|
|
|
Check that an async function cannot be restarted.
|
|
Paused at (after evaluation):
|
|
(async function asyncFn() {
|
|
#debugger;
|
|
})();
|
|
|
|
Pause stack:
|
|
asyncFn:2 (canBeRestarted = false)
|
|
|
|
Restarting function "asyncFn" ...
|
|
Failed to restart function "asyncFn":
|
|
{
|
|
code : -32000
|
|
message : Restarting frame failed
|
|
}
|
|
|
|
Check that a generator function cannot be restarted.
|
|
Paused at (after evaluation):
|
|
yield 10;
|
|
#debugger;
|
|
yield 20;
|
|
|
|
Pause stack:
|
|
generatorFn:3 (canBeRestarted = false)
|
|
|
|
Restarting function "generatorFn" ...
|
|
Failed to restart function "generatorFn":
|
|
{
|
|
code : -32000
|
|
message : Restarting frame failed
|
|
}
|
|
|
|
Check that a function cannot be restarted when a generator function is on the stack above
|
|
Paused at (after evaluation):
|
|
|
|
function breaker() { #debugger; }
|
|
function* genFn() {
|
|
|
|
Pause stack:
|
|
breaker:1 (canBeRestarted = true)
|
|
genFn:4 (canBeRestarted = false)
|
|
bar:10 (canBeRestarted = false)
|
|
|
|
Restarting function "bar" ...
|
|
Failed to restart function "bar":
|
|
{
|
|
code : -32000
|
|
message : Restarting frame failed
|
|
}
|