ed592eb03f
Moves the feedback vector slot allocation out of ast-numbering and into bytecode generation directly. This has a couple of benifits, including reduced AST size, avoid code duplication and reduced feedback vector sizes in many cases due to only allocating slots when needed. Also removes AstProperties since this is no longer needed. AstNumbering is now only used to allocate suspend ids for generators. BUG=v8:6921 Change-Id: I103e8593c94ef5b2e56c34ef4f77bd6e7d64796f Reviewed-on: https://chromium-review.googlesource.com/722959 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#48757}
183 lines
4.2 KiB
Plaintext
183 lines
4.2 KiB
Plaintext
#
|
|
# Autogenerated by generate-bytecode-expectations.
|
|
#
|
|
|
|
---
|
|
wrap: yes
|
|
|
|
---
|
|
snippet: "
|
|
var x = 0;
|
|
label: {
|
|
x = x + 1;
|
|
break label;
|
|
x = x + 1;
|
|
}
|
|
return x;
|
|
"
|
|
frame size: 1
|
|
parameter count: 1
|
|
bytecode array length: 14
|
|
bytecodes: [
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 42 S> */ B(LdaZero),
|
|
B(Star), R(0),
|
|
/* 62 S> */ B(AddSmi), I8(1), U8(0),
|
|
B(Star), R(0),
|
|
/* 69 S> */ B(Jump), U8(2),
|
|
/* 97 S> */ B(Ldar), R(0),
|
|
/* 106 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
var sum = 0;
|
|
outer: {
|
|
for (var x = 0; x < 10; ++x) {
|
|
for (var y = 0; y < 3; ++y) {
|
|
++sum;
|
|
if (x + y == 12) { break outer; }
|
|
}
|
|
}
|
|
}
|
|
return sum;
|
|
"
|
|
frame size: 4
|
|
parameter count: 1
|
|
bytecode array length: 69
|
|
bytecodes: [
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 44 S> */ B(LdaZero),
|
|
B(Star), R(0),
|
|
/* 71 S> */ B(LdaZero),
|
|
B(Star), R(1),
|
|
/* 76 S> */ B(LdaSmi), I8(10),
|
|
/* 76 E> */ B(TestLessThan), R(1), U8(0),
|
|
B(JumpIfFalse), U8(54),
|
|
/* 58 E> */ B(StackCheck),
|
|
/* 106 S> */ B(LdaZero),
|
|
B(Star), R(2),
|
|
/* 111 S> */ B(LdaSmi), I8(3),
|
|
/* 111 E> */ B(TestLessThan), R(2), U8(1),
|
|
B(JumpIfFalse), U8(34),
|
|
/* 93 E> */ B(StackCheck),
|
|
/* 129 S> */ B(Ldar), R(0),
|
|
B(Inc), U8(2),
|
|
B(Star), R(0),
|
|
/* 142 S> */ B(Ldar), R(2),
|
|
/* 148 E> */ B(Add), R(1), U8(3),
|
|
B(Star), R(3),
|
|
B(LdaSmi), I8(12),
|
|
/* 152 E> */ B(TestEqual), R(3), U8(4),
|
|
B(JumpIfFalse), U8(4),
|
|
/* 161 S> */ B(Jump), U8(20),
|
|
/* 118 S> */ B(Ldar), R(2),
|
|
B(Inc), U8(5),
|
|
B(Star), R(2),
|
|
B(JumpLoop), U8(36), I8(1),
|
|
/* 84 S> */ B(Ldar), R(1),
|
|
B(Inc), U8(6),
|
|
B(Star), R(1),
|
|
B(JumpLoop), U8(56), I8(0),
|
|
/* 188 S> */ B(Ldar), R(0),
|
|
/* 199 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
outer: {
|
|
let y = 10;
|
|
function f() { return y; }
|
|
break outer;
|
|
}
|
|
"
|
|
frame size: 3
|
|
parameter count: 1
|
|
bytecode array length: 31
|
|
bytecodes: [
|
|
/* 30 E> */ B(StackCheck),
|
|
B(Ldar), R(closure),
|
|
B(CreateBlockContext), U8(0),
|
|
B(PushContext), R(2),
|
|
B(LdaTheHole),
|
|
B(StaCurrentContextSlot), U8(4),
|
|
B(CreateClosure), U8(1), U8(0), U8(2),
|
|
B(Star), R(0),
|
|
/* 53 S> */ B(LdaSmi), I8(10),
|
|
/* 53 E> */ B(StaCurrentContextSlot), U8(4),
|
|
B(Mov), R(0), R(1),
|
|
B(Ldar), R(1),
|
|
/* 88 S> */ B(Jump), U8(2),
|
|
B(PopContext), R(2),
|
|
B(LdaUndefined),
|
|
/* 103 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
FIXED_ARRAY_TYPE,
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
let x = 1;
|
|
outer: {
|
|
inner: {
|
|
let y = 2;
|
|
function f() { return x + y; }
|
|
if (y) break outer;
|
|
y = 3;
|
|
}
|
|
}
|
|
x = 4;
|
|
"
|
|
frame size: 4
|
|
parameter count: 1
|
|
bytecode array length: 54
|
|
bytecodes: [
|
|
B(CreateFunctionContext), U8(1),
|
|
B(PushContext), R(2),
|
|
B(LdaTheHole),
|
|
B(StaCurrentContextSlot), U8(4),
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 42 S> */ B(LdaSmi), I8(1),
|
|
/* 42 E> */ B(StaCurrentContextSlot), U8(4),
|
|
B(Ldar), R(closure),
|
|
B(CreateBlockContext), U8(0),
|
|
B(PushContext), R(3),
|
|
B(LdaTheHole),
|
|
B(StaCurrentContextSlot), U8(4),
|
|
B(CreateClosure), U8(1), U8(0), U8(2),
|
|
B(Star), R(0),
|
|
/* 76 S> */ B(LdaSmi), I8(2),
|
|
/* 76 E> */ B(StaCurrentContextSlot), U8(4),
|
|
B(Mov), R(0), R(1),
|
|
/* 118 S> */ B(LdaCurrentContextSlot), U8(4),
|
|
B(JumpIfToBooleanFalse), U8(6),
|
|
/* 125 S> */ B(PopContext), R(3),
|
|
B(Jump), U8(8),
|
|
/* 142 S> */ B(LdaSmi), I8(3),
|
|
/* 144 E> */ B(StaCurrentContextSlot), U8(4),
|
|
B(PopContext), R(3),
|
|
/* 155 S> */ B(LdaSmi), I8(4),
|
|
/* 157 E> */ B(StaCurrentContextSlot), U8(4),
|
|
B(LdaUndefined),
|
|
/* 162 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
FIXED_ARRAY_TYPE,
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
]
|
|
handlers: [
|
|
]
|
|
|