Commit e6682554 authored by Mythri's avatar Mythri Committed by Commit Bot

[Interpreter] Introduce strict equality bytecode that does not collect feedback.

Some of the StrictEquality comparisons do not require feedback (for ex: in
try-finally, generators). This cl introduces StrictEqualityNoFeedback bytecode
to be used in such cases. With this change, we no longer have to check if the 
type feedback slot is valid in compare bytecode handlers.

This is the first step in reworking the compare bytecode handler to avoid
duplicate checks when collecting feedback and when performing the operation.

BUG=v8:4280

Change-Id: Ia650fd43c0466b8625d3ce98c39ed1073ba42a6b
Reviewed-on: https://chromium-review.googlesource.com/455778
Commit-Queue: Mythri Alle <mythria@chromium.org>
Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#44020}
parent 1cedeb39
......@@ -1850,19 +1850,15 @@ void BytecodeGraphBuilder::BuildCompareOp(const Operator* op) {
environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
Node* right = environment()->LookupAccumulator();
Node* node = nullptr;
int slot_index = bytecode_iterator().GetIndexOperand(1);
if (slot_index != 0) {
FeedbackSlot slot = feedback_vector()->ToSlot(slot_index);
if (Node* simplified = TryBuildSimplifiedBinaryOp(op, left, right, slot)) {
node = simplified;
} else {
node = NewNode(op, left, right);
}
DCHECK(slot_index != 0);
FeedbackSlot slot = feedback_vector()->ToSlot(slot_index);
Node* node = nullptr;
if (Node* simplified = TryBuildSimplifiedBinaryOp(op, left, right, slot)) {
node = simplified;
} else {
node = NewNode(op, left, right);
}
environment()->BindAccumulator(node, Environment::kAttachFrameState);
}
......@@ -1890,6 +1886,21 @@ void BytecodeGraphBuilder::VisitTestGreaterThanOrEqual() {
BuildCompareOp(javascript()->GreaterThanOrEqual(GetCompareOperationHint()));
}
void BytecodeGraphBuilder::VisitTestEqualStrictNoFeedback() {
// TODO(5310): Currently this is used with both Smi operands and with
// string operands. We pass string operands for static property check in
// VisitClassLiteralProperties. This should be changed, so we only use this
// for Smi operations and lower it to SpeculativeNumberEqual[kSignedSmall]
PrepareEagerCheckpoint();
Node* left =
environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
Node* right = environment()->LookupAccumulator();
Node* node = NewNode(javascript()->StrictEqual(CompareOperationHint::kAny),
left, right);
environment()->BindAccumulator(node, Environment::kAttachFrameState);
}
void BytecodeGraphBuilder::BuildTestingOp(const Operator* op) {
PrepareEagerCheckpoint();
Node* left =
......
......@@ -333,6 +333,7 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::GetSuperConstructor(Register out) {
BytecodeArrayBuilder& BytecodeArrayBuilder::CompareOperation(
Token::Value op, Register reg, int feedback_slot) {
DCHECK(feedback_slot != kNoFeedbackSlot);
switch (op) {
case Token::Value::EQ:
OutputTestEqual(reg, feedback_slot);
......@@ -352,6 +353,18 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::CompareOperation(
case Token::Value::GTE:
OutputTestGreaterThanOrEqual(reg, feedback_slot);
break;
default:
UNREACHABLE();
}
return *this;
}
BytecodeArrayBuilder& BytecodeArrayBuilder::CompareOperation(Token::Value op,
Register reg) {
switch (op) {
case Token::Value::EQ_STRICT:
OutputTestEqualStrictNoFeedback(reg);
break;
case Token::Value::INSTANCEOF:
OutputTestInstanceOf(reg);
break;
......
......@@ -311,7 +311,8 @@ class V8_EXPORT_PRIVATE BytecodeArrayBuilder final
// Tests.
BytecodeArrayBuilder& CompareOperation(Token::Value op, Register reg,
int feedback_slot = kNoFeedbackSlot);
int feedback_slot);
BytecodeArrayBuilder& CompareOperation(Token::Value op, Register reg);
BytecodeArrayBuilder& CompareTypeOf(
TestTypeOfFlags::LiteralFlag literal_flag);
......
......@@ -817,7 +817,7 @@ void BytecodeGenerator::VisitIterationHeader(IterationStatement* stmt,
BytecodeLabel not_resuming;
builder()
->LoadLiteral(Smi::FromInt(JSGeneratorObject::kGeneratorExecuting))
.CompareOperation(Token::Value::EQ, generator_state_)
.CompareOperation(Token::Value::EQ_STRICT, generator_state_)
.JumpIfTrue(&not_resuming);
BuildIndexedJump(generator_state_, first_yield,
stmt->yield_count(), generator_resume_points_);
......@@ -2987,7 +2987,11 @@ void BytecodeGenerator::VisitCompareOperation(CompareOperation* expr) {
VisitForAccumulatorValue(expr->right());
builder()->SetExpressionPosition(expr);
FeedbackSlot slot = expr->CompareOperationFeedbackSlot();
builder()->CompareOperation(expr->op(), lhs, feedback_index(slot));
if (slot.IsInvalid()) {
builder()->CompareOperation(expr->op(), lhs);
} else {
builder()->CompareOperation(expr->op(), lhs, feedback_index(slot));
}
}
}
......
......@@ -205,6 +205,7 @@ namespace interpreter {
OperandType::kIdx) \
V(TestGreaterThanOrEqual, AccumulatorUse::kReadWrite, OperandType::kReg, \
OperandType::kIdx) \
V(TestEqualStrictNoFeedback, AccumulatorUse::kReadWrite, OperandType::kReg) \
V(TestInstanceOf, AccumulatorUse::kReadWrite, OperandType::kReg) \
V(TestIn, AccumulatorUse::kReadWrite, OperandType::kReg) \
V(TestUndetectable, AccumulatorUse::kWrite, OperandType::kReg) \
......@@ -506,6 +507,7 @@ class V8_EXPORT_PRIVATE Bytecodes final {
case Bytecode::kTestGreaterThanOrEqual:
case Bytecode::kTestInstanceOf:
case Bytecode::kTestIn:
case Bytecode::kTestEqualStrictNoFeedback:
case Bytecode::kTestUndetectable:
case Bytecode::kTestTypeOf:
case Bytecode::kForInContinue:
......
......@@ -987,164 +987,152 @@ void InterpreterGenerator::DoCompareOpWithFeedback(
Node* slot_index = __ BytecodeOperandIdx(1);
Node* feedback_vector = __ LoadFeedbackVector();
// TODO(interpreter): the only reason this check is here is because we
// sometimes emit comparisons that shouldn't collect feedback (e.g.
// try-finally blocks and generators), and we could get rid of this by
// introducing Smi equality tests.
Label gather_type_feedback(assembler), do_compare(assembler);
__ Branch(__ WordEqual(slot_index, __ IntPtrConstant(0)), &do_compare,
&gather_type_feedback);
__ Bind(&gather_type_feedback);
{
Variable var_type_feedback(assembler, MachineRepresentation::kTaggedSigned);
Label lhs_is_not_smi(assembler), lhs_is_not_number(assembler),
lhs_is_not_string(assembler), gather_rhs_type(assembler),
update_feedback(assembler);
Variable var_type_feedback(assembler, MachineRepresentation::kTaggedSigned);
Label lhs_is_not_smi(assembler), lhs_is_not_number(assembler),
lhs_is_not_string(assembler), gather_rhs_type(assembler),
update_feedback(assembler), do_compare(assembler);
__ GotoIfNot(__ TaggedIsSmi(lhs), &lhs_is_not_smi);
__ GotoIfNot(__ TaggedIsSmi(lhs), &lhs_is_not_smi);
var_type_feedback.Bind(
__ SmiConstant(CompareOperationFeedback::kSignedSmall));
var_type_feedback.Bind(
__ SmiConstant(CompareOperationFeedback::kSignedSmall));
__ Goto(&gather_rhs_type);
__ Bind(&lhs_is_not_smi);
{
Node* lhs_map = __ LoadMap(lhs);
__ GotoIfNot(__ IsHeapNumberMap(lhs_map), &lhs_is_not_number);
var_type_feedback.Bind(__ SmiConstant(CompareOperationFeedback::kNumber));
__ Goto(&gather_rhs_type);
__ Bind(&lhs_is_not_smi);
__ Bind(&lhs_is_not_number);
{
Node* lhs_map = __ LoadMap(lhs);
__ GotoIfNot(__ IsHeapNumberMap(lhs_map), &lhs_is_not_number);
Node* lhs_instance_type = __ LoadInstanceType(lhs);
if (Token::IsOrderedRelationalCompareOp(compare_op)) {
Label lhs_is_not_oddball(assembler);
__ GotoIfNot(
__ Word32Equal(lhs_instance_type, __ Int32Constant(ODDBALL_TYPE)),
&lhs_is_not_oddball);
var_type_feedback.Bind(
__ SmiConstant(CompareOperationFeedback::kNumberOrOddball));
__ Goto(&gather_rhs_type);
__ Bind(&lhs_is_not_oddball);
}
var_type_feedback.Bind(__ SmiConstant(CompareOperationFeedback::kNumber));
Label lhs_is_not_string(assembler);
__ GotoIfNot(__ IsStringInstanceType(lhs_instance_type),
&lhs_is_not_string);
if (Token::IsOrderedRelationalCompareOp(compare_op)) {
var_type_feedback.Bind(
__ SmiConstant(CompareOperationFeedback::kString));
} else {
var_type_feedback.Bind(__ SelectSmiConstant(
__ Word32Equal(
__ Word32And(lhs_instance_type,
__ Int32Constant(kIsNotInternalizedMask)),
__ Int32Constant(kInternalizedTag)),
CompareOperationFeedback::kInternalizedString,
CompareOperationFeedback::kString));
}
__ Goto(&gather_rhs_type);
__ Bind(&lhs_is_not_string);
if (Token::IsEqualityOp(compare_op)) {
var_type_feedback.Bind(
__ SelectSmiConstant(__ IsJSReceiverInstanceType(lhs_instance_type),
CompareOperationFeedback::kReceiver,
CompareOperationFeedback::kAny));
} else {
var_type_feedback.Bind(__ SmiConstant(CompareOperationFeedback::kAny));
}
__ Goto(&gather_rhs_type);
}
}
__ Bind(&gather_rhs_type);
{
Label rhs_is_not_smi(assembler), rhs_is_not_number(assembler);
__ GotoIfNot(__ TaggedIsSmi(rhs), &rhs_is_not_smi);
var_type_feedback.Bind(
__ SmiOr(var_type_feedback.value(),
__ SmiConstant(CompareOperationFeedback::kSignedSmall)));
__ Goto(&update_feedback);
__ Bind(&rhs_is_not_smi);
{
Node* rhs_map = __ LoadMap(rhs);
__ GotoIfNot(__ IsHeapNumberMap(rhs_map), &rhs_is_not_number);
var_type_feedback.Bind(
__ SmiOr(var_type_feedback.value(),
__ SmiConstant(CompareOperationFeedback::kNumber)));
__ Goto(&update_feedback);
__ Bind(&lhs_is_not_number);
__ Bind(&rhs_is_not_number);
{
Node* lhs_instance_type = __ LoadInstanceType(lhs);
Node* rhs_instance_type = __ LoadInstanceType(rhs);
if (Token::IsOrderedRelationalCompareOp(compare_op)) {
Label lhs_is_not_oddball(assembler);
Label rhs_is_not_oddball(assembler);
__ GotoIfNot(
__ Word32Equal(lhs_instance_type, __ Int32Constant(ODDBALL_TYPE)),
&lhs_is_not_oddball);
__ Word32Equal(rhs_instance_type, __ Int32Constant(ODDBALL_TYPE)),
&rhs_is_not_oddball);
var_type_feedback.Bind(
__ SmiConstant(CompareOperationFeedback::kNumberOrOddball));
__ Goto(&gather_rhs_type);
var_type_feedback.Bind(__ SmiOr(
var_type_feedback.value(),
__ SmiConstant(CompareOperationFeedback::kNumberOrOddball)));
__ Goto(&update_feedback);
__ Bind(&lhs_is_not_oddball);
__ Bind(&rhs_is_not_oddball);
}
Label lhs_is_not_string(assembler);
__ GotoIfNot(__ IsStringInstanceType(lhs_instance_type),
&lhs_is_not_string);
Label rhs_is_not_string(assembler);
__ GotoIfNot(__ IsStringInstanceType(rhs_instance_type),
&rhs_is_not_string);
if (Token::IsOrderedRelationalCompareOp(compare_op)) {
var_type_feedback.Bind(
__ SmiConstant(CompareOperationFeedback::kString));
__ SmiOr(var_type_feedback.value(),
__ SmiConstant(CompareOperationFeedback::kString)));
} else {
var_type_feedback.Bind(__ SelectSmiConstant(
__ Word32Equal(
__ Word32And(lhs_instance_type,
__ Int32Constant(kIsNotInternalizedMask)),
__ Int32Constant(kInternalizedTag)),
CompareOperationFeedback::kInternalizedString,
CompareOperationFeedback::kString));
var_type_feedback.Bind(__ SmiOr(
var_type_feedback.value(),
__ SelectSmiConstant(
__ Word32Equal(
__ Word32And(rhs_instance_type,
__ Int32Constant(kIsNotInternalizedMask)),
__ Int32Constant(kInternalizedTag)),
CompareOperationFeedback::kInternalizedString,
CompareOperationFeedback::kString)));
}
__ Goto(&gather_rhs_type);
__ Goto(&update_feedback);
__ Bind(&lhs_is_not_string);
__ Bind(&rhs_is_not_string);
if (Token::IsEqualityOp(compare_op)) {
var_type_feedback.Bind(__ SelectSmiConstant(
__ IsJSReceiverInstanceType(lhs_instance_type),
CompareOperationFeedback::kReceiver,
CompareOperationFeedback::kAny));
var_type_feedback.Bind(
__ SmiOr(var_type_feedback.value(),
__ SelectSmiConstant(
__ IsJSReceiverInstanceType(rhs_instance_type),
CompareOperationFeedback::kReceiver,
CompareOperationFeedback::kAny)));
} else {
var_type_feedback.Bind(
__ SmiConstant(CompareOperationFeedback::kAny));
}
__ Goto(&gather_rhs_type);
}
}
__ Bind(&gather_rhs_type);
{
Label rhs_is_not_smi(assembler), rhs_is_not_number(assembler);
__ GotoIfNot(__ TaggedIsSmi(rhs), &rhs_is_not_smi);
var_type_feedback.Bind(
__ SmiOr(var_type_feedback.value(),
__ SmiConstant(CompareOperationFeedback::kSignedSmall)));
__ Goto(&update_feedback);
__ Bind(&rhs_is_not_smi);
{
Node* rhs_map = __ LoadMap(rhs);
__ GotoIfNot(__ IsHeapNumberMap(rhs_map), &rhs_is_not_number);
var_type_feedback.Bind(
__ SmiOr(var_type_feedback.value(),
__ SmiConstant(CompareOperationFeedback::kNumber)));
__ Goto(&update_feedback);
__ Bind(&rhs_is_not_number);
{
Node* rhs_instance_type = __ LoadInstanceType(rhs);
if (Token::IsOrderedRelationalCompareOp(compare_op)) {
Label rhs_is_not_oddball(assembler);
__ GotoIfNot(__ Word32Equal(rhs_instance_type,
__ Int32Constant(ODDBALL_TYPE)),
&rhs_is_not_oddball);
var_type_feedback.Bind(__ SmiOr(
var_type_feedback.value(),
__ SmiConstant(CompareOperationFeedback::kNumberOrOddball)));
__ Goto(&update_feedback);
__ Bind(&rhs_is_not_oddball);
}
Label rhs_is_not_string(assembler);
__ GotoIfNot(__ IsStringInstanceType(rhs_instance_type),
&rhs_is_not_string);
if (Token::IsOrderedRelationalCompareOp(compare_op)) {
var_type_feedback.Bind(
__ SmiOr(var_type_feedback.value(),
__ SmiConstant(CompareOperationFeedback::kString)));
} else {
var_type_feedback.Bind(__ SmiOr(
var_type_feedback.value(),
__ SelectSmiConstant(
__ Word32Equal(
__ Word32And(rhs_instance_type,
__ Int32Constant(kIsNotInternalizedMask)),
__ Int32Constant(kInternalizedTag)),
CompareOperationFeedback::kInternalizedString,
CompareOperationFeedback::kString)));
}
__ Goto(&update_feedback);
__ Bind(&rhs_is_not_string);
if (Token::IsEqualityOp(compare_op)) {
var_type_feedback.Bind(
__ SmiOr(var_type_feedback.value(),
__ SelectSmiConstant(
__ IsJSReceiverInstanceType(rhs_instance_type),
CompareOperationFeedback::kReceiver,
CompareOperationFeedback::kAny)));
} else {
var_type_feedback.Bind(
__ SmiConstant(CompareOperationFeedback::kAny));
}
__ Goto(&update_feedback);
}
}
}
}
__ Bind(&update_feedback);
{
__ UpdateFeedback(var_type_feedback.value(), feedback_vector, slot_index);
__ Goto(&do_compare);
}
__ Bind(&update_feedback);
{
__ UpdateFeedback(var_type_feedback.value(), feedback_vector, slot_index);
__ Goto(&do_compare);
}
__ Bind(&do_compare);
......@@ -2291,6 +2279,24 @@ void InterpreterGenerator::DoTestGreaterThanOrEqual(
DoCompareOpWithFeedback(Token::Value::GTE, assembler);
}
// TestEqualStrictNoFeedback <src>
//
// Test if the value in the <src> register is strictly equal to the accumulator.
// Type feedback is not collected.
void InterpreterGenerator::DoTestEqualStrictNoFeedback(
InterpreterAssembler* assembler) {
Node* reg_index = __ BytecodeOperandReg(0);
Node* lhs = __ LoadRegister(reg_index);
Node* rhs = __ GetAccumulator();
// TODO(5310): This is called only when lhs and rhs are Smis (for ex:
// try-finally or generators) or strings (only when visiting
// ClassLiteralProperties). We should be able to optimize this and not perform
// the full strict equality.
Node* result = assembler->StrictEqual(lhs, rhs);
__ SetAccumulator(result);
__ Dispatch();
}
// TestIn <src>
//
// Test if the object referenced by the register operand is a property of the
......
......@@ -118,7 +118,7 @@ snippet: "
"
frame size: 10
parameter count: 1
bytecode array length: 117
bytecode array length: 116
bytecodes: [
B(CreateFunctionContext), U8(2),
B(PushContext), R(3),
......@@ -153,7 +153,7 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(5),
/* 106 E> */ B(ToName), R(7),
B(LdaConstant), U8(4),
B(TestEqualStrict), R(7), U8(0),
B(TestEqualStrictNoFeedback), R(7),
B(Mov), R(4), R(6),
B(JumpIfToBooleanFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
......
......@@ -16,22 +16,22 @@ snippet: "
"
frame size: 19
parameter count: 1
bytecode array length: 1046
bytecode array length: 1027
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(42),
B(JumpIfUndefined), U8(39),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
B(LdaZero),
B(TestEqualStrict), R(3), U8(0),
B(JumpIfTrue), U8(134),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(132),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(3), U8(0),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrueConstant), U8(12),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(3), U8(0),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrueConstant), U8(14),
B(LdaSmi), I8(78),
B(Star), R(5),
......@@ -79,10 +79,10 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(14), U8(1),
/* 43 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(LdaSmi), I8(-2),
B(TestEqual), R(3), U8(0),
B(JumpIfTrue), U8(17),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(16),
B(LdaZero),
B(TestEqualStrict), R(3), U8(0),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(74),
B(LdaSmi), I8(78),
B(Star), R(13),
......@@ -117,10 +117,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrict), R(16), U8(0),
B(JumpIfTrue), U8(31),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(30),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(16), U8(0),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(21),
B(Jump), U8(2),
B(LdaTrue),
......@@ -164,7 +164,7 @@ bytecodes: [
B(PopContext), R(2),
B(LdaZero),
B(StaContextSlot), R(1), U8(9), U8(0),
B(JumpLoop), U8(225), I8(0),
B(JumpLoop), U8(221), I8(0),
B(Jump), U8(48),
B(Star), R(13),
B(Ldar), R(closure),
......@@ -212,7 +212,7 @@ bytecodes: [
B(Star), R(12),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(12), U8(24),
B(JumpIfFalse), U8(180),
B(JumpIfFalse), U8(178),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
......@@ -254,10 +254,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrict), R(16), U8(0),
B(JumpIfTrue), U8(39),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(38),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(16), U8(0),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(29),
B(Jump), U8(2),
B(LdaTrue),
......@@ -285,7 +285,7 @@ bytecodes: [
B(Ldar), R(12),
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(159),
B(Jump), U8(157),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(7), U8(0),
......@@ -316,10 +316,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(LdaZero),
B(TestEqualStrict), R(15), U8(0),
B(JumpIfTrue), U8(40),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(39),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(15), U8(0),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(30),
B(Jump), U8(2),
B(LdaTrue),
......@@ -333,7 +333,7 @@ bytecodes: [
B(Star), R(6),
B(LdaSmi), I8(1),
B(Star), R(5),
B(Jump), U8(170),
B(Jump), U8(168),
B(Ldar), R(14),
B(ReThrow),
B(Ldar), R(14),
......@@ -349,10 +349,10 @@ bytecodes: [
B(Ldar), R(11),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(9), U8(0),
B(JumpIfTrue), U8(11),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(10),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(9), U8(0),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(21),
B(Jump), U8(26),
B(PopContext), R(1),
......@@ -422,22 +422,22 @@ bytecodes: [
B(Ldar), R(7),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(39),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(34),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(35),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(5), U8(0),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(31),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(3),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(27),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(25),
B(LdaSmi), I8(4),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(23),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(5),
B(TestEqualStrict), R(5), U8(0),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(19),
B(Jump), U8(20),
B(Ldar), R(6),
......@@ -468,20 +468,20 @@ constant pool: [
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
Smi [563],
Smi [558],
FIXED_ARRAY_TYPE,
Smi [705],
Smi [350],
Smi [376],
Smi [699],
Smi [346],
Smi [372],
FIXED_ARRAY_TYPE,
Smi [320],
Smi [316],
]
handlers: [
[83, 953, 959],
[86, 899, 901],
[103, 429, 435],
[106, 381, 383],
[525, 652, 654],
[80, 940, 946],
[83, 886, 888],
[100, 422, 428],
[103, 374, 376],
[518, 643, 645],
]
---
......@@ -493,22 +493,22 @@ snippet: "
"
frame size: 19
parameter count: 1
bytecode array length: 1106
bytecode array length: 1085
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(42),
B(JumpIfUndefined), U8(39),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
B(LdaZero),
B(TestEqualStrict), R(3), U8(0),
B(JumpIfTrue), U8(134),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(132),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(3), U8(0),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrueConstant), U8(12),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(3), U8(0),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrueConstant), U8(14),
B(LdaSmi), I8(78),
B(Star), R(5),
......@@ -556,10 +556,10 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(14), U8(1),
/* 43 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(LdaSmi), I8(-2),
B(TestEqual), R(3), U8(0),
B(JumpIfTrue), U8(17),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(16),
B(LdaZero),
B(TestEqualStrict), R(3), U8(0),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(74),
B(LdaSmi), I8(78),
B(Star), R(13),
......@@ -594,10 +594,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrict), R(16), U8(0),
B(JumpIfTrue), U8(31),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(30),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(16), U8(0),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(21),
B(Jump), U8(2),
B(LdaTrue),
......@@ -696,7 +696,7 @@ bytecodes: [
B(Star), R(12),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(12), U8(24),
B(JumpIfFalse), U8(180),
B(JumpIfFalse), U8(178),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
......@@ -738,10 +738,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrict), R(16), U8(0),
B(JumpIfTrue), U8(39),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(38),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(16), U8(0),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(29),
B(Jump), U8(2),
B(LdaTrue),
......@@ -769,7 +769,7 @@ bytecodes: [
B(Ldar), R(12),
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(159),
B(Jump), U8(157),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(7), U8(0),
......@@ -800,10 +800,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(LdaZero),
B(TestEqualStrict), R(15), U8(0),
B(JumpIfTrue), U8(40),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(39),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(15), U8(0),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(30),
B(Jump), U8(2),
B(LdaTrue),
......@@ -817,7 +817,7 @@ bytecodes: [
B(Star), R(6),
B(LdaSmi), I8(1),
B(Star), R(5),
B(Jump), U8(194),
B(Jump), U8(191),
B(Ldar), R(14),
B(ReThrow),
B(Ldar), R(14),
......@@ -833,13 +833,13 @@ bytecodes: [
B(Ldar), R(11),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(9), U8(0),
B(JumpIfTrue), U8(18),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(16),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(9), U8(0),
B(JumpIfTrue), U8(28),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(27),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(9), U8(0),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(38),
B(Jump), U8(43),
B(PopContext), R(1),
......@@ -917,25 +917,25 @@ bytecodes: [
B(Ldar), R(7),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(46),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(40),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(42),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(37),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(38),
B(LdaSmi), I8(3),
B(TestEqualStrict), R(5), U8(0),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(34),
B(LdaSmi), I8(3),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(31),
B(LdaSmi), I8(4),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(44),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(42),
B(LdaSmi), I8(5),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(40),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(39),
B(LdaSmi), I8(6),
B(TestEqualStrict), R(5), U8(0),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(36),
B(Jump), U8(37),
B(Ldar), R(6),
......@@ -974,20 +974,20 @@ constant pool: [
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
Smi [575],
Smi [570],
FIXED_ARRAY_TYPE,
Smi [717],
Smi [350],
Smi [376],
Smi [711],
Smi [346],
Smi [372],
FIXED_ARRAY_TYPE,
Smi [344],
Smi [339],
]
handlers: [
[83, 989, 995],
[86, 935, 937],
[103, 441, 447],
[106, 393, 395],
[537, 664, 666],
[80, 975, 981],
[83, 921, 923],
[100, 434, 440],
[103, 386, 388],
[530, 655, 657],
]
---
......@@ -1002,22 +1002,22 @@ snippet: "
"
frame size: 19
parameter count: 1
bytecode array length: 1083
bytecode array length: 1061
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(42),
B(JumpIfUndefined), U8(39),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
B(LdaZero),
B(TestEqualStrict), R(3), U8(0),
B(JumpIfTrue), U8(134),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(132),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(3), U8(0),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrueConstant), U8(12),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(3), U8(0),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrueConstant), U8(14),
B(LdaSmi), I8(78),
B(Star), R(5),
......@@ -1065,10 +1065,10 @@ bytecodes: [
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(14), U8(1),
/* 43 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(LdaSmi), I8(-2),
B(TestEqual), R(3), U8(0),
B(JumpIfTrue), U8(17),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(16),
B(LdaZero),
B(TestEqualStrict), R(3), U8(0),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(74),
B(LdaSmi), I8(78),
B(Star), R(13),
......@@ -1103,10 +1103,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrict), R(16), U8(0),
B(JumpIfTrue), U8(31),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(30),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(16), U8(0),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(21),
B(Jump), U8(2),
B(LdaTrue),
......@@ -1116,7 +1116,7 @@ bytecodes: [
B(Star), R(10),
B(LdaZero),
B(Star), R(9),
B(Jump), U8(192),
B(Jump), U8(189),
B(Ldar), R(15),
B(ReThrow),
B(Ldar), R(15),
......@@ -1130,7 +1130,7 @@ bytecodes: [
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(5), U8(15),
B(JumpIfToBooleanTrue), U8(93),
B(JumpIfToBooleanTrue), U8(90),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(6), U8(17),
......@@ -1162,11 +1162,11 @@ bytecodes: [
B(JumpIfFalse), U8(8),
/* 103 S> */ B(PopContext), R(2),
B(PopContext), R(2),
B(Jump), U8(15),
B(Jump), U8(12),
B(PopContext), R(2),
B(LdaZero),
B(StaContextSlot), R(1), U8(9), U8(0),
B(Wide), B(JumpLoop), U16(260), I16(0),
B(JumpLoop), U8(255), I8(0),
B(Jump), U8(48),
B(Star), R(13),
B(Ldar), R(closure),
......@@ -1214,7 +1214,7 @@ bytecodes: [
B(Star), R(12),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(12), U8(26),
B(JumpIfFalse), U8(180),
B(JumpIfFalse), U8(178),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(TestTypeOf), U8(5),
B(JumpIfFalse), U8(4),
......@@ -1256,10 +1256,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(14), U8(1),
B(Star), R(16),
B(LdaZero),
B(TestEqualStrict), R(16), U8(0),
B(JumpIfTrue), U8(39),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(38),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(16), U8(0),
B(TestEqualStrictNoFeedback), R(16),
B(JumpIfTrue), U8(29),
B(Jump), U8(2),
B(LdaTrue),
......@@ -1287,7 +1287,7 @@ bytecodes: [
B(Ldar), R(12),
B(PushContext), R(2),
B(PopContext), R(2),
B(Jump), U8(159),
B(Jump), U8(157),
B(LdaContextSlot), R(1), U8(13), U8(0),
B(Star), R(12),
B(LdaContextSlot), R(1), U8(7), U8(0),
......@@ -1318,10 +1318,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(LdaZero),
B(TestEqualStrict), R(15), U8(0),
B(JumpIfTrue), U8(40),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(39),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(15), U8(0),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(30),
B(Jump), U8(2),
B(LdaTrue),
......@@ -1335,7 +1335,7 @@ bytecodes: [
B(Star), R(6),
B(LdaSmi), I8(1),
B(Star), R(5),
B(Jump), U8(170),
B(Jump), U8(168),
B(Ldar), R(14),
B(ReThrow),
B(Ldar), R(14),
......@@ -1351,10 +1351,10 @@ bytecodes: [
B(Ldar), R(11),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(9), U8(0),
B(JumpIfTrue), U8(11),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(10),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(9), U8(0),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(21),
B(Jump), U8(26),
B(PopContext), R(1),
......@@ -1424,22 +1424,22 @@ bytecodes: [
B(Ldar), R(7),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(39),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(34),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(35),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(5), U8(0),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(31),
B(LdaSmi), I8(2),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(3),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(27),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(25),
B(LdaSmi), I8(4),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(23),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(5),
B(TestEqualStrict), R(5), U8(0),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(19),
B(Jump), U8(20),
B(Ldar), R(6),
......@@ -1470,20 +1470,20 @@ constant pool: [
FIXED_ARRAY_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
Smi [600],
Smi [592],
FIXED_ARRAY_TYPE,
Smi [742],
Smi [350],
Smi [376],
Smi [733],
Smi [346],
Smi [372],
FIXED_ARRAY_TYPE,
Smi [320],
Smi [316],
]
handlers: [
[83, 990, 996],
[86, 936, 938],
[103, 466, 472],
[106, 418, 420],
[562, 689, 691],
[80, 974, 980],
[83, 920, 922],
[100, 456, 462],
[103, 408, 410],
[552, 677, 679],
]
---
......@@ -1496,7 +1496,7 @@ snippet: "
"
frame size: 14
parameter count: 1
bytecode array length: 588
bytecode array length: 582
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(22),
......@@ -1667,10 +1667,10 @@ bytecodes: [
B(Ldar), R(10),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(8), U8(0),
B(JumpIfTrue), U8(11),
B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(10),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(8), U8(0),
B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(12),
B(Jump), U8(13),
B(LdaZero),
......@@ -1733,16 +1733,16 @@ bytecodes: [
B(Ldar), R(6),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(4), U8(0),
B(JumpIfTrue), U8(25),
B(TestEqualStrictNoFeedback), R(4),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(4), U8(0),
B(JumpIfTrue), U8(35),
B(TestEqualStrictNoFeedback), R(4),
B(JumpIfTrue), U8(33),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(4), U8(0),
B(JumpIfTrue), U8(31),
B(TestEqualStrictNoFeedback), R(4),
B(JumpIfTrue), U8(30),
B(LdaSmi), I8(3),
B(TestEqualStrict), R(4), U8(0),
B(TestEqualStrictNoFeedback), R(4),
B(JumpIfTrue), U8(27),
B(Jump), U8(28),
B(LdaCurrentContextSlot), U8(13),
......@@ -1778,8 +1778,8 @@ constant pool: [
FIXED_ARRAY_TYPE,
]
handlers: [
[63, 501, 507],
[66, 447, 449],
[63, 499, 505],
[66, 445, 447],
[81, 241, 247],
[84, 193, 195],
[325, 337, 339],
......
......@@ -11,7 +11,7 @@ snippet: "
"
frame size: 15
parameter count: 1
bytecode array length: 264
bytecode array length: 263
bytecodes: [
/* 30 E> */ B(StackCheck),
B(LdaZero),
......@@ -117,7 +117,7 @@ bytecodes: [
B(Ldar), R(11),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(9), U8(0),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(4),
B(Jump), U8(5),
B(Ldar), R(10),
......@@ -150,7 +150,7 @@ snippet: "
"
frame size: 16
parameter count: 1
bytecode array length: 278
bytecode array length: 276
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaConstant), U8(0),
......@@ -258,10 +258,10 @@ bytecodes: [
B(Ldar), R(12),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(10), U8(0),
B(JumpIfTrue), U8(11),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(10),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(10), U8(0),
B(TestEqualStrictNoFeedback), R(10),
B(JumpIfTrue), U8(7),
B(Jump), U8(8),
B(Ldar), R(11),
......@@ -298,7 +298,7 @@ snippet: "
"
frame size: 15
parameter count: 1
bytecode array length: 282
bytecode array length: 281
bytecodes: [
/* 30 E> */ B(StackCheck),
B(LdaZero),
......@@ -412,7 +412,7 @@ bytecodes: [
B(Ldar), R(11),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(9), U8(0),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(4),
B(Jump), U8(5),
B(Ldar), R(10),
......@@ -445,7 +445,7 @@ snippet: "
"
frame size: 14
parameter count: 1
bytecode array length: 289
bytecode array length: 287
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(2), U8(1), R(8),
......@@ -556,10 +556,10 @@ bytecodes: [
B(Ldar), R(10),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(8), U8(0),
B(JumpIfTrue), U8(11),
B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(10),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(8), U8(0),
B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(7),
B(Jump), U8(8),
B(Ldar), R(9),
......
......@@ -13,16 +13,16 @@ snippet: "
"
frame size: 12
parameter count: 1
bytecode array length: 204
bytecode array length: 198
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(28),
B(JumpIfUndefined), U8(27),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(2),
B(ResumeGenerator), R(new_target),
B(Star), R(1),
B(LdaZero),
B(TestEqualStrict), R(1), U8(0),
B(TestEqualStrictNoFeedback), R(1),
B(JumpIfTrue), U8(53),
B(LdaSmi), I8(78),
B(Star), R(3),
......@@ -54,10 +54,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
B(Star), R(9),
B(LdaZero),
B(TestEqualStrict), R(9), U8(0),
B(JumpIfTrue), U8(31),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(30),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(9), U8(0),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(21),
B(Jump), U8(2),
B(LdaTrue),
......@@ -94,13 +94,13 @@ bytecodes: [
B(Ldar), R(5),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(3), U8(0),
B(JumpIfTrue), U8(18),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(16),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(3), U8(0),
B(JumpIfTrue), U8(14),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(13),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(3), U8(0),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(10),
B(Jump), U8(11),
B(Ldar), R(4),
......@@ -115,7 +115,7 @@ bytecodes: [
constant pool: [
]
handlers: [
[46, 143, 149],
[45, 140, 146],
]
---
......@@ -125,20 +125,20 @@ snippet: "
"
frame size: 12
parameter count: 1
bytecode array length: 299
bytecode array length: 289
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(35),
B(JumpIfUndefined), U8(33),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(2),
B(ResumeGenerator), R(new_target),
B(Star), R(1),
B(LdaZero),
B(TestEqualStrict), R(1), U8(0),
B(JumpIfTrue), U8(60),
B(TestEqualStrictNoFeedback), R(1),
B(JumpIfTrue), U8(59),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(1), U8(0),
B(JumpIfTrue), U8(130),
B(TestEqualStrictNoFeedback), R(1),
B(JumpIfTrue), U8(128),
B(LdaSmi), I8(78),
B(Star), R(3),
B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1),
......@@ -169,10 +169,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
B(Star), R(9),
B(LdaZero),
B(TestEqualStrict), R(9), U8(0),
B(JumpIfTrue), U8(31),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(30),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(9), U8(0),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(21),
B(Jump), U8(2),
B(LdaTrue),
......@@ -182,7 +182,7 @@ bytecodes: [
B(Star), R(4),
B(LdaZero),
B(Star), R(3),
B(Jump), U8(113),
B(Jump), U8(111),
B(Ldar), R(8),
/* 11 E> */ B(Throw),
/* 16 S> */ B(LdaSmi), I8(42),
......@@ -204,10 +204,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
B(Star), R(9),
B(LdaZero),
B(TestEqualStrict), R(9), U8(0),
B(JumpIfTrue), U8(32),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(31),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(9), U8(0),
B(TestEqualStrictNoFeedback), R(9),
B(JumpIfTrue), U8(22),
B(Jump), U8(2),
B(LdaTrue),
......@@ -244,16 +244,16 @@ bytecodes: [
B(Ldar), R(5),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(3), U8(0),
B(JumpIfTrue), U8(25),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(3), U8(0),
B(JumpIfTrue), U8(21),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(19),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(3), U8(0),
B(JumpIfTrue), U8(17),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(16),
B(LdaSmi), I8(3),
B(TestEqualStrict), R(3), U8(0),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(13),
B(Jump), U8(14),
B(Ldar), R(4),
......@@ -270,7 +270,7 @@ bytecodes: [
constant pool: [
]
handlers: [
[53, 228, 234],
[51, 222, 228],
]
---
......@@ -280,20 +280,20 @@ snippet: "
"
frame size: 18
parameter count: 1
bytecode array length: 767
bytecode array length: 752
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(35),
B(JumpIfUndefined), U8(33),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
B(LdaZero),
B(TestEqualStrict), R(3), U8(0),
B(JumpIfTrue), U8(60),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(59),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(3), U8(0),
B(JumpIfTrue), U8(153),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(151),
B(LdaSmi), I8(78),
B(Star), R(5),
B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
......@@ -324,10 +324,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(LdaZero),
B(TestEqualStrict), R(11), U8(0),
B(JumpIfTrue), U8(31),
B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(30),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(11), U8(0),
B(TestEqualStrictNoFeedback), R(11),
B(JumpIfTrue), U8(21),
B(Jump), U8(2),
B(LdaTrue),
......@@ -358,10 +358,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
/* 30 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
B(LdaSmi), I8(-2),
B(TestEqual), R(3), U8(0),
B(JumpIfTrue), U8(18),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(17),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(3), U8(0),
B(TestEqualStrictNoFeedback), R(3),
B(JumpIfTrue), U8(133),
B(LdaSmi), I8(78),
B(Star), R(12),
......@@ -382,7 +382,7 @@ bytecodes: [
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(4), U8(11),
B(JumpIfToBooleanTrue), U8(147),
B(JumpIfToBooleanTrue), U8(145),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(5), U8(13),
......@@ -418,10 +418,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(LdaZero),
B(TestEqualStrict), R(15), U8(0),
B(JumpIfTrue), U8(43),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(42),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(15), U8(0),
B(TestEqualStrictNoFeedback), R(15),
B(JumpIfTrue), U8(33),
B(Jump), U8(2),
B(LdaTrue),
......@@ -443,7 +443,7 @@ bytecodes: [
B(PopContext), R(2),
B(LdaZero),
B(StaContextSlot), R(1), U8(9), U8(0),
B(JumpLoop), U8(217), I8(0),
B(JumpLoop), U8(213), I8(0),
B(Jump), U8(44),
B(Star), R(12),
B(Ldar), R(closure),
......@@ -533,10 +533,10 @@ bytecodes: [
B(Ldar), R(10),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(8), U8(0),
B(JumpIfTrue), U8(11),
B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(10),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(8), U8(0),
B(TestEqualStrictNoFeedback), R(8),
B(JumpIfTrue), U8(17),
B(Jump), U8(28),
B(PopContext), R(1),
......@@ -576,19 +576,19 @@ bytecodes: [
B(Ldar), R(7),
B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(32),
B(LdaSmi), I8(1),
B(TestEqualStrict), R(5), U8(0),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(28),
B(LdaSmi), I8(1),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(25),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(24),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(22),
B(LdaSmi), I8(3),
B(TestEqualStrict), R(5), U8(0),
B(JumpIfTrue), U8(20),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(19),
B(LdaSmi), I8(4),
B(TestEqualStrict), R(5), U8(0),
B(TestEqualStrictNoFeedback), R(5),
B(JumpIfTrue), U8(16),
B(Jump), U8(17),
B(Ldar), R(6),
......@@ -617,12 +617,12 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
FIXED_ARRAY_TYPE,
Smi [571],
Smi [565],
]
handlers: [
[53, 686, 692],
[149, 443, 449],
[152, 399, 401],
[539, 555, 557],
[51, 676, 682],
[145, 435, 441],
[148, 391, 393],
[531, 547, 549],
]
......@@ -13,16 +13,16 @@ snippet: "
"
frame size: 9
parameter count: 2
bytecode array length: 145
bytecode array length: 142
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(28),
B(JumpIfUndefined), U8(27),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(2),
B(ResumeGenerator), R(new_target),
B(Star), R(1),
B(LdaZero),
B(TestEqualStrict), R(1), U8(0),
B(TestEqualStrictNoFeedback), R(1),
B(JumpIfTrue), U8(63),
B(LdaSmi), I8(78),
B(Star), R(3),
......@@ -57,10 +57,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrict), R(6), U8(0),
B(JumpIfTrue), U8(25),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(24),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(6), U8(0),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(15),
B(Jump), U8(2),
B(LdaTrue),
......@@ -91,16 +91,16 @@ snippet: "
"
frame size: 9
parameter count: 2
bytecode array length: 145
bytecode array length: 142
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(28),
B(JumpIfUndefined), U8(27),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(2),
B(ResumeGenerator), R(new_target),
B(Star), R(1),
B(LdaZero),
B(TestEqualStrict), R(1), U8(0),
B(TestEqualStrictNoFeedback), R(1),
B(JumpIfTrue), U8(63),
B(LdaSmi), I8(78),
B(Star), R(3),
......@@ -135,10 +135,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrict), R(6), U8(0),
B(JumpIfTrue), U8(25),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(24),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(6), U8(0),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(15),
B(Jump), U8(2),
B(LdaTrue),
......@@ -171,16 +171,16 @@ snippet: "
"
frame size: 10
parameter count: 2
bytecode array length: 215
bytecode array length: 212
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(28),
B(JumpIfUndefined), U8(27),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(3),
B(ResumeGenerator), R(new_target),
B(Star), R(2),
B(LdaZero),
B(TestEqualStrict), R(2), U8(0),
B(TestEqualStrictNoFeedback), R(2),
B(JumpIfTrue), U8(63),
B(LdaSmi), I8(78),
B(Star), R(4),
......@@ -215,10 +215,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(5), U8(1),
B(Star), R(7),
B(LdaZero),
B(TestEqualStrict), R(7), U8(0),
B(JumpIfTrue), U8(25),
B(TestEqualStrictNoFeedback), R(7),
B(JumpIfTrue), U8(24),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(7), U8(0),
B(TestEqualStrictNoFeedback), R(7),
B(JumpIfTrue), U8(15),
B(Jump), U8(2),
B(LdaTrue),
......@@ -282,16 +282,16 @@ snippet: "
"
frame size: 10
parameter count: 2
bytecode array length: 186
bytecode array length: 183
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(28),
B(JumpIfUndefined), U8(27),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(3),
B(ResumeGenerator), R(new_target),
B(Star), R(2),
B(LdaZero),
B(TestEqualStrict), R(2), U8(0),
B(TestEqualStrictNoFeedback), R(2),
B(JumpIfTrue), U8(63),
B(LdaSmi), I8(78),
B(Star), R(4),
......@@ -326,10 +326,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(5), U8(1),
B(Star), R(7),
B(LdaZero),
B(TestEqualStrict), R(7), U8(0),
B(JumpIfTrue), U8(25),
B(TestEqualStrictNoFeedback), R(7),
B(JumpIfTrue), U8(24),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(7), U8(0),
B(TestEqualStrictNoFeedback), R(7),
B(JumpIfTrue), U8(15),
B(Jump), U8(2),
B(LdaTrue),
......@@ -381,16 +381,16 @@ snippet: "
"
frame size: 10
parameter count: 2
bytecode array length: 190
bytecode array length: 187
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(28),
B(JumpIfUndefined), U8(27),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(3),
B(ResumeGenerator), R(new_target),
B(Star), R(2),
B(LdaZero),
B(TestEqualStrict), R(2), U8(0),
B(TestEqualStrictNoFeedback), R(2),
B(JumpIfTrue), U8(67),
B(LdaSmi), I8(78),
B(Star), R(4),
......@@ -427,10 +427,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(5), U8(1),
B(Star), R(7),
B(LdaZero),
B(TestEqualStrict), R(7), U8(0),
B(JumpIfTrue), U8(25),
B(TestEqualStrictNoFeedback), R(7),
B(JumpIfTrue), U8(24),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(7), U8(0),
B(TestEqualStrictNoFeedback), R(7),
B(JumpIfTrue), U8(15),
B(Jump), U8(2),
B(LdaTrue),
......@@ -482,16 +482,16 @@ snippet: "
"
frame size: 10
parameter count: 2
bytecode array length: 194
bytecode array length: 191
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(28),
B(JumpIfUndefined), U8(27),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(3),
B(ResumeGenerator), R(new_target),
B(Star), R(2),
B(LdaZero),
B(TestEqualStrict), R(2), U8(0),
B(TestEqualStrictNoFeedback), R(2),
B(JumpIfTrue), U8(67),
B(LdaSmi), I8(78),
B(Star), R(4),
......@@ -528,10 +528,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(5), U8(1),
B(Star), R(7),
B(LdaZero),
B(TestEqualStrict), R(7), U8(0),
B(JumpIfTrue), U8(25),
B(TestEqualStrictNoFeedback), R(7),
B(JumpIfTrue), U8(24),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(7), U8(0),
B(TestEqualStrictNoFeedback), R(7),
B(JumpIfTrue), U8(15),
B(Jump), U8(2),
B(LdaTrue),
......@@ -581,16 +581,16 @@ snippet: "
"
frame size: 9
parameter count: 2
bytecode array length: 156
bytecode array length: 153
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(28),
B(JumpIfUndefined), U8(27),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(2),
B(ResumeGenerator), R(new_target),
B(Star), R(1),
B(LdaZero),
B(TestEqualStrict), R(1), U8(0),
B(TestEqualStrictNoFeedback), R(1),
B(JumpIfTrue), U8(67),
B(LdaSmi), I8(78),
B(Star), R(3),
......@@ -627,10 +627,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrict), R(6), U8(0),
B(JumpIfTrue), U8(25),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(24),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(6), U8(0),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(15),
B(Jump), U8(2),
B(LdaTrue),
......@@ -664,16 +664,16 @@ snippet: "
"
frame size: 9
parameter count: 2
bytecode array length: 193
bytecode array length: 190
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(28),
B(JumpIfUndefined), U8(27),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(2),
B(ResumeGenerator), R(new_target),
B(Star), R(1),
B(LdaZero),
B(TestEqualStrict), R(1), U8(0),
B(TestEqualStrictNoFeedback), R(1),
B(JumpIfTrue), U8(67),
B(LdaSmi), I8(78),
B(Star), R(3),
......@@ -710,10 +710,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrict), R(6), U8(0),
B(JumpIfTrue), U8(25),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(24),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(6), U8(0),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(15),
B(Jump), U8(2),
B(LdaTrue),
......@@ -761,16 +761,16 @@ snippet: "
"
frame size: 9
parameter count: 2
bytecode array length: 145
bytecode array length: 142
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(28),
B(JumpIfUndefined), U8(27),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(2),
B(ResumeGenerator), R(new_target),
B(Star), R(1),
B(LdaZero),
B(TestEqualStrict), R(1), U8(0),
B(TestEqualStrictNoFeedback), R(1),
B(JumpIfTrue), U8(63),
B(LdaSmi), I8(78),
B(Star), R(3),
......@@ -805,10 +805,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrict), R(6), U8(0),
B(JumpIfTrue), U8(25),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(24),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(6), U8(0),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(15),
B(Jump), U8(2),
B(LdaTrue),
......@@ -839,16 +839,16 @@ snippet: "
"
frame size: 9
parameter count: 2
bytecode array length: 145
bytecode array length: 142
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(28),
B(JumpIfUndefined), U8(27),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(2),
B(ResumeGenerator), R(new_target),
B(Star), R(1),
B(LdaZero),
B(TestEqualStrict), R(1), U8(0),
B(TestEqualStrictNoFeedback), R(1),
B(JumpIfTrue), U8(63),
B(LdaSmi), I8(78),
B(Star), R(3),
......@@ -883,10 +883,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrict), R(6), U8(0),
B(JumpIfTrue), U8(25),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(24),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(6), U8(0),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(15),
B(Jump), U8(2),
B(LdaTrue),
......@@ -918,16 +918,16 @@ snippet: "
"
frame size: 9
parameter count: 2
bytecode array length: 183
bytecode array length: 180
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(28),
B(JumpIfUndefined), U8(27),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(2),
B(ResumeGenerator), R(new_target),
B(Star), R(1),
B(LdaZero),
B(TestEqualStrict), R(1), U8(0),
B(TestEqualStrictNoFeedback), R(1),
B(JumpIfTrue), U8(73),
B(LdaSmi), I8(78),
B(Star), R(3),
......@@ -966,10 +966,10 @@ bytecodes: [
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(4), U8(1),
B(Star), R(6),
B(LdaZero),
B(TestEqualStrict), R(6), U8(0),
B(JumpIfTrue), U8(25),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(24),
B(LdaSmi), I8(2),
B(TestEqualStrict), R(6), U8(0),
B(TestEqualStrictNoFeedback), R(6),
B(JumpIfTrue), U8(15),
B(Jump), U8(2),
B(LdaTrue),
......
......@@ -12,7 +12,7 @@ snippet: "
"
frame size: 4
parameter count: 1
bytecode array length: 47
bytecode array length: 46
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1),
......@@ -34,7 +34,7 @@ bytecodes: [
B(Ldar), R(3),
/* 72 E> */ B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(1), U8(0),
B(TestEqualStrictNoFeedback), R(1),
B(JumpIfTrue), U8(4),
B(Jump), U8(5),
B(Ldar), R(2),
......@@ -55,7 +55,7 @@ snippet: "
"
frame size: 7
parameter count: 1
bytecode array length: 74
bytecode array length: 73
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1),
......@@ -90,7 +90,7 @@ bytecodes: [
B(Ldar), R(4),
/* 92 E> */ B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(2), U8(0),
B(TestEqualStrictNoFeedback), R(2),
B(JumpIfTrue), U8(4),
B(Jump), U8(5),
B(Ldar), R(3),
......@@ -115,7 +115,7 @@ snippet: "
"
frame size: 8
parameter count: 1
bytecode array length: 97
bytecode array length: 96
bytecodes: [
/* 30 E> */ B(StackCheck),
B(Mov), R(context), R(4),
......@@ -161,7 +161,7 @@ bytecodes: [
B(Ldar), R(4),
/* 116 E> */ B(SetPendingMessage),
B(LdaZero),
B(TestEqualStrict), R(2), U8(0),
B(TestEqualStrictNoFeedback), R(2),
B(JumpIfTrue), U8(4),
B(Jump), U8(5),
B(Ldar), R(3),
......
......@@ -2151,7 +2151,7 @@ TEST(InterpreterInstanceOf) {
size_t func_entry = builder.AllocateDeferredConstantPoolEntry();
builder.SetDeferredConstantPoolEntry(func_entry, func);
builder.LoadConstantPoolEntry(func_entry)
.CompareOperation(Token::Value::INSTANCEOF, r0, 0)
.CompareOperation(Token::Value::INSTANCEOF, r0)
.Return();
Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(isolate);
......@@ -2187,7 +2187,7 @@ TEST(InterpreterTestIn) {
size_t array_entry = builder.AllocateDeferredConstantPoolEntry();
builder.SetDeferredConstantPoolEntry(array_entry, array);
builder.LoadConstantPoolEntry(array_entry)
.CompareOperation(Token::Value::IN, r0, 0)
.CompareOperation(Token::Value::IN, r0)
.Return();
ast_factory.Internalize(isolate);
......
......@@ -208,13 +208,14 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
// Emit test operator invocations.
builder.CompareOperation(Token::Value::EQ, reg, 1)
.CompareOperation(Token::Value::EQ_STRICT, reg, 2)
.CompareOperation(Token::Value::EQ_STRICT, reg)
.CompareOperation(Token::Value::LT, reg, 3)
.CompareOperation(Token::Value::GT, reg, 4)
.CompareOperation(Token::Value::LTE, reg, 5)
.CompareOperation(Token::Value::GTE, reg, 6)
.CompareOperation(Token::Value::INSTANCEOF, reg, 7)
.CompareOperation(Token::Value::IN, reg, 8)
.CompareTypeOf(TestTypeOfFlags::LiteralFlag::kNumber);
.CompareTypeOf(TestTypeOfFlags::LiteralFlag::kNumber)
.CompareOperation(Token::Value::INSTANCEOF, reg)
.CompareOperation(Token::Value::IN, reg);
// Emit peephole optimizations of equality with Null or Undefined.
builder.LoadUndefined()
......
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