mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-26 01:35:08 +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
17 lines
354 B
JavaScript
17 lines
354 B
JavaScript
function switchWithBlockDecl(x) {
|
|
let result;
|
|
switch (x) {
|
|
case 1:
|
|
let a = "one";
|
|
result = () => a;
|
|
break;
|
|
case 2:
|
|
let b = "two";
|
|
result = () => b;
|
|
break;
|
|
}
|
|
return result();
|
|
}
|
|
console.log(switchWithBlockDecl(1));
|
|
console.log(switchWithBlockDecl(2));
|