mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-27 18:17:22 +02:00
Replace the saved_lexical_environments stack in ExecutionContextRareData with explicit register-based environment tracking. Environments are now stored in registers and restored via SetLexicalEnvironment, making the environment flow visible in bytecode. Key changes: - Add GetLexicalEnvironment and SetLexicalEnvironment opcodes - CreateLexicalEnvironment takes explicit parent and dst operands - EnterObjectEnvironment stores new environment in a dst register - NewClass takes an explicit class_environment operand - Remove LeaveLexicalEnvironment opcode (instead: SetLexicalEnvironment) - Remove saved_lexical_environments from ExecutionContextRareData - Use a reserved register for the saved lexical environment to avoid dominance issues with lazily-emitted GetLexicalEnvironment
26 lines
431 B
JavaScript
26 lines
431 B
JavaScript
function tryCatchWithBlocks() {
|
|
let x = 1;
|
|
try {
|
|
let y = 2;
|
|
throw y;
|
|
} catch (e) {
|
|
let z = 3;
|
|
console.log(x + e + z);
|
|
}
|
|
}
|
|
tryCatchWithBlocks();
|
|
|
|
function tryCatchFinallyWithBlocks() {
|
|
let x = 1;
|
|
try {
|
|
let y = 2;
|
|
throw y;
|
|
} catch (e) {
|
|
console.log(e);
|
|
} finally {
|
|
let z = 3;
|
|
console.log(z);
|
|
}
|
|
}
|
|
tryCatchFinallyWithBlocks();
|