The Annex B.3.4 spec change requires distinguishing catch clause environments from other lexical environments when checking for var/let conflicts in eval, which is now tracked via a flag on DeclarativeEnvironment and propagated through the CreateLexicalEnvironment bytecode instruction from the Rust codegen.
15 lines
608 B
Text
15 lines
608 B
Text
$cf62a0f7 named-function-expression.js:4:6
|
|
Registers: 8
|
|
Blocks: 1
|
|
|
|
block0:
|
|
[ 0] GetLexicalEnvironment dst:reg4
|
|
[ 8] CreateLexicalEnvironment dst:reg5, parent:reg4, capacity:0, is_catch_environment:false
|
|
[ 20] CreateVariable `Oops`, is_immutable:true, is_global:false, is_strict:false
|
|
[ 30] NewFunction dst:reg6, shared_function_data_index:0
|
|
[ 48] InitializeLexicalBinding `Oops`, src:reg6
|
|
[ 60] SetLexicalEnvironment environment:reg4
|
|
[ 68] SetGlobal `Oops`, src:reg6
|
|
[ 80] GetGlobal dst:reg5, `Oops`
|
|
[ 98] GetById dst:reg7, base:reg5, `x` (Oops.x)
|
|
[ b8] End value:reg7
|