#
# Autogenerated by generate-bytecode-expectations.
#

---
pool type: string
execute: yes
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: [
  "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),
  /*   32 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),
  /*   32 S> */ B(Return),
]
constant pool: [
  "z",
]
handlers: [
]

