Commit e2ca2e69 authored by Leszek Swirski's avatar Leszek Swirski Committed by Commit Bot

[ignition] Re-use deferred return/rethrow commands

Since deferred return/async return/rethrow commands don't have an associated
statement, we can reuse their entries in the deferred command list.

Bug: v8:4280
Bug: v8:6218
Change-Id: Ic51fb735d4ea13ebea1d5e456ec5689c0d98a4ac
Reviewed-on: https://chromium-review.googlesource.com/506077
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#45344}
parent a6a3d2c7
...@@ -152,7 +152,10 @@ class BytecodeGenerator::ControlScope::DeferredCommands final { ...@@ -152,7 +152,10 @@ class BytecodeGenerator::ControlScope::DeferredCommands final {
: generator_(generator), : generator_(generator),
deferred_(generator->zone()), deferred_(generator->zone()),
token_register_(token_register), token_register_(token_register),
result_register_(result_register) {} result_register_(result_register),
return_token_(-1),
async_return_token_(-1),
rethrow_token_(-1) {}
// One recorded control-flow command. // One recorded control-flow command.
struct Entry { struct Entry {
...@@ -165,8 +168,12 @@ class BytecodeGenerator::ControlScope::DeferredCommands final { ...@@ -165,8 +168,12 @@ class BytecodeGenerator::ControlScope::DeferredCommands final {
// generates a new dispatch token that identifies one particular path. This // generates a new dispatch token that identifies one particular path. This
// expects the result to be in the accumulator. // expects the result to be in the accumulator.
void RecordCommand(Command command, Statement* statement) { void RecordCommand(Command command, Statement* statement) {
int token = static_cast<int>(deferred_.size()); int token = GetTokenForCommand(command, statement);
deferred_.push_back({command, statement, token});
DCHECK_LT(token, deferred_.size());
DCHECK_EQ(deferred_[token].command, command);
DCHECK_EQ(deferred_[token].statement, statement);
DCHECK_EQ(deferred_[token].token, token);
builder()->StoreAccumulatorInRegister(result_register_); builder()->StoreAccumulatorInRegister(result_register_);
builder()->LoadLiteral(Smi::FromInt(token)); builder()->LoadLiteral(Smi::FromInt(token));
...@@ -211,10 +218,57 @@ class BytecodeGenerator::ControlScope::DeferredCommands final { ...@@ -211,10 +218,57 @@ class BytecodeGenerator::ControlScope::DeferredCommands final {
ControlScope* execution_control() { return generator_->execution_control(); } ControlScope* execution_control() { return generator_->execution_control(); }
private: private:
int GetTokenForCommand(Command command, Statement* statement) {
switch (command) {
case CMD_RETURN:
return GetReturnToken();
case CMD_ASYNC_RETURN:
return GetAsyncReturnToken();
case CMD_RETHROW:
return GetRethrowToken();
default:
// TODO(leszeks): We could also search for entries with the same
// command and statement.
return GetNewTokenForCommand(command, statement);
}
}
int GetReturnToken() {
if (return_token_ == -1) {
return_token_ = GetNewTokenForCommand(CMD_RETURN, nullptr);
}
return return_token_;
}
int GetAsyncReturnToken() {
if (async_return_token_ == -1) {
async_return_token_ = GetNewTokenForCommand(CMD_ASYNC_RETURN, nullptr);
}
return async_return_token_;
}
int GetRethrowToken() {
if (rethrow_token_ == -1) {
rethrow_token_ = GetNewTokenForCommand(CMD_RETHROW, nullptr);
}
return rethrow_token_;
}
int GetNewTokenForCommand(Command command, Statement* statement) {
int token = static_cast<int>(deferred_.size());
deferred_.push_back({command, statement, token});
return token;
}
BytecodeGenerator* generator_; BytecodeGenerator* generator_;
ZoneVector<Entry> deferred_; ZoneVector<Entry> deferred_;
Register token_register_; Register token_register_;
Register result_register_; Register result_register_;
// Tokens for commands that don't need a statement.
int return_token_;
int async_return_token_;
int rethrow_token_;
}; };
// Scoped class for dealing with control flow reaching the function level. // Scoped class for dealing with control flow reaching the function level.
......
...@@ -648,7 +648,7 @@ snippet: " ...@@ -648,7 +648,7 @@ snippet: "
" "
frame size: 15 frame size: 15
parameter count: 2 parameter count: 2
bytecode array length: 603 bytecode array length: 596
bytecodes: [ bytecodes: [
B(Ldar), R(new_target), B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26), B(JumpIfUndefined), U8(26),
...@@ -859,7 +859,7 @@ bytecodes: [ ...@@ -859,7 +859,7 @@ bytecodes: [
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(6), B(Star), R(6),
B(Mov), R(10), R(7), B(Mov), R(10), R(7),
B(Jump), U8(34), B(Jump), U8(33),
B(PopContext), R(1), B(PopContext), R(1),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(9), B(Star), R(9),
...@@ -867,14 +867,14 @@ bytecodes: [ ...@@ -867,14 +867,14 @@ bytecodes: [
B(Star), R(10), B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
B(Star), R(7), B(Star), R(7),
B(LdaSmi), I8(2), B(LdaZero),
B(Star), R(6), B(Star), R(6),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(6), B(Star), R(6),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(7), B(Star), R(7),
B(LdaSmi), I8(3), B(LdaSmi), I8(1),
B(Star), R(6), B(Star), R(6),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
...@@ -885,12 +885,8 @@ bytecodes: [ ...@@ -885,12 +885,8 @@ bytecodes: [
B(Ldar), R(8), B(Ldar), R(8),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(6), B(Ldar), R(6),
B(SwitchOnSmiNoFeedback), U8(15), U8(4), I8(0), B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
B(Jump), U8(14), B(Jump), U8(8),
B(Ldar), R(7),
/* 55 S> */ B(Return),
B(Ldar), R(7),
B(ReThrow),
B(Ldar), R(7), B(Ldar), R(7),
/* 55 S> */ B(Return), /* 55 S> */ B(Return),
B(Ldar), R(7), B(Ldar), R(7),
...@@ -913,14 +909,12 @@ constant pool: [ ...@@ -913,14 +909,12 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE [""], ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [6], Smi [6],
Smi [450], Smi [449],
Smi [6], Smi [6],
Smi [9], Smi [9],
Smi [12],
Smi [15],
] ]
handlers: [ handlers: [
[56, 553, 559], [56, 552, 558],
[137, 334, 340], [137, 334, 340],
[140, 290, 292], [140, 290, 292],
[426, 442, 444], [426, 442, 444],
...@@ -935,7 +929,7 @@ snippet: " ...@@ -935,7 +929,7 @@ snippet: "
" "
frame size: 18 frame size: 18
parameter count: 2 parameter count: 2
bytecode array length: 712 bytecode array length: 701
bytecodes: [ bytecodes: [
B(Ldar), R(new_target), B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26), B(JumpIfUndefined), U8(26),
...@@ -1180,19 +1174,19 @@ bytecodes: [ ...@@ -1180,19 +1174,19 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(8), B(Ldar), R(8),
B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
B(Jump), U8(28), B(Jump), U8(27),
B(PopContext), R(1), B(PopContext), R(1),
B(PopContext), R(1), B(PopContext), R(1),
B(LdaSmi), I8(1), B(LdaZero),
B(Star), R(5), B(Star), R(5),
B(Mov), R(9), R(6), B(Mov), R(9), R(6),
B(Jump), U8(47), B(Jump), U8(46),
B(PopContext), R(1), B(PopContext), R(1),
B(PopContext), R(1), B(PopContext), R(1),
B(LdaSmi), I8(2), B(LdaSmi), I8(1),
B(Star), R(5), B(Star), R(5),
B(Mov), R(9), R(6), B(Mov), R(9), R(6),
B(Jump), U8(34), B(Jump), U8(33),
B(PopContext), R(1), B(PopContext), R(1),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(8), B(Star), R(8),
...@@ -1200,14 +1194,14 @@ bytecodes: [ ...@@ -1200,14 +1194,14 @@ bytecodes: [
B(Star), R(9), B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(6), B(Star), R(6),
B(LdaSmi), I8(3), B(LdaZero),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(6), B(Star), R(6),
B(LdaSmi), I8(4), B(LdaSmi), I8(1),
B(Star), R(5), B(Star), R(5),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
...@@ -1218,14 +1212,8 @@ bytecodes: [ ...@@ -1218,14 +1212,8 @@ bytecodes: [
B(Ldar), R(7), B(Ldar), R(7),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(5), B(Ldar), R(5),
B(SwitchOnSmiNoFeedback), U8(17), U8(5), I8(0), B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0),
B(Jump), U8(17), B(Jump), U8(8),
B(Ldar), R(6),
/* 49 S> */ B(Return),
B(Ldar), R(6),
/* 49 S> */ B(Return),
B(Ldar), R(6),
B(ReThrow),
B(Ldar), R(6), B(Ldar), R(6),
/* 49 S> */ B(Return), /* 49 S> */ B(Return),
B(Ldar), R(6), B(Ldar), R(6),
...@@ -1249,16 +1237,13 @@ constant pool: [ ...@@ -1249,16 +1237,13 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE [""], ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [6], Smi [6],
Smi [19], Smi [18],
Smi [556], Smi [554],
Smi [6], Smi [6],
Smi [9], Smi [9],
Smi [12],
Smi [15],
Smi [18],
] ]
handlers: [ handlers: [
[56, 659, 665], [56, 657, 663],
[137, 426, 432], [137, 426, 432],
[140, 382, 384], [140, 382, 384],
[519, 535, 537], [519, 535, 537],
...@@ -1273,7 +1258,7 @@ snippet: " ...@@ -1273,7 +1258,7 @@ snippet: "
" "
frame size: 14 frame size: 14
parameter count: 2 parameter count: 2
bytecode array length: 563 bytecode array length: 559
bytecodes: [ bytecodes: [
B(CreateFunctionContext), U8(10), B(CreateFunctionContext), U8(10),
B(PushContext), R(0), B(PushContext), R(0),
...@@ -1457,8 +1442,8 @@ bytecodes: [ ...@@ -1457,8 +1442,8 @@ bytecodes: [
B(Star), R(5), B(Star), R(5),
B(LdaZero), B(LdaZero),
B(Star), R(4), B(Star), R(4),
B(Jump), U8(68), B(Jump), U8(67),
B(Jump), U8(54), B(Jump), U8(53),
B(Star), R(8), B(Star), R(8),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateCatchContext), R(8), U8(7), U8(13), B(CreateCatchContext), R(8), U8(7), U8(13),
...@@ -1480,14 +1465,14 @@ bytecodes: [ ...@@ -1480,14 +1465,14 @@ bytecodes: [
B(PopContext), R(1), B(PopContext), R(1),
B(PopContext), R(1), B(PopContext), R(1),
B(Star), R(5), B(Star), R(5),
B(LdaSmi), I8(1), B(LdaZero),
B(Star), R(4), B(Star), R(4),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(4), B(Star), R(4),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(5), B(Star), R(5),
B(LdaSmi), I8(2), B(LdaSmi), I8(1),
B(Star), R(4), B(Star), R(4),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
...@@ -1500,10 +1485,8 @@ bytecodes: [ ...@@ -1500,10 +1485,8 @@ bytecodes: [
B(Ldar), R(6), B(Ldar), R(6),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(4), B(Ldar), R(4),
B(SwitchOnSmiNoFeedback), U8(14), U8(3), I8(0), B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
B(Jump), U8(11), B(Jump), U8(8),
B(Ldar), R(5),
/* 60 S> */ B(Return),
B(Ldar), R(5), B(Ldar), R(5),
/* 60 S> */ B(Return), /* 60 S> */ B(Return),
B(Ldar), R(5), B(Ldar), R(5),
...@@ -1528,10 +1511,9 @@ constant pool: [ ...@@ -1528,10 +1511,9 @@ constant pool: [
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [6], Smi [6],
Smi [9], Smi [9],
Smi [12],
] ]
handlers: [ handlers: [
[21, 514, 520], [21, 513, 519],
[24, 460, 462], [24, 460, 462],
[41, 242, 248], [41, 242, 248],
[44, 194, 196], [44, 194, 196],
...@@ -1547,7 +1529,7 @@ snippet: " ...@@ -1547,7 +1529,7 @@ snippet: "
" "
frame size: 19 frame size: 19
parameter count: 2 parameter count: 2
bytecode array length: 743 bytecode array length: 735
bytecodes: [ bytecodes: [
B(Ldar), R(new_target), B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26), B(JumpIfUndefined), U8(26),
...@@ -1785,7 +1767,7 @@ bytecodes: [ ...@@ -1785,7 +1767,7 @@ bytecodes: [
B(LdaZero), B(LdaZero),
B(Star), R(5), B(Star), R(5),
B(Mov), R(10), R(6), B(Mov), R(10), R(6),
B(Jump), U8(101), B(Jump), U8(99),
B(PopContext), R(1), B(PopContext), R(1),
B(PopContext), R(1), B(PopContext), R(1),
B(Ldar), R(10), B(Ldar), R(10),
...@@ -1800,10 +1782,10 @@ bytecodes: [ ...@@ -1800,10 +1782,10 @@ bytecodes: [
B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3), B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3),
B(LdaCurrentContextSlot), U8(7), B(LdaCurrentContextSlot), U8(7),
B(Star), R(6), B(Star), R(6),
B(LdaSmi), I8(1), B(LdaZero),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(68), B(Jump), U8(67),
B(Jump), U8(54), B(Jump), U8(53),
B(Star), R(9), B(Star), R(9),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateCatchContext), R(9), U8(8), U8(15), B(CreateCatchContext), R(9), U8(8), U8(15),
...@@ -1825,14 +1807,14 @@ bytecodes: [ ...@@ -1825,14 +1807,14 @@ bytecodes: [
B(PopContext), R(1), B(PopContext), R(1),
B(PopContext), R(1), B(PopContext), R(1),
B(Star), R(6), B(Star), R(6),
B(LdaSmi), I8(2), B(LdaZero),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(6), B(Star), R(6),
B(LdaSmi), I8(3), B(LdaSmi), I8(1),
B(Star), R(5), B(Star), R(5),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
...@@ -1845,12 +1827,8 @@ bytecodes: [ ...@@ -1845,12 +1827,8 @@ bytecodes: [
B(Ldar), R(7), B(Ldar), R(7),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(5), B(Ldar), R(5),
B(SwitchOnSmiNoFeedback), U8(16), U8(4), I8(0), B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(Jump), U8(14), B(Jump), U8(8),
B(Ldar), R(6),
/* 54 S> */ B(Return),
B(Ldar), R(6),
/* 54 S> */ B(Return),
B(Ldar), R(6), B(Ldar), R(6),
/* 54 S> */ B(Return), /* 54 S> */ B(Return),
B(Ldar), R(6), B(Ldar), R(6),
...@@ -1877,12 +1855,10 @@ constant pool: [ ...@@ -1877,12 +1855,10 @@ constant pool: [
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [6], Smi [6],
Smi [9], Smi [9],
Smi [12],
Smi [15],
] ]
handlers: [ handlers: [
[65, 691, 697], [65, 689, 695],
[68, 637, 639], [68, 636, 638],
[85, 401, 407], [85, 401, 407],
[88, 353, 355], [88, 353, 355],
[494, 510, 512], [494, 510, 512],
......
...@@ -13,7 +13,7 @@ snippet: " ...@@ -13,7 +13,7 @@ snippet: "
" "
frame size: 12 frame size: 12
parameter count: 1 parameter count: 1
bytecode array length: 181 bytecode array length: 177
bytecodes: [ bytecodes: [
B(Ldar), R(new_target), B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26), B(JumpIfUndefined), U8(26),
...@@ -62,7 +62,7 @@ bytecodes: [ ...@@ -62,7 +62,7 @@ bytecodes: [
B(Star), R(4), B(Star), R(4),
B(LdaZero), B(LdaZero),
B(Star), R(3), B(Star), R(3),
B(Jump), U8(35), B(Jump), U8(34),
B(Ldar), R(8), B(Ldar), R(8),
/* 11 E> */ B(Throw), /* 11 E> */ B(Throw),
B(LdaUndefined), B(LdaUndefined),
...@@ -71,14 +71,14 @@ bytecodes: [ ...@@ -71,14 +71,14 @@ bytecodes: [
B(Star), R(7), B(Star), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
B(Star), R(4), B(Star), R(4),
B(LdaSmi), I8(1), B(LdaZero),
B(Star), R(3), B(Star), R(3),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(3), B(Star), R(3),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(4), B(Star), R(4),
B(LdaSmi), I8(2), B(LdaSmi), I8(1),
B(Star), R(3), B(Star), R(3),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
...@@ -89,10 +89,8 @@ bytecodes: [ ...@@ -89,10 +89,8 @@ bytecodes: [
B(Ldar), R(5), B(Ldar), R(5),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(3), B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(1), U8(3), I8(0), B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
B(Jump), U8(11), B(Jump), U8(8),
B(Ldar), R(4),
/* 16 S> */ B(Return),
B(Ldar), R(4), B(Ldar), R(4),
/* 16 S> */ B(Return), /* 16 S> */ B(Return),
B(Ldar), R(4), B(Ldar), R(4),
...@@ -104,10 +102,9 @@ constant pool: [ ...@@ -104,10 +102,9 @@ constant pool: [
Smi [52], Smi [52],
Smi [6], Smi [6],
Smi [9], Smi [9],
Smi [12],
] ]
handlers: [ handlers: [
[52, 134, 140], [52, 133, 139],
] ]
--- ---
...@@ -117,7 +114,7 @@ snippet: " ...@@ -117,7 +114,7 @@ snippet: "
" "
frame size: 12 frame size: 12
parameter count: 1 parameter count: 1
bytecode array length: 259 bytecode array length: 251
bytecodes: [ bytecodes: [
B(Ldar), R(new_target), B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26), B(JumpIfUndefined), U8(26),
...@@ -166,7 +163,7 @@ bytecodes: [ ...@@ -166,7 +163,7 @@ bytecodes: [
B(Star), R(4), B(Star), R(4),
B(LdaZero), B(LdaZero),
B(Star), R(3), B(Star), R(3),
B(Jump), U8(110), B(Jump), U8(108),
B(Ldar), R(8), B(Ldar), R(8),
/* 11 E> */ B(Throw), /* 11 E> */ B(Throw),
/* 16 S> */ B(LdaSmi), I8(42), /* 16 S> */ B(LdaSmi), I8(42),
...@@ -189,18 +186,18 @@ bytecodes: [ ...@@ -189,18 +186,18 @@ bytecodes: [
B(Star), R(9), B(Star), R(9),
B(LdaZero), B(LdaZero),
B(TestEqualStrictNoFeedback), R(9), B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(29), B(JumpIfTrue), U8(28),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(9), B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(20), B(JumpIfTrue), U8(19),
B(LdaTrue), B(LdaTrue),
B(Star), R(11), B(Star), R(11),
B(Mov), R(8), R(10), B(Mov), R(8), R(10),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(10), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(10), U8(2),
B(Star), R(4), B(Star), R(4),
B(LdaSmi), I8(1), B(LdaZero),
B(Star), R(3), B(Star), R(3),
B(Jump), U8(35), B(Jump), U8(34),
B(Ldar), R(8), B(Ldar), R(8),
/* 16 E> */ B(Throw), /* 16 E> */ B(Throw),
B(LdaUndefined), B(LdaUndefined),
...@@ -209,14 +206,14 @@ bytecodes: [ ...@@ -209,14 +206,14 @@ bytecodes: [
B(Star), R(7), B(Star), R(7),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
B(Star), R(4), B(Star), R(4),
B(LdaSmi), I8(2), B(LdaZero),
B(Star), R(3), B(Star), R(3),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(3), B(Star), R(3),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(4), B(Star), R(4),
B(LdaSmi), I8(3), B(LdaSmi), I8(1),
B(Star), R(3), B(Star), R(3),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
...@@ -227,12 +224,8 @@ bytecodes: [ ...@@ -227,12 +224,8 @@ bytecodes: [
B(Ldar), R(5), B(Ldar), R(5),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(3), B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(2), U8(4), I8(0), B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Jump), U8(14), B(Jump), U8(8),
B(Ldar), R(4),
/* 25 S> */ B(Return),
B(Ldar), R(4),
/* 25 S> */ B(Return),
B(Ldar), R(4), B(Ldar), R(4),
/* 25 S> */ B(Return), /* 25 S> */ B(Return),
B(Ldar), R(4), B(Ldar), R(4),
...@@ -245,11 +238,9 @@ constant pool: [ ...@@ -245,11 +238,9 @@ constant pool: [
Smi [126], Smi [126],
Smi [6], Smi [6],
Smi [9], Smi [9],
Smi [12],
Smi [15],
] ]
handlers: [ handlers: [
[52, 209, 215], [52, 207, 213],
] ]
--- ---
...@@ -259,7 +250,7 @@ snippet: " ...@@ -259,7 +250,7 @@ snippet: "
" "
frame size: 18 frame size: 18
parameter count: 1 parameter count: 1
bytecode array length: 708 bytecode array length: 697
bytecodes: [ bytecodes: [
B(Ldar), R(new_target), B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26), B(JumpIfUndefined), U8(26),
...@@ -502,19 +493,19 @@ bytecodes: [ ...@@ -502,19 +493,19 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(8), B(Ldar), R(8),
B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0), B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
B(Jump), U8(28), B(Jump), U8(27),
B(PopContext), R(1), B(PopContext), R(1),
B(PopContext), R(1), B(PopContext), R(1),
B(LdaSmi), I8(1), B(LdaZero),
B(Star), R(5), B(Star), R(5),
B(Mov), R(9), R(6), B(Mov), R(9), R(6),
B(Jump), U8(47), B(Jump), U8(46),
B(PopContext), R(1), B(PopContext), R(1),
B(PopContext), R(1), B(PopContext), R(1),
B(LdaSmi), I8(2), B(LdaSmi), I8(1),
B(Star), R(5), B(Star), R(5),
B(Mov), R(9), R(6), B(Mov), R(9), R(6),
B(Jump), U8(34), B(Jump), U8(33),
B(PopContext), R(1), B(PopContext), R(1),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(8), B(Star), R(8),
...@@ -522,14 +513,14 @@ bytecodes: [ ...@@ -522,14 +513,14 @@ bytecodes: [
B(Star), R(9), B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(6), B(Star), R(6),
B(LdaSmi), I8(3), B(LdaZero),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(6), B(Star), R(6),
B(LdaSmi), I8(4), B(LdaSmi), I8(1),
B(Star), R(5), B(Star), R(5),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
...@@ -540,14 +531,8 @@ bytecodes: [ ...@@ -540,14 +531,8 @@ bytecodes: [
B(Ldar), R(7), B(Ldar), R(7),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(5), B(Ldar), R(5),
B(SwitchOnSmiNoFeedback), U8(18), U8(5), I8(0), B(SwitchOnSmiNoFeedback), U8(18), U8(2), I8(0),
B(Jump), U8(17), B(Jump), U8(8),
B(Ldar), R(6),
/* 44 S> */ B(Return),
B(Ldar), R(6),
/* 44 S> */ B(Return),
B(Ldar), R(6),
B(ReThrow),
B(Ldar), R(6), B(Ldar), R(6),
/* 44 S> */ B(Return), /* 44 S> */ B(Return),
B(Ldar), R(6), B(Ldar), R(6),
...@@ -572,16 +557,13 @@ constant pool: [ ...@@ -572,16 +557,13 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE [""], ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [6], Smi [6],
Smi [19], Smi [18],
Smi [556], Smi [554],
Smi [6], Smi [6],
Smi [9], Smi [9],
Smi [12],
Smi [15],
Smi [18],
] ]
handlers: [ handlers: [
[52, 655, 661], [52, 653, 659],
[133, 422, 428], [133, 422, 428],
[136, 378, 380], [136, 378, 380],
[515, 531, 533], [515, 531, 533],
......
...@@ -273,7 +273,7 @@ snippet: " ...@@ -273,7 +273,7 @@ snippet: "
" "
frame size: 15 frame size: 15
parameter count: 1 parameter count: 1
bytecode array length: 339 bytecode array length: 335
bytecodes: [ bytecodes: [
B(Ldar), R(new_target), B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26), B(JumpIfUndefined), U8(26),
...@@ -322,7 +322,7 @@ bytecodes: [ ...@@ -322,7 +322,7 @@ bytecodes: [
B(Star), R(7), B(Star), R(7),
B(LdaZero), B(LdaZero),
B(Star), R(6), B(Star), R(6),
B(Jump), U8(193), B(Jump), U8(192),
B(Ldar), R(11), B(Ldar), R(11),
/* 11 E> */ B(Throw), /* 11 E> */ B(Throw),
B(Ldar), R(closure), B(Ldar), R(closure),
...@@ -400,14 +400,14 @@ bytecodes: [ ...@@ -400,14 +400,14 @@ bytecodes: [
B(Star), R(10), B(Star), R(10),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
B(Star), R(7), B(Star), R(7),
B(LdaSmi), I8(1), B(LdaZero),
B(Star), R(6), B(Star), R(6),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(6), B(Star), R(6),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(7), B(Star), R(7),
B(LdaSmi), I8(2), B(LdaSmi), I8(1),
B(Star), R(6), B(Star), R(6),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
...@@ -418,10 +418,8 @@ bytecodes: [ ...@@ -418,10 +418,8 @@ bytecodes: [
B(Ldar), R(8), B(Ldar), R(8),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(6), B(Ldar), R(6),
B(SwitchOnSmiNoFeedback), U8(4), U8(3), I8(0), B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0),
B(Jump), U8(11), B(Jump), U8(8),
B(Ldar), R(7),
/* 62 S> */ B(Return),
B(Ldar), R(7), B(Ldar), R(7),
/* 62 S> */ B(Return), /* 62 S> */ B(Return),
B(Ldar), R(7), B(Ldar), R(7),
...@@ -436,10 +434,9 @@ constant pool: [ ...@@ -436,10 +434,9 @@ constant pool: [
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [6], Smi [6],
Smi [9], Smi [9],
Smi [12],
] ]
handlers: [ handlers: [
[52, 292, 298], [52, 291, 297],
] ]
--- ---
...@@ -451,7 +448,7 @@ snippet: " ...@@ -451,7 +448,7 @@ snippet: "
" "
frame size: 14 frame size: 14
parameter count: 1 parameter count: 1
bytecode array length: 452 bytecode array length: 444
bytecodes: [ bytecodes: [
B(Ldar), R(new_target), B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26), B(JumpIfUndefined), U8(26),
...@@ -550,7 +547,7 @@ bytecodes: [ ...@@ -550,7 +547,7 @@ bytecodes: [
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
B(Jump), U8(6), B(Jump), U8(6),
B(PopContext), R(2), B(PopContext), R(2),
B(Jump), U8(158), B(Jump), U8(157),
B(Ldar), R(3), B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(5), U8(1), I8(1), B(SwitchOnSmiNoFeedback), U8(5), U8(1), I8(1),
B(LdaSmi), I8(-2), B(LdaSmi), I8(-2),
...@@ -563,7 +560,7 @@ bytecodes: [ ...@@ -563,7 +560,7 @@ bytecodes: [
B(Star), R(8), B(Star), R(8),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(TestEqual), R(8), U8(6), B(TestEqual), R(8), U8(6),
B(JumpIfFalse), U8(102), B(JumpIfFalse), U8(101),
/* 18 E> */ B(StackCheck), /* 18 E> */ B(StackCheck),
/* 47 S> */ B(LdaCurrentContextSlot), U8(4), /* 47 S> */ B(LdaCurrentContextSlot), U8(4),
B(Star), R(8), B(Star), R(8),
...@@ -585,10 +582,10 @@ bytecodes: [ ...@@ -585,10 +582,10 @@ bytecodes: [
B(Star), R(11), B(Star), R(11),
B(LdaZero), B(LdaZero),
B(TestEqualStrictNoFeedback), R(11), B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(37), B(JumpIfTrue), U8(36),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(11), B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(28), B(JumpIfTrue), U8(27),
B(LdaTrue), B(LdaTrue),
B(Star), R(13), B(Star), R(13),
B(Mov), R(10), R(12), B(Mov), R(10), R(12),
...@@ -598,16 +595,16 @@ bytecodes: [ ...@@ -598,16 +595,16 @@ bytecodes: [
B(PopContext), R(1), B(PopContext), R(1),
B(PopContext), R(1), B(PopContext), R(1),
B(Star), R(6), B(Star), R(6),
B(LdaSmi), I8(1), B(LdaZero),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(73), B(Jump), U8(72),
B(Ldar), R(10), B(Ldar), R(10),
/* 47 E> */ B(Throw), /* 47 E> */ B(Throw),
B(LdaZero), B(LdaZero),
B(StaContextSlot), R(1), U8(7), U8(0), B(StaContextSlot), R(1), U8(7), U8(0),
B(LdaCurrentContextSlot), U8(4), B(LdaCurrentContextSlot), U8(4),
/* 54 E> */ B(StaContextSlot), R(1), U8(5), U8(0), /* 54 E> */ B(StaContextSlot), R(1), U8(5), U8(0),
B(JumpLoop), U8(131), I8(1), B(JumpLoop), U8(130), I8(1),
B(LdaContextSlot), R(1), U8(7), U8(0), B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(8), B(Star), R(8),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
...@@ -616,7 +613,7 @@ bytecodes: [ ...@@ -616,7 +613,7 @@ bytecodes: [
B(PopContext), R(2), B(PopContext), R(2),
B(Jump), U8(7), B(Jump), U8(7),
B(PopContext), R(2), B(PopContext), R(2),
B(JumpLoop), U8(239), I8(0), B(JumpLoop), U8(238), I8(0),
B(PopContext), R(1), B(PopContext), R(1),
B(LdaUndefined), B(LdaUndefined),
B(Star), R(8), B(Star), R(8),
...@@ -624,14 +621,14 @@ bytecodes: [ ...@@ -624,14 +621,14 @@ bytecodes: [
B(Star), R(9), B(Star), R(9),
B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2), B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
B(Star), R(6), B(Star), R(6),
B(LdaSmi), I8(2), B(LdaZero),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(6), B(Star), R(6),
B(LdaSmi), I8(3), B(LdaSmi), I8(1),
B(Star), R(5), B(Star), R(5),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
...@@ -642,12 +639,8 @@ bytecodes: [ ...@@ -642,12 +639,8 @@ bytecodes: [
B(Ldar), R(7), B(Ldar), R(7),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(5), B(Ldar), R(5),
B(SwitchOnSmiNoFeedback), U8(7), U8(4), I8(0), B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(0),
B(Jump), U8(14), B(Jump), U8(8),
B(Ldar), R(6),
/* 56 S> */ B(Return),
B(Ldar), R(6),
/* 56 S> */ B(Return),
B(Ldar), R(6), B(Ldar), R(6),
/* 56 S> */ B(Return), /* 56 S> */ B(Return),
B(Ldar), R(6), B(Ldar), R(6),
...@@ -662,14 +655,12 @@ constant pool: [ ...@@ -662,14 +655,12 @@ constant pool: [
Smi [84], Smi [84],
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [60], Smi [60],
Smi [303], Smi [301],
Smi [6], Smi [6],
Smi [9], Smi [9],
Smi [12],
Smi [15],
] ]
handlers: [ handlers: [
[52, 402, 408], [52, 400, 406],
] ]
--- ---
...@@ -681,7 +672,7 @@ snippet: " ...@@ -681,7 +672,7 @@ snippet: "
" "
frame size: 12 frame size: 12
parameter count: 1 parameter count: 1
bytecode array length: 304 bytecode array length: 300
bytecodes: [ bytecodes: [
B(CreateFunctionContext), U8(5), B(CreateFunctionContext), U8(5),
B(PushContext), R(0), B(PushContext), R(0),
...@@ -772,8 +763,8 @@ bytecodes: [ ...@@ -772,8 +763,8 @@ bytecodes: [
B(Star), R(5), B(Star), R(5),
B(LdaZero), B(LdaZero),
B(Star), R(4), B(Star), R(4),
B(Jump), U8(68), B(Jump), U8(67),
B(Jump), U8(54), B(Jump), U8(53),
B(Star), R(8), B(Star), R(8),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateCatchContext), R(8), U8(3), U8(4), B(CreateCatchContext), R(8), U8(3), U8(4),
...@@ -795,14 +786,14 @@ bytecodes: [ ...@@ -795,14 +786,14 @@ bytecodes: [
B(PopContext), R(1), B(PopContext), R(1),
B(PopContext), R(1), B(PopContext), R(1),
B(Star), R(5), B(Star), R(5),
B(LdaSmi), I8(1), B(LdaZero),
B(Star), R(4), B(Star), R(4),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(4), B(Star), R(4),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(5), B(Star), R(5),
B(LdaSmi), I8(2), B(LdaSmi), I8(1),
B(Star), R(4), B(Star), R(4),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
...@@ -815,10 +806,8 @@ bytecodes: [ ...@@ -815,10 +806,8 @@ bytecodes: [
B(Ldar), R(6), B(Ldar), R(6),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(4), B(Ldar), R(4),
B(SwitchOnSmiNoFeedback), U8(5), U8(3), I8(0), B(SwitchOnSmiNoFeedback), U8(5), U8(2), I8(0),
B(Jump), U8(11), B(Jump), U8(8),
B(Ldar), R(5),
/* 67 S> */ B(Return),
B(Ldar), R(5), B(Ldar), R(5),
/* 67 S> */ B(Return), /* 67 S> */ B(Return),
B(Ldar), R(5), B(Ldar), R(5),
...@@ -834,10 +823,9 @@ constant pool: [ ...@@ -834,10 +823,9 @@ constant pool: [
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [6], Smi [6],
Smi [9], Smi [9],
Smi [12],
] ]
handlers: [ handlers: [
[17, 255, 261], [17, 254, 260],
[20, 201, 203], [20, 201, 203],
] ]
...@@ -850,7 +838,7 @@ snippet: " ...@@ -850,7 +838,7 @@ snippet: "
" "
frame size: 15 frame size: 15
parameter count: 1 parameter count: 1
bytecode array length: 491 bytecode array length: 483
bytecodes: [ bytecodes: [
B(Ldar), R(new_target), B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26), B(JumpIfUndefined), U8(26),
...@@ -983,7 +971,7 @@ bytecodes: [ ...@@ -983,7 +971,7 @@ bytecodes: [
B(Star), R(6), B(Star), R(6),
B(LdaZero), B(LdaZero),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(136), B(Jump), U8(134),
B(Ldar), R(11), B(Ldar), R(11),
B(ReThrow), B(ReThrow),
B(LdaZero), B(LdaZero),
...@@ -1010,10 +998,10 @@ bytecodes: [ ...@@ -1010,10 +998,10 @@ bytecodes: [
B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3), B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3),
B(LdaCurrentContextSlot), U8(6), B(LdaCurrentContextSlot), U8(6),
B(Star), R(6), B(Star), R(6),
B(LdaSmi), I8(1), B(LdaZero),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(68), B(Jump), U8(67),
B(Jump), U8(54), B(Jump), U8(53),
B(Star), R(9), B(Star), R(9),
B(Ldar), R(closure), B(Ldar), R(closure),
B(CreateCatchContext), R(9), U8(5), U8(6), B(CreateCatchContext), R(9), U8(5), U8(6),
...@@ -1035,14 +1023,14 @@ bytecodes: [ ...@@ -1035,14 +1023,14 @@ bytecodes: [
B(PopContext), R(1), B(PopContext), R(1),
B(PopContext), R(1), B(PopContext), R(1),
B(Star), R(6), B(Star), R(6),
B(LdaSmi), I8(2), B(LdaZero),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(14), B(Jump), U8(14),
B(LdaSmi), I8(-1), B(LdaSmi), I8(-1),
B(Star), R(5), B(Star), R(5),
B(Jump), U8(8), B(Jump), U8(8),
B(Star), R(6), B(Star), R(6),
B(LdaSmi), I8(3), B(LdaSmi), I8(1),
B(Star), R(5), B(Star), R(5),
B(LdaTheHole), B(LdaTheHole),
B(SetPendingMessage), B(SetPendingMessage),
...@@ -1055,12 +1043,8 @@ bytecodes: [ ...@@ -1055,12 +1043,8 @@ bytecodes: [
B(Ldar), R(7), B(Ldar), R(7),
B(SetPendingMessage), B(SetPendingMessage),
B(Ldar), R(5), B(Ldar), R(5),
B(SwitchOnSmiNoFeedback), U8(7), U8(4), I8(0), B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(0),
B(Jump), U8(14), B(Jump), U8(8),
B(Ldar), R(6),
/* 61 S> */ B(Return),
B(Ldar), R(6),
/* 61 S> */ B(Return),
B(Ldar), R(6), B(Ldar), R(6),
/* 61 S> */ B(Return), /* 61 S> */ B(Return),
B(Ldar), R(6), B(Ldar), R(6),
...@@ -1078,11 +1062,9 @@ constant pool: [ ...@@ -1078,11 +1062,9 @@ constant pool: [
FIXED_ARRAY_TYPE, FIXED_ARRAY_TYPE,
Smi [6], Smi [6],
Smi [9], Smi [9],
Smi [12],
Smi [15],
] ]
handlers: [ handlers: [
[61, 439, 445], [61, 437, 443],
[64, 385, 387], [64, 384, 386],
] ]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment