#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f

---
snippet: "
  var f;
  var x = 1;
  z = 10;
  function f1() {
    var y;
    eval(\"function t() { delete x; }; f = t; f();\");
  }
  f1();
"
frame size: 1
parameter count: 1
bytecode array length: 12
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   15 S> */ B(LdaConstant), U8(0),
                B(Star), R(0),
                B(CallRuntime), U16(Runtime::kDeleteLookupSlot), R(0), U8(1),
                B(LdaUndefined),
  /*   25 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
]
handlers: [
]

---
snippet: "
  var f;
  var x = 1;
  z = 10;
  function f1() {
    var y;
    eval(\"function t() { return delete y; }; f = t; f();\");
  }
  f1();
"
frame size: 0
parameter count: 1
bytecode array length: 3
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   15 S> */ B(LdaFalse),
  /*   31 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var f;
  var x = 1;
  z = 10;
  function f1() {
    var y;
    eval(\"function t() { return delete z; }; f = t; f();\");
  }
  f1();
"
frame size: 1
parameter count: 1
bytecode array length: 11
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   15 S> */ B(LdaConstant), U8(0),
                B(Star), R(0),
                B(CallRuntime), U16(Runtime::kDeleteLookupSlot), R(0), U8(1),
  /*   31 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["z"],
]
handlers: [
]

