#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f

---
snippet: "
  function f(a) { return a.func(); }
  f(new (function Obj() { this.func = function() { return; }})())
"
frame size: 1
parameter count: 2
bytecode array length: 12
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   25 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(2),
                B(Star), R(0),
  /*   25 E> */ B(CallProperty0), R(0), R(arg0), U8(0),
  /*   32 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["func"],
]
handlers: [
]

---
snippet: "
  function f(a, b, c) { return a.func(b, c); }
  f(new (function Obj() { this.func = function() { return; }})(), 1, 2)
"
frame size: 1
parameter count: 4
bytecode array length: 14
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   31 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(2),
                B(Star), R(0),
  /*   31 E> */ B(CallProperty2), R(0), R(arg0), R(arg1), R(arg2), U8(0),
  /*   42 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["func"],
]
handlers: [
]

---
snippet: "
  function f(a, b) { return a.func(b + b, b); }
  f(new (function Obj() { this.func = function() { return; }})(), 1)
"
frame size: 3
parameter count: 3
bytecode array length: 21
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   28 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(2),
                B(Star), R(0),
                B(Ldar), R(arg1),
  /*   35 E> */ B(Add), R(arg1), U8(4),
                B(Star), R(2),
  /*   28 E> */ B(CallProperty2), R(0), R(arg0), R(2), R(arg1), U8(0),
  /*   43 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["func"],
]
handlers: [
]

---
snippet: "
  function f(a) {
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   a.func;
   return a.func(); }
  f(new (function Obj() { this.func = function() { return; }})())
"
frame size: 1
parameter count: 2
bytecode array length: 532
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   19 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
  /*   28 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(2),
  /*   37 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(4),
  /*   46 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(6),
  /*   55 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(8),
  /*   64 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(10),
  /*   73 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(12),
  /*   82 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(14),
  /*   91 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(16),
  /*  100 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(18),
  /*  109 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(20),
  /*  118 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(22),
  /*  127 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(24),
  /*  136 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(26),
  /*  145 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(28),
  /*  154 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(30),
  /*  163 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(32),
  /*  172 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(34),
  /*  181 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(36),
  /*  190 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(38),
  /*  199 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(40),
  /*  208 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(42),
  /*  217 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(44),
  /*  226 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(46),
  /*  235 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(48),
  /*  244 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(50),
  /*  253 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(52),
  /*  262 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(54),
  /*  271 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(56),
  /*  280 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(58),
  /*  289 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(60),
  /*  298 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(62),
  /*  307 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(64),
  /*  316 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(66),
  /*  325 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(68),
  /*  334 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(70),
  /*  343 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(72),
  /*  352 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(74),
  /*  361 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(76),
  /*  370 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(78),
  /*  379 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(80),
  /*  388 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(82),
  /*  397 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(84),
  /*  406 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(86),
  /*  415 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(88),
  /*  424 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(90),
  /*  433 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(92),
  /*  442 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(94),
  /*  451 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(96),
  /*  460 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(98),
  /*  469 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(100),
  /*  478 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(102),
  /*  487 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(104),
  /*  496 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(106),
  /*  505 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(108),
  /*  514 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(110),
  /*  523 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(112),
  /*  532 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(114),
  /*  541 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(116),
  /*  550 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(118),
  /*  559 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(120),
  /*  568 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(122),
  /*  577 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(124),
  /*  586 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(126),
  /*  595 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(128),
  /*  604 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(130),
  /*  613 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(132),
  /*  622 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(134),
  /*  631 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(136),
  /*  640 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(138),
  /*  649 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(140),
  /*  658 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(142),
  /*  667 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(144),
  /*  676 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(146),
  /*  685 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(148),
  /*  694 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(150),
  /*  703 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(152),
  /*  712 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(154),
  /*  721 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(156),
  /*  730 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(158),
  /*  739 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(160),
  /*  748 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(162),
  /*  757 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(164),
  /*  766 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(166),
  /*  775 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(168),
  /*  784 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(170),
  /*  793 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(172),
  /*  802 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(174),
  /*  811 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(176),
  /*  820 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(178),
  /*  829 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(180),
  /*  838 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(182),
  /*  847 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(184),
  /*  856 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(186),
  /*  865 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(188),
  /*  874 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(190),
  /*  883 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(192),
  /*  892 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(194),
  /*  901 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(196),
  /*  910 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(198),
  /*  919 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(200),
  /*  928 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(202),
  /*  937 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(204),
  /*  946 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(206),
  /*  955 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(208),
  /*  964 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(210),
  /*  973 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(212),
  /*  982 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(214),
  /*  991 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(216),
  /* 1000 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(218),
  /* 1009 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(220),
  /* 1018 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(222),
  /* 1027 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(224),
  /* 1036 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(226),
  /* 1045 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(228),
  /* 1054 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(230),
  /* 1063 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(232),
  /* 1072 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(234),
  /* 1081 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(236),
  /* 1090 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(238),
  /* 1099 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(240),
  /* 1108 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(242),
  /* 1117 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(244),
  /* 1126 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(246),
  /* 1135 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(248),
  /* 1144 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(250),
  /* 1153 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(252),
  /* 1162 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(254),
  /* 1178 S> */ B(Wide), B(LdaNamedProperty), R16(arg0), U16(0), U16(258),
                B(Star), R(0),
  /* 1178 E> */ B(Wide), B(CallProperty0), R16(0), R16(arg0), U16(256),
  /* 1185 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["func"],
]
handlers: [
]

---
snippet: "
  function f(a) { return a.func(1).func(2).func(3); }
  f(new (function Obj() { this.func = function(a) { return this; }})())
"
frame size: 5
parameter count: 2
bytecode array length: 51
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   25 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(6),
                B(Star), R(2),
                B(LdaSmi), I8(1),
                B(Star), R(4),
  /*   25 E> */ B(CallProperty1), R(2), R(arg0), R(4), U8(4),
                B(Star), R(2),
  /*   32 E> */ B(LdaNamedProperty), R(2), U8(0), U8(8),
                B(Star), R(1),
                B(LdaSmi), I8(2),
                B(Star), R(3),
  /*   33 E> */ B(CallProperty1), R(1), R(2), R(3), U8(2),
                B(Star), R(1),
  /*   40 E> */ B(LdaNamedProperty), R(1), U8(0), U8(10),
                B(Star), R(0),
                B(LdaSmi), I8(3),
                B(Star), R(2),
  /*   41 E> */ B(CallProperty1), R(0), R(1), R(2), U8(0),
  /*   49 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["func"],
]
handlers: [
]

