-
Benedikt Meurer authored
Previously we'd treat %_AsyncFunctionReject (and %AsyncFunctionReject) as side-effect free (in async functions), but that's not correct, since promise rejections have side-effects (at the very least triggering the unhandled promise rejection machinery in the browser). This required a minor refactoring as previously we'd classify functions as side-effecting or not depending on whether they contain any calls to side-effecting intrinsics, no matter whether this call is actually executed or not. That would break REPL mode however if we'd generally treat all async functions with %_AsyncFunctionReject intrinsic calls as side-effecting, so instead of performing the intrinsic checks ahead of time, we now perform the test at execution time. Before: https://imgur.com/5BvJP9d.png After: https://imgur.com/10FanNr.png Fixed: chromium:1249275 Change-Id: Ib06f945ba21f1e06ee9b13a1363fad342464fd9a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3197712 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Simon Zünd <szuend@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Simon Zünd <szuend@chromium.org> Cr-Commit-Position: refs/heads/main@{#77183}
0195a5eb