[osr] Add JumpLoop feedback slot operand
.. which points back at the corresponding feedback vector slot for each JumpLoop bytecode. Bug: v8:12161 Change-Id: I95f4d013544a69e088314655af7eb1dc504a8657 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3596166 Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#80048}
This commit is contained in:
parent
4f7d37a574
commit
447bf33d78
@ -378,8 +378,8 @@ BYTECODE_LIST(DEFINE_BYTECODE_OUTPUT)
|
||||
#undef DEFINE_BYTECODE_OUTPUT
|
||||
|
||||
void BytecodeArrayBuilder::OutputJumpLoop(BytecodeLoopHeader* loop_header,
|
||||
int loop_depth) {
|
||||
BytecodeNode node(CreateJumpLoopNode(0, loop_depth));
|
||||
int loop_depth, int feedback_slot) {
|
||||
BytecodeNode node(CreateJumpLoopNode(0, loop_depth, feedback_slot));
|
||||
WriteJumpLoop(&node, loop_header);
|
||||
}
|
||||
|
||||
@ -1257,7 +1257,8 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::JumpIfJSReceiver(
|
||||
}
|
||||
|
||||
BytecodeArrayBuilder& BytecodeArrayBuilder::JumpLoop(
|
||||
BytecodeLoopHeader* loop_header, int loop_depth, int position) {
|
||||
BytecodeLoopHeader* loop_header, int loop_depth, int position,
|
||||
int feedback_slot) {
|
||||
if (position != kNoSourcePosition) {
|
||||
// We need to attach a non-breakable source position to JumpLoop for its
|
||||
// implicit stack check, so we simply add it as expression position. There
|
||||
@ -1270,7 +1271,7 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::JumpLoop(
|
||||
// expression position which eliminates the empty statement's position.
|
||||
latest_source_info_.ForceExpressionPosition(position);
|
||||
}
|
||||
OutputJumpLoop(loop_header, loop_depth);
|
||||
OutputJumpLoop(loop_header, loop_depth, feedback_slot);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -428,7 +428,8 @@ class V8_EXPORT_PRIVATE BytecodeArrayBuilder final {
|
||||
|
||||
BytecodeArrayBuilder& Jump(BytecodeLabel* label);
|
||||
BytecodeArrayBuilder& JumpLoop(BytecodeLoopHeader* loop_header,
|
||||
int loop_depth, int position);
|
||||
int loop_depth, int position,
|
||||
int feedback_slot);
|
||||
|
||||
BytecodeArrayBuilder& JumpIfTrue(ToBooleanMode mode, BytecodeLabel* label);
|
||||
BytecodeArrayBuilder& JumpIfFalse(ToBooleanMode mode, BytecodeLabel* label);
|
||||
@ -594,8 +595,8 @@ class V8_EXPORT_PRIVATE BytecodeArrayBuilder final {
|
||||
BYTECODE_LIST(DECLARE_BYTECODE_OUTPUT)
|
||||
#undef DECLARE_OPERAND_TYPE_INFO
|
||||
|
||||
V8_INLINE void OutputJumpLoop(BytecodeLoopHeader* loop_header,
|
||||
int loop_depth);
|
||||
V8_INLINE void OutputJumpLoop(BytecodeLoopHeader* loop_header, int loop_depth,
|
||||
int feedback_slot);
|
||||
V8_INLINE void OutputSwitchOnSmiNoFeedback(BytecodeJumpTable* jump_table);
|
||||
|
||||
bool RegisterIsValid(Register reg) const;
|
||||
|
@ -467,15 +467,32 @@ void BytecodeArrayWriter::EmitJumpLoop(BytecodeNode* node,
|
||||
|
||||
CHECK_GE(current_offset, loop_header->offset());
|
||||
CHECK_LE(current_offset, static_cast<size_t>(kMaxUInt32));
|
||||
// Label has been bound already so this is a backwards jump.
|
||||
|
||||
// Update the actual jump offset now that we know the bytecode offset of both
|
||||
// the target loop header and this JumpLoop bytecode.
|
||||
//
|
||||
// The label has been bound already so this is a backwards jump.
|
||||
uint32_t delta =
|
||||
static_cast<uint32_t>(current_offset - loop_header->offset());
|
||||
OperandScale operand_scale = Bytecodes::ScaleForUnsignedOperand(delta);
|
||||
if (operand_scale > OperandScale::kSingle) {
|
||||
// Adjust for scaling byte prefix for wide jump offset.
|
||||
delta += 1;
|
||||
// This JumpLoop bytecode itself may have a kWide or kExtraWide prefix; if
|
||||
// so, bump the delta to account for it.
|
||||
const bool emits_prefix_bytecode =
|
||||
Bytecodes::OperandScaleRequiresPrefixBytecode(node->operand_scale()) ||
|
||||
Bytecodes::OperandScaleRequiresPrefixBytecode(
|
||||
Bytecodes::ScaleForUnsignedOperand(delta));
|
||||
if (emits_prefix_bytecode) {
|
||||
static constexpr int kPrefixBytecodeSize = 1;
|
||||
delta += kPrefixBytecodeSize;
|
||||
DCHECK_EQ(Bytecodes::Size(Bytecode::kWide, OperandScale::kSingle),
|
||||
kPrefixBytecodeSize);
|
||||
DCHECK_EQ(Bytecodes::Size(Bytecode::kExtraWide, OperandScale::kSingle),
|
||||
kPrefixBytecodeSize);
|
||||
}
|
||||
node->update_operand0(delta);
|
||||
DCHECK_EQ(
|
||||
Bytecodes::OperandScaleRequiresPrefixBytecode(node->operand_scale()),
|
||||
emits_prefix_bytecode);
|
||||
|
||||
EmitBytecode(node);
|
||||
}
|
||||
|
||||
|
@ -2246,7 +2246,8 @@ void BytecodeGenerator::VisitIterationBody(IterationStatement* stmt,
|
||||
}
|
||||
|
||||
void BytecodeGenerator::VisitDoWhileStatement(DoWhileStatement* stmt) {
|
||||
LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt);
|
||||
LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt,
|
||||
feedback_spec());
|
||||
if (stmt->cond()->ToBooleanIsFalse()) {
|
||||
// Since we know that the condition is false, we don't create a loop.
|
||||
// Therefore, we don't create a LoopScope (and thus we don't create a header
|
||||
@ -2268,7 +2269,8 @@ void BytecodeGenerator::VisitDoWhileStatement(DoWhileStatement* stmt) {
|
||||
}
|
||||
|
||||
void BytecodeGenerator::VisitWhileStatement(WhileStatement* stmt) {
|
||||
LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt);
|
||||
LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt,
|
||||
feedback_spec());
|
||||
|
||||
if (stmt->cond()->ToBooleanIsFalse()) {
|
||||
// If the condition is false there is no need to generate the loop.
|
||||
@ -2291,7 +2293,8 @@ void BytecodeGenerator::VisitForStatement(ForStatement* stmt) {
|
||||
Visit(stmt->init());
|
||||
}
|
||||
|
||||
LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt);
|
||||
LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt,
|
||||
feedback_spec());
|
||||
if (stmt->cond() && stmt->cond()->ToBooleanIsFalse()) {
|
||||
// If the condition is known to be false there is no need to generate
|
||||
// body, next or condition blocks. Init block should be generated.
|
||||
@ -2343,7 +2346,8 @@ void BytecodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
|
||||
// The loop
|
||||
{
|
||||
LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt);
|
||||
LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt,
|
||||
feedback_spec());
|
||||
LoopScope loop_scope(this, &loop_builder);
|
||||
builder()->SetExpressionAsStatementPosition(stmt->each());
|
||||
builder()->ForInContinue(index, cache_length);
|
||||
@ -2416,7 +2420,8 @@ void BytecodeGenerator::VisitForOfStatement(ForOfStatement* stmt) {
|
||||
[&]() {
|
||||
Register next_result = register_allocator()->NewRegister();
|
||||
|
||||
LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt);
|
||||
LoopBuilder loop_builder(builder(), block_coverage_builder_, stmt,
|
||||
feedback_spec());
|
||||
LoopScope loop_scope(this, &loop_builder);
|
||||
|
||||
builder()->LoadTrue().StoreAccumulatorInRegister(done);
|
||||
@ -3322,7 +3327,7 @@ void BytecodeGenerator::BuildFillArrayWithIterator(
|
||||
DCHECK(index.is_valid());
|
||||
DCHECK(value.is_valid());
|
||||
|
||||
LoopBuilder loop_builder(builder(), nullptr, nullptr);
|
||||
LoopBuilder loop_builder(builder(), nullptr, nullptr, feedback_spec());
|
||||
LoopScope loop_scope(this, &loop_builder);
|
||||
|
||||
// Call the iterator's .next() method. Break from the loop if the `done`
|
||||
@ -4853,7 +4858,7 @@ void BytecodeGenerator::VisitYieldStar(YieldStar* expr) {
|
||||
// - One for awaiting the iterator result yielded by the delegated
|
||||
// iterator
|
||||
|
||||
LoopBuilder loop_builder(builder(), nullptr, nullptr);
|
||||
LoopBuilder loop_builder(builder(), nullptr, nullptr, feedback_spec());
|
||||
LoopScope loop_scope(this, &loop_builder);
|
||||
|
||||
{
|
||||
|
@ -340,7 +340,7 @@ namespace interpreter {
|
||||
/* Control Flow -- carefully ordered for efficient checks */ \
|
||||
/* - [Unconditional jumps] */ \
|
||||
V(JumpLoop, ImplicitRegisterUse::kNone, OperandType::kUImm, \
|
||||
OperandType::kImm) \
|
||||
OperandType::kImm, OperandType::kIdx) \
|
||||
/* - [Forward jumps] */ \
|
||||
V(Jump, ImplicitRegisterUse::kNone, OperandType::kUImm) \
|
||||
/* - [Start constant jumps] */ \
|
||||
|
@ -83,9 +83,10 @@ void LoopBuilder::JumpToHeader(int loop_depth, LoopBuilder* const parent_loop) {
|
||||
//
|
||||
// The loop must have closed form, i.e. all loop elements are within the
|
||||
// loop, the loop header precedes the body and next elements in the loop.
|
||||
int slot_index = feedback_vector_spec_->AddJumpLoopSlot().ToInt();
|
||||
builder()->JumpLoop(&loop_header_,
|
||||
std::min(loop_depth, BytecodeArray::kMaxOsrUrgency - 1),
|
||||
source_position_);
|
||||
source_position_, slot_index);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -98,10 +98,12 @@ class V8_EXPORT_PRIVATE BlockBuilder final
|
||||
class V8_EXPORT_PRIVATE LoopBuilder final : public BreakableControlFlowBuilder {
|
||||
public:
|
||||
LoopBuilder(BytecodeArrayBuilder* builder,
|
||||
BlockCoverageBuilder* block_coverage_builder, AstNode* node)
|
||||
BlockCoverageBuilder* block_coverage_builder, AstNode* node,
|
||||
FeedbackVectorSpec* feedback_vector_spec)
|
||||
: BreakableControlFlowBuilder(builder, block_coverage_builder, node),
|
||||
continue_labels_(builder->zone()),
|
||||
end_labels_(builder->zone()) {
|
||||
end_labels_(builder->zone()),
|
||||
feedback_vector_spec_(feedback_vector_spec) {
|
||||
if (block_coverage_builder_ != nullptr) {
|
||||
block_coverage_body_slot_ =
|
||||
block_coverage_builder_->AllocateBlockCoverageSlot(
|
||||
@ -143,8 +145,8 @@ class V8_EXPORT_PRIVATE LoopBuilder final : public BreakableControlFlowBuilder {
|
||||
BytecodeLabels end_labels_;
|
||||
|
||||
int block_coverage_body_slot_;
|
||||
|
||||
int source_position_;
|
||||
FeedbackVectorSpec* const feedback_vector_spec_;
|
||||
};
|
||||
|
||||
// A class to help with co-ordinating break statements with their switch.
|
||||
|
@ -138,7 +138,7 @@ snippet: "
|
||||
"
|
||||
frame size: 6
|
||||
parameter count: 1
|
||||
bytecode array length: 67
|
||||
bytecode array length: 68
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
|
||||
B(Star0),
|
||||
@ -157,13 +157,13 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
|
||||
B(GetNamedProperty), R(5), U8(3), U8(17),
|
||||
B(JumpIfToBooleanTrue), U8(18),
|
||||
B(JumpIfToBooleanTrue), U8(19),
|
||||
B(GetNamedProperty), R(5), U8(4), U8(8),
|
||||
B(StaInArrayLiteral), R(2), R(1), U8(13),
|
||||
B(Ldar), R(1),
|
||||
B(Inc), U8(12),
|
||||
B(Star1),
|
||||
B(JumpLoop), U8(31), I8(0),
|
||||
B(JumpLoop), U8(31), I8(0), U8(19),
|
||||
B(Ldar), R(2),
|
||||
/* 71 S> */ B(Return),
|
||||
]
|
||||
|
@ -210,7 +210,7 @@ snippet: "
|
||||
"
|
||||
frame size: 18
|
||||
parameter count: 1
|
||||
bytecode array length: 310
|
||||
bytecode array length: 311
|
||||
bytecodes: [
|
||||
B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
|
||||
B(Mov), R(closure), R(4),
|
||||
@ -230,7 +230,7 @@ bytecodes: [
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star4),
|
||||
B(Mov), R(8), R(5),
|
||||
B(Jump), U8(221),
|
||||
B(Jump), U8(222),
|
||||
/* 36 S> */ B(CreateArrayLiteral), U8(4), U8(0), U8(37),
|
||||
B(Star10),
|
||||
B(GetIterator), R(10), U8(1), U8(3),
|
||||
@ -249,7 +249,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(14), U8(1),
|
||||
B(GetNamedProperty), R(14), U8(6), U8(9),
|
||||
B(JumpIfToBooleanTrue), U8(62),
|
||||
B(JumpIfToBooleanTrue), U8(63),
|
||||
B(GetNamedProperty), R(14), U8(7), U8(11),
|
||||
B(Star14),
|
||||
B(LdaFalse),
|
||||
@ -271,9 +271,9 @@ bytecodes: [
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star11),
|
||||
B(Mov), R(15), R(12),
|
||||
B(Jump), U8(16),
|
||||
B(Jump), U8(17),
|
||||
B(Ldar), R(15),
|
||||
/* 22 E> */ B(JumpLoop), U8(77), I8(0),
|
||||
/* 22 E> */ B(JumpLoop), U8(77), I8(0), U8(13),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star12),
|
||||
B(Star11),
|
||||
@ -287,10 +287,10 @@ bytecodes: [
|
||||
B(Ldar), R(10),
|
||||
B(JumpIfToBooleanTrue), U8(37),
|
||||
B(Mov), R(context), R(15),
|
||||
B(GetNamedProperty), R(9), U8(10), U8(13),
|
||||
B(GetNamedProperty), R(9), U8(10), U8(14),
|
||||
B(JumpIfUndefinedOrNull), U8(28),
|
||||
B(Star), R(16),
|
||||
B(CallProperty0), R(16), R(9), U8(15),
|
||||
B(CallProperty0), R(16), R(9), U8(16),
|
||||
B(JumpIfJSReceiver), U8(20),
|
||||
B(Star), R(17),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(17), U8(1),
|
||||
@ -378,10 +378,10 @@ constant pool: [
|
||||
Smi [22],
|
||||
]
|
||||
handlers: [
|
||||
[18, 268, 268],
|
||||
[21, 239, 239],
|
||||
[79, 159, 165],
|
||||
[178, 199, 201],
|
||||
[18, 269, 269],
|
||||
[21, 240, 240],
|
||||
[79, 160, 166],
|
||||
[179, 200, 202],
|
||||
]
|
||||
|
||||
---
|
||||
@ -392,7 +392,7 @@ snippet: "
|
||||
"
|
||||
frame size: 17
|
||||
parameter count: 1
|
||||
bytecode array length: 422
|
||||
bytecode array length: 423
|
||||
bytecodes: [
|
||||
B(SwitchOnGeneratorState), R(0), U8(0), U8(5),
|
||||
B(Mov), R(closure), R(1),
|
||||
@ -460,7 +460,7 @@ bytecodes: [
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star1),
|
||||
B(Mov), R(10), R(2),
|
||||
B(Jump), U8(215),
|
||||
B(Jump), U8(216),
|
||||
B(GetNamedProperty), R(7), U8(14), U8(20),
|
||||
B(JumpIfUndefinedOrNull), U8(10),
|
||||
B(Star12),
|
||||
@ -507,7 +507,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
|
||||
B(GetNamedProperty), R(5), U8(15), U8(28),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(JumpIfToBooleanTrue), U8(36),
|
||||
B(GetNamedProperty), R(5), U8(16), U8(30),
|
||||
B(Star15),
|
||||
B(LdaFalse),
|
||||
@ -519,8 +519,8 @@ bytecodes: [
|
||||
B(Star8),
|
||||
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
|
||||
B(Star6),
|
||||
B(JumpLoop), U8(220), I8(0),
|
||||
B(GetNamedProperty), R(5), U8(16), U8(32),
|
||||
B(JumpLoop), U8(220), I8(0), U8(32),
|
||||
B(GetNamedProperty), R(5), U8(16), U8(33),
|
||||
B(Star7),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestReferenceEqual), R(6),
|
||||
@ -594,13 +594,13 @@ constant pool: [
|
||||
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
|
||||
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
|
||||
SCOPE_INFO_TYPE,
|
||||
Smi [333],
|
||||
Smi [334],
|
||||
Smi [6],
|
||||
Smi [9],
|
||||
Smi [22],
|
||||
]
|
||||
handlers: [
|
||||
[18, 380, 380],
|
||||
[21, 351, 351],
|
||||
[18, 381, 381],
|
||||
[21, 352, 352],
|
||||
]
|
||||
|
||||
|
@ -59,7 +59,7 @@ snippet: "
|
||||
"
|
||||
frame size: 2
|
||||
parameter count: 1
|
||||
bytecode array length: 48
|
||||
bytecode array length: 49
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
@ -67,7 +67,7 @@ bytecodes: [
|
||||
B(Star1),
|
||||
/* 65 S> */ B(LdaSmi), I8(10),
|
||||
/* 65 E> */ B(TestLessThan), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(35),
|
||||
B(JumpIfFalse), U8(36),
|
||||
/* 75 S> */ B(Ldar), R(1),
|
||||
/* 81 E> */ B(MulSmi), I8(12), U8(1),
|
||||
B(Star1),
|
||||
@ -81,8 +81,8 @@ bytecodes: [
|
||||
/* 126 S> */ B(LdaSmi), I8(4),
|
||||
/* 132 E> */ B(TestEqual), R(0), U8(4),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 138 S> */ B(Jump), U8(5),
|
||||
/* 56 E> */ B(JumpLoop), U8(37), I8(0),
|
||||
/* 138 S> */ B(Jump), U8(6),
|
||||
/* 56 E> */ B(JumpLoop), U8(37), I8(0), U8(5),
|
||||
/* 147 S> */ B(Ldar), R(1),
|
||||
/* 156 S> */ B(Return),
|
||||
]
|
||||
@ -106,7 +106,7 @@ snippet: "
|
||||
"
|
||||
frame size: 1
|
||||
parameter count: 1
|
||||
bytecode array length: 58
|
||||
bytecode array length: 59
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
@ -117,11 +117,11 @@ bytecodes: [
|
||||
/* 85 S> */ B(LdaSmi), I8(3),
|
||||
/* 91 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 97 S> */ B(Jump), U8(38),
|
||||
/* 97 S> */ B(Jump), U8(39),
|
||||
/* 106 S> */ B(LdaSmi), I8(4),
|
||||
/* 112 E> */ B(TestEqual), R(0), U8(2),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 118 S> */ B(Jump), U8(29),
|
||||
/* 118 S> */ B(Jump), U8(30),
|
||||
/* 127 S> */ B(LdaSmi), I8(10),
|
||||
/* 133 E> */ B(TestEqual), R(0), U8(3),
|
||||
B(JumpIfFalse), U8(4),
|
||||
@ -129,11 +129,11 @@ bytecodes: [
|
||||
/* 152 S> */ B(LdaSmi), I8(5),
|
||||
/* 158 E> */ B(TestEqual), R(0), U8(4),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 164 S> */ B(Jump), U8(11),
|
||||
/* 164 S> */ B(Jump), U8(12),
|
||||
/* 173 S> */ B(Ldar), R(0),
|
||||
/* 179 E> */ B(AddSmi), I8(1), U8(5),
|
||||
B(Star0),
|
||||
/* 45 E> */ B(JumpLoop), U8(50), I8(0),
|
||||
/* 45 E> */ B(JumpLoop), U8(50), I8(0), U8(6),
|
||||
/* 186 S> */ B(Ldar), R(0),
|
||||
/* 195 S> */ B(Return),
|
||||
]
|
||||
@ -157,7 +157,7 @@ snippet: "
|
||||
"
|
||||
frame size: 1
|
||||
parameter count: 1
|
||||
bytecode array length: 40
|
||||
bytecode array length: 41
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
@ -175,8 +175,8 @@ bytecodes: [
|
||||
/* 122 S> */ B(Ldar), R(0),
|
||||
/* 128 E> */ B(AddSmi), I8(1), U8(3),
|
||||
B(Star0),
|
||||
/* 135 S> */ B(Jump), U8(5),
|
||||
/* 45 E> */ B(JumpLoop), U8(32), I8(0),
|
||||
/* 135 S> */ B(Jump), U8(6),
|
||||
/* 45 E> */ B(JumpLoop), U8(32), I8(0), U8(4),
|
||||
/* 144 S> */ B(Ldar), R(0),
|
||||
/* 153 S> */ B(Return),
|
||||
]
|
||||
@ -197,21 +197,21 @@ snippet: "
|
||||
"
|
||||
frame size: 2
|
||||
parameter count: 1
|
||||
bytecode array length: 28
|
||||
bytecode array length: 29
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaSmi), I8(10),
|
||||
B(Star0),
|
||||
/* 54 S> */ B(LdaSmi), I8(1),
|
||||
B(Star1),
|
||||
/* 64 S> */ B(Ldar), R(0),
|
||||
B(JumpIfToBooleanFalse), U8(17),
|
||||
B(JumpIfToBooleanFalse), U8(18),
|
||||
/* 71 S> */ B(Ldar), R(1),
|
||||
/* 77 E> */ B(MulSmi), I8(12), U8(0),
|
||||
B(Star1),
|
||||
/* 85 S> */ B(Ldar), R(0),
|
||||
/* 91 E> */ B(SubSmi), I8(1), U8(1),
|
||||
B(Star0),
|
||||
/* 57 E> */ B(JumpLoop), U8(16), I8(0),
|
||||
/* 57 E> */ B(JumpLoop), U8(16), I8(0), U8(2),
|
||||
/* 98 S> */ B(Ldar), R(1),
|
||||
/* 107 S> */ B(Return),
|
||||
]
|
||||
@ -233,7 +233,7 @@ snippet: "
|
||||
"
|
||||
frame size: 2
|
||||
parameter count: 1
|
||||
bytecode array length: 48
|
||||
bytecode array length: 49
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
@ -245,7 +245,7 @@ bytecodes: [
|
||||
/* 77 S> */ B(LdaSmi), I8(5),
|
||||
/* 83 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 89 S> */ B(Jump), U8(27),
|
||||
/* 89 S> */ B(Jump), U8(28),
|
||||
/* 98 S> */ B(LdaSmi), I8(6),
|
||||
/* 104 E> */ B(TestEqual), R(0), U8(2),
|
||||
B(JumpIfFalse), U8(4),
|
||||
@ -255,8 +255,8 @@ bytecodes: [
|
||||
B(Star0),
|
||||
/* 144 S> */ B(LdaSmi), I8(10),
|
||||
/* 144 E> */ B(TestLessThan), R(0), U8(4),
|
||||
B(JumpIfFalse), U8(5),
|
||||
/* 56 E> */ B(JumpLoop), U8(37), I8(0),
|
||||
B(JumpIfFalse), U8(6),
|
||||
/* 56 E> */ B(JumpLoop), U8(37), I8(0), U8(5),
|
||||
/* 151 S> */ B(Ldar), R(1),
|
||||
/* 160 S> */ B(Return),
|
||||
]
|
||||
@ -277,7 +277,7 @@ snippet: "
|
||||
"
|
||||
frame size: 2
|
||||
parameter count: 1
|
||||
bytecode array length: 26
|
||||
bytecode array length: 27
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaSmi), I8(10),
|
||||
B(Star0),
|
||||
@ -289,8 +289,8 @@ bytecodes: [
|
||||
/* 78 S> */ B(Ldar), R(0),
|
||||
/* 84 E> */ B(SubSmi), I8(1), U8(1),
|
||||
B(Star0),
|
||||
/* 98 S> */ B(JumpIfToBooleanFalse), U8(5),
|
||||
/* 57 E> */ B(JumpLoop), U8(14), I8(0),
|
||||
/* 98 S> */ B(JumpIfToBooleanFalse), U8(6),
|
||||
/* 57 E> */ B(JumpLoop), U8(14), I8(0), U8(2),
|
||||
/* 102 S> */ B(Ldar), R(1),
|
||||
/* 111 S> */ B(Return),
|
||||
]
|
||||
@ -352,7 +352,7 @@ snippet: "
|
||||
"
|
||||
frame size: 2
|
||||
parameter count: 1
|
||||
bytecode array length: 41
|
||||
bytecode array length: 42
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
@ -364,7 +364,7 @@ bytecodes: [
|
||||
/* 77 S> */ B(LdaSmi), I8(5),
|
||||
/* 83 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 89 S> */ B(Jump), U8(20),
|
||||
/* 89 S> */ B(Jump), U8(21),
|
||||
/* 98 S> */ B(Ldar), R(0),
|
||||
/* 104 E> */ B(AddSmi), I8(1), U8(2),
|
||||
B(Star0),
|
||||
@ -372,7 +372,7 @@ bytecodes: [
|
||||
/* 117 E> */ B(TestEqual), R(0), U8(3),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 123 S> */ B(Jump), U8(2),
|
||||
/* 56 E> */ B(JumpLoop), U8(30), I8(0),
|
||||
/* 56 E> */ B(JumpLoop), U8(30), I8(0), U8(4),
|
||||
/* 149 S> */ B(Ldar), R(1),
|
||||
/* 158 S> */ B(Return),
|
||||
]
|
||||
@ -392,14 +392,14 @@ snippet: "
|
||||
"
|
||||
frame size: 1
|
||||
parameter count: 1
|
||||
bytecode array length: 31
|
||||
bytecode array length: 32
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
/* 58 S> */ B(LdaSmi), I8(1),
|
||||
/* 64 E> */ B(TestEqual), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 70 S> */ B(Jump), U8(20),
|
||||
/* 70 S> */ B(Jump), U8(21),
|
||||
/* 79 S> */ B(LdaSmi), I8(2),
|
||||
/* 85 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
@ -407,7 +407,7 @@ bytecodes: [
|
||||
/* 103 S> */ B(Ldar), R(0),
|
||||
/* 109 E> */ B(AddSmi), I8(1), U8(2),
|
||||
B(Star0),
|
||||
/* 45 E> */ B(JumpLoop), U8(24), I8(0),
|
||||
/* 45 E> */ B(JumpLoop), U8(24), I8(0), U8(3),
|
||||
B(LdaUndefined),
|
||||
/* 116 S> */ B(Return),
|
||||
]
|
||||
@ -426,14 +426,14 @@ snippet: "
|
||||
"
|
||||
frame size: 1
|
||||
parameter count: 1
|
||||
bytecode array length: 31
|
||||
bytecode array length: 32
|
||||
bytecodes: [
|
||||
/* 47 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
/* 56 S> */ B(LdaSmi), I8(1),
|
||||
/* 62 E> */ B(TestEqual), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 68 S> */ B(Jump), U8(20),
|
||||
/* 68 S> */ B(Jump), U8(21),
|
||||
/* 77 S> */ B(LdaSmi), I8(2),
|
||||
/* 83 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
@ -441,7 +441,7 @@ bytecodes: [
|
||||
/* 101 S> */ B(Ldar), R(0),
|
||||
/* 107 E> */ B(AddSmi), I8(1), U8(2),
|
||||
B(Star0),
|
||||
/* 34 E> */ B(JumpLoop), U8(24), I8(0),
|
||||
/* 34 E> */ B(JumpLoop), U8(24), I8(0), U8(3),
|
||||
B(LdaUndefined),
|
||||
/* 114 S> */ B(Return),
|
||||
]
|
||||
@ -460,14 +460,14 @@ snippet: "
|
||||
"
|
||||
frame size: 1
|
||||
parameter count: 1
|
||||
bytecode array length: 31
|
||||
bytecode array length: 32
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
/* 68 S> */ B(LdaSmi), I8(1),
|
||||
/* 74 E> */ B(TestEqual), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 80 S> */ B(Jump), U8(20),
|
||||
/* 80 S> */ B(Jump), U8(21),
|
||||
/* 89 S> */ B(LdaSmi), I8(2),
|
||||
/* 95 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
@ -475,7 +475,7 @@ bytecodes: [
|
||||
/* 55 S> */ B(Ldar), R(0),
|
||||
/* 59 E> */ B(AddSmi), I8(1), U8(2),
|
||||
B(Star0),
|
||||
/* 45 E> */ B(JumpLoop), U8(24), I8(0),
|
||||
/* 45 E> */ B(JumpLoop), U8(24), I8(0), U8(3),
|
||||
B(LdaUndefined),
|
||||
/* 113 S> */ B(Return),
|
||||
]
|
||||
@ -493,14 +493,14 @@ snippet: "
|
||||
"
|
||||
frame size: 1
|
||||
parameter count: 1
|
||||
bytecode array length: 31
|
||||
bytecode array length: 32
|
||||
bytecodes: [
|
||||
/* 47 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
/* 66 S> */ B(LdaSmi), I8(1),
|
||||
/* 72 E> */ B(TestEqual), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 78 S> */ B(Jump), U8(20),
|
||||
/* 78 S> */ B(Jump), U8(21),
|
||||
/* 87 S> */ B(LdaSmi), I8(2),
|
||||
/* 93 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
@ -508,7 +508,7 @@ bytecodes: [
|
||||
/* 53 S> */ B(Ldar), R(0),
|
||||
/* 57 E> */ B(AddSmi), I8(1), U8(2),
|
||||
B(Star0),
|
||||
/* 34 E> */ B(JumpLoop), U8(24), I8(0),
|
||||
/* 34 E> */ B(JumpLoop), U8(24), I8(0), U8(3),
|
||||
B(LdaUndefined),
|
||||
/* 111 S> */ B(Return),
|
||||
]
|
||||
@ -527,7 +527,7 @@ snippet: "
|
||||
"
|
||||
frame size: 2
|
||||
parameter count: 1
|
||||
bytecode array length: 30
|
||||
bytecode array length: 31
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
@ -535,7 +535,7 @@ bytecodes: [
|
||||
B(Star1),
|
||||
/* 63 S> */ B(LdaSmi), I8(100),
|
||||
/* 63 E> */ B(TestLessThan), R(1), U8(0),
|
||||
B(JumpIfFalse), U8(19),
|
||||
B(JumpIfFalse), U8(20),
|
||||
/* 85 S> */ B(Ldar), R(0),
|
||||
/* 91 E> */ B(AddSmi), I8(1), U8(1),
|
||||
B(Star0),
|
||||
@ -543,7 +543,7 @@ bytecodes: [
|
||||
/* 72 S> */ B(Ldar), R(1),
|
||||
/* 76 E> */ B(AddSmi), I8(1), U8(2),
|
||||
B(Star1),
|
||||
/* 45 E> */ B(JumpLoop), U8(21), I8(0),
|
||||
/* 45 E> */ B(JumpLoop), U8(21), I8(0), U8(3),
|
||||
B(LdaUndefined),
|
||||
/* 110 S> */ B(Return),
|
||||
]
|
||||
@ -562,21 +562,21 @@ snippet: "
|
||||
"
|
||||
frame size: 2
|
||||
parameter count: 1
|
||||
bytecode array length: 27
|
||||
bytecode array length: 28
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaSmi), I8(1),
|
||||
B(Star0),
|
||||
/* 58 S> */ B(LdaSmi), I8(10),
|
||||
B(Star1),
|
||||
/* 62 S> */ B(Ldar), R(1),
|
||||
B(JumpIfToBooleanFalse), U8(16),
|
||||
B(JumpIfToBooleanFalse), U8(17),
|
||||
/* 74 S> */ B(Ldar), R(0),
|
||||
/* 80 E> */ B(MulSmi), I8(12), U8(0),
|
||||
B(Star0),
|
||||
/* 67 S> */ B(Ldar), R(1),
|
||||
B(Dec), U8(1),
|
||||
B(Star1),
|
||||
/* 45 E> */ B(JumpLoop), U8(15), I8(0),
|
||||
/* 45 E> */ B(JumpLoop), U8(15), I8(0), U8(2),
|
||||
/* 88 S> */ B(Ldar), R(0),
|
||||
/* 97 S> */ B(Return),
|
||||
]
|
||||
@ -620,7 +620,7 @@ snippet: "
|
||||
"
|
||||
frame size: 2
|
||||
parameter count: 1
|
||||
bytecode array length: 30
|
||||
bytecode array length: 31
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
@ -632,11 +632,11 @@ bytecodes: [
|
||||
/* 89 S> */ B(LdaSmi), I8(20),
|
||||
/* 95 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 102 S> */ B(Jump), U8(10),
|
||||
/* 102 S> */ B(Jump), U8(11),
|
||||
/* 69 S> */ B(Ldar), R(1),
|
||||
B(Inc), U8(2),
|
||||
B(Star1),
|
||||
/* 45 E> */ B(JumpLoop), U8(20), I8(0),
|
||||
/* 45 E> */ B(JumpLoop), U8(20), I8(0), U8(3),
|
||||
/* 112 S> */ B(Ldar), R(0),
|
||||
/* 121 S> */ B(Return),
|
||||
]
|
||||
@ -659,12 +659,12 @@ snippet: "
|
||||
"
|
||||
frame size: 4
|
||||
parameter count: 1
|
||||
bytecode array length: 46
|
||||
bytecode array length: 47
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
/* 52 S> */ B(Ldar), R(0),
|
||||
B(JumpIfToBooleanFalse), U8(40),
|
||||
B(JumpIfToBooleanFalse), U8(41),
|
||||
B(CreateBlockContext), U8(0),
|
||||
B(PushContext), R(3),
|
||||
B(LdaTheHole),
|
||||
@ -682,7 +682,7 @@ bytecodes: [
|
||||
B(Inc), U8(0),
|
||||
/* 127 E> */ B(StaCurrentContextSlot), U8(2),
|
||||
B(PopContext), R(3),
|
||||
/* 45 E> */ B(JumpLoop), U8(39), I8(0),
|
||||
/* 45 E> */ B(JumpLoop), U8(39), I8(0), U8(1),
|
||||
B(LdaUndefined),
|
||||
/* 137 S> */ B(Return),
|
||||
]
|
||||
|
@ -47,7 +47,7 @@ snippet: "
|
||||
"
|
||||
frame size: 4
|
||||
parameter count: 1
|
||||
bytecode array length: 59
|
||||
bytecode array length: 61
|
||||
bytecodes: [
|
||||
/* 44 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
@ -55,12 +55,12 @@ bytecodes: [
|
||||
B(Star1),
|
||||
/* 76 S> */ B(LdaSmi), I8(10),
|
||||
/* 76 E> */ B(TestLessThan), R(1), U8(0),
|
||||
B(JumpIfFalse), U8(47),
|
||||
B(JumpIfFalse), U8(49),
|
||||
/* 106 S> */ B(LdaZero),
|
||||
B(Star2),
|
||||
/* 111 S> */ B(LdaSmi), I8(3),
|
||||
/* 111 E> */ B(TestLessThan), R(2), U8(1),
|
||||
B(JumpIfFalse), U8(30),
|
||||
B(JumpIfFalse), U8(31),
|
||||
/* 129 S> */ B(Ldar), R(0),
|
||||
B(Inc), U8(2),
|
||||
B(Star0),
|
||||
@ -70,15 +70,15 @@ bytecodes: [
|
||||
B(LdaSmi), I8(12),
|
||||
/* 152 E> */ B(TestEqual), R(3), U8(4),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 161 S> */ B(Jump), U8(18),
|
||||
/* 161 S> */ B(Jump), U8(20),
|
||||
/* 118 S> */ B(Ldar), R(2),
|
||||
B(Inc), U8(5),
|
||||
B(Star2),
|
||||
/* 93 E> */ B(JumpLoop), U8(32), I8(1),
|
||||
/* 93 E> */ B(JumpLoop), U8(32), I8(1), U8(6),
|
||||
/* 84 S> */ B(Ldar), R(1),
|
||||
B(Inc), U8(6),
|
||||
B(Inc), U8(7),
|
||||
B(Star1),
|
||||
/* 58 E> */ B(JumpLoop), U8(49), I8(0),
|
||||
/* 58 E> */ B(JumpLoop), U8(50), I8(0), U8(8),
|
||||
/* 188 S> */ B(Ldar), R(0),
|
||||
/* 199 S> */ B(Return),
|
||||
]
|
||||
|
@ -65,7 +65,7 @@ snippet: "
|
||||
"
|
||||
frame size: 7
|
||||
parameter count: 1
|
||||
bytecode array length: 88
|
||||
bytecode array length: 89
|
||||
bytecodes: [
|
||||
/* 34 S> */ B(LdaGlobal), U8(0), U8(0),
|
||||
B(Star1),
|
||||
@ -88,13 +88,13 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
|
||||
B(GetNamedProperty), R(6), U8(5), U8(21),
|
||||
B(JumpIfToBooleanTrue), U8(18),
|
||||
B(JumpIfToBooleanTrue), U8(19),
|
||||
B(GetNamedProperty), R(6), U8(6), U8(12),
|
||||
B(StaInArrayLiteral), R(3), R(2), U8(17),
|
||||
B(Ldar), R(2),
|
||||
B(Inc), U8(16),
|
||||
B(Star2),
|
||||
B(JumpLoop), U8(31), I8(0),
|
||||
B(JumpLoop), U8(31), I8(0), U8(23),
|
||||
B(LdaSmi), I8(4),
|
||||
B(StaInArrayLiteral), R(3), R(2), U8(17),
|
||||
B(Mov), R(3), R(2),
|
||||
|
@ -252,18 +252,18 @@ snippet: "
|
||||
"
|
||||
frame size: 2
|
||||
parameter count: 1
|
||||
bytecode array length: 18
|
||||
bytecode array length: 19
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaUndefined),
|
||||
B(Star0),
|
||||
/* 61 S> */ B(LdaZero),
|
||||
B(Star1),
|
||||
/* 73 S> */ B(Ldar), R(0),
|
||||
B(JumpIfUndefined), U8(10),
|
||||
B(JumpIfUndefined), U8(11),
|
||||
/* 92 S> */ B(Ldar), R(1),
|
||||
B(Inc), U8(0),
|
||||
B(Star1),
|
||||
/* 64 E> */ B(JumpLoop), U8(9), I8(0),
|
||||
/* 64 E> */ B(JumpLoop), U8(9), I8(0), U8(1),
|
||||
B(LdaUndefined),
|
||||
/* 99 S> */ B(Return),
|
||||
]
|
||||
|
@ -100,7 +100,7 @@ snippet: "
|
||||
"
|
||||
frame size: 14
|
||||
parameter count: 1
|
||||
bytecode array length: 203
|
||||
bytecode array length: 204
|
||||
bytecodes: [
|
||||
/* 48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
|
||||
B(Star2),
|
||||
@ -147,7 +147,7 @@ bytecodes: [
|
||||
/* 63 S> */ B(CreateEmptyArrayLiteral), U8(15),
|
||||
B(Star11),
|
||||
B(Ldar), R(6),
|
||||
B(JumpIfToBooleanTrue), U8(40),
|
||||
B(JumpIfToBooleanTrue), U8(41),
|
||||
B(LdaZero),
|
||||
B(Star12),
|
||||
B(LdaTrue),
|
||||
@ -157,13 +157,13 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
|
||||
B(GetNamedProperty), R(10), U8(2), U8(21),
|
||||
B(JumpIfToBooleanTrue), U8(18),
|
||||
B(JumpIfToBooleanTrue), U8(19),
|
||||
B(GetNamedProperty), R(10), U8(3), U8(7),
|
||||
B(StaInArrayLiteral), R(11), R(12), U8(16),
|
||||
B(Ldar), R(12),
|
||||
B(Inc), U8(18),
|
||||
B(Star12),
|
||||
B(JumpLoop), U8(31), I8(0),
|
||||
B(JumpLoop), U8(31), I8(0), U8(23),
|
||||
B(Mov), R(11), R(1),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star8),
|
||||
@ -178,10 +178,10 @@ bytecodes: [
|
||||
B(Ldar), R(6),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(11),
|
||||
B(GetNamedProperty), R(5), U8(4), U8(23),
|
||||
B(GetNamedProperty), R(5), U8(4), U8(24),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star12),
|
||||
B(CallProperty0), R(12), R(5), U8(25),
|
||||
B(CallProperty0), R(12), R(5), U8(26),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star13),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
|
||||
@ -210,8 +210,8 @@ constant pool: [
|
||||
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
|
||||
]
|
||||
handlers: [
|
||||
[30, 141, 147],
|
||||
[160, 179, 181],
|
||||
[30, 142, 148],
|
||||
[161, 180, 182],
|
||||
]
|
||||
|
||||
---
|
||||
|
@ -16,7 +16,7 @@ snippet: "
|
||||
"
|
||||
frame size: 19
|
||||
parameter count: 1
|
||||
bytecode array length: 268
|
||||
bytecode array length: 269
|
||||
bytecodes: [
|
||||
B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
|
||||
B(Mov), R(closure), R(4),
|
||||
@ -64,7 +64,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
|
||||
B(GetNamedProperty), R(11), U8(6), U8(13),
|
||||
B(JumpIfToBooleanTrue), U8(20),
|
||||
B(JumpIfToBooleanTrue), U8(21),
|
||||
B(GetNamedProperty), R(11), U8(7), U8(15),
|
||||
B(Star11),
|
||||
B(LdaFalse),
|
||||
@ -72,7 +72,7 @@ bytecodes: [
|
||||
B(Mov), R(11), R(1),
|
||||
/* 38 S> */ B(Mov), R(1), R(3),
|
||||
B(Ldar), R(11),
|
||||
/* 23 E> */ B(JumpLoop), U8(70), I8(0),
|
||||
/* 23 E> */ B(JumpLoop), U8(70), I8(0), U8(17),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star9),
|
||||
B(Star8),
|
||||
@ -86,10 +86,10 @@ bytecodes: [
|
||||
B(Ldar), R(7),
|
||||
B(JumpIfToBooleanTrue), U8(72),
|
||||
B(Mov), R(context), R(14),
|
||||
B(GetNamedProperty), R(6), U8(8), U8(17),
|
||||
B(GetNamedProperty), R(6), U8(8), U8(18),
|
||||
B(JumpIfUndefinedOrNull), U8(63),
|
||||
B(Star15),
|
||||
B(CallProperty0), R(15), R(6), U8(19),
|
||||
B(CallProperty0), R(15), R(6), U8(20),
|
||||
B(Star), R(17),
|
||||
B(Mov), R(0), R(16),
|
||||
B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(16), U8(2),
|
||||
@ -141,7 +141,7 @@ bytecodes: [
|
||||
]
|
||||
constant pool: [
|
||||
Smi [85],
|
||||
Smi [183],
|
||||
Smi [184],
|
||||
ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
|
||||
SYMBOL_TYPE,
|
||||
SYMBOL_TYPE,
|
||||
@ -152,9 +152,9 @@ constant pool: [
|
||||
SCOPE_INFO_TYPE,
|
||||
]
|
||||
handlers: [
|
||||
[18, 246, 246],
|
||||
[66, 139, 145],
|
||||
[158, 214, 216],
|
||||
[18, 247, 247],
|
||||
[66, 140, 146],
|
||||
[159, 215, 217],
|
||||
]
|
||||
|
||||
---
|
||||
@ -238,10 +238,10 @@ bytecodes: [
|
||||
B(Ldar), R(7),
|
||||
B(JumpIfToBooleanTrue), U8(72),
|
||||
B(Mov), R(context), R(14),
|
||||
B(GetNamedProperty), R(6), U8(8), U8(17),
|
||||
B(GetNamedProperty), R(6), U8(8), U8(18),
|
||||
B(JumpIfUndefinedOrNull), U8(63),
|
||||
B(Star15),
|
||||
B(CallProperty0), R(15), R(6), U8(19),
|
||||
B(CallProperty0), R(15), R(6), U8(20),
|
||||
B(Star), R(17),
|
||||
B(Mov), R(0), R(16),
|
||||
B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(16), U8(2),
|
||||
@ -327,7 +327,7 @@ snippet: "
|
||||
"
|
||||
frame size: 19
|
||||
parameter count: 1
|
||||
bytecode array length: 284
|
||||
bytecode array length: 285
|
||||
bytecodes: [
|
||||
B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
|
||||
B(Mov), R(closure), R(4),
|
||||
@ -375,7 +375,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
|
||||
B(GetNamedProperty), R(11), U8(6), U8(13),
|
||||
B(JumpIfToBooleanTrue), U8(36),
|
||||
B(JumpIfToBooleanTrue), U8(37),
|
||||
B(GetNamedProperty), R(11), U8(7), U8(15),
|
||||
B(Star11),
|
||||
B(LdaFalse),
|
||||
@ -389,8 +389,8 @@ bytecodes: [
|
||||
/* 90 S> */ B(LdaSmi), I8(20),
|
||||
/* 96 E> */ B(TestEqual), R(3), U8(18),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 103 S> */ B(Jump), U8(5),
|
||||
/* 23 E> */ B(JumpLoop), U8(86), I8(0),
|
||||
/* 103 S> */ B(Jump), U8(6),
|
||||
/* 23 E> */ B(JumpLoop), U8(86), I8(0), U8(19),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star9),
|
||||
B(Star8),
|
||||
@ -404,10 +404,10 @@ bytecodes: [
|
||||
B(Ldar), R(7),
|
||||
B(JumpIfToBooleanTrue), U8(72),
|
||||
B(Mov), R(context), R(14),
|
||||
B(GetNamedProperty), R(6), U8(8), U8(19),
|
||||
B(GetNamedProperty), R(6), U8(8), U8(20),
|
||||
B(JumpIfUndefinedOrNull), U8(63),
|
||||
B(Star15),
|
||||
B(CallProperty0), R(15), R(6), U8(21),
|
||||
B(CallProperty0), R(15), R(6), U8(22),
|
||||
B(Star), R(17),
|
||||
B(Mov), R(0), R(16),
|
||||
B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(16), U8(2),
|
||||
@ -459,7 +459,7 @@ bytecodes: [
|
||||
]
|
||||
constant pool: [
|
||||
Smi [85],
|
||||
Smi [199],
|
||||
Smi [200],
|
||||
ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
|
||||
SYMBOL_TYPE,
|
||||
SYMBOL_TYPE,
|
||||
@ -470,9 +470,9 @@ constant pool: [
|
||||
SCOPE_INFO_TYPE,
|
||||
]
|
||||
handlers: [
|
||||
[18, 262, 262],
|
||||
[66, 155, 161],
|
||||
[174, 230, 232],
|
||||
[18, 263, 263],
|
||||
[66, 156, 162],
|
||||
[175, 231, 233],
|
||||
]
|
||||
|
||||
---
|
||||
@ -538,10 +538,10 @@ bytecodes: [
|
||||
B(Ldar), R(5),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(11),
|
||||
B(GetNamedProperty), R(4), U8(6), U8(18),
|
||||
B(GetNamedProperty), R(4), U8(6), U8(19),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star12),
|
||||
B(CallProperty0), R(12), R(4), U8(20),
|
||||
B(CallProperty0), R(12), R(4), U8(21),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star13),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
|
||||
|
@ -60,18 +60,18 @@ snippet: "
|
||||
"
|
||||
frame size: 8
|
||||
parameter count: 1
|
||||
bytecode array length: 37
|
||||
bytecode array length: 38
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaConstant), U8(0),
|
||||
B(Star0),
|
||||
/* 68 S> */ B(JumpIfUndefinedOrNull), U8(32),
|
||||
/* 68 S> */ B(JumpIfUndefinedOrNull), U8(33),
|
||||
B(ToObject), R(3),
|
||||
B(ForInEnumerate), R(3),
|
||||
B(ForInPrepare), R(4), U8(0),
|
||||
B(LdaZero),
|
||||
B(Star7),
|
||||
/* 63 S> */ B(ForInContinue), R(7), R(6),
|
||||
B(JumpIfFalse), U8(18),
|
||||
B(JumpIfFalse), U8(19),
|
||||
B(ForInNext), R(3), R(7), R(4), U8(0),
|
||||
B(JumpIfUndefined), U8(5),
|
||||
B(Star2),
|
||||
@ -79,7 +79,7 @@ bytecodes: [
|
||||
/* 82 S> */ B(Return),
|
||||
B(ForInStep), R(7),
|
||||
B(Star7),
|
||||
/* 54 E> */ B(JumpLoop), U8(18), I8(0),
|
||||
/* 54 E> */ B(JumpLoop), U8(18), I8(0), U8(1),
|
||||
B(LdaUndefined),
|
||||
/* 85 S> */ B(Return),
|
||||
]
|
||||
@ -96,19 +96,19 @@ snippet: "
|
||||
"
|
||||
frame size: 9
|
||||
parameter count: 1
|
||||
bytecode array length: 48
|
||||
bytecode array length: 49
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
/* 59 S> */ B(CreateArrayLiteral), U8(0), U8(1), U8(37),
|
||||
B(JumpIfUndefinedOrNull), U8(40),
|
||||
B(JumpIfUndefinedOrNull), U8(41),
|
||||
B(ToObject), R(3),
|
||||
B(ForInEnumerate), R(3),
|
||||
B(ForInPrepare), R(4), U8(0),
|
||||
B(LdaZero),
|
||||
B(Star7),
|
||||
/* 54 S> */ B(ForInContinue), R(7), R(6),
|
||||
B(JumpIfFalse), U8(26),
|
||||
B(JumpIfFalse), U8(27),
|
||||
B(ForInNext), R(3), R(7), R(4), U8(0),
|
||||
B(JumpIfUndefined), U8(13),
|
||||
B(Star2),
|
||||
@ -119,7 +119,7 @@ bytecodes: [
|
||||
B(Star0),
|
||||
/* 72 E> */ B(ForInStep), R(7),
|
||||
B(Star7),
|
||||
/* 45 E> */ B(JumpLoop), U8(26), I8(0),
|
||||
/* 45 E> */ B(JumpLoop), U8(26), I8(0), U8(3),
|
||||
B(LdaUndefined),
|
||||
/* 80 S> */ B(Return),
|
||||
]
|
||||
@ -139,19 +139,19 @@ snippet: "
|
||||
"
|
||||
frame size: 7
|
||||
parameter count: 1
|
||||
bytecode array length: 75
|
||||
bytecode array length: 76
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
|
||||
B(Star0),
|
||||
/* 77 S> */ B(CreateArrayLiteral), U8(1), U8(2), U8(37),
|
||||
B(JumpIfUndefinedOrNull), U8(64),
|
||||
B(JumpIfUndefinedOrNull), U8(65),
|
||||
B(ToObject), R(1),
|
||||
B(ForInEnumerate), R(1),
|
||||
B(ForInPrepare), R(2), U8(1),
|
||||
B(LdaZero),
|
||||
B(Star5),
|
||||
/* 68 S> */ B(ForInContinue), R(5), R(4),
|
||||
B(JumpIfFalse), U8(50),
|
||||
B(JumpIfFalse), U8(51),
|
||||
B(ForInNext), R(1), R(5), R(2), U8(1),
|
||||
B(JumpIfUndefined), U8(37),
|
||||
B(Star6),
|
||||
@ -168,10 +168,10 @@ bytecodes: [
|
||||
B(LdaSmi), I8(20),
|
||||
/* 136 E> */ B(TestEqual), R(6), U8(8),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 143 S> */ B(Jump), U8(8),
|
||||
/* 143 S> */ B(Jump), U8(9),
|
||||
B(ForInStep), R(5),
|
||||
B(Star5),
|
||||
/* 62 E> */ B(JumpLoop), U8(50), I8(0),
|
||||
/* 62 E> */ B(JumpLoop), U8(50), I8(0), U8(9),
|
||||
B(LdaUndefined),
|
||||
/* 152 S> */ B(Return),
|
||||
]
|
||||
@ -190,19 +190,19 @@ snippet: "
|
||||
"
|
||||
frame size: 9
|
||||
parameter count: 1
|
||||
bytecode array length: 55
|
||||
bytecode array length: 56
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
|
||||
B(Star0),
|
||||
/* 72 S> */ B(CreateArrayLiteral), U8(1), U8(2), U8(37),
|
||||
B(JumpIfUndefinedOrNull), U8(44),
|
||||
B(JumpIfUndefinedOrNull), U8(45),
|
||||
B(ToObject), R(1),
|
||||
B(ForInEnumerate), R(1),
|
||||
B(ForInPrepare), R(2), U8(1),
|
||||
B(LdaZero),
|
||||
B(Star5),
|
||||
/* 65 S> */ B(ForInContinue), R(5), R(4),
|
||||
B(JumpIfFalse), U8(30),
|
||||
B(JumpIfFalse), U8(31),
|
||||
B(ForInNext), R(1), R(5), R(2), U8(1),
|
||||
B(JumpIfUndefined), U8(17),
|
||||
B(Star6),
|
||||
@ -215,7 +215,7 @@ bytecodes: [
|
||||
/* 95 S> */ B(Return),
|
||||
B(ForInStep), R(5),
|
||||
B(Star5),
|
||||
/* 59 E> */ B(JumpLoop), U8(30), I8(0),
|
||||
/* 59 E> */ B(JumpLoop), U8(30), I8(0), U8(7),
|
||||
B(LdaUndefined),
|
||||
/* 98 S> */ B(Return),
|
||||
]
|
||||
|
@ -11,7 +11,7 @@ snippet: "
|
||||
"
|
||||
frame size: 12
|
||||
parameter count: 1
|
||||
bytecode array length: 127
|
||||
bytecode array length: 128
|
||||
bytecodes: [
|
||||
/* 48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
|
||||
B(Star4),
|
||||
@ -31,7 +31,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(8), U8(1),
|
||||
B(GetNamedProperty), R(8), U8(2), U8(9),
|
||||
B(JumpIfToBooleanTrue), U8(20),
|
||||
B(JumpIfToBooleanTrue), U8(21),
|
||||
B(GetNamedProperty), R(8), U8(3), U8(11),
|
||||
B(Star8),
|
||||
B(LdaFalse),
|
||||
@ -39,7 +39,7 @@ bytecodes: [
|
||||
B(Mov), R(8), R(1),
|
||||
/* 43 S> */ B(Mov), R(1), R(0),
|
||||
B(Ldar), R(8),
|
||||
/* 34 E> */ B(JumpLoop), U8(35), I8(0),
|
||||
/* 34 E> */ B(JumpLoop), U8(35), I8(0), U8(13),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star6),
|
||||
B(Star5),
|
||||
@ -53,10 +53,10 @@ bytecodes: [
|
||||
B(Ldar), R(4),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(9),
|
||||
B(GetNamedProperty), R(3), U8(4), U8(13),
|
||||
B(GetNamedProperty), R(3), U8(4), U8(14),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star10),
|
||||
B(CallProperty0), R(10), R(3), U8(15),
|
||||
B(CallProperty0), R(10), R(3), U8(16),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star11),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
|
||||
@ -85,8 +85,8 @@ constant pool: [
|
||||
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
|
||||
]
|
||||
handlers: [
|
||||
[27, 65, 71],
|
||||
[84, 103, 105],
|
||||
[27, 66, 72],
|
||||
[85, 104, 106],
|
||||
]
|
||||
|
||||
---
|
||||
@ -140,10 +140,10 @@ bytecodes: [
|
||||
B(Ldar), R(5),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(10),
|
||||
B(GetNamedProperty), R(4), U8(4), U8(12),
|
||||
B(GetNamedProperty), R(4), U8(4), U8(13),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star11),
|
||||
B(CallProperty0), R(11), R(4), U8(14),
|
||||
B(CallProperty0), R(11), R(4), U8(15),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star12),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
|
||||
@ -189,7 +189,7 @@ snippet: "
|
||||
"
|
||||
frame size: 12
|
||||
parameter count: 1
|
||||
bytecode array length: 143
|
||||
bytecode array length: 144
|
||||
bytecodes: [
|
||||
/* 48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
|
||||
B(Star4),
|
||||
@ -209,7 +209,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(8), U8(1),
|
||||
B(GetNamedProperty), R(8), U8(2), U8(9),
|
||||
B(JumpIfToBooleanTrue), U8(36),
|
||||
B(JumpIfToBooleanTrue), U8(37),
|
||||
B(GetNamedProperty), R(8), U8(3), U8(11),
|
||||
B(Star8),
|
||||
B(LdaFalse),
|
||||
@ -223,8 +223,8 @@ bytecodes: [
|
||||
/* 91 S> */ B(LdaSmi), I8(20),
|
||||
/* 97 E> */ B(TestEqual), R(0), U8(14),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 104 S> */ B(Jump), U8(5),
|
||||
/* 34 E> */ B(JumpLoop), U8(51), I8(0),
|
||||
/* 104 S> */ B(Jump), U8(6),
|
||||
/* 34 E> */ B(JumpLoop), U8(51), I8(0), U8(15),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star6),
|
||||
B(Star5),
|
||||
@ -238,10 +238,10 @@ bytecodes: [
|
||||
B(Ldar), R(4),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(9),
|
||||
B(GetNamedProperty), R(3), U8(4), U8(15),
|
||||
B(GetNamedProperty), R(3), U8(4), U8(16),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star10),
|
||||
B(CallProperty0), R(10), R(3), U8(17),
|
||||
B(CallProperty0), R(10), R(3), U8(18),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star11),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
|
||||
@ -270,8 +270,8 @@ constant pool: [
|
||||
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
|
||||
]
|
||||
handlers: [
|
||||
[27, 81, 87],
|
||||
[100, 119, 121],
|
||||
[27, 82, 88],
|
||||
[101, 120, 122],
|
||||
]
|
||||
|
||||
---
|
||||
@ -329,10 +329,10 @@ bytecodes: [
|
||||
B(Ldar), R(3),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(9),
|
||||
B(GetNamedProperty), R(2), U8(6), U8(18),
|
||||
B(GetNamedProperty), R(2), U8(6), U8(19),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star10),
|
||||
B(CallProperty0), R(10), R(2), U8(20),
|
||||
B(CallProperty0), R(10), R(2), U8(21),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star11),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
|
||||
|
@ -15,7 +15,7 @@ snippet: "
|
||||
"
|
||||
frame size: 14
|
||||
parameter count: 2
|
||||
bytecode array length: 125
|
||||
bytecode array length: 126
|
||||
bytecodes: [
|
||||
/* 34 S> */ B(GetIterator), R(arg0), U8(0), U8(2),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
@ -33,7 +33,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
|
||||
B(GetNamedProperty), R(10), U8(1), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(23),
|
||||
B(JumpIfToBooleanTrue), U8(24),
|
||||
B(GetNamedProperty), R(10), U8(2), U8(10),
|
||||
B(Star10),
|
||||
B(LdaFalse),
|
||||
@ -42,7 +42,7 @@ bytecodes: [
|
||||
/* 29 S> */ B(Mov), R(0), R(2),
|
||||
/* 49 S> */ B(Mov), R(2), R(3),
|
||||
B(Ldar), R(10),
|
||||
/* 20 E> */ B(JumpLoop), U8(38), I8(0),
|
||||
/* 20 E> */ B(JumpLoop), U8(38), I8(0), U8(12),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star8),
|
||||
B(Star7),
|
||||
@ -56,10 +56,10 @@ bytecodes: [
|
||||
B(Ldar), R(6),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(11),
|
||||
B(GetNamedProperty), R(5), U8(3), U8(12),
|
||||
B(GetNamedProperty), R(5), U8(3), U8(13),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star12),
|
||||
B(CallProperty0), R(12), R(5), U8(14),
|
||||
B(CallProperty0), R(12), R(5), U8(15),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star13),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
|
||||
@ -87,8 +87,8 @@ constant pool: [
|
||||
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
|
||||
]
|
||||
handlers: [
|
||||
[22, 63, 69],
|
||||
[82, 101, 103],
|
||||
[22, 64, 70],
|
||||
[83, 102, 104],
|
||||
]
|
||||
|
||||
---
|
||||
@ -100,7 +100,7 @@ snippet: "
|
||||
"
|
||||
frame size: 20
|
||||
parameter count: 2
|
||||
bytecode array length: 205
|
||||
bytecode array length: 206
|
||||
bytecodes: [
|
||||
/* 10 E> */ B(CreateFunctionContext), U8(0), U8(5),
|
||||
B(PushContext), R(2),
|
||||
@ -134,7 +134,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
|
||||
B(GetNamedProperty), R(10), U8(3), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(69),
|
||||
B(JumpIfToBooleanTrue), U8(70),
|
||||
B(GetNamedProperty), R(10), U8(4), U8(10),
|
||||
B(Star10),
|
||||
B(LdaFalse),
|
||||
@ -164,7 +164,7 @@ bytecodes: [
|
||||
/* 41 E> */ B(CallUndefinedReceiver1), R(12), R(13), U8(14),
|
||||
B(PopContext), R(11),
|
||||
B(Mov), R(0), R(10),
|
||||
/* 20 E> */ B(JumpLoop), U8(84), I8(0),
|
||||
/* 20 E> */ B(JumpLoop), U8(84), I8(0), U8(16),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star8),
|
||||
B(Star7),
|
||||
@ -178,10 +178,10 @@ bytecodes: [
|
||||
B(Ldar), R(6),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(12),
|
||||
B(GetNamedProperty), R(5), U8(8), U8(16),
|
||||
B(GetNamedProperty), R(5), U8(8), U8(17),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star13),
|
||||
B(CallProperty0), R(13), R(5), U8(18),
|
||||
B(CallProperty0), R(13), R(5), U8(19),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star14),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(14), U8(1),
|
||||
@ -215,8 +215,8 @@ constant pool: [
|
||||
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
|
||||
]
|
||||
handlers: [
|
||||
[54, 141, 147],
|
||||
[160, 179, 181],
|
||||
[54, 142, 148],
|
||||
[161, 180, 182],
|
||||
]
|
||||
|
||||
---
|
||||
@ -228,7 +228,7 @@ snippet: "
|
||||
"
|
||||
frame size: 13
|
||||
parameter count: 2
|
||||
bytecode array length: 141
|
||||
bytecode array length: 142
|
||||
bytecodes: [
|
||||
/* 34 S> */ B(GetIterator), R(arg0), U8(0), U8(2),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
@ -246,7 +246,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(8), U8(1),
|
||||
B(GetNamedProperty), R(8), U8(1), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(39),
|
||||
B(JumpIfToBooleanTrue), U8(40),
|
||||
B(GetNamedProperty), R(8), U8(2), U8(10),
|
||||
B(Star8),
|
||||
B(LdaFalse),
|
||||
@ -263,7 +263,7 @@ bytecodes: [
|
||||
/* 67 E> */ B(CallUndefinedReceiver0), R(10), U8(12),
|
||||
B(PopContext), R(9),
|
||||
B(Mov), R(0), R(8),
|
||||
/* 20 E> */ B(JumpLoop), U8(54), I8(0),
|
||||
/* 20 E> */ B(JumpLoop), U8(54), I8(0), U8(14),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star6),
|
||||
B(Star5),
|
||||
@ -277,10 +277,10 @@ bytecodes: [
|
||||
B(Ldar), R(4),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(10),
|
||||
B(GetNamedProperty), R(3), U8(5), U8(14),
|
||||
B(GetNamedProperty), R(3), U8(5), U8(15),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star11),
|
||||
B(CallProperty0), R(11), R(3), U8(16),
|
||||
B(CallProperty0), R(11), R(3), U8(17),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star12),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
|
||||
@ -310,8 +310,8 @@ constant pool: [
|
||||
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
|
||||
]
|
||||
handlers: [
|
||||
[22, 79, 85],
|
||||
[98, 117, 119],
|
||||
[22, 80, 86],
|
||||
[99, 118, 120],
|
||||
]
|
||||
|
||||
---
|
||||
@ -323,7 +323,7 @@ snippet: "
|
||||
"
|
||||
frame size: 16
|
||||
parameter count: 2
|
||||
bytecode array length: 133
|
||||
bytecode array length: 134
|
||||
bytecodes: [
|
||||
/* 41 S> */ B(GetIterator), R(arg0), U8(0), U8(2),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
@ -341,7 +341,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
|
||||
B(GetNamedProperty), R(12), U8(1), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(31),
|
||||
B(JumpIfToBooleanTrue), U8(32),
|
||||
B(GetNamedProperty), R(12), U8(2), U8(10),
|
||||
B(Star12),
|
||||
B(LdaFalse),
|
||||
@ -354,7 +354,7 @@ bytecodes: [
|
||||
/* 56 S> */ B(Ldar), R(4),
|
||||
/* 58 E> */ B(Add), R(3), U8(16),
|
||||
B(Star5),
|
||||
/* 20 E> */ B(JumpLoop), U8(46), I8(0),
|
||||
/* 20 E> */ B(JumpLoop), U8(46), I8(0), U8(17),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star10),
|
||||
B(Star9),
|
||||
@ -368,10 +368,10 @@ bytecodes: [
|
||||
B(Ldar), R(8),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(13),
|
||||
B(GetNamedProperty), R(7), U8(5), U8(17),
|
||||
B(GetNamedProperty), R(7), U8(5), U8(18),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star14),
|
||||
B(CallProperty0), R(14), R(7), U8(19),
|
||||
B(CallProperty0), R(14), R(7), U8(20),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star15),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(15), U8(1),
|
||||
@ -401,8 +401,8 @@ constant pool: [
|
||||
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
|
||||
]
|
||||
handlers: [
|
||||
[22, 71, 77],
|
||||
[90, 109, 111],
|
||||
[22, 72, 78],
|
||||
[91, 110, 112],
|
||||
]
|
||||
|
||||
---
|
||||
@ -414,7 +414,7 @@ snippet: "
|
||||
"
|
||||
frame size: 15
|
||||
parameter count: 2
|
||||
bytecode array length: 164
|
||||
bytecode array length: 165
|
||||
bytecodes: [
|
||||
B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
|
||||
B(Mov), R(closure), R(5),
|
||||
@ -446,7 +446,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
|
||||
B(GetNamedProperty), R(11), U8(4), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(23),
|
||||
B(JumpIfToBooleanTrue), U8(24),
|
||||
B(GetNamedProperty), R(11), U8(5), U8(10),
|
||||
B(Star11),
|
||||
B(LdaFalse),
|
||||
@ -455,7 +455,7 @@ bytecodes: [
|
||||
/* 30 S> */ B(Mov), R(1), R(3),
|
||||
/* 50 S> */ B(Mov), R(3), R(4),
|
||||
B(Ldar), R(11),
|
||||
/* 21 E> */ B(JumpLoop), U8(38), I8(0),
|
||||
/* 21 E> */ B(JumpLoop), U8(38), I8(0), U8(12),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star9),
|
||||
B(Star8),
|
||||
@ -469,10 +469,10 @@ bytecodes: [
|
||||
B(Ldar), R(7),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(12),
|
||||
B(GetNamedProperty), R(6), U8(6), U8(12),
|
||||
B(GetNamedProperty), R(6), U8(6), U8(13),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star13),
|
||||
B(CallProperty0), R(13), R(6), U8(14),
|
||||
B(CallProperty0), R(13), R(6), U8(15),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star14),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(14), U8(1),
|
||||
@ -503,8 +503,8 @@ constant pool: [
|
||||
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
|
||||
]
|
||||
handlers: [
|
||||
[61, 102, 108],
|
||||
[121, 140, 142],
|
||||
[61, 103, 109],
|
||||
[122, 141, 143],
|
||||
]
|
||||
|
||||
---
|
||||
@ -516,7 +516,7 @@ snippet: "
|
||||
"
|
||||
frame size: 14
|
||||
parameter count: 2
|
||||
bytecode array length: 205
|
||||
bytecode array length: 206
|
||||
bytecodes: [
|
||||
B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
|
||||
B(Mov), R(closure), R(4),
|
||||
@ -548,7 +548,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
|
||||
B(GetNamedProperty), R(10), U8(5), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(58),
|
||||
B(JumpIfToBooleanTrue), U8(59),
|
||||
B(GetNamedProperty), R(10), U8(6), U8(10),
|
||||
B(Star10),
|
||||
B(LdaFalse),
|
||||
@ -569,9 +569,9 @@ bytecodes: [
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star7),
|
||||
B(Mov), R(11), R(8),
|
||||
B(Jump), U8(16),
|
||||
B(Jump), U8(17),
|
||||
B(Ldar), R(11),
|
||||
/* 21 E> */ B(JumpLoop), U8(73), I8(0),
|
||||
/* 21 E> */ B(JumpLoop), U8(73), I8(0), U8(12),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star8),
|
||||
B(Star7),
|
||||
@ -585,10 +585,10 @@ bytecodes: [
|
||||
B(Ldar), R(6),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(11),
|
||||
B(GetNamedProperty), R(5), U8(9), U8(12),
|
||||
B(GetNamedProperty), R(5), U8(9), U8(13),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star12),
|
||||
B(CallProperty0), R(12), R(5), U8(14),
|
||||
B(CallProperty0), R(12), R(5), U8(15),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star13),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
|
||||
@ -626,8 +626,8 @@ constant pool: [
|
||||
Smi [9],
|
||||
]
|
||||
handlers: [
|
||||
[61, 137, 143],
|
||||
[156, 175, 177],
|
||||
[61, 138, 144],
|
||||
[157, 176, 178],
|
||||
]
|
||||
|
||||
---
|
||||
@ -639,7 +639,7 @@ snippet: "
|
||||
"
|
||||
frame size: 16
|
||||
parameter count: 2
|
||||
bytecode array length: 169
|
||||
bytecode array length: 170
|
||||
bytecodes: [
|
||||
B(Mov), R(closure), R(5),
|
||||
B(Mov), R(this), R(6),
|
||||
@ -662,7 +662,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
|
||||
B(GetNamedProperty), R(12), U8(1), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(23),
|
||||
B(JumpIfToBooleanTrue), U8(24),
|
||||
B(GetNamedProperty), R(12), U8(2), U8(10),
|
||||
B(Star12),
|
||||
B(LdaFalse),
|
||||
@ -671,7 +671,7 @@ bytecodes: [
|
||||
/* 35 S> */ B(Mov), R(1), R(3),
|
||||
/* 55 S> */ B(Mov), R(3), R(4),
|
||||
B(Ldar), R(12),
|
||||
/* 26 E> */ B(JumpLoop), U8(38), I8(0),
|
||||
/* 26 E> */ B(JumpLoop), U8(38), I8(0), U8(12),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star10),
|
||||
B(Star9),
|
||||
@ -685,10 +685,10 @@ bytecodes: [
|
||||
B(Ldar), R(8),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(13),
|
||||
B(GetNamedProperty), R(7), U8(3), U8(12),
|
||||
B(GetNamedProperty), R(7), U8(3), U8(13),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star14),
|
||||
B(CallProperty0), R(14), R(7), U8(14),
|
||||
B(CallProperty0), R(14), R(7), U8(15),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star15),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(15), U8(1),
|
||||
@ -732,9 +732,9 @@ constant pool: [
|
||||
SCOPE_INFO_TYPE,
|
||||
]
|
||||
handlers: [
|
||||
[14, 147, 147],
|
||||
[36, 77, 83],
|
||||
[96, 115, 117],
|
||||
[14, 148, 148],
|
||||
[36, 78, 84],
|
||||
[97, 116, 118],
|
||||
]
|
||||
|
||||
---
|
||||
@ -746,7 +746,7 @@ snippet: "
|
||||
"
|
||||
frame size: 15
|
||||
parameter count: 2
|
||||
bytecode array length: 203
|
||||
bytecode array length: 204
|
||||
bytecodes: [
|
||||
B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
|
||||
B(Mov), R(closure), R(4),
|
||||
@ -770,7 +770,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
|
||||
B(GetNamedProperty), R(11), U8(2), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(53),
|
||||
B(JumpIfToBooleanTrue), U8(54),
|
||||
B(GetNamedProperty), R(11), U8(3), U8(10),
|
||||
B(Star11),
|
||||
B(LdaFalse),
|
||||
@ -791,7 +791,7 @@ bytecodes: [
|
||||
B(Ldar), R(12),
|
||||
B(ReThrow),
|
||||
B(Ldar), R(12),
|
||||
/* 26 E> */ B(JumpLoop), U8(68), I8(0),
|
||||
/* 26 E> */ B(JumpLoop), U8(68), I8(0), U8(12),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star9),
|
||||
B(Star8),
|
||||
@ -805,10 +805,10 @@ bytecodes: [
|
||||
B(Ldar), R(7),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(12),
|
||||
B(GetNamedProperty), R(6), U8(4), U8(12),
|
||||
B(GetNamedProperty), R(6), U8(4), U8(13),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star13),
|
||||
B(CallProperty0), R(13), R(6), U8(14),
|
||||
B(CallProperty0), R(13), R(6), U8(15),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star14),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(14), U8(1),
|
||||
@ -853,8 +853,8 @@ constant pool: [
|
||||
SCOPE_INFO_TYPE,
|
||||
]
|
||||
handlers: [
|
||||
[18, 181, 181],
|
||||
[40, 111, 117],
|
||||
[130, 149, 151],
|
||||
[18, 182, 182],
|
||||
[40, 112, 118],
|
||||
[131, 150, 152],
|
||||
]
|
||||
|
||||
|
@ -98,7 +98,7 @@ snippet: "
|
||||
"
|
||||
frame size: 14
|
||||
parameter count: 1
|
||||
bytecode array length: 210
|
||||
bytecode array length: 211
|
||||
bytecodes: [
|
||||
B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
|
||||
B(Mov), R(closure), R(4),
|
||||
@ -132,7 +132,7 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
|
||||
B(GetNamedProperty), R(10), U8(6), U8(9),
|
||||
B(JumpIfToBooleanTrue), U8(58),
|
||||
B(JumpIfToBooleanTrue), U8(59),
|
||||
B(GetNamedProperty), R(10), U8(7), U8(11),
|
||||
B(Star10),
|
||||
B(LdaFalse),
|
||||
@ -153,9 +153,9 @@ bytecodes: [
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star7),
|
||||
B(Mov), R(11), R(8),
|
||||
B(Jump), U8(16),
|
||||
B(Jump), U8(17),
|
||||
B(Ldar), R(11),
|
||||
/* 16 E> */ B(JumpLoop), U8(73), I8(0),
|
||||
/* 16 E> */ B(JumpLoop), U8(73), I8(0), U8(13),
|
||||
B(LdaSmi), I8(-1),
|
||||
B(Star8),
|
||||
B(Star7),
|
||||
@ -169,10 +169,10 @@ bytecodes: [
|
||||
B(Ldar), R(6),
|
||||
B(JumpIfToBooleanTrue), U8(35),
|
||||
B(Mov), R(context), R(11),
|
||||
B(GetNamedProperty), R(5), U8(10), U8(13),
|
||||
B(GetNamedProperty), R(5), U8(10), U8(14),
|
||||
B(JumpIfUndefinedOrNull), U8(26),
|
||||
B(Star12),
|
||||
B(CallProperty0), R(12), R(5), U8(15),
|
||||
B(CallProperty0), R(12), R(5), U8(16),
|
||||
B(JumpIfJSReceiver), U8(19),
|
||||
B(Star13),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(13), U8(1),
|
||||
@ -211,8 +211,8 @@ constant pool: [
|
||||
Smi [9],
|
||||
]
|
||||
handlers: [
|
||||
[66, 142, 148],
|
||||
[161, 180, 182],
|
||||
[66, 143, 149],
|
||||
[162, 181, 183],
|
||||
]
|
||||
|
||||
---
|
||||
@ -223,7 +223,7 @@ snippet: "
|
||||
"
|
||||
frame size: 7
|
||||
parameter count: 1
|
||||
bytecode array length: 188
|
||||
bytecode array length: 189
|
||||
bytecodes: [
|
||||
B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
|
||||
B(Mov), R(closure), R(1),
|
||||
@ -282,15 +282,15 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(1), U8(1),
|
||||
B(GetNamedProperty), R(1), U8(10), U8(24),
|
||||
B(JumpIfToBooleanTrue), U8(22),
|
||||
B(JumpIfToBooleanTrue), U8(23),
|
||||
B(Ldar), R(1),
|
||||
/* 43 E> */ B(SuspendGenerator), R(0), R(0), U8(6), U8(1),
|
||||
B(ResumeGenerator), R(0), R(0), U8(6),
|
||||
B(Star4),
|
||||
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
|
||||
B(Star2),
|
||||
B(JumpLoop), U8(101), I8(0),
|
||||
B(GetNamedProperty), R(1), U8(11), U8(26),
|
||||
B(JumpLoop), U8(101), I8(0), U8(26),
|
||||
B(GetNamedProperty), R(1), U8(11), U8(27),
|
||||
B(Star3),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestReferenceEqual), R(2),
|
||||
|
@ -90,7 +90,7 @@ snippet: "
|
||||
"
|
||||
frame size: 7
|
||||
parameter count: 1
|
||||
bytecode array length: 110
|
||||
bytecode array length: 111
|
||||
bytecodes: [
|
||||
B(CreateBlockContext), U8(0),
|
||||
B(PushContext), R(1),
|
||||
@ -123,13 +123,13 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
|
||||
B(GetNamedProperty), R(6), U8(6), U8(17),
|
||||
B(JumpIfToBooleanTrue), U8(18),
|
||||
B(JumpIfToBooleanTrue), U8(19),
|
||||
B(GetNamedProperty), R(6), U8(7), U8(8),
|
||||
B(StaInArrayLiteral), R(3), R(2), U8(13),
|
||||
B(Ldar), R(2),
|
||||
B(Inc), U8(12),
|
||||
B(Star2),
|
||||
B(JumpLoop), U8(31), I8(0),
|
||||
B(JumpLoop), U8(31), I8(0), U8(19),
|
||||
B(LdaSmi), I8(4),
|
||||
B(StaInArrayLiteral), R(3), R(2), U8(13),
|
||||
B(Mov), R(3), R(2),
|
||||
|
@ -16,7 +16,7 @@ snippet: "
|
||||
"
|
||||
frame size: 1
|
||||
parameter count: 1
|
||||
bytecode array length: 24
|
||||
bytecode array length: 25
|
||||
bytecodes: [
|
||||
/* 45 S> */ B(LdaSmi), I8(1),
|
||||
B(Star0),
|
||||
@ -26,8 +26,8 @@ bytecodes: [
|
||||
/* 86 S> */ B(LdaSmi), I8(10),
|
||||
/* 95 E> */ B(TestGreaterThan), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 101 S> */ B(Jump), U8(5),
|
||||
/* 48 E> */ B(JumpLoop), U8(15), I8(0),
|
||||
/* 101 S> */ B(Jump), U8(6),
|
||||
/* 48 E> */ B(JumpLoop), U8(15), I8(0), U8(2),
|
||||
/* 110 S> */ B(Ldar), R(0),
|
||||
/* 122 S> */ B(Return),
|
||||
]
|
||||
|
@ -15,18 +15,18 @@ snippet: "
|
||||
"
|
||||
frame size: 2
|
||||
parameter count: 1
|
||||
bytecode array length: 22
|
||||
bytecode array length: 23
|
||||
bytecodes: [
|
||||
/* 30 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
/* 35 S> */ B(LdaSmi), I8(10),
|
||||
/* 35 E> */ B(TestLessThan), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(13),
|
||||
B(JumpIfFalse), U8(14),
|
||||
/* 56 S> */ B(Mov), R(0), R(1),
|
||||
/* 43 S> */ B(Ldar), R(1),
|
||||
B(Inc), U8(1),
|
||||
B(Star0),
|
||||
/* 17 E> */ B(JumpLoop), U8(15), I8(0),
|
||||
/* 17 E> */ B(JumpLoop), U8(15), I8(0), U8(2),
|
||||
B(LdaUndefined),
|
||||
/* 61 S> */ B(Return),
|
||||
]
|
||||
@ -44,7 +44,7 @@ snippet: "
|
||||
"
|
||||
frame size: 15
|
||||
parameter count: 1
|
||||
bytecode array length: 149
|
||||
bytecode array length: 151
|
||||
bytecodes: [
|
||||
/* 10 E> */ B(CreateFunctionContext), U8(0), U8(4),
|
||||
B(PushContext), R(4),
|
||||
@ -88,10 +88,10 @@ bytecodes: [
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(6),
|
||||
B(PopContext), R(6),
|
||||
B(Jump), U8(68),
|
||||
B(Jump), U8(70),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqual), R(2), U8(3),
|
||||
B(JumpIfFalse), U8(45),
|
||||
B(JumpIfFalse), U8(46),
|
||||
/* 48 S> */ B(LdaLookupGlobalSlot), U8(3), U8(4), U8(3),
|
||||
B(Star7),
|
||||
B(LdaConstant), U8(4),
|
||||
@ -112,14 +112,14 @@ bytecodes: [
|
||||
B(Star2),
|
||||
B(LdaCurrentContextSlot), U8(2),
|
||||
B(Star0),
|
||||
/* 17 E> */ B(JumpLoop), U8(47), I8(1),
|
||||
/* 17 E> */ B(JumpLoop), U8(47), I8(1), U8(8),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqual), R(2), U8(8),
|
||||
B(TestEqual), R(2), U8(9),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(PopContext), R(6),
|
||||
B(Jump), U8(7),
|
||||
B(Jump), U8(8),
|
||||
B(PopContext), R(6),
|
||||
B(JumpLoop), U8(110), I8(0),
|
||||
B(JumpLoop), U8(111), I8(0), U8(10),
|
||||
B(PopContext), R(5),
|
||||
B(LdaUndefined),
|
||||
/* 61 S> */ B(Return),
|
||||
@ -143,7 +143,7 @@ snippet: "
|
||||
"
|
||||
frame size: 6
|
||||
parameter count: 1
|
||||
bytecode array length: 94
|
||||
bytecode array length: 96
|
||||
bytecodes: [
|
||||
/* 30 S> */ B(LdaZero),
|
||||
B(Star3),
|
||||
@ -174,10 +174,10 @@ bytecodes: [
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(6),
|
||||
B(PopContext), R(4),
|
||||
B(Jump), U8(41),
|
||||
B(Jump), U8(43),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqual), R(2), U8(3),
|
||||
B(JumpIfFalse), U8(18),
|
||||
B(JumpIfFalse), U8(19),
|
||||
/* 48 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
|
||||
B(Star5),
|
||||
/* 74 E> */ B(CallUndefinedReceiver0), R(5), U8(4),
|
||||
@ -185,14 +185,14 @@ bytecodes: [
|
||||
B(Star2),
|
||||
B(LdaCurrentContextSlot), U8(2),
|
||||
B(Star0),
|
||||
/* 17 E> */ B(JumpLoop), U8(20), I8(1),
|
||||
/* 17 E> */ B(JumpLoop), U8(20), I8(1), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqual), R(2), U8(6),
|
||||
B(TestEqual), R(2), U8(7),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(PopContext), R(4),
|
||||
B(Jump), U8(7),
|
||||
B(Jump), U8(8),
|
||||
B(PopContext), R(4),
|
||||
B(JumpLoop), U8(83), I8(0),
|
||||
B(JumpLoop), U8(84), I8(0), U8(8),
|
||||
B(LdaUndefined),
|
||||
/* 80 S> */ B(Return),
|
||||
]
|
||||
@ -212,7 +212,7 @@ snippet: "
|
||||
"
|
||||
frame size: 4
|
||||
parameter count: 1
|
||||
bytecode array length: 37
|
||||
bytecode array length: 38
|
||||
bytecodes: [
|
||||
/* 37 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
|
||||
B(Star3),
|
||||
@ -222,14 +222,14 @@ bytecodes: [
|
||||
B(Star1),
|
||||
/* 55 S> */ B(LdaZero),
|
||||
/* 55 E> */ B(TestGreaterThan), R(1), U8(5),
|
||||
B(JumpIfFalse), U8(16),
|
||||
B(JumpIfFalse), U8(17),
|
||||
/* 75 S> */ B(Ldar), R(1),
|
||||
/* 77 E> */ B(Add), R(0), U8(6),
|
||||
B(Star2),
|
||||
/* 62 S> */ B(Ldar), R(1),
|
||||
B(Dec), U8(7),
|
||||
B(Star1),
|
||||
/* 17 E> */ B(JumpLoop), U8(17), I8(0),
|
||||
/* 17 E> */ B(JumpLoop), U8(17), I8(0), U8(8),
|
||||
B(LdaUndefined),
|
||||
/* 84 S> */ B(Return),
|
||||
]
|
||||
@ -250,7 +250,7 @@ snippet: "
|
||||
"
|
||||
frame size: 5
|
||||
parameter count: 1
|
||||
bytecode array length: 61
|
||||
bytecode array length: 62
|
||||
bytecodes: [
|
||||
B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
|
||||
B(Mov), R(closure), R(3),
|
||||
@ -270,12 +270,12 @@ bytecodes: [
|
||||
B(Star1),
|
||||
/* 36 S> */ B(LdaSmi), I8(10),
|
||||
/* 36 E> */ B(TestLessThan), R(1), U8(0),
|
||||
B(JumpIfFalse), U8(13),
|
||||
B(JumpIfFalse), U8(14),
|
||||
/* 57 S> */ B(Mov), R(1), R(2),
|
||||
/* 44 S> */ B(Ldar), R(2),
|
||||
B(Inc), U8(1),
|
||||
B(Star1),
|
||||
/* 18 E> */ B(JumpLoop), U8(15), I8(0),
|
||||
/* 18 E> */ B(JumpLoop), U8(15), I8(0), U8(2),
|
||||
B(LdaUndefined),
|
||||
/* 62 S> */ B(Return),
|
||||
]
|
||||
@ -296,7 +296,7 @@ snippet: "
|
||||
"
|
||||
frame size: 4
|
||||
parameter count: 1
|
||||
bytecode array length: 91
|
||||
bytecode array length: 92
|
||||
bytecodes: [
|
||||
B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
|
||||
B(Mov), R(closure), R(2),
|
||||
@ -316,7 +316,7 @@ bytecodes: [
|
||||
B(Star1),
|
||||
/* 36 S> */ B(LdaSmi), I8(10),
|
||||
/* 36 E> */ B(TestLessThan), R(1), U8(0),
|
||||
B(JumpIfFalse), U8(43),
|
||||
B(JumpIfFalse), U8(44),
|
||||
/* 47 S> */ B(LdaFalse),
|
||||
B(Star3),
|
||||
B(Mov), R(1), R(2),
|
||||
@ -333,7 +333,7 @@ bytecodes: [
|
||||
/* 44 S> */ B(Ldar), R(1),
|
||||
B(Inc), U8(1),
|
||||
B(Star1),
|
||||
/* 18 E> */ B(JumpLoop), U8(45), I8(0),
|
||||
/* 18 E> */ B(JumpLoop), U8(45), I8(0), U8(2),
|
||||
B(LdaUndefined),
|
||||
/* 56 S> */ B(Return),
|
||||
]
|
||||
@ -357,7 +357,7 @@ snippet: "
|
||||
"
|
||||
frame size: 7
|
||||
parameter count: 1
|
||||
bytecode array length: 66
|
||||
bytecode array length: 67
|
||||
bytecodes: [
|
||||
B(Mov), R(closure), R(3),
|
||||
B(Mov), R(this), R(4),
|
||||
@ -368,12 +368,12 @@ bytecodes: [
|
||||
B(Star1),
|
||||
/* 41 S> */ B(LdaSmi), I8(10),
|
||||
/* 41 E> */ B(TestLessThan), R(1), U8(0),
|
||||
B(JumpIfFalse), U8(13),
|
||||
B(JumpIfFalse), U8(14),
|
||||
/* 62 S> */ B(Mov), R(1), R(2),
|
||||
/* 49 S> */ B(Ldar), R(2),
|
||||
B(Inc), U8(1),
|
||||
B(Star1),
|
||||
/* 23 E> */ B(JumpLoop), U8(15), I8(0),
|
||||
/* 23 E> */ B(JumpLoop), U8(15), I8(0), U8(2),
|
||||
B(LdaUndefined),
|
||||
B(Star5),
|
||||
B(Mov), R(0), R(4),
|
||||
@ -396,7 +396,7 @@ constant pool: [
|
||||
SCOPE_INFO_TYPE,
|
||||
]
|
||||
handlers: [
|
||||
[14, 44, 44],
|
||||
[14, 45, 45],
|
||||
]
|
||||
|
||||
---
|
||||
@ -408,7 +408,7 @@ snippet: "
|
||||
"
|
||||
frame size: 6
|
||||
parameter count: 1
|
||||
bytecode array length: 100
|
||||
bytecode array length: 101
|
||||
bytecodes: [
|
||||
B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
|
||||
B(Mov), R(closure), R(2),
|
||||
@ -420,7 +420,7 @@ bytecodes: [
|
||||
B(Star1),
|
||||
/* 41 S> */ B(LdaSmi), I8(10),
|
||||
/* 41 E> */ B(TestLessThan), R(1), U8(0),
|
||||
B(JumpIfFalse), U8(43),
|
||||
B(JumpIfFalse), U8(44),
|
||||
/* 52 S> */ B(Mov), R(0), R(3),
|
||||
B(Mov), R(1), R(4),
|
||||
B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(3), U8(2),
|
||||
@ -437,7 +437,7 @@ bytecodes: [
|
||||
/* 49 S> */ B(Ldar), R(1),
|
||||
B(Inc), U8(1),
|
||||
B(Star1),
|
||||
/* 23 E> */ B(JumpLoop), U8(45), I8(0),
|
||||
/* 23 E> */ B(JumpLoop), U8(45), I8(0), U8(2),
|
||||
B(LdaUndefined),
|
||||
B(Star4),
|
||||
B(Mov), R(0), R(3),
|
||||
@ -461,6 +461,6 @@ constant pool: [
|
||||
SCOPE_INFO_TYPE,
|
||||
]
|
||||
handlers: [
|
||||
[18, 78, 78],
|
||||
[18, 79, 79],
|
||||
]
|
||||
|
||||
|
@ -93,7 +93,7 @@ snippet: "
|
||||
"
|
||||
frame size: 11
|
||||
parameter count: 1
|
||||
bytecode array length: 103
|
||||
bytecode array length: 104
|
||||
bytecodes: [
|
||||
/* 128 E> */ B(CreateRestParameter),
|
||||
B(Star3),
|
||||
@ -117,13 +117,13 @@ bytecodes: [
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(10), U8(1),
|
||||
B(GetNamedProperty), R(10), U8(2), U8(16),
|
||||
B(JumpIfToBooleanTrue), U8(18),
|
||||
B(JumpIfToBooleanTrue), U8(19),
|
||||
B(GetNamedProperty), R(10), U8(3), U8(7),
|
||||
B(StaInArrayLiteral), R(7), R(6), U8(12),
|
||||
B(Ldar), R(6),
|
||||
B(Inc), U8(11),
|
||||
B(Star6),
|
||||
B(JumpLoop), U8(31), I8(0),
|
||||
B(JumpLoop), U8(31), I8(0), U8(18),
|
||||
B(LdaSmi), I8(1),
|
||||
B(StaInArrayLiteral), R(7), R(6), U8(12),
|
||||
B(ThrowIfNotSuperConstructor), R(5),
|
||||
|
@ -15,17 +15,17 @@ snippet: "
|
||||
"
|
||||
frame size: 1
|
||||
parameter count: 1
|
||||
bytecode array length: 21
|
||||
bytecode array length: 22
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
/* 54 S> */ B(LdaSmi), I8(10),
|
||||
/* 54 E> */ B(TestEqual), R(0), U8(0),
|
||||
B(JumpIfTrue), U8(11),
|
||||
B(JumpIfTrue), U8(12),
|
||||
/* 65 S> */ B(Ldar), R(0),
|
||||
/* 71 E> */ B(AddSmi), I8(10), U8(1),
|
||||
B(Star0),
|
||||
/* 45 E> */ B(JumpLoop), U8(13), I8(0),
|
||||
/* 45 E> */ B(JumpLoop), U8(13), I8(0), U8(2),
|
||||
/* 79 S> */ B(Ldar), R(0),
|
||||
/* 88 S> */ B(Return),
|
||||
]
|
||||
@ -44,7 +44,7 @@ snippet: "
|
||||
"
|
||||
frame size: 1
|
||||
parameter count: 1
|
||||
bytecode array length: 18
|
||||
bytecode array length: 19
|
||||
bytecodes: [
|
||||
/* 42 S> */ B(LdaFalse),
|
||||
B(Star0),
|
||||
@ -53,8 +53,8 @@ bytecodes: [
|
||||
B(Star0),
|
||||
/* 74 S> */ B(LdaFalse),
|
||||
/* 74 E> */ B(TestEqual), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(5),
|
||||
/* 49 E> */ B(JumpLoop), U8(10), I8(0),
|
||||
B(JumpIfFalse), U8(6),
|
||||
/* 49 E> */ B(JumpLoop), U8(10), I8(0), U8(1),
|
||||
/* 85 S> */ B(Ldar), R(0),
|
||||
/* 94 S> */ B(Return),
|
||||
]
|
||||
|
@ -2143,7 +2143,7 @@ snippet: "
|
||||
"
|
||||
frame size: 158
|
||||
parameter count: 1
|
||||
bytecode array length: 574
|
||||
bytecode array length: 575
|
||||
bytecodes: [
|
||||
/* 43 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
@ -2467,7 +2467,7 @@ bytecodes: [
|
||||
B(Wide), B(Star), R16(128),
|
||||
/* 2166 S> */ B(LdaSmi), I8(64),
|
||||
/* 2166 E> */ B(Wide), B(TestLessThan), R16(128), U16(0),
|
||||
B(JumpIfFalse), U8(29),
|
||||
B(JumpIfFalse), U8(30),
|
||||
/* 2183 S> */ B(Wide), B(Ldar), R16(128),
|
||||
/* 2189 E> */ B(Add), R(1), U8(1),
|
||||
B(Wide), B(Mov), R16(1), R16(157),
|
||||
@ -2475,7 +2475,7 @@ bytecodes: [
|
||||
/* 2176 S> */ B(Wide), B(Ldar), R16(128),
|
||||
B(Inc), U8(2),
|
||||
B(Wide), B(Star), R16(128),
|
||||
/* 2146 E> */ B(JumpLoop), U8(34), I8(0),
|
||||
/* 2146 E> */ B(JumpLoop), U8(34), I8(0), U8(3),
|
||||
/* 2195 S> */ B(Wide), B(Ldar), R16(128),
|
||||
/* 2207 S> */ B(Return),
|
||||
]
|
||||
@ -2649,7 +2649,7 @@ snippet: "
|
||||
"
|
||||
frame size: 163
|
||||
parameter count: 1
|
||||
bytecode array length: 605
|
||||
bytecode array length: 606
|
||||
bytecodes: [
|
||||
/* 43 S> */ B(LdaZero),
|
||||
B(Star0),
|
||||
@ -2970,14 +2970,14 @@ bytecodes: [
|
||||
/* 2146 S> */ B(LdaZero),
|
||||
B(Star1),
|
||||
/* 2162 S> */ B(Ldar), R(0),
|
||||
B(JumpIfUndefinedOrNull), U8(70),
|
||||
B(JumpIfUndefinedOrNull), U8(71),
|
||||
B(Wide), B(ToObject), R16(157),
|
||||
B(Wide), B(ForInEnumerate), R16(157),
|
||||
B(Wide), B(ForInPrepare), R16(158), U16(0),
|
||||
B(LdaZero),
|
||||
B(Wide), B(Star), R16(161),
|
||||
/* 2154 S> */ B(Wide), B(ForInContinue), R16(161), R16(160),
|
||||
B(JumpIfFalse), U8(43),
|
||||
B(JumpIfFalse), U8(44),
|
||||
B(Wide), B(ForInNext), R16(157), R16(161), R16(158), U16(0),
|
||||
B(JumpIfUndefined), U8(20),
|
||||
B(Wide), B(Star), R16(128),
|
||||
@ -2987,7 +2987,7 @@ bytecodes: [
|
||||
B(Star1),
|
||||
/* 2172 E> */ B(Wide), B(ForInStep), R16(161),
|
||||
B(Wide), B(Star), R16(161),
|
||||
/* 2149 E> */ B(JumpLoop), U8(46), I8(0),
|
||||
/* 2149 E> */ B(JumpLoop), U8(46), I8(0), U8(2),
|
||||
/* 2181 S> */ B(Ldar), R(1),
|
||||
/* 2191 S> */ B(Return),
|
||||
]
|
||||
|
@ -1550,6 +1550,7 @@ TEST(InterpreterJumps) {
|
||||
|
||||
FeedbackSlot slot = feedback_spec.AddBinaryOpICSlot();
|
||||
FeedbackSlot slot1 = feedback_spec.AddBinaryOpICSlot();
|
||||
FeedbackSlot slot2 = feedback_spec.AddJumpLoopSlot();
|
||||
|
||||
Handle<i::FeedbackMetadata> metadata =
|
||||
NewFeedbackMetadata(isolate, &feedback_spec);
|
||||
@ -1563,7 +1564,8 @@ TEST(InterpreterJumps) {
|
||||
.Jump(&label[0]);
|
||||
SetRegister(&builder, reg, 1024, scratch).Bind(&label[0]).Bind(&loop_header);
|
||||
IncrementRegister(&builder, reg, 1, scratch, GetIndex(slot)).Jump(&label[1]);
|
||||
SetRegister(&builder, reg, 2048, scratch).JumpLoop(&loop_header, 0, 0);
|
||||
SetRegister(&builder, reg, 2048, scratch)
|
||||
.JumpLoop(&loop_header, 0, 0, slot2.ToInt());
|
||||
SetRegister(&builder, reg, 4096, scratch).Bind(&label[1]);
|
||||
IncrementRegister(&builder, reg, 2, scratch, GetIndex(slot1))
|
||||
.LoadAccumulatorWithRegister(reg)
|
||||
|
@ -211,6 +211,7 @@ TEST_F(BytecodeAnalysisTest, DiamondLookupsAndBinds) {
|
||||
|
||||
TEST_F(BytecodeAnalysisTest, SimpleLoop) {
|
||||
interpreter::BytecodeArrayBuilder builder(zone(), 3, 3);
|
||||
FeedbackVectorSpec spec(zone());
|
||||
std::vector<std::pair<std::string, std::string>> expected_liveness;
|
||||
|
||||
interpreter::Register reg_0(0);
|
||||
@ -221,7 +222,7 @@ TEST_F(BytecodeAnalysisTest, SimpleLoop) {
|
||||
expected_liveness.emplace_back("..LL", "L.L.");
|
||||
|
||||
{
|
||||
interpreter::LoopBuilder loop_builder(&builder, nullptr, nullptr);
|
||||
interpreter::LoopBuilder loop_builder(&builder, nullptr, nullptr, &spec);
|
||||
loop_builder.LoopHeader();
|
||||
|
||||
builder.LoadUndefined();
|
||||
@ -311,12 +312,13 @@ TEST_F(BytecodeAnalysisTest, DiamondInLoop) {
|
||||
// reprocessed.
|
||||
|
||||
interpreter::BytecodeArrayBuilder builder(zone(), 3, 3);
|
||||
FeedbackVectorSpec spec(zone());
|
||||
std::vector<std::pair<std::string, std::string>> expected_liveness;
|
||||
|
||||
interpreter::Register reg_0(0);
|
||||
|
||||
{
|
||||
interpreter::LoopBuilder loop_builder(&builder, nullptr, nullptr);
|
||||
interpreter::LoopBuilder loop_builder(&builder, nullptr, nullptr, &spec);
|
||||
loop_builder.LoopHeader();
|
||||
|
||||
builder.LoadUndefined();
|
||||
@ -381,13 +383,14 @@ TEST_F(BytecodeAnalysisTest, KillingLoopInsideLoop) {
|
||||
// r1 becomes live in 3 (via 5), but r0 stays dead (because of 4).
|
||||
|
||||
interpreter::BytecodeArrayBuilder builder(zone(), 3, 3);
|
||||
FeedbackVectorSpec spec(zone());
|
||||
std::vector<std::pair<std::string, std::string>> expected_liveness;
|
||||
|
||||
interpreter::Register reg_0(0);
|
||||
interpreter::Register reg_1(1);
|
||||
|
||||
{
|
||||
interpreter::LoopBuilder loop_builder(&builder, nullptr, nullptr);
|
||||
interpreter::LoopBuilder loop_builder(&builder, nullptr, nullptr, &spec);
|
||||
loop_builder.LoopHeader();
|
||||
|
||||
// Gen r0.
|
||||
@ -403,7 +406,8 @@ TEST_F(BytecodeAnalysisTest, KillingLoopInsideLoop) {
|
||||
expected_liveness.emplace_back(".L.L", ".L..");
|
||||
|
||||
{
|
||||
interpreter::LoopBuilder inner_loop_builder(&builder, nullptr, nullptr);
|
||||
interpreter::LoopBuilder inner_loop_builder(&builder, nullptr, nullptr,
|
||||
&spec);
|
||||
inner_loop_builder.LoopHeader();
|
||||
|
||||
// Kill r0.
|
||||
|
@ -316,7 +316,7 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
|
||||
.Bind(&after_jump10)
|
||||
.JumpIfFalse(ToBooleanMode::kAlreadyBoolean, &after_jump11)
|
||||
.Bind(&after_jump11)
|
||||
.JumpLoop(&loop_header, 0, 0)
|
||||
.JumpLoop(&loop_header, 0, 0, 0)
|
||||
.Bind(&after_loop);
|
||||
}
|
||||
|
||||
@ -712,13 +712,13 @@ TEST_F(BytecodeArrayBuilderTest, BackwardJumps) {
|
||||
BytecodeLoopHeader loop_header;
|
||||
builder.JumpIfNull(&after_loop)
|
||||
.Bind(&loop_header)
|
||||
.JumpLoop(&loop_header, 0, 0)
|
||||
.JumpLoop(&loop_header, 0, 0, 0)
|
||||
.Bind(&after_loop);
|
||||
for (int i = 0; i < 42; i++) {
|
||||
BytecodeLabel also_after_loop;
|
||||
// Conditional jump to force the code after the JumpLoop to be live.
|
||||
builder.JumpIfNull(&also_after_loop)
|
||||
.JumpLoop(&loop_header, 0, 0)
|
||||
.JumpLoop(&loop_header, 0, 0, 0)
|
||||
.Bind(&also_after_loop);
|
||||
}
|
||||
|
||||
@ -727,7 +727,7 @@ TEST_F(BytecodeArrayBuilderTest, BackwardJumps) {
|
||||
builder.Debugger();
|
||||
}
|
||||
|
||||
builder.JumpLoop(&loop_header, 0, 0);
|
||||
builder.JumpLoop(&loop_header, 0, 0, 0);
|
||||
builder.Bind(&end);
|
||||
builder.Return();
|
||||
|
||||
@ -746,9 +746,10 @@ TEST_F(BytecodeArrayBuilderTest, BackwardJumps) {
|
||||
|
||||
CHECK_EQ(iterator.current_bytecode(), Bytecode::kJumpLoop);
|
||||
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
|
||||
// offset of 5 (because kJumpLoop takes two immediate operands and
|
||||
// offset of 6 (because kJumpLoop takes three immediate operands and
|
||||
// JumpIfNull takes 1)
|
||||
CHECK_EQ(iterator.GetUnsignedImmediateOperand(0), i * 5 + 5);
|
||||
CHECK_EQ(Bytecodes::NumberOfOperands(Bytecode::kJumpLoop), 3);
|
||||
CHECK_EQ(iterator.GetUnsignedImmediateOperand(0), i * 6 + 6);
|
||||
iterator.Advance();
|
||||
}
|
||||
// Check padding to force wide backwards jumps.
|
||||
@ -758,7 +759,7 @@ TEST_F(BytecodeArrayBuilderTest, BackwardJumps) {
|
||||
}
|
||||
CHECK_EQ(iterator.current_bytecode(), Bytecode::kJumpLoop);
|
||||
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kDouble);
|
||||
CHECK_EQ(iterator.GetUnsignedImmediateOperand(0), 42 * 5 + 256 + 4);
|
||||
CHECK_EQ(iterator.GetUnsignedImmediateOperand(0), 42 * 6 + 1 + 256 + 4);
|
||||
iterator.Advance();
|
||||
CHECK_EQ(iterator.current_bytecode(), Bytecode::kReturn);
|
||||
iterator.Advance();
|
||||
|
@ -50,7 +50,8 @@ class BytecodeArrayWriterUnittest : public TestWithIsolateAndZone {
|
||||
void WriteJump(Bytecode bytecode, BytecodeLabel* label,
|
||||
BytecodeSourceInfo info = BytecodeSourceInfo());
|
||||
void WriteJumpLoop(Bytecode bytecode, BytecodeLoopHeader* loop_header,
|
||||
int depth, BytecodeSourceInfo info = BytecodeSourceInfo());
|
||||
int depth, int feedback_index,
|
||||
BytecodeSourceInfo info = BytecodeSourceInfo());
|
||||
|
||||
BytecodeArrayWriter* writer() { return &bytecode_array_writer_; }
|
||||
ZoneVector<unsigned char>* bytecodes() { return writer()->bytecodes(); }
|
||||
@ -106,9 +107,9 @@ void BytecodeArrayWriterUnittest::WriteJump(Bytecode bytecode,
|
||||
|
||||
void BytecodeArrayWriterUnittest::WriteJumpLoop(Bytecode bytecode,
|
||||
BytecodeLoopHeader* loop_header,
|
||||
int depth,
|
||||
int depth, int feedback_index,
|
||||
BytecodeSourceInfo info) {
|
||||
BytecodeNode node(bytecode, 0, depth, info);
|
||||
BytecodeNode node(bytecode, 0, depth, feedback_index, info);
|
||||
writer()->WriteJumpLoop(&node, loop_header);
|
||||
}
|
||||
|
||||
@ -165,14 +166,14 @@ TEST_F(BytecodeArrayWriterUnittest, ComplexExample) {
|
||||
// clang-format off
|
||||
/* 0 42 S> */ B(LdaConstant), U8(0),
|
||||
/* 2 42 E> */ B(Add), R8(1), U8(1),
|
||||
/* 4 68 S> */ B(JumpIfUndefined), U8(38),
|
||||
/* 6 */ B(JumpIfNull), U8(36),
|
||||
/* 4 68 S> */ B(JumpIfUndefined), U8(39),
|
||||
/* 6 */ B(JumpIfNull), U8(37),
|
||||
/* 8 */ B(ToObject), R8(3),
|
||||
/* 10 */ B(ForInPrepare), R8(3), U8(4),
|
||||
/* 13 */ B(LdaZero),
|
||||
/* 14 */ B(Star), R8(7),
|
||||
/* 16 63 S> */ B(ForInContinue), R8(7), R8(6),
|
||||
/* 19 */ B(JumpIfFalse), U8(23),
|
||||
/* 19 */ B(JumpIfFalse), U8(24),
|
||||
/* 21 */ B(ForInNext), R8(3), R8(7), R8(4), U8(1),
|
||||
/* 26 */ B(JumpIfUndefined), U8(9),
|
||||
/* 28 */ B(Star), R8(0),
|
||||
@ -181,15 +182,15 @@ TEST_F(BytecodeArrayWriterUnittest, ComplexExample) {
|
||||
/* 34 85 S> */ B(Return),
|
||||
/* 35 */ B(ForInStep), R8(7),
|
||||
/* 37 */ B(Star), R8(7),
|
||||
/* 39 */ B(JumpLoop), U8(23), U8(0),
|
||||
/* 42 */ B(LdaUndefined),
|
||||
/* 43 85 S> */ B(Return),
|
||||
/* 39 */ B(JumpLoop), U8(23), U8(0), U8(0),
|
||||
/* 43 */ B(LdaUndefined),
|
||||
/* 44 85 S> */ B(Return),
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
static const PositionTableEntry expected_positions[] = {
|
||||
{0, 42, true}, {2, 42, false}, {5, 68, true},
|
||||
{17, 63, true}, {35, 85, true}, {44, 85, true}};
|
||||
{17, 63, true}, {35, 85, true}, {45, 85, true}};
|
||||
|
||||
BytecodeLoopHeader loop_header;
|
||||
BytecodeLabel jump_for_in, jump_end_1, jump_end_2, jump_end_3;
|
||||
@ -214,7 +215,7 @@ TEST_F(BytecodeArrayWriterUnittest, ComplexExample) {
|
||||
writer()->BindLabel(&jump_for_in);
|
||||
Write(Bytecode::kForInStep, R(7));
|
||||
Write(Bytecode::kStar, R(7));
|
||||
WriteJumpLoop(Bytecode::kJumpLoop, &loop_header, 0);
|
||||
WriteJumpLoop(Bytecode::kJumpLoop, &loop_header, 0, 0);
|
||||
writer()->BindLabel(&jump_end_1);
|
||||
writer()->BindLabel(&jump_end_2);
|
||||
writer()->BindLabel(&jump_end_3);
|
||||
|
Loading…
Reference in New Issue
Block a user