Commit b54dbdc6 authored by Gus Caplan's avatar Gus Caplan Committed by Commit Bot

[interpreter] add JumpIfUndefinedOrNull

Cleans up a plethora of JumpIfUndefined().JumpIfNull()
occurances by introducing a new JumpIfUndefinedOrNull
bytecode.

Change-Id: I715e9dd82ca8309e0f3eb6514ddec19b4efe7dbe
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1743148
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63130}
parent 704fa7ad
...@@ -3132,6 +3132,16 @@ void BytecodeGraphBuilder::VisitJumpIfNotUndefinedConstant() { ...@@ -3132,6 +3132,16 @@ void BytecodeGraphBuilder::VisitJumpIfNotUndefinedConstant() {
BuildJumpIfNotEqual(jsgraph()->UndefinedConstant()); BuildJumpIfNotEqual(jsgraph()->UndefinedConstant());
} }
void BytecodeGraphBuilder::VisitJumpIfUndefinedOrNull() {
BuildJumpIfEqual(jsgraph()->UndefinedConstant());
BuildJumpIfEqual(jsgraph()->NullConstant());
}
void BytecodeGraphBuilder::VisitJumpIfUndefinedOrNullConstant() {
BuildJumpIfEqual(jsgraph()->UndefinedConstant());
BuildJumpIfEqual(jsgraph()->NullConstant());
}
void BytecodeGraphBuilder::VisitJumpLoop() { BuildJump(); } void BytecodeGraphBuilder::VisitJumpLoop() { BuildJump(); }
void BytecodeGraphBuilder::BuildSwitchOnSmi(Node* condition) { void BytecodeGraphBuilder::BuildSwitchOnSmi(Node* condition) {
......
...@@ -1159,6 +1159,13 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::JumpIfUndefined( ...@@ -1159,6 +1159,13 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::JumpIfUndefined(
return *this; return *this;
} }
BytecodeArrayBuilder& BytecodeArrayBuilder::JumpIfUndefinedOrNull(
BytecodeLabel* label) {
DCHECK(!label->is_bound());
OutputJumpIfUndefinedOrNull(label, 0);
return *this;
}
BytecodeArrayBuilder& BytecodeArrayBuilder::JumpIfNotUndefined( BytecodeArrayBuilder& BytecodeArrayBuilder::JumpIfNotUndefined(
BytecodeLabel* label) { BytecodeLabel* label) {
DCHECK(!label->is_bound()); DCHECK(!label->is_bound());
......
...@@ -418,6 +418,7 @@ class V8_EXPORT_PRIVATE BytecodeArrayBuilder final { ...@@ -418,6 +418,7 @@ class V8_EXPORT_PRIVATE BytecodeArrayBuilder final {
BytecodeArrayBuilder& JumpIfNull(BytecodeLabel* label); BytecodeArrayBuilder& JumpIfNull(BytecodeLabel* label);
BytecodeArrayBuilder& JumpIfNotNull(BytecodeLabel* label); BytecodeArrayBuilder& JumpIfNotNull(BytecodeLabel* label);
BytecodeArrayBuilder& JumpIfUndefined(BytecodeLabel* label); BytecodeArrayBuilder& JumpIfUndefined(BytecodeLabel* label);
BytecodeArrayBuilder& JumpIfUndefinedOrNull(BytecodeLabel* label);
BytecodeArrayBuilder& JumpIfNotUndefined(BytecodeLabel* label); BytecodeArrayBuilder& JumpIfNotUndefined(BytecodeLabel* label);
BytecodeArrayBuilder& JumpIfNil(BytecodeLabel* label, Token::Value op, BytecodeArrayBuilder& JumpIfNil(BytecodeLabel* label, Token::Value op,
NilValue nil); NilValue nil);
......
...@@ -286,6 +286,8 @@ Bytecode GetJumpWithConstantOperand(Bytecode jump_bytecode) { ...@@ -286,6 +286,8 @@ Bytecode GetJumpWithConstantOperand(Bytecode jump_bytecode) {
return Bytecode::kJumpIfUndefinedConstant; return Bytecode::kJumpIfUndefinedConstant;
case Bytecode::kJumpIfNotUndefined: case Bytecode::kJumpIfNotUndefined:
return Bytecode::kJumpIfNotUndefinedConstant; return Bytecode::kJumpIfNotUndefinedConstant;
case Bytecode::kJumpIfUndefinedOrNull:
return Bytecode::kJumpIfUndefinedOrNullConstant;
case Bytecode::kJumpIfJSReceiver: case Bytecode::kJumpIfJSReceiver:
return Bytecode::kJumpIfJSReceiverConstant; return Bytecode::kJumpIfJSReceiverConstant;
default: default:
......
...@@ -1777,14 +1777,13 @@ void BytecodeGenerator::VisitForInStatement(ForInStatement* stmt) { ...@@ -1777,14 +1777,13 @@ void BytecodeGenerator::VisitForInStatement(ForInStatement* stmt) {
return; return;
} }
BytecodeLabel subject_null_label, subject_undefined_label; BytecodeLabel subject_undefined_label;
FeedbackSlot slot = feedback_spec()->AddForInSlot(); FeedbackSlot slot = feedback_spec()->AddForInSlot();
// Prepare the state for executing ForIn. // Prepare the state for executing ForIn.
builder()->SetExpressionAsStatementPosition(stmt->subject()); builder()->SetExpressionAsStatementPosition(stmt->subject());
VisitForAccumulatorValue(stmt->subject()); VisitForAccumulatorValue(stmt->subject());
builder()->JumpIfUndefined(&subject_undefined_label); builder()->JumpIfUndefinedOrNull(&subject_undefined_label);
builder()->JumpIfNull(&subject_null_label);
Register receiver = register_allocator()->NewRegister(); Register receiver = register_allocator()->NewRegister();
builder()->ToObject(receiver); builder()->ToObject(receiver);
...@@ -1826,7 +1825,6 @@ void BytecodeGenerator::VisitForInStatement(ForInStatement* stmt) { ...@@ -1826,7 +1825,6 @@ void BytecodeGenerator::VisitForInStatement(ForInStatement* stmt) {
builder()->StoreAccumulatorInRegister(index); builder()->StoreAccumulatorInRegister(index);
loop_builder.JumpToHeader(loop_depth_); loop_builder.JumpToHeader(loop_depth_);
} }
builder()->Bind(&subject_null_label);
builder()->Bind(&subject_undefined_label); builder()->Bind(&subject_undefined_label);
} }
...@@ -3357,8 +3355,7 @@ void BytecodeGenerator::BuildFinalizeIteration( ...@@ -3357,8 +3355,7 @@ void BytecodeGenerator::BuildFinalizeIteration(
ast_string_constants()->return_string(), ast_string_constants()->return_string(),
feedback_index(feedback_spec()->AddLoadICSlot())) feedback_index(feedback_spec()->AddLoadICSlot()))
.StoreAccumulatorInRegister(method) .StoreAccumulatorInRegister(method)
.JumpIfUndefined(iterator_is_done.New()) .JumpIfUndefinedOrNull(iterator_is_done.New());
.JumpIfNull(iterator_is_done.New());
{ {
RegisterAllocationScope register_scope(this); RegisterAllocationScope register_scope(this);
...@@ -4342,11 +4339,8 @@ void BytecodeGenerator::VisitThrow(Throw* expr) { ...@@ -4342,11 +4339,8 @@ void BytecodeGenerator::VisitThrow(Throw* expr) {
void BytecodeGenerator::VisitPropertyLoad(Register obj, Property* property) { void BytecodeGenerator::VisitPropertyLoad(Register obj, Property* property) {
if (property->is_optional_chain_link()) { if (property->is_optional_chain_link()) {
DCHECK_NOT_NULL(optional_chaining_null_labels_); DCHECK_NOT_NULL(optional_chaining_null_labels_);
// TODO(ignition): Add a single opcode for JumpIfNullOrUndefined builder()->LoadAccumulatorWithRegister(obj).JumpIfUndefinedOrNull(
builder() optional_chaining_null_labels_->New());
->LoadAccumulatorWithRegister(obj)
.JumpIfUndefined(optional_chaining_null_labels_->New())
.JumpIfNull(optional_chaining_null_labels_->New());
} }
AssignType property_kind = Property::GetAssignType(property); AssignType property_kind = Property::GetAssignType(property);
...@@ -4593,11 +4587,8 @@ void BytecodeGenerator::VisitCall(Call* expr) { ...@@ -4593,11 +4587,8 @@ void BytecodeGenerator::VisitCall(Call* expr) {
if (expr->is_optional_chain_link()) { if (expr->is_optional_chain_link()) {
DCHECK_NOT_NULL(optional_chaining_null_labels_); DCHECK_NOT_NULL(optional_chaining_null_labels_);
// TODO(ignition): Add a single opcode for JumpIfNullOrUndefined builder()->LoadAccumulatorWithRegister(callee).JumpIfUndefinedOrNull(
builder() optional_chaining_null_labels_->New());
->LoadAccumulatorWithRegister(callee)
.JumpIfUndefined(optional_chaining_null_labels_->New())
.JumpIfNull(optional_chaining_null_labels_->New());
} }
// Evaluate all arguments to the function call and store in sequential args // Evaluate all arguments to the function call and store in sequential args
...@@ -4869,9 +4860,7 @@ void BytecodeGenerator::VisitDelete(UnaryOperation* unary) { ...@@ -4869,9 +4860,7 @@ void BytecodeGenerator::VisitDelete(UnaryOperation* unary) {
BytecodeLabel done; BytecodeLabel done;
OptionalChainNullLabelScope label_scope(this); OptionalChainNullLabelScope label_scope(this);
VisitForAccumulatorValue(property->obj()); VisitForAccumulatorValue(property->obj());
builder() builder()->JumpIfUndefinedOrNull(label_scope.labels()->New());
->JumpIfUndefined(label_scope.labels()->New())
.JumpIfNull(label_scope.labels()->New());
Register object = register_allocator()->NewRegister(); Register object = register_allocator()->NewRegister();
builder()->StoreAccumulatorInRegister(object); builder()->StoreAccumulatorInRegister(object);
VisitForAccumulatorValue(property->key()); VisitForAccumulatorValue(property->key());
...@@ -5262,10 +5251,8 @@ void BytecodeGenerator::BuildGetIterator(IteratorType hint) { ...@@ -5262,10 +5251,8 @@ void BytecodeGenerator::BuildGetIterator(IteratorType hint) {
builder()->StoreAccumulatorInRegister(obj).LoadAsyncIteratorProperty( builder()->StoreAccumulatorInRegister(obj).LoadAsyncIteratorProperty(
obj, feedback_index(feedback_spec()->AddLoadICSlot())); obj, feedback_index(feedback_spec()->AddLoadICSlot()));
BytecodeLabel async_iterator_undefined, async_iterator_null, done; BytecodeLabel async_iterator_undefined, done;
// TODO(ignition): Add a single opcode for JumpIfNullOrUndefined builder()->JumpIfUndefinedOrNull(&async_iterator_undefined);
builder()->JumpIfUndefined(&async_iterator_undefined);
builder()->JumpIfNull(&async_iterator_null);
// Let iterator be Call(method, obj) // Let iterator be Call(method, obj)
builder()->StoreAccumulatorInRegister(method).CallProperty( builder()->StoreAccumulatorInRegister(method).CallProperty(
...@@ -5276,7 +5263,6 @@ void BytecodeGenerator::BuildGetIterator(IteratorType hint) { ...@@ -5276,7 +5263,6 @@ void BytecodeGenerator::BuildGetIterator(IteratorType hint) {
builder()->CallRuntime(Runtime::kThrowSymbolAsyncIteratorInvalid); builder()->CallRuntime(Runtime::kThrowSymbolAsyncIteratorInvalid);
builder()->Bind(&async_iterator_undefined); builder()->Bind(&async_iterator_undefined);
builder()->Bind(&async_iterator_null);
// If method is undefined, // If method is undefined,
// Let syncMethod be GetMethod(obj, @@iterator) // Let syncMethod be GetMethod(obj, @@iterator)
builder() builder()
...@@ -5366,8 +5352,7 @@ void BytecodeGenerator::BuildCallIteratorMethod(Register iterator, ...@@ -5366,8 +5352,7 @@ void BytecodeGenerator::BuildCallIteratorMethod(Register iterator,
FeedbackSlot slot = feedback_spec()->AddLoadICSlot(); FeedbackSlot slot = feedback_spec()->AddLoadICSlot();
builder() builder()
->LoadNamedProperty(iterator, method_name, feedback_index(slot)) ->LoadNamedProperty(iterator, method_name, feedback_index(slot))
.JumpIfUndefined(if_notcalled->New()) .JumpIfUndefinedOrNull(if_notcalled->New())
.JumpIfNull(if_notcalled->New())
.StoreAccumulatorInRegister(method) .StoreAccumulatorInRegister(method)
.CallProperty(method, receiver_and_args, .CallProperty(method, receiver_and_args,
feedback_index(feedback_spec()->AddCallICSlot())) feedback_index(feedback_spec()->AddCallICSlot()))
......
...@@ -298,6 +298,7 @@ namespace interpreter { ...@@ -298,6 +298,7 @@ namespace interpreter {
V(JumpIfNotNullConstant, AccumulatorUse::kRead, OperandType::kIdx) \ V(JumpIfNotNullConstant, AccumulatorUse::kRead, OperandType::kIdx) \
V(JumpIfUndefinedConstant, AccumulatorUse::kRead, OperandType::kIdx) \ V(JumpIfUndefinedConstant, AccumulatorUse::kRead, OperandType::kIdx) \
V(JumpIfNotUndefinedConstant, AccumulatorUse::kRead, OperandType::kIdx) \ V(JumpIfNotUndefinedConstant, AccumulatorUse::kRead, OperandType::kIdx) \
V(JumpIfUndefinedOrNullConstant, AccumulatorUse::kRead, OperandType::kIdx) \
V(JumpIfTrueConstant, AccumulatorUse::kRead, OperandType::kIdx) \ V(JumpIfTrueConstant, AccumulatorUse::kRead, OperandType::kIdx) \
V(JumpIfFalseConstant, AccumulatorUse::kRead, OperandType::kIdx) \ V(JumpIfFalseConstant, AccumulatorUse::kRead, OperandType::kIdx) \
V(JumpIfJSReceiverConstant, AccumulatorUse::kRead, OperandType::kIdx) \ V(JumpIfJSReceiverConstant, AccumulatorUse::kRead, OperandType::kIdx) \
...@@ -315,6 +316,7 @@ namespace interpreter { ...@@ -315,6 +316,7 @@ namespace interpreter {
V(JumpIfNotNull, AccumulatorUse::kRead, OperandType::kUImm) \ V(JumpIfNotNull, AccumulatorUse::kRead, OperandType::kUImm) \
V(JumpIfUndefined, AccumulatorUse::kRead, OperandType::kUImm) \ V(JumpIfUndefined, AccumulatorUse::kRead, OperandType::kUImm) \
V(JumpIfNotUndefined, AccumulatorUse::kRead, OperandType::kUImm) \ V(JumpIfNotUndefined, AccumulatorUse::kRead, OperandType::kUImm) \
V(JumpIfUndefinedOrNull, AccumulatorUse::kRead, OperandType::kUImm) \
V(JumpIfJSReceiver, AccumulatorUse::kRead, OperandType::kUImm) \ V(JumpIfJSReceiver, AccumulatorUse::kRead, OperandType::kUImm) \
\ \
/* Smi-table lookup for switch statements */ \ /* Smi-table lookup for switch statements */ \
...@@ -407,7 +409,8 @@ namespace interpreter { ...@@ -407,7 +409,8 @@ namespace interpreter {
V(JumpIfNotNull) \ V(JumpIfNotNull) \
V(JumpIfUndefined) \ V(JumpIfUndefined) \
V(JumpIfNotUndefined) \ V(JumpIfNotUndefined) \
V(JumpIfJSReceiver) \ V(JumpIfUndefinedOrNull) \
V(JumpIfJSReceiver)
#define JUMP_CONDITIONAL_CONSTANT_BYTECODE_LIST(V) \ #define JUMP_CONDITIONAL_CONSTANT_BYTECODE_LIST(V) \
JUMP_TOBOOLEAN_CONDITIONAL_CONSTANT_BYTECODE_LIST(V) \ JUMP_TOBOOLEAN_CONDITIONAL_CONSTANT_BYTECODE_LIST(V) \
...@@ -415,9 +418,10 @@ namespace interpreter { ...@@ -415,9 +418,10 @@ namespace interpreter {
V(JumpIfNotNullConstant) \ V(JumpIfNotNullConstant) \
V(JumpIfUndefinedConstant) \ V(JumpIfUndefinedConstant) \
V(JumpIfNotUndefinedConstant) \ V(JumpIfNotUndefinedConstant) \
V(JumpIfUndefinedOrNullConstant) \
V(JumpIfTrueConstant) \ V(JumpIfTrueConstant) \
V(JumpIfFalseConstant) \ V(JumpIfFalseConstant) \
V(JumpIfJSReceiverConstant) \ V(JumpIfJSReceiverConstant)
#define JUMP_CONSTANT_BYTECODE_LIST(V) \ #define JUMP_CONSTANT_BYTECODE_LIST(V) \
JUMP_UNCONDITIONAL_CONSTANT_BYTECODE_LIST(V) \ JUMP_UNCONDITIONAL_CONSTANT_BYTECODE_LIST(V) \
......
...@@ -2288,6 +2288,41 @@ IGNITION_HANDLER(JumpIfNotUndefinedConstant, InterpreterAssembler) { ...@@ -2288,6 +2288,41 @@ IGNITION_HANDLER(JumpIfNotUndefinedConstant, InterpreterAssembler) {
JumpIfWordNotEqual(accumulator, UndefinedConstant(), relative_jump); JumpIfWordNotEqual(accumulator, UndefinedConstant(), relative_jump);
} }
// JumpIfUndefinedOrNull <imm>
//
// Jump by the number of bytes represented by an immediate operand if the object
// referenced by the accumulator is the undefined constant or the null constant.
IGNITION_HANDLER(JumpIfUndefinedOrNull, InterpreterAssembler) {
Node* accumulator = GetAccumulator();
Label do_jump(this);
GotoIf(IsUndefined(accumulator), &do_jump);
GotoIf(IsNull(accumulator), &do_jump);
Dispatch();
BIND(&do_jump);
Node* relative_jump = BytecodeOperandUImmWord(0);
Jump(relative_jump);
}
// JumpIfUndefinedOrNullConstant <idx>
//
// Jump by the number of bytes in the Smi in the |idx| entry in the constant
// pool if the object referenced by the accumulator is the undefined constant or
// the null constant.
IGNITION_HANDLER(JumpIfUndefinedOrNullConstant, InterpreterAssembler) {
Node* accumulator = GetAccumulator();
Label do_jump(this);
GotoIf(IsUndefined(accumulator), &do_jump);
GotoIf(IsNull(accumulator), &do_jump);
Dispatch();
BIND(&do_jump);
Node* relative_jump = LoadAndUntagConstantPoolEntryAtOperandIndex(0);
Jump(relative_jump);
}
// JumpIfJSReceiver <imm> // JumpIfJSReceiver <imm>
// //
// Jump by the number of bytes represented by an immediate operand if the object // Jump by the number of bytes represented by an immediate operand if the object
......
...@@ -214,7 +214,7 @@ snippet: " ...@@ -214,7 +214,7 @@ snippet: "
" "
frame size: 21 frame size: 21
parameter count: 1 parameter count: 1
bytecode array length: 372 bytecode array length: 370
bytecodes: [ bytecodes: [
B(SwitchOnGeneratorState), R(0), U8(0), U8(2), B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(4),
...@@ -293,11 +293,10 @@ bytecodes: [ ...@@ -293,11 +293,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(15), B(Star), R(15),
B(Ldar), R(12), B(Ldar), R(12),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(9), U8(11), U8(13), B(LdaNamedProperty), R(9), U8(11), U8(13),
B(Star), R(17), B(Star), R(17),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(18), B(Mov), R(context), R(18),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -392,16 +391,16 @@ constant pool: [ ...@@ -392,16 +391,16 @@ constant pool: [
Smi [6], Smi [6],
Smi [9], Smi [9],
SCOPE_INFO_TYPE, SCOPE_INFO_TYPE,
Smi [277], Smi [275],
Smi [6], Smi [6],
Smi [9], Smi [9],
Smi [23], Smi [23],
] ]
handlers: [ handlers: [
[20, 318, 326], [20, 316, 324],
[23, 282, 284], [23, 280, 282],
[93, 180, 188], [93, 180, 188],
[214, 247, 249], [212, 245, 247],
] ]
--- ---
...@@ -412,7 +411,7 @@ snippet: " ...@@ -412,7 +411,7 @@ snippet: "
" "
frame size: 19 frame size: 19
parameter count: 1 parameter count: 1
bytecode array length: 475 bytecode array length: 467
bytecodes: [ bytecodes: [
B(SwitchOnGeneratorState), R(0), U8(0), U8(5), B(SwitchOnGeneratorState), R(0), U8(0), U8(5),
B(Mov), R(closure), R(1), B(Mov), R(closure), R(1),
...@@ -439,8 +438,7 @@ bytecodes: [ ...@@ -439,8 +438,7 @@ bytecodes: [
/* 56 E> */ B(CallUndefinedReceiver0), R(9), U8(2), /* 56 E> */ B(CallUndefinedReceiver0), R(9), U8(2),
B(Star), R(10), B(Star), R(10),
B(LdaNamedProperty), R(10), U8(8), U8(4), B(LdaNamedProperty), R(10), U8(8), U8(4),
B(JumpIfUndefined), U8(17), B(JumpIfUndefinedOrNull), U8(15),
B(JumpIfNull), U8(15),
B(Star), R(11), B(Star), R(11),
B(CallProperty0), R(11), R(10), U8(6), B(CallProperty0), R(11), R(10), U8(6),
B(JumpIfJSReceiver), U8(23), B(JumpIfJSReceiver), U8(23),
...@@ -460,13 +458,12 @@ bytecodes: [ ...@@ -460,13 +458,12 @@ bytecodes: [
B(Ldar), R(6), B(Ldar), R(6),
B(SwitchOnSmiNoFeedback), U8(11), U8(2), I8(1), B(SwitchOnSmiNoFeedback), U8(11), U8(2), I8(1),
B(CallProperty1), R(9), R(7), R(8), U8(14), B(CallProperty1), R(9), R(7), R(8), U8(14),
B(Jump), U8(146), B(Jump), U8(140),
B(LdaNamedProperty), R(7), U8(13), U8(16), B(LdaNamedProperty), R(7), U8(13), U8(16),
B(JumpIfUndefined), U8(13), B(JumpIfUndefinedOrNull), U8(11),
B(JumpIfNull), U8(11),
B(Star), R(12), B(Star), R(12),
B(CallProperty1), R(12), R(7), R(8), U8(18), B(CallProperty1), R(12), R(7), R(8), U8(18),
B(Jump), U8(129), B(Jump), U8(125),
B(Mov), R(0), R(12), B(Mov), R(0), R(12),
B(Mov), R(8), R(13), B(Mov), R(8), R(13),
B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorAwaitUncaught), R(12), U8(2), B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorAwaitUncaught), R(12), U8(2),
...@@ -483,16 +480,14 @@ bytecodes: [ ...@@ -483,16 +480,14 @@ bytecodes: [
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star), R(1), B(Star), R(1),
B(Mov), R(12), R(2), B(Mov), R(12), R(2),
B(Jump), U8(245), B(Jump), U8(241),
B(LdaNamedProperty), R(7), U8(14), U8(20), B(LdaNamedProperty), R(7), U8(14), U8(20),
B(JumpIfUndefined), U8(13), B(JumpIfUndefinedOrNull), U8(11),
B(JumpIfNull), U8(11),
B(Star), R(14), B(Star), R(14),
B(CallProperty1), R(14), R(7), R(8), U8(22), B(CallProperty1), R(14), R(7), R(8), U8(22),
B(Jump), U8(68), B(Jump), U8(66),
B(LdaNamedProperty), R(7), U8(13), U8(24), B(LdaNamedProperty), R(7), U8(13), U8(24),
B(JumpIfUndefined), U8(57), B(JumpIfUndefinedOrNull), U8(55),
B(JumpIfNull), U8(55),
B(Star), R(14), B(Star), R(14),
B(CallProperty0), R(14), R(7), U8(26), B(CallProperty0), R(14), R(7), U8(26),
B(Jump), U8(2), B(Jump), U8(2),
...@@ -544,7 +539,7 @@ bytecodes: [ ...@@ -544,7 +539,7 @@ bytecodes: [
B(Star), R(8), B(Star), R(8),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(Star), R(6), B(Star), R(6),
B(JumpLoop), U8(242), I8(0), B(JumpLoop), U8(236), I8(0),
B(LdaNamedProperty), R(5), U8(16), U8(32), B(LdaNamedProperty), R(5), U8(16), U8(32),
B(Star), R(7), B(Star), R(7),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
...@@ -603,10 +598,10 @@ bytecodes: [ ...@@ -603,10 +598,10 @@ bytecodes: [
] ]
constant pool: [ constant pool: [
Smi [30], Smi [30],
Smi [162], Smi [158],
Smi [238], Smi [230],
Smi [288], Smi [280],
Smi [347], Smi [339],
Smi [16], Smi [16],
Smi [7], Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["g"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["g"],
...@@ -614,19 +609,19 @@ constant pool: [ ...@@ -614,19 +609,19 @@ constant pool: [
SYMBOL_TYPE, SYMBOL_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
Smi [11], Smi [11],
Smi [72], Smi [70],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["throw"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["throw"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
SCOPE_INFO_TYPE, SCOPE_INFO_TYPE,
Smi [380], Smi [372],
Smi [6], Smi [6],
Smi [9], Smi [9],
Smi [23], Smi [23],
] ]
handlers: [ handlers: [
[20, 421, 429], [20, 413, 421],
[23, 383, 387], [23, 375, 379],
] ]
...@@ -12,7 +12,7 @@ snippet: " ...@@ -12,7 +12,7 @@ snippet: "
" "
frame size: 16 frame size: 16
parameter count: 1 parameter count: 1
bytecode array length: 178 bytecode array length: 176
bytecodes: [ bytecodes: [
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 45 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37), /* 45 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
...@@ -59,11 +59,10 @@ bytecodes: [ ...@@ -59,11 +59,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(10), B(Star), R(10),
B(Ldar), R(7), B(Ldar), R(7),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(4), U8(5), U8(13), B(LdaNamedProperty), R(4), U8(5), U8(13),
B(Star), R(12), B(Star), R(12),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(13), B(Mov), R(context), R(13),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -105,7 +104,7 @@ constant pool: [ ...@@ -105,7 +104,7 @@ constant pool: [
] ]
handlers: [ handlers: [
[44, 86, 94], [44, 86, 94],
[120, 153, 155], [118, 151, 153],
] ]
--- ---
...@@ -115,7 +114,7 @@ snippet: " ...@@ -115,7 +114,7 @@ snippet: "
" "
frame size: 17 frame size: 17
parameter count: 1 parameter count: 1
bytecode array length: 264 bytecode array length: 262
bytecodes: [ bytecodes: [
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37), /* 48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
...@@ -196,11 +195,10 @@ bytecodes: [ ...@@ -196,11 +195,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(11), B(Star), R(11),
B(Ldar), R(8), B(Ldar), R(8),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(5), U8(5), U8(23), B(LdaNamedProperty), R(5), U8(5), U8(23),
B(Star), R(13), B(Star), R(13),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(14), B(Mov), R(context), R(14),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -242,7 +240,7 @@ constant pool: [ ...@@ -242,7 +240,7 @@ constant pool: [
] ]
handlers: [ handlers: [
[44, 172, 180], [44, 172, 180],
[206, 239, 241], [204, 237, 239],
] ]
--- ---
...@@ -252,7 +250,7 @@ snippet: " ...@@ -252,7 +250,7 @@ snippet: "
" "
frame size: 18 frame size: 18
parameter count: 1 parameter count: 1
bytecode array length: 229 bytecode array length: 227
bytecodes: [ bytecodes: [
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 40 S> */ B(CreateEmptyObjectLiteral), /* 40 S> */ B(CreateEmptyObjectLiteral),
...@@ -320,11 +318,10 @@ bytecodes: [ ...@@ -320,11 +318,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(11), B(Star), R(11),
B(Ldar), R(8), B(Ldar), R(8),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(5), U8(6), U8(17), B(LdaNamedProperty), R(5), U8(6), U8(17),
B(Star), R(14), B(Star), R(14),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(15), B(Mov), R(context), R(15),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -367,7 +364,7 @@ constant pool: [ ...@@ -367,7 +364,7 @@ constant pool: [
] ]
handlers: [ handlers: [
[47, 137, 145], [47, 137, 145],
[171, 204, 206], [169, 202, 204],
] ]
--- ---
......
...@@ -16,7 +16,7 @@ snippet: " ...@@ -16,7 +16,7 @@ snippet: "
" "
frame size: 21 frame size: 21
parameter count: 1 parameter count: 1
bytecode array length: 325 bytecode array length: 321
bytecodes: [ bytecodes: [
B(SwitchOnGeneratorState), R(0), U8(0), U8(2), B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(4),
...@@ -28,8 +28,7 @@ bytecodes: [ ...@@ -28,8 +28,7 @@ bytecodes: [
/* 43 S> */ B(CreateArrayLiteral), U8(2), U8(0), U8(37), /* 43 S> */ B(CreateArrayLiteral), U8(2), U8(0), U8(37),
B(Star), R(7), B(Star), R(7),
B(LdaNamedProperty), R(7), U8(3), U8(1), B(LdaNamedProperty), R(7), U8(3), U8(1),
B(JumpIfUndefined), U8(17), B(JumpIfUndefinedOrNull), U8(15),
B(JumpIfNull), U8(15),
B(Star), R(8), B(Star), R(8),
B(CallProperty0), R(8), R(7), U8(3), B(CallProperty0), R(8), R(7), U8(3),
B(JumpIfJSReceiver), U8(23), B(JumpIfJSReceiver), U8(23),
...@@ -87,11 +86,10 @@ bytecodes: [ ...@@ -87,11 +86,10 @@ bytecodes: [
/* 38 E> */ B(SetPendingMessage), /* 38 E> */ B(SetPendingMessage),
B(Star), R(12), B(Star), R(12),
B(Ldar), R(9), B(Ldar), R(9),
B(JumpIfToBooleanTrue), U8(96), B(JumpIfToBooleanTrue), U8(94),
B(LdaNamedProperty), R(6), U8(8), U8(17), B(LdaNamedProperty), R(6), U8(8), U8(17),
B(Star), R(16), B(Star), R(16),
B(JumpIfUndefined), U8(88), B(JumpIfUndefinedOrNull), U8(86),
B(JumpIfNull), U8(86),
B(Mov), R(context), R(17), B(Mov), R(context), R(17),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -156,8 +154,8 @@ bytecodes: [ ...@@ -156,8 +154,8 @@ bytecodes: [
/* 57 S> */ B(Return), /* 57 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [98], Smi [96],
Smi [229], Smi [225],
ARRAY_BOILERPLATE_DESCRIPTION_TYPE, ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
SYMBOL_TYPE, SYMBOL_TYPE,
SYMBOL_TYPE, SYMBOL_TYPE,
...@@ -169,9 +167,9 @@ constant pool: [ ...@@ -169,9 +167,9 @@ constant pool: [
SCOPE_INFO_TYPE, SCOPE_INFO_TYPE,
] ]
handlers: [ handlers: [
[20, 297, 297], [20, 293, 293],
[77, 157, 165], [75, 155, 163],
[191, 260, 262], [187, 256, 258],
] ]
--- ---
...@@ -183,7 +181,7 @@ snippet: " ...@@ -183,7 +181,7 @@ snippet: "
" "
frame size: 21 frame size: 21
parameter count: 1 parameter count: 1
bytecode array length: 346 bytecode array length: 342
bytecodes: [ bytecodes: [
B(SwitchOnGeneratorState), R(0), U8(0), U8(2), B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(4),
...@@ -195,8 +193,7 @@ bytecodes: [ ...@@ -195,8 +193,7 @@ bytecodes: [
/* 43 S> */ B(CreateArrayLiteral), U8(2), U8(0), U8(37), /* 43 S> */ B(CreateArrayLiteral), U8(2), U8(0), U8(37),
B(Star), R(7), B(Star), R(7),
B(LdaNamedProperty), R(7), U8(3), U8(1), B(LdaNamedProperty), R(7), U8(3), U8(1),
B(JumpIfUndefined), U8(17), B(JumpIfUndefinedOrNull), U8(15),
B(JumpIfNull), U8(15),
B(Star), R(8), B(Star), R(8),
B(CallProperty0), R(8), R(7), U8(3), B(CallProperty0), R(8), R(7), U8(3),
B(JumpIfJSReceiver), U8(23), B(JumpIfJSReceiver), U8(23),
...@@ -256,11 +253,10 @@ bytecodes: [ ...@@ -256,11 +253,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(12), B(Star), R(12),
B(Ldar), R(9), B(Ldar), R(9),
B(JumpIfToBooleanTrue), U8(96), B(JumpIfToBooleanTrue), U8(94),
B(LdaNamedProperty), R(6), U8(8), U8(17), B(LdaNamedProperty), R(6), U8(8), U8(17),
B(Star), R(16), B(Star), R(16),
B(JumpIfUndefined), U8(88), B(JumpIfUndefinedOrNull), U8(86),
B(JumpIfNull), U8(86),
B(Mov), R(context), R(17), B(Mov), R(context), R(17),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -331,8 +327,8 @@ bytecodes: [ ...@@ -331,8 +327,8 @@ bytecodes: [
/* 68 S> */ B(Return), /* 68 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [98], Smi [96],
Smi [233], Smi [229],
ARRAY_BOILERPLATE_DESCRIPTION_TYPE, ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
SYMBOL_TYPE, SYMBOL_TYPE,
SYMBOL_TYPE, SYMBOL_TYPE,
...@@ -346,9 +342,9 @@ constant pool: [ ...@@ -346,9 +342,9 @@ constant pool: [
SCOPE_INFO_TYPE, SCOPE_INFO_TYPE,
] ]
handlers: [ handlers: [
[20, 318, 318], [20, 314, 314],
[77, 161, 169], [75, 159, 167],
[195, 264, 266], [191, 260, 262],
] ]
--- ---
...@@ -363,7 +359,7 @@ snippet: " ...@@ -363,7 +359,7 @@ snippet: "
" "
frame size: 21 frame size: 21
parameter count: 1 parameter count: 1
bytecode array length: 341 bytecode array length: 337
bytecodes: [ bytecodes: [
B(SwitchOnGeneratorState), R(0), U8(0), U8(2), B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(4),
...@@ -375,8 +371,7 @@ bytecodes: [ ...@@ -375,8 +371,7 @@ bytecodes: [
/* 43 S> */ B(CreateArrayLiteral), U8(2), U8(0), U8(37), /* 43 S> */ B(CreateArrayLiteral), U8(2), U8(0), U8(37),
B(Star), R(7), B(Star), R(7),
B(LdaNamedProperty), R(7), U8(3), U8(1), B(LdaNamedProperty), R(7), U8(3), U8(1),
B(JumpIfUndefined), U8(17), B(JumpIfUndefinedOrNull), U8(15),
B(JumpIfNull), U8(15),
B(Star), R(8), B(Star), R(8),
B(CallProperty0), R(8), R(7), U8(3), B(CallProperty0), R(8), R(7), U8(3),
B(JumpIfJSReceiver), U8(23), B(JumpIfJSReceiver), U8(23),
...@@ -441,11 +436,10 @@ bytecodes: [ ...@@ -441,11 +436,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(12), B(Star), R(12),
B(Ldar), R(9), B(Ldar), R(9),
B(JumpIfToBooleanTrue), U8(96), B(JumpIfToBooleanTrue), U8(94),
B(LdaNamedProperty), R(6), U8(8), U8(19), B(LdaNamedProperty), R(6), U8(8), U8(19),
B(Star), R(16), B(Star), R(16),
B(JumpIfUndefined), U8(88), B(JumpIfUndefinedOrNull), U8(86),
B(JumpIfNull), U8(86),
B(Mov), R(context), R(17), B(Mov), R(context), R(17),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -510,8 +504,8 @@ bytecodes: [ ...@@ -510,8 +504,8 @@ bytecodes: [
/* 114 S> */ B(Return), /* 114 S> */ B(Return),
] ]
constant pool: [ constant pool: [
Smi [98], Smi [96],
Smi [245], Smi [241],
ARRAY_BOILERPLATE_DESCRIPTION_TYPE, ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
SYMBOL_TYPE, SYMBOL_TYPE,
SYMBOL_TYPE, SYMBOL_TYPE,
...@@ -523,9 +517,9 @@ constant pool: [ ...@@ -523,9 +517,9 @@ constant pool: [
SCOPE_INFO_TYPE, SCOPE_INFO_TYPE,
] ]
handlers: [ handlers: [
[20, 313, 313], [20, 309, 309],
[77, 173, 181], [75, 171, 179],
[207, 276, 278], [203, 272, 274],
] ]
--- ---
...@@ -538,7 +532,7 @@ snippet: " ...@@ -538,7 +532,7 @@ snippet: "
" "
frame size: 17 frame size: 17
parameter count: 1 parameter count: 1
bytecode array length: 261 bytecode array length: 259
bytecodes: [ bytecodes: [
B(Mov), R(closure), R(2), B(Mov), R(closure), R(2),
B(Mov), R(this), R(3), B(Mov), R(this), R(3),
...@@ -593,11 +587,10 @@ bytecodes: [ ...@@ -593,11 +587,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(10), B(Star), R(10),
B(Ldar), R(7), B(Ldar), R(7),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(4), U8(7), U8(18), B(LdaNamedProperty), R(4), U8(7), U8(18),
B(Star), R(13), B(Star), R(13),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(14), B(Mov), R(context), R(14),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -668,8 +661,8 @@ constant pool: [ ...@@ -668,8 +661,8 @@ constant pool: [
SCOPE_INFO_TYPE, SCOPE_INFO_TYPE,
] ]
handlers: [ handlers: [
[16, 233, 233], [16, 231, 231],
[59, 112, 120], [59, 112, 120],
[146, 179, 181], [144, 177, 179],
] ]
...@@ -63,13 +63,12 @@ snippet: " ...@@ -63,13 +63,12 @@ snippet: "
" "
frame size: 8 frame size: 8
parameter count: 1 parameter count: 1
bytecode array length: 46 bytecode array length: 44
bytecodes: [ bytecodes: [
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaConstant), U8(0), /* 42 S> */ B(LdaConstant), U8(0),
B(Star), R(0), B(Star), R(0),
/* 68 S> */ B(JumpIfUndefined), U8(39), /* 68 S> */ B(JumpIfUndefinedOrNull), U8(37),
B(JumpIfNull), U8(37),
B(ToObject), R(3), B(ToObject), R(3),
B(ForInEnumerate), R(3), B(ForInEnumerate), R(3),
B(ForInPrepare), R(4), U8(0), B(ForInPrepare), R(4), U8(0),
...@@ -102,14 +101,13 @@ snippet: " ...@@ -102,14 +101,13 @@ snippet: "
" "
frame size: 9 frame size: 9
parameter count: 1 parameter count: 1
bytecode array length: 58 bytecode array length: 56
bytecodes: [ bytecodes: [
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaZero), /* 42 S> */ B(LdaZero),
B(Star), R(0), B(Star), R(0),
/* 59 S> */ B(CreateArrayLiteral), U8(0), U8(1), U8(37), /* 59 S> */ B(CreateArrayLiteral), U8(0), U8(1), U8(37),
B(JumpIfUndefined), U8(48), B(JumpIfUndefinedOrNull), U8(46),
B(JumpIfNull), U8(46),
B(ToObject), R(3), B(ToObject), R(3),
B(ForInEnumerate), R(3), B(ForInEnumerate), R(3),
B(ForInPrepare), R(4), U8(0), B(ForInPrepare), R(4), U8(0),
...@@ -148,14 +146,13 @@ snippet: " ...@@ -148,14 +146,13 @@ snippet: "
" "
frame size: 7 frame size: 7
parameter count: 1 parameter count: 1
bytecode array length: 85 bytecode array length: 83
bytecodes: [ bytecodes: [
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star), R(0), B(Star), R(0),
/* 77 S> */ B(CreateArrayLiteral), U8(1), U8(2), U8(37), /* 77 S> */ B(CreateArrayLiteral), U8(1), U8(2), U8(37),
B(JumpIfUndefined), U8(72), B(JumpIfUndefinedOrNull), U8(70),
B(JumpIfNull), U8(70),
B(ToObject), R(1), B(ToObject), R(1),
B(ForInEnumerate), R(1), B(ForInEnumerate), R(1),
B(ForInPrepare), R(2), U8(1), B(ForInPrepare), R(2), U8(1),
...@@ -202,14 +199,13 @@ snippet: " ...@@ -202,14 +199,13 @@ snippet: "
" "
frame size: 9 frame size: 9
parameter count: 1 parameter count: 1
bytecode array length: 64 bytecode array length: 62
bytecodes: [ bytecodes: [
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37), /* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
B(Star), R(0), B(Star), R(0),
/* 72 S> */ B(CreateArrayLiteral), U8(1), U8(2), U8(37), /* 72 S> */ B(CreateArrayLiteral), U8(1), U8(2), U8(37),
B(JumpIfUndefined), U8(51), B(JumpIfUndefinedOrNull), U8(49),
B(JumpIfNull), U8(49),
B(ToObject), R(1), B(ToObject), R(1),
B(ForInEnumerate), R(1), B(ForInEnumerate), R(1),
B(ForInPrepare), R(2), U8(1), B(ForInPrepare), R(2), U8(1),
......
...@@ -11,7 +11,7 @@ snippet: " ...@@ -11,7 +11,7 @@ snippet: "
" "
frame size: 15 frame size: 15
parameter count: 1 parameter count: 1
bytecode array length: 173 bytecode array length: 171
bytecodes: [ bytecodes: [
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37), /* 48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
...@@ -55,11 +55,10 @@ bytecodes: [ ...@@ -55,11 +55,10 @@ bytecodes: [
/* 43 E> */ B(SetPendingMessage), /* 43 E> */ B(SetPendingMessage),
B(Star), R(9), B(Star), R(9),
B(Ldar), R(6), B(Ldar), R(6),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(3), U8(5), U8(13), B(LdaNamedProperty), R(3), U8(5), U8(13),
B(Star), R(11), B(Star), R(11),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(12), B(Mov), R(context), R(12),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -101,7 +100,7 @@ constant pool: [ ...@@ -101,7 +100,7 @@ constant pool: [
] ]
handlers: [ handlers: [
[38, 81, 89], [38, 81, 89],
[115, 148, 150], [113, 146, 148],
] ]
--- ---
...@@ -111,7 +110,7 @@ snippet: " ...@@ -111,7 +110,7 @@ snippet: "
" "
frame size: 16 frame size: 16
parameter count: 1 parameter count: 1
bytecode array length: 184 bytecode array length: 182
bytecodes: [ bytecodes: [
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaConstant), U8(0), /* 42 S> */ B(LdaConstant), U8(0),
...@@ -158,11 +157,10 @@ bytecodes: [ ...@@ -158,11 +157,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(10), B(Star), R(10),
B(Ldar), R(7), B(Ldar), R(7),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(4), U8(5), U8(12), B(LdaNamedProperty), R(4), U8(5), U8(12),
B(Star), R(12), B(Star), R(12),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(13), B(Mov), R(context), R(13),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -208,7 +206,7 @@ constant pool: [ ...@@ -208,7 +206,7 @@ constant pool: [
] ]
handlers: [ handlers: [
[39, 86, 94], [39, 86, 94],
[120, 153, 155], [118, 151, 153],
] ]
--- ---
...@@ -220,7 +218,7 @@ snippet: " ...@@ -220,7 +218,7 @@ snippet: "
" "
frame size: 15 frame size: 15
parameter count: 1 parameter count: 1
bytecode array length: 189 bytecode array length: 187
bytecodes: [ bytecodes: [
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37), /* 48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
...@@ -271,11 +269,10 @@ bytecodes: [ ...@@ -271,11 +269,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(9), B(Star), R(9),
B(Ldar), R(6), B(Ldar), R(6),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(3), U8(5), U8(15), B(LdaNamedProperty), R(3), U8(5), U8(15),
B(Star), R(11), B(Star), R(11),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(12), B(Mov), R(context), R(12),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -317,7 +314,7 @@ constant pool: [ ...@@ -317,7 +314,7 @@ constant pool: [
] ]
handlers: [ handlers: [
[38, 97, 105], [38, 97, 105],
[131, 164, 166], [129, 162, 164],
] ]
--- ---
...@@ -327,7 +324,7 @@ snippet: " ...@@ -327,7 +324,7 @@ snippet: "
" "
frame size: 15 frame size: 15
parameter count: 1 parameter count: 1
bytecode array length: 195 bytecode array length: 193
bytecodes: [ bytecodes: [
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
...@@ -377,11 +374,10 @@ bytecodes: [ ...@@ -377,11 +374,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(8), B(Star), R(8),
B(Ldar), R(5), B(Ldar), R(5),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(2), U8(7), U8(18), B(LdaNamedProperty), R(2), U8(7), U8(18),
B(Star), R(11), B(Star), R(11),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(12), B(Mov), R(context), R(12),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -429,6 +425,6 @@ constant pool: [ ...@@ -429,6 +425,6 @@ constant pool: [
] ]
handlers: [ handlers: [
[44, 97, 105], [44, 97, 105],
[131, 164, 166], [129, 162, 164],
] ]
...@@ -15,7 +15,7 @@ snippet: " ...@@ -15,7 +15,7 @@ snippet: "
" "
frame size: 17 frame size: 17
parameter count: 2 parameter count: 2
bytecode array length: 173 bytecode array length: 171
bytecodes: [ bytecodes: [
/* 10 E> */ B(StackCheck), /* 10 E> */ B(StackCheck),
/* 34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0), /* 34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
...@@ -59,11 +59,10 @@ bytecodes: [ ...@@ -59,11 +59,10 @@ bytecodes: [
/* 49 E> */ B(SetPendingMessage), /* 49 E> */ B(SetPendingMessage),
B(Star), R(11), B(Star), R(11),
B(Ldar), R(8), B(Ldar), R(8),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(5), U8(4), U8(12), B(LdaNamedProperty), R(5), U8(4), U8(12),
B(Star), R(13), B(Star), R(13),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(14), B(Mov), R(context), R(14),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -104,7 +103,7 @@ constant pool: [ ...@@ -104,7 +103,7 @@ constant pool: [
] ]
handlers: [ handlers: [
[35, 81, 89], [35, 81, 89],
[115, 148, 150], [113, 146, 148],
] ]
--- ---
...@@ -116,7 +115,7 @@ snippet: " ...@@ -116,7 +115,7 @@ snippet: "
" "
frame size: 22 frame size: 22
parameter count: 2 parameter count: 2
bytecode array length: 254 bytecode array length: 252
bytecodes: [ bytecodes: [
B(CreateFunctionContext), U8(0), U8(4), B(CreateFunctionContext), U8(0), U8(4),
B(PushContext), R(2), B(PushContext), R(2),
...@@ -196,11 +195,10 @@ bytecodes: [ ...@@ -196,11 +195,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(11), B(Star), R(11),
B(Ldar), R(8), B(Ldar), R(8),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(5), U8(9), U8(16), B(LdaNamedProperty), R(5), U8(9), U8(16),
B(Star), R(14), B(Star), R(14),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(15), B(Mov), R(context), R(15),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -247,7 +245,7 @@ constant pool: [ ...@@ -247,7 +245,7 @@ constant pool: [
] ]
handlers: [ handlers: [
[65, 160, 168], [65, 160, 168],
[194, 227, 229], [192, 225, 227],
] ]
--- ---
...@@ -259,7 +257,7 @@ snippet: " ...@@ -259,7 +257,7 @@ snippet: "
" "
frame size: 16 frame size: 16
parameter count: 2 parameter count: 2
bytecode array length: 190 bytecode array length: 188
bytecodes: [ bytecodes: [
/* 10 E> */ B(StackCheck), /* 10 E> */ B(StackCheck),
/* 34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0), /* 34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
...@@ -311,11 +309,10 @@ bytecodes: [ ...@@ -311,11 +309,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(9), B(Star), R(9),
B(Ldar), R(6), B(Ldar), R(6),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(3), U8(6), U8(14), B(LdaNamedProperty), R(3), U8(6), U8(14),
B(Star), R(12), B(Star), R(12),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(13), B(Mov), R(context), R(13),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -358,7 +355,7 @@ constant pool: [ ...@@ -358,7 +355,7 @@ constant pool: [
] ]
handlers: [ handlers: [
[35, 98, 106], [35, 98, 106],
[132, 165, 167], [130, 163, 165],
] ]
--- ---
...@@ -370,7 +367,7 @@ snippet: " ...@@ -370,7 +367,7 @@ snippet: "
" "
frame size: 19 frame size: 19
parameter count: 2 parameter count: 2
bytecode array length: 197 bytecode array length: 195
bytecodes: [ bytecodes: [
/* 10 E> */ B(StackCheck), /* 10 E> */ B(StackCheck),
/* 41 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0), /* 41 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
...@@ -423,11 +420,10 @@ bytecodes: [ ...@@ -423,11 +420,10 @@ bytecodes: [
/* 56 E> */ B(SetPendingMessage), /* 56 E> */ B(SetPendingMessage),
B(Star), R(13), B(Star), R(13),
B(Ldar), R(10), B(Ldar), R(10),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(7), U8(6), U8(17), B(LdaNamedProperty), R(7), U8(6), U8(17),
B(Star), R(15), B(Star), R(15),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(16), B(Mov), R(context), R(16),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -470,7 +466,7 @@ constant pool: [ ...@@ -470,7 +466,7 @@ constant pool: [
] ]
handlers: [ handlers: [
[35, 105, 113], [35, 105, 113],
[139, 172, 174], [137, 170, 172],
] ]
--- ---
...@@ -482,7 +478,7 @@ snippet: " ...@@ -482,7 +478,7 @@ snippet: "
" "
frame size: 18 frame size: 18
parameter count: 2 parameter count: 2
bytecode array length: 214 bytecode array length: 212
bytecodes: [ bytecodes: [
B(SwitchOnGeneratorState), R(0), U8(0), U8(1), B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
B(Mov), R(closure), R(5), B(Mov), R(closure), R(5),
...@@ -540,11 +536,10 @@ bytecodes: [ ...@@ -540,11 +536,10 @@ bytecodes: [
/* 50 E> */ B(SetPendingMessage), /* 50 E> */ B(SetPendingMessage),
B(Star), R(12), B(Star), R(12),
B(Ldar), R(9), B(Ldar), R(9),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(6), U8(7), U8(12), B(LdaNamedProperty), R(6), U8(7), U8(12),
B(Star), R(14), B(Star), R(14),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(15), B(Mov), R(context), R(15),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -588,7 +583,7 @@ constant pool: [ ...@@ -588,7 +583,7 @@ constant pool: [
] ]
handlers: [ handlers: [
[76, 122, 130], [76, 122, 130],
[156, 189, 191], [154, 187, 189],
] ]
--- ---
...@@ -600,7 +595,7 @@ snippet: " ...@@ -600,7 +595,7 @@ snippet: "
" "
frame size: 17 frame size: 17
parameter count: 2 parameter count: 2
bytecode array length: 258 bytecode array length: 256
bytecodes: [ bytecodes: [
B(SwitchOnGeneratorState), R(0), U8(0), U8(2), B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(4),
...@@ -672,11 +667,10 @@ bytecodes: [ ...@@ -672,11 +667,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(11), B(Star), R(11),
B(Ldar), R(8), B(Ldar), R(8),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(5), U8(10), U8(12), B(LdaNamedProperty), R(5), U8(10), U8(12),
B(Star), R(13), B(Star), R(13),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(14), B(Mov), R(context), R(14),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -727,7 +721,7 @@ constant pool: [ ...@@ -727,7 +721,7 @@ constant pool: [
] ]
handlers: [ handlers: [
[76, 160, 168], [76, 160, 168],
[194, 227, 229], [192, 225, 227],
] ]
--- ---
...@@ -739,7 +733,7 @@ snippet: " ...@@ -739,7 +733,7 @@ snippet: "
" "
frame size: 19 frame size: 19
parameter count: 2 parameter count: 2
bytecode array length: 228 bytecode array length: 226
bytecodes: [ bytecodes: [
B(Mov), R(closure), R(5), B(Mov), R(closure), R(5),
B(Mov), R(this), R(6), B(Mov), R(this), R(6),
...@@ -788,11 +782,10 @@ bytecodes: [ ...@@ -788,11 +782,10 @@ bytecodes: [
/* 55 E> */ B(SetPendingMessage), /* 55 E> */ B(SetPendingMessage),
B(Star), R(13), B(Star), R(13),
B(Ldar), R(10), B(Ldar), R(10),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(7), U8(4), U8(12), B(LdaNamedProperty), R(7), U8(4), U8(12),
B(Star), R(15), B(Star), R(15),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(16), B(Mov), R(context), R(16),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -852,9 +845,9 @@ constant pool: [ ...@@ -852,9 +845,9 @@ constant pool: [
SCOPE_INFO_TYPE, SCOPE_INFO_TYPE,
] ]
handlers: [ handlers: [
[16, 200, 200], [16, 198, 198],
[50, 96, 104], [50, 96, 104],
[130, 163, 165], [128, 161, 163],
] ]
--- ---
...@@ -866,7 +859,7 @@ snippet: " ...@@ -866,7 +859,7 @@ snippet: "
" "
frame size: 18 frame size: 18
parameter count: 2 parameter count: 2
bytecode array length: 264 bytecode array length: 262
bytecodes: [ bytecodes: [
B(SwitchOnGeneratorState), R(0), U8(0), U8(1), B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(4),
...@@ -928,11 +921,10 @@ bytecodes: [ ...@@ -928,11 +921,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(12), B(Star), R(12),
B(Ldar), R(9), B(Ldar), R(9),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(6), U8(5), U8(12), B(LdaNamedProperty), R(6), U8(5), U8(12),
B(Star), R(14), B(Star), R(14),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(15), B(Mov), R(context), R(15),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -993,8 +985,8 @@ constant pool: [ ...@@ -993,8 +985,8 @@ constant pool: [
SCOPE_INFO_TYPE, SCOPE_INFO_TYPE,
] ]
handlers: [ handlers: [
[20, 236, 236], [20, 234, 234],
[54, 132, 140], [54, 132, 140],
[166, 199, 201], [164, 197, 199],
] ]
...@@ -100,7 +100,7 @@ snippet: " ...@@ -100,7 +100,7 @@ snippet: "
" "
frame size: 17 frame size: 17
parameter count: 1 parameter count: 1
bytecode array length: 261 bytecode array length: 259
bytecodes: [ bytecodes: [
B(SwitchOnGeneratorState), R(0), U8(0), U8(2), B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
B(Mov), R(closure), R(4), B(Mov), R(closure), R(4),
...@@ -173,11 +173,10 @@ bytecodes: [ ...@@ -173,11 +173,10 @@ bytecodes: [
B(SetPendingMessage), B(SetPendingMessage),
B(Star), R(11), B(Star), R(11),
B(Ldar), R(8), B(Ldar), R(8),
B(JumpIfToBooleanTrue), U8(60), B(JumpIfToBooleanTrue), U8(58),
B(LdaNamedProperty), R(5), U8(11), U8(13), B(LdaNamedProperty), R(5), U8(11), U8(13),
B(Star), R(13), B(Star), R(13),
B(JumpIfUndefined), U8(52), B(JumpIfUndefinedOrNull), U8(50),
B(JumpIfNull), U8(50),
B(Mov), R(context), R(14), B(Mov), R(context), R(14),
B(TestTypeOf), U8(6), B(TestTypeOf), U8(6),
B(JumpIfTrue), U8(18), B(JumpIfTrue), U8(18),
...@@ -229,7 +228,7 @@ constant pool: [ ...@@ -229,7 +228,7 @@ constant pool: [
] ]
handlers: [ handlers: [
[79, 163, 171], [79, 163, 171],
[197, 230, 232], [195, 228, 230],
] ]
--- ---
...@@ -240,7 +239,7 @@ snippet: " ...@@ -240,7 +239,7 @@ snippet: "
" "
frame size: 9 frame size: 9
parameter count: 1 parameter count: 1
bytecode array length: 217 bytecode array length: 211
bytecodes: [ bytecodes: [
B(SwitchOnGeneratorState), R(0), U8(0), U8(2), B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
B(Mov), R(closure), R(1), B(Mov), R(closure), R(1),
...@@ -276,24 +275,21 @@ bytecodes: [ ...@@ -276,24 +275,21 @@ bytecodes: [
B(Ldar), R(2), B(Ldar), R(2),
B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(1), B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(1),
B(CallProperty1), R(5), R(3), R(4), U8(10), B(CallProperty1), R(5), R(3), R(4), U8(10),
B(Jump), U8(69), B(Jump), U8(63),
B(LdaNamedProperty), R(3), U8(9), U8(12), B(LdaNamedProperty), R(3), U8(9), U8(12),
B(JumpIfUndefined), U8(13), B(JumpIfUndefinedOrNull), U8(11),
B(JumpIfNull), U8(11),
B(Star), R(8), B(Star), R(8),
B(CallProperty1), R(8), R(3), R(4), U8(14), B(CallProperty1), R(8), R(3), R(4), U8(14),
B(Jump), U8(52), B(Jump), U8(48),
B(Ldar), R(4), B(Ldar), R(4),
/* 54 S> */ B(Return), /* 54 S> */ B(Return),
B(LdaNamedProperty), R(3), U8(10), U8(16), B(LdaNamedProperty), R(3), U8(10), U8(16),
B(JumpIfUndefined), U8(13), B(JumpIfUndefinedOrNull), U8(11),
B(JumpIfNull), U8(11),
B(Star), R(8), B(Star), R(8),
B(CallProperty1), R(8), R(3), R(4), U8(18), B(CallProperty1), R(8), R(3), R(4), U8(18),
B(Jump), U8(32), B(Jump), U8(30),
B(LdaNamedProperty), R(3), U8(9), U8(20), B(LdaNamedProperty), R(3), U8(9), U8(20),
B(JumpIfUndefined), U8(21), B(JumpIfUndefinedOrNull), U8(19),
B(JumpIfNull), U8(19),
B(Star), R(8), B(Star), R(8),
B(CallProperty0), R(8), R(3), U8(22), B(CallProperty0), R(8), R(3), U8(22),
B(Jump), U8(2), B(Jump), U8(2),
...@@ -312,7 +308,7 @@ bytecodes: [ ...@@ -312,7 +308,7 @@ bytecodes: [
B(Star), R(4), B(Star), R(4),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1), B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
B(Star), R(2), B(Star), R(2),
B(JumpLoop), U8(114), I8(0), B(JumpLoop), U8(108), I8(0),
B(LdaNamedProperty), R(1), U8(12), U8(26), B(LdaNamedProperty), R(1), U8(12), U8(26),
B(Star), R(3), B(Star), R(3),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
...@@ -325,14 +321,14 @@ bytecodes: [ ...@@ -325,14 +321,14 @@ bytecodes: [
] ]
constant pool: [ constant pool: [
Smi [22], Smi [22],
Smi [185], Smi [179],
Smi [10], Smi [10],
Smi [7], Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["g"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["g"],
SYMBOL_TYPE, SYMBOL_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
Smi [11], Smi [11],
Smi [31], Smi [29],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["throw"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["throw"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"], ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
......
...@@ -2655,7 +2655,7 @@ snippet: " ...@@ -2655,7 +2655,7 @@ snippet: "
" "
frame size: 163 frame size: 163
parameter count: 1 parameter count: 1
bytecode array length: 626 bytecode array length: 624
bytecodes: [ bytecodes: [
/* 30 E> */ B(StackCheck), /* 30 E> */ B(StackCheck),
/* 43 S> */ B(LdaZero), /* 43 S> */ B(LdaZero),
...@@ -2977,8 +2977,7 @@ bytecodes: [ ...@@ -2977,8 +2977,7 @@ bytecodes: [
/* 2146 S> */ B(LdaZero), /* 2146 S> */ B(LdaZero),
B(Star), R(1), B(Star), R(1),
/* 2162 S> */ B(Ldar), R(0), /* 2162 S> */ B(Ldar), R(0),
B(JumpIfUndefined), U8(74), B(JumpIfUndefinedOrNull), U8(72),
B(JumpIfNull), U8(72),
B(Wide), B(ToObject), R16(157), B(Wide), B(ToObject), R16(157),
B(Wide), B(ForInEnumerate), R16(157), B(Wide), B(ForInEnumerate), R16(157),
B(Wide), B(ForInPrepare), R16(158), U16(0), B(Wide), B(ForInPrepare), R16(158), U16(0),
......
...@@ -283,7 +283,7 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { ...@@ -283,7 +283,7 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
BytecodeLoopHeader loop_header; BytecodeLoopHeader loop_header;
BytecodeLabel after_jump1, after_jump2, after_jump3, after_jump4, BytecodeLabel after_jump1, after_jump2, after_jump3, after_jump4,
after_jump5, after_jump6, after_jump7, after_jump8, after_jump9, after_jump5, after_jump6, after_jump7, after_jump8, after_jump9,
after_jump10, after_loop; after_jump10, after_jump11, after_loop;
builder.JumpIfNull(&after_loop) builder.JumpIfNull(&after_loop)
.Bind(&loop_header) .Bind(&loop_header)
.Jump(&after_jump1) .Jump(&after_jump1)
...@@ -296,21 +296,23 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { ...@@ -296,21 +296,23 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
.Bind(&after_jump4) .Bind(&after_jump4)
.JumpIfNotUndefined(&after_jump5) .JumpIfNotUndefined(&after_jump5)
.Bind(&after_jump5) .Bind(&after_jump5)
.JumpIfJSReceiver(&after_jump6) .JumpIfUndefinedOrNull(&after_jump6)
.Bind(&after_jump6) .Bind(&after_jump6)
.JumpIfTrue(ToBooleanMode::kConvertToBoolean, &after_jump7) .JumpIfJSReceiver(&after_jump7)
.Bind(&after_jump7) .Bind(&after_jump7)
.JumpIfTrue(ToBooleanMode::kAlreadyBoolean, &after_jump8) .JumpIfTrue(ToBooleanMode::kConvertToBoolean, &after_jump8)
.Bind(&after_jump8) .Bind(&after_jump8)
.JumpIfFalse(ToBooleanMode::kConvertToBoolean, &after_jump9) .JumpIfTrue(ToBooleanMode::kAlreadyBoolean, &after_jump9)
.Bind(&after_jump9) .Bind(&after_jump9)
.JumpIfFalse(ToBooleanMode::kAlreadyBoolean, &after_jump10) .JumpIfFalse(ToBooleanMode::kConvertToBoolean, &after_jump10)
.Bind(&after_jump10) .Bind(&after_jump10)
.JumpIfFalse(ToBooleanMode::kAlreadyBoolean, &after_jump11)
.Bind(&after_jump11)
.JumpLoop(&loop_header, 0) .JumpLoop(&loop_header, 0)
.Bind(&after_loop); .Bind(&after_loop);
} }
BytecodeLabel end[10]; BytecodeLabel end[11];
{ {
// Longer jumps with constant operands // Longer jumps with constant operands
BytecodeLabel after_jump; BytecodeLabel after_jump;
...@@ -325,8 +327,9 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { ...@@ -325,8 +327,9 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
.JumpIfNotNull(&end[6]) .JumpIfNotNull(&end[6])
.JumpIfUndefined(&end[7]) .JumpIfUndefined(&end[7])
.JumpIfNotUndefined(&end[8]) .JumpIfNotUndefined(&end[8])
.JumpIfUndefinedOrNull(&end[9])
.LoadLiteral(ast_factory.prototype_string()) .LoadLiteral(ast_factory.prototype_string())
.JumpIfJSReceiver(&end[9]); .JumpIfJSReceiver(&end[10]);
} }
// Emit Smi table switch bytecode. // Emit Smi table switch bytecode.
......
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