#
# Autogenerated by generate-bytecode-expectations.
#

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

---
snippet: "
  function f(arg1) { return function() { arg1 = 2; }; }
  f();
"
frame size: 1
parameter count: 2
bytecode array length: 17
bytecodes: [
  B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), U8(1),
  B(PushContext), R(0),
  B(Ldar), R(arg0),
  B(StaContextSlot), R(context), U8(4),
  B(StackCheck),
  B(CreateClosure), U8(0), U8(0),
  B(Return),
]
constant pool: [
  InstanceType::SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

---
snippet: "
  function f(arg1) { var a = function() { arg1 = 2; }; return arg1; }
  f();
"
frame size: 2
parameter count: 2
bytecode array length: 22
bytecodes: [
  B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), U8(1),
  B(PushContext), R(1),
  B(Ldar), R(arg0),
  B(StaContextSlot), R(context), U8(4),
  B(StackCheck),
  B(CreateClosure), U8(0), U8(0),
  B(Star), R(0),
  B(LdaContextSlot), R(context), U8(4),
  B(Return),
]
constant pool: [
  InstanceType::SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

---
snippet: "
  function f(a1, a2, a3, a4) { return function() { a1 = a3; }; }
  f();
"
frame size: 1
parameter count: 5
bytecode array length: 22
bytecodes: [
  B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), U8(1),
  B(PushContext), R(0),
  B(Ldar), R(arg0),
  B(StaContextSlot), R(context), U8(5),
  B(Ldar), R(arg2),
  B(StaContextSlot), R(context), U8(4),
  B(StackCheck),
  B(CreateClosure), U8(0), U8(0),
  B(Return),
]
constant pool: [
  InstanceType::SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

---
snippet: "
  function f() { var self = this; return function() { self = 2; }; }
  f();
"
frame size: 1
parameter count: 1
bytecode array length: 17
bytecodes: [
  B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), U8(1),
  B(PushContext), R(0),
  B(StackCheck),
  B(Ldar), R(this),
  B(StaContextSlot), R(context), U8(4),
  B(CreateClosure), U8(0), U8(0),
  B(Return),
]
constant pool: [
  InstanceType::SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

