diff options
author | Linus Groh <mail@linusgroh.de> | 2022-01-05 19:11:16 +0100 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2022-01-06 12:36:23 +0100 |
commit | 9d0d3affd4feaab62c37e284a17432815c071c24 (patch) | |
tree | 205b9f342ad4c53e5865ff80906873992ccc759f /Userland/DevTools | |
parent | eed764e1dd3288f203108229c7e1ca9d09aef4d5 (diff) | |
download | serenity-9d0d3affd4feaab62c37e284a17432815c071c24.zip |
LibJS: Replace the custom unwind mechanism with completions :^)
This includes:
- Parsing proper LabelledStatements with try_parse_labelled_statement()
- Removing LabelableStatement
- Implementing the LoopEvaluation semantics via loop_evaluation() in
each IterationStatement subclass; and IterationStatement evaluation
via {For,ForIn,ForOf,ForAwaitOf,While,DoWhile}Statement::execute()
- Updating ReturnStatement, BreakStatement and ContinueStatement to
return the appropriate completion types
- Basically reimplementing TryStatement and SwitchStatement according to
the spec, using completions
- Honoring result completion types in AsyncBlockStart and
OrdinaryCallEvaluateBody
- Removing any uses of the VM unwind mechanism - most importantly,
VM::throw_exception() now exclusively sets an exception and no longer
triggers any unwinding mechanism.
However, we already did a good job updating all of LibWeb and userland
applications to not use it, and the few remaining uses elsewhere don't
rely on unwinding AFAICT.
Diffstat (limited to 'Userland/DevTools')
0 files changed, 0 insertions, 0 deletions