#
# Autogenerated by generate-bytecode-expectations.
#

---
pool type: mixed
execute: yes
wrap: no
test function name: f

---
snippet: "
  function Outer() {
    var outerVar = 1;
    function Inner(innerArg) {
      this.innerFunc = function() { return outerVar * innerArg; }
    }
    this.getInnerFunc = function() { return new Inner(1).innerFunc; }
  }
  var f = new Outer().getInnerFunc();
  f();
"
frame size: 2
parameter count: 1
bytecode array length: 21
bytecodes: [
  B(StackCheck),
  B(Ldar), R(context),
  B(Star), R(0),
  B(LdaContextSlot), R(0), U8(1),
  B(Star), R(0),
  B(LdaContextSlot), R(0), U8(4),
  B(Star), R(1),
  B(LdaContextSlot), R(context), U8(4),
  B(Mul), R(1),
  B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function Outer() {
    var outerVar = 1;
    function Inner(innerArg) {
      this.innerFunc = function() { outerVar = innerArg; }
    }
    this.getInnerFunc = function() { return new Inner(1).innerFunc; }
  }
  var f = new Outer().getInnerFunc();
  f();
"
frame size: 2
parameter count: 1
bytecode array length: 22
bytecodes: [
  B(StackCheck),
  B(LdaContextSlot), R(context), U8(4),
  B(Star), R(0),
  B(Ldar), R(context),
  B(Star), R(1),
  B(LdaContextSlot), R(1), U8(1),
  B(Star), R(1),
  B(Ldar), R(0),
  B(StaContextSlot), R(1), U8(4),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
]
handlers: [
]

