$b319ee85 lexical-env-teardown.js:13:1 Registers: 11 Blocks: 1 Constants: [0] = Undefined block0: [ 0] GetLexicalEnvironment dst:reg4 [ 8] GetGlobal dst:reg6, `console` [ 20] GetById dst:reg7, base:reg6, `log` (console.log) [ 40] GetGlobal dst:reg9, `withTeardown` [ 58] Call dst:reg8, callee:reg9, this_value:Undefined, withTeardown [ 78] Call dst:reg5, callee:reg7, this_value:reg6, console.log, arguments:[reg8] [ a0] GetGlobal dst:reg6, `console` [ b8] GetById dst:reg8, base:reg6, `log` (console.log) [ d8] GetGlobal dst:reg10, `blockTeardown` [ f0] Call dst:reg9, callee:reg10, this_value:Undefined, blockTeardown [ 110] Call dst:reg7, callee:reg8, this_value:reg6, console.log, arguments:[reg9] [ 138] GetGlobal dst:reg8, `console` [ 150] GetById dst:reg6, base:reg8, `log` (console.log) [ 170] GetGlobal dst:reg10, `forInTeardown` [ 188] Call dst:reg9, callee:reg10, this_value:Undefined, forInTeardown [ 1a8] Call dst:reg5, callee:reg6, this_value:reg8, console.log, arguments:[reg9] [ 1d0] GetGlobal dst:reg6, `console` [ 1e8] GetById dst:reg8, base:reg6, `log` (console.log) [ 208] GetGlobal dst:reg10, `forOfTeardown` [ 220] Call dst:reg9, callee:reg10, this_value:Undefined, forOfTeardown [ 240] Call dst:reg7, callee:reg8, this_value:reg6, console.log, arguments:[reg9] [ 268] GetGlobal dst:reg8, `console` [ 280] GetById dst:reg6, base:reg8, `log` (console.log) [ 2a0] GetGlobal dst:reg10, `catchTeardown` [ 2b8] Call dst:reg9, callee:reg10, this_value:Undefined, catchTeardown [ 2d8] Call dst:reg5, callee:reg6, this_value:reg8, console.log, arguments:[reg9] [ 300] CreateLexicalEnvironment dst:reg7, parent:reg4, capacity:0 [ 310] CreateVariable `myName`, is_immutable:true, is_global:false, is_strict:false [ 320] NewFunction dst:reg6, shared_function_data_index:0 [ 338] InitializeLexicalBinding `myName`, src:reg6 [ 350] SetLexicalEnvironment environment:reg4 [ 358] SetGlobal `namedFn`, src:reg6 [ 370] GetGlobal dst:reg7, `console` [ 388] GetById dst:reg8, base:reg7, `log` (console.log) [ 3a8] GetGlobal dst:reg10, `namedFn` [ 3c0] Call dst:reg9, callee:reg10, this_value:Undefined, namedFn [ 3e0] Call dst:reg6, callee:reg8, this_value:reg7, console.log, arguments:[reg9] [ 408] End value:reg6 withTeardown$f8b3e64d lexical-env-teardown.js:7:5 Registers: 10 Blocks: 1 Locals: inner~0 Constants: [0] = Int32(1) [1] = Int32(10) [2] = Undefined block0: [ 0] GetLexicalEnvironment dst:reg4 [ 8] CreateLexicalEnvironment dst:reg5, parent:reg4, capacity:1 [ 18] CreateVariable `outer`, is_immutable:false, is_global:false, is_strict:false [ 28] InitializeLexicalBinding `outer`, src:Int32(1) [ 40] NewObject dst:reg6 [ 50] InitObjectLiteralProperty object:reg6, `x`, src:Int32(10), shape_cache_index:0, property_slot:0 [ 68] CacheObjectShape object:reg6 [ 78] EnterObjectEnvironment dst:reg7, object:reg6 [ 88] GetBinding dst:reg8, `x` [ a0] GetBinding dst:reg9, `outer` [ b8] Add dst:inner~0, lhs:reg8, rhs:reg9 [ c8] SetLexicalEnvironment environment:reg5 [ d0] GetBinding dst:reg6, `outer` [ e8] Return value:reg6 blockTeardown$b6f5c4f0 lexical-env-teardown.js:17:5 Registers: 5 Blocks: 1 Locals: inner~0, outer~1 Constants: [0] = Int32(2) [1] = Int32(3) block0: [ 0] Mov2 dst1:outer~1, src1:Int32(2), dst2:inner~0, src2:Int32(3) [ 18] Return value:outer~1 forInTeardown$00ab80a8 lexical-env-teardown.js:28:5 Registers: 8 Blocks: 6 Locals: k~0, outer~1 Constants: [0] = Int32(4) [1] = Int32(1) [2] = Int32(2) block0: [ 0] Mov dst:outer~1, src:Int32(4) [ 10] NewObject dst:reg5 [ 20] InitObjectLiteralProperty object:reg5, `a`, src:Int32(1), shape_cache_index:0, property_slot:0 [ 38] InitObjectLiteralProperty object:reg5, `b`, src:Int32(2), shape_cache_index:0, property_slot:1 [ 50] CacheObjectShape object:reg5 [ 60] JumpNullish condition:reg5, true_target:block3, false_target:block4 block1: [ 70] Return value:outer~1 block2: [ 78] ObjectPropertyIteratorNext dst_value:reg5, dst_done:reg7, iterator_object:reg6 [ 88] JumpIf condition:reg7, true_target:block1, false_target:block5 block3: [ 98] Return value:outer~1 block4: [ a0] GetObjectPropertyIterator dst_iterator:reg6, object:reg5 [ b8] Jump target:block2 block5: [ c0] Mov dst:k~0, src:reg5 [ d0] ThrowIfTDZ src:k~0 [ d8] Jump target:block2 forOfTeardown$94a2ae97 lexical-env-teardown.js:38:5 Registers: 12 Blocks: 9 Locals: v~0, outer~1 Constants: [0] = Int32(5) [1] = Int32(1) [2] = Undefined [3] = Int32(2) block0: [ 0] GetLexicalEnvironment dst:reg4 [ 8] Mov dst:outer~1, src:Int32(5) [ 18] NewPrimitiveArray dst:reg5, elements:[10, 20] [ 38] GetIterator dst_iterator_object:reg6, dst_iterator_next:reg7, dst_iterator_done:reg8, iterable:reg5 [ 50] Jump target:block2 block1: [ 58] Return value:outer~1 block2: [ 60] IteratorNextUnpack dst_value:reg10, dst_done:reg11, iterator_object:reg6, iterator_next:reg7, iterator_done:reg8 [ 78] JumpIf condition:reg11, true_target:block1, false_target:block4 block3: [ 88] Catch dst:reg9 [ 90] SetLexicalEnvironment environment:reg4 [ 98] Mov dst:reg5, src:Int32(1) [ a8] JumpStrictlyEquals lhs:reg5, rhs:Int32(1), true_target:block5, false_target:block6 block4: [ c0] Mov dst:v~0, src:reg10 [ d0] ThrowIfTDZ src:v~0 [ d8] Jump target:block2 block5: [ e0] IteratorClose iterator_object:reg6, iterator_next:reg7, iterator_done:reg8, completion_value:reg9 [ f8] Throw src:reg9 block6: [ 100] IteratorClose iterator_object:reg6, iterator_next:reg7, iterator_done:reg8, completion_value:Undefined [ 118] JumpStrictlyEquals lhs:reg5, rhs:Int32(2), true_target:block7, false_target:block8 block7: [ 130] Return value:reg9 block8: [ 138] Throw src:reg9 Exception handlers: [ c0 .. e0] => handler block3 catchTeardown$ea214605 lexical-env-teardown.js:48:5 Registers: 7 Blocks: 3 Locals: e~0, outer~1 Constants: [0] = Int32(6) [1] = Undefined [2] = String("test") block0: [ 0] GetLexicalEnvironment dst:reg4 [ 8] Mov dst:outer~1, src:Int32(6) [ 18] Jump target:block2 block1: [ 20] Catch dst:reg5 [ 28] SetLexicalEnvironment environment:reg4 [ 30] Mov dst:e~0, src:reg5 [ 40] Return value:outer~1 block2: [ 48] GetGlobal dst:reg6, `Error` [ 60] CallConstruct dst:reg5, callee:reg6, Error, arguments:[String("test")] [ 80] Throw src:reg5 Exception handlers: [ 48 .. 88] => handler block1 myName$b54e4267 lexical-env-teardown.js:60:5 Registers: 6 Blocks: 1 block0: [ 0] TypeofBinding dst:reg5, `myName` [ 18] Return value:reg5 1 2 4 5 6 "function"