#
# Autogenerated by generate-bytecode-expectations.
#

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

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

---
snippet: "
  var f;
  var x = 1;
  function f1() {
    eval(\"function t() { x = 10; }; f = t; f();\");
  }
  f1();
"
frame size: 0
parameter count: 1
bytecode array length: 7
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   15 S> */ B(LdaSmi), U8(10),
  /*   17 E> */ B(StaLookupSlotSloppy), U8(0),
                B(LdaUndefined),
  /*   23 S> */ B(Return),
]
constant pool: [
  "x",
]
handlers: [
]

---
snippet: "
  var f;
  var x = 1;
  function f1() {
    eval(\"function t() { 'use strict'; x = 10; }; f = t; f();\");
  }
  f1();
"
frame size: 0
parameter count: 1
bytecode array length: 7
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   29 S> */ B(LdaSmi), U8(10),
  /*   31 E> */ B(StaLookupSlotStrict), U8(0),
                B(LdaUndefined),
  /*   37 S> */ B(Return),
]
constant pool: [
  "x",
]
handlers: [
]

---
snippet: "
  var f;
  var x = 1;
  function f1() {
    eval(\"function t() { return typeof x; }; f = t; f();\");
  }
  f1();
"
frame size: 0
parameter count: 1
bytecode array length: 5
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   15 S> */ B(LdaLookupSlotInsideTypeof), U8(0),
                B(TypeOf),
  /*   32 S> */ B(Return),
]
constant pool: [
  "x",
]
handlers: [
]

