$37aa5f7d catch-scope-boundary.js:14:1
  Registers: 11
  Blocks:    1
  Constants:
    [0] = Undefined

block0:
  [   0] GetGlobal dst:reg6, `console`
  [  10] GetById dst:reg7, base:reg6, `log` (console.log)
  [  28] GetGlobal dst:reg9, `throwInCatch`
  [  38] Call dst:reg8, callee:reg9, this_value:Undefined, throwInCatch
  [  58] Call dst:reg5, callee:reg7, this_value:reg6, console.log, arguments:[reg8]
  [  80] GetGlobal dst:reg6, `console`
  [  90] GetById dst:reg8, base:reg6, `log` (console.log)
  [  a8] GetGlobal dst:reg10, `throwInCatchWithLocals`
  [  b8] Call dst:reg9, callee:reg10, this_value:Undefined, throwInCatchWithLocals
  [  d8] Call dst:reg7, callee:reg8, this_value:reg6, console.log, arguments:[reg9]
  [ 100] End value:reg7


throwInCatch$94c0d746 catch-scope-boundary.js:2:5
  Registers: 7
  Blocks:    6
  Locals:    e2~0, e~1, result~2
  Constants:
    [0] = String("bad")
    [1] = String("good")
    [2] = Int32(2)
    [3] = Int32(1)

block0:
  [   0] GetLexicalEnvironment dst:reg4
  [   8] Mov dst:result~2, src:String("bad")
  [  18] Jump target:block5

block1:
  [  20] Catch dst:reg5
  [  28] SetLexicalEnvironment environment:reg4
  [  30] Mov dst:e~1, src:reg5
  [  40] Jump target:block3

block2:
  [  48] Catch dst:reg6
  [  50] SetLexicalEnvironment environment:reg4
  [  58] Mov2 dst1:e2~0, src1:reg6, dst2:result~2, src2:String("good")
  [  70] Return value:result~2

block3:
  [  78] Throw src:Int32(2)

block4:
  [  80] Return value:result~2

block5:
  [  88] Throw src:Int32(1)

Exception handlers:
  [  78 ..   80] => handler block2
  [  88 ..   90] => handler block1


throwInCatchWithLocals$35b0d9e9 catch-scope-boundary.js:17:5
  Registers: 9
  Blocks:    5
  Locals:    inner~0, catchLocal~1, e~2, outerVar~3
  Constants:
    [0] = String("outer")
    [1] = String("local:")
    [2] = String(",")
    [3] = String("second")
    [4] = String("first")

block0:
  [   0] GetLexicalEnvironment dst:reg4
  [   8] Mov dst:outerVar~3, src:String("outer")
  [  18] Jump target:block4

block1:
  [  20] Catch dst:reg5
  [  28] SetLexicalEnvironment environment:reg4
  [  30] Mov dst:e~2, src:reg5
  [  40] Add dst:catchLocal~1, lhs:String("local:"), rhs:e~2
  [  50] Jump target:block3

block2:
  [  58] Catch dst:reg6
  [  60] SetLexicalEnvironment environment:reg4
  [  68] Mov dst:inner~0, src:reg6
  [  78] Add dst:reg7, lhs:outerVar~3, rhs:String(",")
  [  88] Add dst:reg8, lhs:reg7, rhs:catchLocal~1
  [  98] Add dst:reg7, lhs:reg8, rhs:String(",")
  [  a8] Add dst:reg8, lhs:reg7, rhs:inner~0
  [  b8] Return value:reg8

block3:
  [  c0] Throw src:String("second")

block4:
  [  c8] Throw src:String("first")

Exception handlers:
  [  c0 ..   c8] => handler block2
  [  c8 ..   d0] => handler block1


"good"
"outer,local:first,second"
