v8/test/cctest/interpreter/bytecode_expectations/IIFEWithoutOneshotOpt.golden
Santiago Aboy Solanes 9d3dc6f219 [interpreter] Make FunctionEntry StackCheck bytecodes implicit
FunctionEntry StackChecks is one of the two cases where we generate a
StackCheck bytecode. In these cases, we do stack check against the js
limit (not to be confused with the real js limit). Their purpose is to
be able to interrupt the running code.

We can omit the FunctionEntry StackCheck by embedding its code into
the InterpreterEntryTrampoline builtin. We save one bytecode per
interpreted function.

This change has rippling effects for optimized code, as well as the
deoptimizer.

Bug: v8:10149, v8:9977, v8:9960
Change-Id: I6156de48b3bc0b519dd21190a8e6214fbe96c78d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1914218
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66206}
2020-02-10 17:05:23 +00:00

288 lines
8.5 KiB
Plaintext

#
# Autogenerated by generate-bytecode-expectations.
#
---
wrap: no
top level: yes
print callee: yes
---
snippet: "
(function() {
l = {};
l.a = 2;
l.b = l.a;
return arguments.callee;
})();
"
frame size: 3
parameter count: 1
bytecode array length: 41
bytecodes: [
/* 16 E> */ B(CreateMappedArguments),
B(Star), R(0),
/* 29 S> */ B(CreateEmptyObjectLiteral),
/* 31 E> */ B(StaGlobal), U8(0), U8(0),
/* 45 S> */ B(LdaGlobal), U8(0), U8(2),
B(Star), R(1),
B(LdaSmi), I8(2),
/* 49 E> */ B(StaNamedProperty), R(1), U8(1), U8(4),
/* 62 S> */ B(LdaGlobal), U8(0), U8(2),
B(Star), R(1),
/* 68 E> */ B(LdaGlobal), U8(0), U8(2),
B(Star), R(2),
/* 70 E> */ B(LdaNamedProperty), R(2), U8(1), U8(6),
/* 66 E> */ B(StaNamedProperty), R(1), U8(2), U8(8),
/* 98 S> */ B(LdaNamedProperty), R(0), U8(3), U8(10),
/* 105 S> */ B(Return),
]
constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["l"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["a"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["b"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["callee"],
]
handlers: [
]
---
snippet: "
(function() {
l = {
'a': 4.3,
'b': 3.4
};
if (l.a < 3) {
l.a = 3;
} else {
l.a = l.b;
}
return arguments.callee;
})();
"
frame size: 3
parameter count: 1
bytecode array length: 64
bytecodes: [
/* 16 E> */ B(CreateMappedArguments),
B(Star), R(0),
/* 29 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
/* 31 E> */ B(StaGlobal), U8(1), U8(1),
/* 93 S> */ B(LdaGlobal), U8(1), U8(3),
B(Star), R(1),
/* 99 E> */ B(LdaNamedProperty), R(1), U8(2), U8(5),
B(Star), R(1),
B(LdaSmi), I8(3),
/* 101 E> */ B(TestLessThan), R(1), U8(7),
B(JumpIfFalse), U8(15),
/* 118 S> */ B(LdaGlobal), U8(1), U8(3),
B(Star), R(1),
B(LdaSmi), I8(3),
/* 122 E> */ B(StaNamedProperty), R(1), U8(2), U8(8),
B(Jump), U8(20),
/* 154 S> */ B(LdaGlobal), U8(1), U8(3),
B(Star), R(1),
/* 160 E> */ B(LdaGlobal), U8(1), U8(3),
B(Star), R(2),
/* 162 E> */ B(LdaNamedProperty), R(2), U8(3), U8(10),
/* 158 E> */ B(StaNamedProperty), R(1), U8(2), U8(8),
/* 200 S> */ B(LdaNamedProperty), R(0), U8(4), U8(12),
/* 207 S> */ B(Return),
]
constant pool: [
OBJECT_BOILERPLATE_DESCRIPTION_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["l"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["a"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["b"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["callee"],
]
handlers: [
]
---
snippet: "
this.f0 = function() {};
this.f1 = function(a) {};
this.f2 = function(a, b) {};
this.f3 = function(a, b, c) {};
this.f4 = function(a, b, c, d) {};
this.f5 = function(a, b, c, d, e) {};
(function() {
this.f0();
this.f1(1);
this.f2(1, 2);
this.f3(1, 2, 3);
this.f4(1, 2, 3, 4);
this.f5(1, 2, 3, 4, 5);
return arguments.callee;
})();
"
frame size: 8
parameter count: 1
bytecode array length: 143
bytecodes: [
/* 237 E> */ B(CreateMappedArguments),
B(Star), R(0),
/* 255 S> */ B(LdaNamedProperty), R(this), U8(0), U8(0),
B(Star), R(1),
/* 255 E> */ B(CallProperty0), R(1), R(this), U8(2),
/* 274 S> */ B(LdaNamedProperty), R(this), U8(1), U8(4),
B(Star), R(1),
B(LdaSmi), I8(1),
B(Star), R(3),
/* 274 E> */ B(CallProperty1), R(1), R(this), R(3), U8(6),
/* 294 S> */ B(LdaNamedProperty), R(this), U8(2), U8(8),
B(Star), R(1),
B(LdaSmi), I8(1),
B(Star), R(3),
B(LdaSmi), I8(2),
B(Star), R(4),
/* 294 E> */ B(CallProperty2), R(1), R(this), R(3), R(4), U8(10),
/* 317 S> */ B(LdaNamedProperty), R(this), U8(3), U8(12),
B(Star), R(1),
B(LdaSmi), I8(1),
B(Star), R(3),
B(LdaSmi), I8(2),
B(Star), R(4),
B(LdaSmi), I8(3),
B(Star), R(5),
B(Mov), R(this), R(2),
/* 317 E> */ B(CallProperty), R(1), R(2), U8(4), U8(14),
/* 343 S> */ B(LdaNamedProperty), R(this), U8(4), U8(16),
B(Star), R(1),
B(LdaSmi), I8(1),
B(Star), R(3),
B(LdaSmi), I8(2),
B(Star), R(4),
B(LdaSmi), I8(3),
B(Star), R(5),
B(LdaSmi), I8(4),
B(Star), R(6),
B(Mov), R(this), R(2),
/* 343 E> */ B(CallProperty), R(1), R(2), U8(5), U8(18),
/* 372 S> */ B(LdaNamedProperty), R(this), U8(5), U8(20),
B(Star), R(1),
B(LdaSmi), I8(1),
B(Star), R(3),
B(LdaSmi), I8(2),
B(Star), R(4),
B(LdaSmi), I8(3),
B(Star), R(5),
B(LdaSmi), I8(4),
B(Star), R(6),
B(LdaSmi), I8(5),
B(Star), R(7),
B(Mov), R(this), R(2),
/* 372 E> */ B(CallProperty), R(1), R(2), U8(6), U8(22),
/* 416 S> */ B(LdaNamedProperty), R(0), U8(6), U8(24),
/* 423 S> */ B(Return),
]
constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f0"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f1"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f2"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f3"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f4"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f5"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["callee"],
]
handlers: [
]
---
snippet: "
function f0() {}
function f1(a) {}
function f2(a, b) {}
function f3(a, b, c) {}
function f4(a, b, c, d) {}
function f5(a, b, c, d, e) {}
(function() {
f0();
f1(1);
f2(1, 2);
f3(1, 2, 3);
f4(1, 2, 3, 4);
f5(1, 2, 3, 4, 5);
return arguments.callee;
})();
"
frame size: 7
parameter count: 1
bytecode array length: 125
bytecodes: [
/* 189 E> */ B(CreateMappedArguments),
B(Star), R(0),
/* 202 S> */ B(LdaGlobal), U8(0), U8(0),
B(Star), R(1),
/* 202 E> */ B(CallUndefinedReceiver0), R(1), U8(2),
/* 216 S> */ B(LdaGlobal), U8(1), U8(4),
B(Star), R(1),
B(LdaSmi), I8(1),
B(Star), R(2),
/* 216 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(6),
/* 231 S> */ B(LdaGlobal), U8(2), U8(8),
B(Star), R(1),
B(LdaSmi), I8(1),
B(Star), R(2),
B(LdaSmi), I8(2),
B(Star), R(3),
/* 231 E> */ B(CallUndefinedReceiver2), R(1), R(2), R(3), U8(10),
/* 249 S> */ B(LdaGlobal), U8(3), U8(12),
B(Star), R(1),
B(LdaSmi), I8(1),
B(Star), R(2),
B(LdaSmi), I8(2),
B(Star), R(3),
B(LdaSmi), I8(3),
B(Star), R(4),
/* 249 E> */ B(CallUndefinedReceiver), R(1), R(2), U8(3), U8(14),
/* 270 S> */ B(LdaGlobal), U8(4), U8(16),
B(Star), R(1),
B(LdaSmi), I8(1),
B(Star), R(2),
B(LdaSmi), I8(2),
B(Star), R(3),
B(LdaSmi), I8(3),
B(Star), R(4),
B(LdaSmi), I8(4),
B(Star), R(5),
/* 270 E> */ B(CallUndefinedReceiver), R(1), R(2), U8(4), U8(18),
/* 294 S> */ B(LdaGlobal), U8(5), U8(20),
B(Star), R(1),
B(LdaSmi), I8(1),
B(Star), R(2),
B(LdaSmi), I8(2),
B(Star), R(3),
B(LdaSmi), I8(3),
B(Star), R(4),
B(LdaSmi), I8(4),
B(Star), R(5),
B(LdaSmi), I8(5),
B(Star), R(6),
/* 294 E> */ B(CallUndefinedReceiver), R(1), R(2), U8(5), U8(22),
/* 338 S> */ B(LdaNamedProperty), R(0), U8(6), U8(24),
/* 345 S> */ B(Return),
]
constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f0"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f1"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f2"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f3"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f4"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f5"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["callee"],
]
handlers: [
]