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.
21 lines
859 B
Text
21 lines
859 B
Text
$2a66ad4a block-function-declaration-order.js:1:1
|
|
Registers: 7
|
|
Blocks: 1
|
|
Constants:
|
|
[0] = Undefined
|
|
|
|
block0:
|
|
[ 0] GetLexicalEnvironment dst:reg4
|
|
[ 8] CreateLexicalEnvironment dst:reg5, parent:reg4, capacity:0, is_catch_environment:false
|
|
[ 20] CreateMutableBinding environment:reg5, `f1`, can_be_deleted:false
|
|
[ 30] NewFunction dst:reg6, shared_function_data_index:0
|
|
[ 48] InitializeLexicalBinding `f1`, src:reg6
|
|
[ 60] CreateMutableBinding environment:reg5, `f2`, can_be_deleted:false
|
|
[ 70] NewFunction dst:reg6, shared_function_data_index:1
|
|
[ 88] InitializeLexicalBinding `f2`, src:reg6
|
|
[ a0] GetBinding dst:reg6, `f1`
|
|
[ b8] SetVariableBinding `f1`, src:reg6
|
|
[ d0] GetBinding dst:reg6, `f2`
|
|
[ e8] SetVariableBinding `f2`, src:reg6
|
|
[ 100] SetLexicalEnvironment environment:reg4
|
|
[ 108] End value:Undefined
|