Commit 08a49bbe authored by Leszek Swirski's avatar Leszek Swirski Committed by Commit Bot

Revert "[interpreter] Short Star bytecode"

This reverts commit cf93071c.

Reason for revert: Speculative revert because of Mac4 GC stress failure: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Mac64%20GC%20Stress/16697/overview

Original change's description:
> [interpreter] Short Star bytecode
>
> Design doc:
> https://docs.google.com/document/d/1g_NExMT78II_KnIYNa9MvyPYIj23qAiFUEsyemY5KRk/edit
>
> This change adds 16 new interpreter opcodes, kStar0 through kStar15, so
> that we can use a single byte to represent the common operation of
> storing to a low-numbered register. This generally reduces the quantity
> of bytecode generated on web sites by 8-9%.
>
> In order to not degrade speed, a couple of other changes are required:
>
> The existing lookahead logic to check for Star after certain other
> bytecode handlers is updated to check for these new short Star codes
> instead. Furthermore, that lookahead logic is updated to contain its own
> copy of the dispatch jump rather than merging control flow with the
> lookahead-failed case, to improve branch prediction.
>
> A bunch of constants use bytecode size in bytes as a proxy for the size
> or complexity of a function, and are adjusted downward proportionally to
> the decrease in generated bytecode size.
>
> Other small drive-by fix: update generate-bytecode-expectations to emit
> \n instead of \r\n on Windows.
>
> Change-Id: I6307c2b0f5794a3a1088bb0fb94f6e1615441ed5
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2641180
> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
> Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
> Cr-Commit-Position: refs/heads/master@{#72773}

TBR=rmcilroy@chromium.org,mythria@chromium.org,seth.brenith@microsoft.com

Change-Id: I0162b9400861b90bacef27cca9aebc8ab9d74c10
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697350Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72777}
parent 5348e9b1
...@@ -855,15 +855,6 @@ void BaselineCompiler::VisitStar() { ...@@ -855,15 +855,6 @@ void BaselineCompiler::VisitStar() {
StoreRegister(0, kInterpreterAccumulatorRegister); StoreRegister(0, kInterpreterAccumulatorRegister);
} }
#define SHORT_STAR_VISITOR(Name, ...) \
void BaselineCompiler::Visit##Name() { \
__ StoreRegister( \
interpreter::Register::FromShortStar(interpreter::Bytecode::k##Name), \
kInterpreterAccumulatorRegister); \
}
SHORT_STAR_BYTECODE_LIST(SHORT_STAR_VISITOR)
#undef SHORT_STAR_VISITOR
void BaselineCompiler::VisitMov() { void BaselineCompiler::VisitMov() {
BaselineAssembler::ScratchRegisterScope scratch_scope(&basm_); BaselineAssembler::ScratchRegisterScope scratch_scope(&basm_);
Register scratch = scratch_scope.AcquireScratch(); Register scratch = scratch_scope.AcquireScratch();
......
...@@ -19,18 +19,9 @@ void WriteBytecode(std::ofstream& out, Bytecode bytecode, ...@@ -19,18 +19,9 @@ void WriteBytecode(std::ofstream& out, Bytecode bytecode,
int table_index) { int table_index) {
DCHECK_NOT_NULL(count); DCHECK_NOT_NULL(count);
if (Bytecodes::BytecodeHasHandler(bytecode, operand_scale)) { if (Bytecodes::BytecodeHasHandler(bytecode, operand_scale)) {
std::string name = Bytecodes::ToString(bytecode, operand_scale, ""); out << " \\\n V(" << Bytecodes::ToString(bytecode, operand_scale, "")
<< "Handler, interpreter::OperandScale::k" << operand_scale
// The handler for Star0 is used for all short star codes. Rename it to << ", interpreter::Bytecode::k" << Bytecodes::ToString(bytecode) << ")";
// something more generic.
if (bytecode == Bytecode::kStar0) {
DCHECK_EQ(operand_scale, OperandScale::kSingle);
name = "ShortStar";
}
out << " \\\n V(" << name << "Handler, interpreter::OperandScale::k"
<< operand_scale << ", interpreter::Bytecode::k"
<< Bytecodes::ToString(bytecode) << ")";
offset_table[table_index] = *count; offset_table[table_index] = *count;
(*count)++; (*count)++;
} else { } else {
...@@ -71,8 +62,7 @@ void WriteHeader(const char* header_filename) { ...@@ -71,8 +62,7 @@ void WriteHeader(const char* header_filename) {
#undef ADD_BYTECODES #undef ADD_BYTECODES
int extra_wide_count = count - wide_count - single_count; int extra_wide_count = count - wide_count - single_count;
CHECK_GT(single_count, wide_count); CHECK_GT(single_count, wide_count);
CHECK_EQ(single_count, CHECK_EQ(single_count, Bytecodes::kBytecodeCount);
Bytecodes::kBytecodeCount - Bytecodes::kShortStarCount + 1);
CHECK_EQ(wide_count, extra_wide_count); CHECK_EQ(wide_count, extra_wide_count);
out << "\n\nconstexpr int kNumberOfBytecodeHandlers = " << single_count out << "\n\nconstexpr int kNumberOfBytecodeHandlers = " << single_count
<< ";\n" << ";\n"
...@@ -83,10 +73,9 @@ void WriteHeader(const char* header_filename) { ...@@ -83,10 +73,9 @@ void WriteHeader(const char* header_filename) {
<< "// Mapping from Bytecode to a dense form with all the illegal\n" << "// Mapping from Bytecode to a dense form with all the illegal\n"
<< "// wide Bytecodes removed. Used to index into the builtins table.\n" << "// wide Bytecodes removed. Used to index into the builtins table.\n"
<< "constexpr uint8_t kWideBytecodeToBuiltinsMapping[" << "constexpr uint8_t kWideBytecodeToBuiltinsMapping["
<< Bytecodes::kBytecodeCount << "] = { \n"; << "kNumberOfBytecodeHandlers] = { \n";
for (int i = Bytecodes::kBytecodeCount; i < 2 * Bytecodes::kBytecodeCount; for (int i = single_count; i < 2 * single_count; ++i) {
++i) {
int offset = offset_table[i]; int offset = offset_table[i];
if (offset == kIllegalBytecodeHandler) { if (offset == kIllegalBytecodeHandler) {
offset = kIllegalBytecodeHandlerEncoding; offset = kIllegalBytecodeHandlerEncoding;
......
...@@ -166,11 +166,6 @@ void UpdateInLiveness(Bytecode bytecode, BytecodeLivenessState* in_liveness, ...@@ -166,11 +166,6 @@ void UpdateInLiveness(Bytecode bytecode, BytecodeLivenessState* in_liveness,
} }
} }
if (Bytecodes::WritesImplicitRegister(bytecode)) {
in_liveness->MarkRegisterDead(
interpreter::Register::FromShortStar(bytecode).index());
}
if (Bytecodes::ReadsAccumulator(bytecode)) { if (Bytecodes::ReadsAccumulator(bytecode)) {
in_liveness->MarkAccumulatorLive(); in_liveness->MarkAccumulatorLive();
} }
...@@ -313,10 +308,6 @@ void UpdateAssignments(Bytecode bytecode, BytecodeLoopAssignments* assignments, ...@@ -313,10 +308,6 @@ void UpdateAssignments(Bytecode bytecode, BytecodeLoopAssignments* assignments,
break; break;
} }
} }
if (Bytecodes::WritesImplicitRegister(bytecode)) {
assignments->Add(interpreter::Register::FromShortStar(bytecode));
}
} }
} // namespace } // namespace
......
...@@ -1620,16 +1620,6 @@ void BytecodeGraphBuilder::VisitStar() { ...@@ -1620,16 +1620,6 @@ void BytecodeGraphBuilder::VisitStar() {
environment()->BindRegister(bytecode_iterator().GetRegisterOperand(0), value); environment()->BindRegister(bytecode_iterator().GetRegisterOperand(0), value);
} }
#define SHORT_STAR_VISITOR(Name, ...) \
void BytecodeGraphBuilder::Visit##Name() { \
Node* value = environment()->LookupAccumulator(); \
environment()->BindRegister( \
interpreter::Register::FromShortStar(interpreter::Bytecode::k##Name), \
value); \
}
SHORT_STAR_BYTECODE_LIST(SHORT_STAR_VISITOR)
#undef SHORT_STAR_VISITOR
void BytecodeGraphBuilder::VisitMov() { void BytecodeGraphBuilder::VisitMov() {
Node* value = Node* value =
environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
......
...@@ -405,8 +405,6 @@ class SerializerForBackgroundCompilation { ...@@ -405,8 +405,6 @@ class SerializerForBackgroundCompilation {
SUPPORTED_BYTECODE_LIST(DECLARE_VISIT_BYTECODE) SUPPORTED_BYTECODE_LIST(DECLARE_VISIT_BYTECODE)
#undef DECLARE_VISIT_BYTECODE #undef DECLARE_VISIT_BYTECODE
void VisitShortStar(interpreter::Register reg);
Hints& register_hints(interpreter::Register reg); Hints& register_hints(interpreter::Register reg);
// Return a vector containing the hints for the given register range (in // Return a vector containing the hints for the given register range (in
...@@ -1313,20 +1311,13 @@ void SerializerForBackgroundCompilation::TraverseBytecode() { ...@@ -1313,20 +1311,13 @@ void SerializerForBackgroundCompilation::TraverseBytecode() {
} }
} }
interpreter::Bytecode current_bytecode = iterator.current_bytecode(); switch (iterator.current_bytecode()) {
switch (current_bytecode) {
#define DEFINE_BYTECODE_CASE(name) \ #define DEFINE_BYTECODE_CASE(name) \
case interpreter::Bytecode::k##name: \ case interpreter::Bytecode::k##name: \
Visit##name(&iterator); \ Visit##name(&iterator); \
break; break;
SUPPORTED_BYTECODE_LIST(DEFINE_BYTECODE_CASE) SUPPORTED_BYTECODE_LIST(DEFINE_BYTECODE_CASE)
#undef DEFINE_BYTECODE_CASE #undef DEFINE_BYTECODE_CASE
#define DEFINE_SHORT_STAR_CASE(Name, ...) case interpreter::Bytecode::k##Name:
SHORT_STAR_BYTECODE_LIST(DEFINE_SHORT_STAR_CASE)
#undef DEFINE_SHORT_STAR_CASE
VisitShortStar(interpreter::Register::FromShortStar(current_bytecode));
break;
} }
} }
...@@ -1707,11 +1698,6 @@ void SerializerForBackgroundCompilation::VisitStar( ...@@ -1707,11 +1698,6 @@ void SerializerForBackgroundCompilation::VisitStar(
register_hints(reg).Reset(&environment()->accumulator_hints(), zone()); register_hints(reg).Reset(&environment()->accumulator_hints(), zone());
} }
void SerializerForBackgroundCompilation::VisitShortStar(
interpreter::Register reg) {
register_hints(reg).Reset(&environment()->accumulator_hints(), zone());
}
void SerializerForBackgroundCompilation::VisitMov( void SerializerForBackgroundCompilation::VisitMov(
BytecodeArrayIterator* iterator) { BytecodeArrayIterator* iterator) {
interpreter::Register src = iterator->GetRegisterOperand(0); interpreter::Register src = iterator->GetRegisterOperand(0);
......
...@@ -27,16 +27,16 @@ static const int kProfilerTicksBeforeOptimization = 3; ...@@ -27,16 +27,16 @@ static const int kProfilerTicksBeforeOptimization = 3;
// The number of ticks required for optimizing a function increases with // The number of ticks required for optimizing a function increases with
// the size of the bytecode. This is in addition to the // the size of the bytecode. This is in addition to the
// kProfilerTicksBeforeOptimization required for any function. // kProfilerTicksBeforeOptimization required for any function.
static const int kBytecodeSizeAllowancePerTick = 1100; static const int kBytecodeSizeAllowancePerTick = 1200;
// Maximum size in bytes of generate code for a function to allow OSR. // Maximum size in bytes of generate code for a function to allow OSR.
static const int kOSRBytecodeSizeAllowanceBase = 119; static const int kOSRBytecodeSizeAllowanceBase = 132;
static const int kOSRBytecodeSizeAllowancePerTick = 43; static const int kOSRBytecodeSizeAllowancePerTick = 48;
// Maximum size in bytes of generated code for a function to be optimized // Maximum size in bytes of generated code for a function to be optimized
// the very first time it is seen on the stack. // the very first time it is seen on the stack.
static const int kMaxBytecodeSizeForEarlyOpt = 81; static const int kMaxBytecodeSizeForEarlyOpt = 90;
// Number of times a function has to be seen on the stack before it is // Number of times a function has to be seen on the stack before it is
// OSRed in TurboProp // OSRed in TurboProp
......
...@@ -499,12 +499,12 @@ DEFINE_BOOL_READONLY(enable_sealed_frozen_elements_kind, true, ...@@ -499,12 +499,12 @@ DEFINE_BOOL_READONLY(enable_sealed_frozen_elements_kind, true,
DEFINE_BOOL(unbox_double_arrays, true, "automatically unbox arrays of doubles") DEFINE_BOOL(unbox_double_arrays, true, "automatically unbox arrays of doubles")
DEFINE_BOOL_READONLY(string_slices, true, "use string slices") DEFINE_BOOL_READONLY(string_slices, true, "use string slices")
DEFINE_INT(interrupt_budget, 132 * KB, DEFINE_INT(interrupt_budget, 144 * KB,
"interrupt budget which should be used for the profiler counter") "interrupt budget which should be used for the profiler counter")
// Flags for inline caching and feedback vectors. // Flags for inline caching and feedback vectors.
DEFINE_BOOL(use_ic, true, "use inline caching") DEFINE_BOOL(use_ic, true, "use inline caching")
DEFINE_INT(budget_for_feedback_vector_allocation, 940, DEFINE_INT(budget_for_feedback_vector_allocation, 1 * KB,
"The budget in amount of bytecode executed by a function before we " "The budget in amount of bytecode executed by a function before we "
"decide to allocate feedback vectors") "decide to allocate feedback vectors")
DEFINE_INT(scale_factor_for_feedback_allocation, 4, DEFINE_INT(scale_factor_for_feedback_allocation, 4,
...@@ -571,7 +571,7 @@ DEFINE_BOOL( ...@@ -571,7 +571,7 @@ DEFINE_BOOL(
turboprop_as_toptier, false, turboprop_as_toptier, false,
"enable experimental turboprop compiler without further tierup to turbofan") "enable experimental turboprop compiler without further tierup to turbofan")
DEFINE_IMPLICATION(turboprop_as_toptier, turboprop) DEFINE_IMPLICATION(turboprop_as_toptier, turboprop)
DEFINE_VALUE_IMPLICATION(turboprop, interrupt_budget, 14 * KB) DEFINE_VALUE_IMPLICATION(turboprop, interrupt_budget, 15 * KB)
DEFINE_VALUE_IMPLICATION(turboprop, reuse_opt_code_count, 2) DEFINE_VALUE_IMPLICATION(turboprop, reuse_opt_code_count, 2)
DEFINE_UINT_READONLY(max_minimorphic_map_checks, 4, DEFINE_UINT_READONLY(max_minimorphic_map_checks, 4,
"max number of map checks to perform in minimorphic state") "max number of map checks to perform in minimorphic state")
...@@ -686,16 +686,16 @@ DEFINE_BOOL(turbo_splitting, true, "split nodes during scheduling in TurboFan") ...@@ -686,16 +686,16 @@ DEFINE_BOOL(turbo_splitting, true, "split nodes during scheduling in TurboFan")
DEFINE_BOOL(function_context_specialization, false, DEFINE_BOOL(function_context_specialization, false,
"enable function context specialization in TurboFan") "enable function context specialization in TurboFan")
DEFINE_BOOL(turbo_inlining, true, "enable inlining in TurboFan") DEFINE_BOOL(turbo_inlining, true, "enable inlining in TurboFan")
DEFINE_INT(max_inlined_bytecode_size, 460, DEFINE_INT(max_inlined_bytecode_size, 500,
"maximum size of bytecode for a single inlining") "maximum size of bytecode for a single inlining")
DEFINE_INT(max_inlined_bytecode_size_cumulative, 920, DEFINE_INT(max_inlined_bytecode_size_cumulative, 1000,
"maximum cumulative size of bytecode considered for inlining") "maximum cumulative size of bytecode considered for inlining")
DEFINE_INT(max_inlined_bytecode_size_absolute, 4600, DEFINE_INT(max_inlined_bytecode_size_absolute, 5000,
"maximum absolute size of bytecode considered for inlining") "maximum absolute size of bytecode considered for inlining")
DEFINE_FLOAT( DEFINE_FLOAT(
reserve_inline_budget_scale_factor, 1.2, reserve_inline_budget_scale_factor, 1.2,
"scale factor of bytecode size used to calculate the inlining budget") "scale factor of bytecode size used to calculate the inlining budget")
DEFINE_INT(max_inlined_bytecode_size_small, 27, DEFINE_INT(max_inlined_bytecode_size_small, 30,
"maximum size of bytecode considered for small function inlining") "maximum size of bytecode considered for small function inlining")
DEFINE_INT(max_optimized_bytecode_size, 60 * KB, DEFINE_INT(max_optimized_bytecode_size, 60 * KB,
"maximum bytecode size to " "maximum bytecode size to "
......
...@@ -197,10 +197,7 @@ void BytecodeArrayBuilder::OutputLdarRaw(Register reg) { ...@@ -197,10 +197,7 @@ void BytecodeArrayBuilder::OutputLdarRaw(Register reg) {
void BytecodeArrayBuilder::OutputStarRaw(Register reg) { void BytecodeArrayBuilder::OutputStarRaw(Register reg) {
uint32_t operand = static_cast<uint32_t>(reg.ToOperand()); uint32_t operand = static_cast<uint32_t>(reg.ToOperand());
base::Optional<Bytecode> short_code = reg.TryToShortStar(); BytecodeNode node(BytecodeNode::Star(BytecodeSourceInfo(), operand));
BytecodeNode node = short_code
? BytecodeNode(*short_code)
: BytecodeNode::Star(BytecodeSourceInfo(), operand);
Write(&node); Write(&node);
} }
...@@ -699,7 +696,7 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::StoreAccumulatorInRegister( ...@@ -699,7 +696,7 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::StoreAccumulatorInRegister(
SetDeferredSourceInfo(CurrentSourcePosition(Bytecode::kStar)); SetDeferredSourceInfo(CurrentSourcePosition(Bytecode::kStar));
register_optimizer_->DoStar(reg); register_optimizer_->DoStar(reg);
} else { } else {
OutputStarRaw(reg); OutputStar(reg);
} }
return *this; return *this;
} }
......
...@@ -18,15 +18,11 @@ const char* ImplicitRegisterUseToString( ...@@ -18,15 +18,11 @@ const char* ImplicitRegisterUseToString(
case ImplicitRegisterUse::kNone: case ImplicitRegisterUse::kNone:
return "None"; return "None";
case ImplicitRegisterUse::kReadAccumulator: case ImplicitRegisterUse::kReadAccumulator:
return "ReadAccumulator"; return "Read";
case ImplicitRegisterUse::kWriteAccumulator: case ImplicitRegisterUse::kWriteAccumulator:
return "WriteAccumulator"; return "Write";
case ImplicitRegisterUse::kWriteShortStar:
return "WriteShortStar";
case ImplicitRegisterUse::kReadWriteAccumulator: case ImplicitRegisterUse::kReadWriteAccumulator:
return "ReadWriteAccumulator"; return "ReadWrite";
case ImplicitRegisterUse::kReadAccumulatorWriteShortStar:
return "ReadAccumulatorWriteShortStar";
} }
UNREACHABLE(); UNREACHABLE();
} }
......
...@@ -113,9 +113,7 @@ enum class ImplicitRegisterUse : uint8_t { ...@@ -113,9 +113,7 @@ enum class ImplicitRegisterUse : uint8_t {
kNone = 0, kNone = 0,
kReadAccumulator = 1 << 0, kReadAccumulator = 1 << 0,
kWriteAccumulator = 1 << 1, kWriteAccumulator = 1 << 1,
kWriteShortStar = 1 << 2, kReadWriteAccumulator = kReadAccumulator | kWriteAccumulator
kReadWriteAccumulator = kReadAccumulator | kWriteAccumulator,
kReadAccumulatorWriteShortStar = kReadAccumulator | kWriteShortStar
}; };
constexpr inline ImplicitRegisterUse operator&(ImplicitRegisterUse lhs, constexpr inline ImplicitRegisterUse operator&(ImplicitRegisterUse lhs,
...@@ -188,14 +186,6 @@ class BytecodeOperands : public AllStatic { ...@@ -188,14 +186,6 @@ class BytecodeOperands : public AllStatic {
ImplicitRegisterUse::kWriteAccumulator; ImplicitRegisterUse::kWriteAccumulator;
} }
// Returns true if |implicit_register_use| writes to a
// register not specified by an operand.
static constexpr bool WritesImplicitRegister(
ImplicitRegisterUse implicit_register_use) {
return (implicit_register_use & ImplicitRegisterUse::kWriteShortStar) ==
ImplicitRegisterUse::kWriteShortStar;
}
// Returns true if |operand_type| is a scalable signed byte. // Returns true if |operand_type| is a scalable signed byte.
static constexpr bool IsScalableSignedByte(OperandType operand_type) { static constexpr bool IsScalableSignedByte(OperandType operand_type) {
return base::IsInRange(operand_type, OperandType::kImm, return base::IsInRange(operand_type, OperandType::kImm,
......
...@@ -20,7 +20,7 @@ namespace interpreter { ...@@ -20,7 +20,7 @@ namespace interpreter {
// in its stack-frame. Register hold parameters, this, and expression values. // in its stack-frame. Register hold parameters, this, and expression values.
class V8_EXPORT_PRIVATE Register final { class V8_EXPORT_PRIVATE Register final {
public: public:
constexpr explicit Register(int index = kInvalidIndex) : index_(index) {} explicit Register(int index = kInvalidIndex) : index_(index) {}
int index() const { return index_; } int index() const { return index_; }
bool is_parameter() const { return index() < 0; } bool is_parameter() const { return index() < 0; }
...@@ -58,30 +58,11 @@ class V8_EXPORT_PRIVATE Register final { ...@@ -58,30 +58,11 @@ class V8_EXPORT_PRIVATE Register final {
OperandSize SizeOfOperand() const; OperandSize SizeOfOperand() const;
constexpr int32_t ToOperand() const { int32_t ToOperand() const { return kRegisterFileStartOffset - index_; }
return kRegisterFileStartOffset - index_;
}
static Register FromOperand(int32_t operand) { static Register FromOperand(int32_t operand) {
return Register(kRegisterFileStartOffset - operand); return Register(kRegisterFileStartOffset - operand);
} }
static Register FromShortStar(Bytecode bytecode) {
DCHECK(Bytecodes::IsShortStar(bytecode));
return Register(static_cast<int>(Bytecode::kStar0) -
static_cast<int>(bytecode));
}
const base::Optional<Bytecode> TryToShortStar() const {
if (index() >= 0 && index() < Bytecodes::kShortStarCount) {
Bytecode bytecode =
static_cast<Bytecode>(static_cast<int>(Bytecode::kStar0) - index());
DCHECK_GE(bytecode, Bytecode::kFirstShortStar);
DCHECK_LE(bytecode, Bytecode::kLastShortStar);
return bytecode;
}
return {};
}
static bool AreContiguous(Register reg1, Register reg2, static bool AreContiguous(Register reg1, Register reg2,
Register reg3 = invalid_value(), Register reg3 = invalid_value(),
Register reg4 = invalid_value(), Register reg4 = invalid_value(),
......
...@@ -94,13 +94,6 @@ Bytecodes::kOperandKindSizes[3][BytecodeOperands::kOperandTypeCount] = { ...@@ -94,13 +94,6 @@ Bytecodes::kOperandKindSizes[3][BytecodeOperands::kOperandTypeCount] = {
}; };
// clang-format on // clang-format on
// Make sure kFirstShortStar and kLastShortStar are set correctly.
#define ASSERT_SHORT_STAR_RANGE(Name, ...) \
STATIC_ASSERT(Bytecode::k##Name >= Bytecode::kFirstShortStar && \
Bytecode::k##Name <= Bytecode::kLastShortStar);
SHORT_STAR_BYTECODE_LIST(ASSERT_SHORT_STAR_RANGE)
#undef ASSERT_SHORT_STAR_RANGE
// static // static
const char* Bytecodes::ToString(Bytecode bytecode) { const char* Bytecodes::ToString(Bytecode bytecode) {
switch (bytecode) { switch (bytecode) {
...@@ -271,11 +264,6 @@ bool Bytecodes::IsRegisterOutputOperandType(OperandType operand_type) { ...@@ -271,11 +264,6 @@ bool Bytecodes::IsRegisterOutputOperandType(OperandType operand_type) {
bool Bytecodes::IsStarLookahead(Bytecode bytecode, OperandScale operand_scale) { bool Bytecodes::IsStarLookahead(Bytecode bytecode, OperandScale operand_scale) {
if (operand_scale == OperandScale::kSingle) { if (operand_scale == OperandScale::kSingle) {
switch (bytecode) { switch (bytecode) {
// Short-star lookahead is required for correctness on kDebugBreak0. The
// handler for all short-star codes re-reads the opcode from the bytecode
// array and would not work correctly if it instead read kDebugBreak0.
case Bytecode::kDebugBreak0:
case Bytecode::kLdaZero: case Bytecode::kLdaZero:
case Bytecode::kLdaSmi: case Bytecode::kLdaSmi:
case Bytecode::kLdaNull: case Bytecode::kLdaNull:
...@@ -344,8 +332,7 @@ bool Bytecodes::IsUnsignedOperandType(OperandType operand_type) { ...@@ -344,8 +332,7 @@ bool Bytecodes::IsUnsignedOperandType(OperandType operand_type) {
// static // static
bool Bytecodes::BytecodeHasHandler(Bytecode bytecode, bool Bytecodes::BytecodeHasHandler(Bytecode bytecode,
OperandScale operand_scale) { OperandScale operand_scale) {
return (operand_scale == OperandScale::kSingle && return operand_scale == OperandScale::kSingle ||
(!IsShortStar(bytecode) || bytecode == Bytecode::kStar0)) ||
Bytecodes::IsBytecodeWithScalableOperands(bytecode); Bytecodes::IsBytecodeWithScalableOperands(bytecode);
} }
......
...@@ -21,29 +21,9 @@ namespace v8 { ...@@ -21,29 +21,9 @@ namespace v8 {
namespace internal { namespace internal {
namespace interpreter { namespace interpreter {
// The list of single-byte Star variants, in the format of BYTECODE_LIST. // The list of bytecodes which are interpreted by the interpreter.
#define SHORT_STAR_BYTECODE_LIST(V) \
V(Star15, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star14, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star13, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star12, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star11, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star10, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star9, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star8, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star7, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star6, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star5, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star4, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star3, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star2, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star1, ImplicitRegisterUse::kReadAccumulatorWriteShortStar) \
V(Star0, ImplicitRegisterUse::kReadAccumulatorWriteShortStar)
// The list of bytecodes which have unique handlers (no other bytecode is
// executed using identical code).
// Format is V(<bytecode>, <implicit_register_use>, <operands>). // Format is V(<bytecode>, <implicit_register_use>, <operands>).
#define BYTECODE_LIST_WITH_UNIQUE_HANDLERS(V) \ #define BYTECODE_LIST(V) \
/* Extended width operands */ \ /* Extended width operands */ \
V(Wide, ImplicitRegisterUse::kNone) \ V(Wide, ImplicitRegisterUse::kNone) \
V(ExtraWide, ImplicitRegisterUse::kNone) \ V(ExtraWide, ImplicitRegisterUse::kNone) \
...@@ -441,17 +421,9 @@ namespace interpreter { ...@@ -441,17 +421,9 @@ namespace interpreter {
V(IncBlockCounter, ImplicitRegisterUse::kNone, OperandType::kIdx) \ V(IncBlockCounter, ImplicitRegisterUse::kNone, OperandType::kIdx) \
\ \
/* Execution Abort (internal error) */ \ /* Execution Abort (internal error) */ \
V(Abort, ImplicitRegisterUse::kNone, OperandType::kIdx) V(Abort, ImplicitRegisterUse::kNone, OperandType::kIdx) \
\
// The list of bytecodes which are interpreted by the interpreter. /* Illegal bytecode */ \
// Format is V(<bytecode>, <implicit_register_use>, <operands>).
#define BYTECODE_LIST(V) \
BYTECODE_LIST_WITH_UNIQUE_HANDLERS(V) \
\
/* Special-case Star for common register numbers, to save space */ \
SHORT_STAR_BYTECODE_LIST(V) \
\
/* Illegal bytecode */ \
V(Illegal, ImplicitRegisterUse::kNone) V(Illegal, ImplicitRegisterUse::kNone)
// List of debug break bytecodes. // List of debug break bytecodes.
...@@ -551,9 +523,7 @@ enum class Bytecode : uint8_t { ...@@ -551,9 +523,7 @@ enum class Bytecode : uint8_t {
#define COUNT_BYTECODE(x, ...) +1 #define COUNT_BYTECODE(x, ...) +1
// The COUNT_BYTECODE macro will turn this into kLast = -1 +1 +1... which will // The COUNT_BYTECODE macro will turn this into kLast = -1 +1 +1... which will
// evaluate to the same value as the last real bytecode. // evaluate to the same value as the last real bytecode.
kLast = -1 BYTECODE_LIST(COUNT_BYTECODE), kLast = -1 BYTECODE_LIST(COUNT_BYTECODE)
kFirstShortStar = kStar15,
kLastShortStar = kStar0
#undef COUNT_BYTECODE #undef COUNT_BYTECODE
}; };
...@@ -565,10 +535,6 @@ class V8_EXPORT_PRIVATE Bytecodes final : public AllStatic { ...@@ -565,10 +535,6 @@ class V8_EXPORT_PRIVATE Bytecodes final : public AllStatic {
// The total number of bytecodes used. // The total number of bytecodes used.
static const int kBytecodeCount = static_cast<int>(Bytecode::kLast) + 1; static const int kBytecodeCount = static_cast<int>(Bytecode::kLast) + 1;
static const int kShortStarCount =
static_cast<int>(Bytecode::kLastShortStar) -
static_cast<int>(Bytecode::kFirstShortStar) + 1;
// Returns string representation of |bytecode|. // Returns string representation of |bytecode|.
static const char* ToString(Bytecode bytecode); static const char* ToString(Bytecode bytecode);
...@@ -640,13 +606,6 @@ class V8_EXPORT_PRIVATE Bytecodes final : public AllStatic { ...@@ -640,13 +606,6 @@ class V8_EXPORT_PRIVATE Bytecodes final : public AllStatic {
GetImplicitRegisterUse(bytecode)); GetImplicitRegisterUse(bytecode));
} }
// Returns true if |bytecode| writes to a register not specified by an
// operand.
static bool WritesImplicitRegister(Bytecode bytecode) {
return BytecodeOperands::WritesImplicitRegister(
GetImplicitRegisterUse(bytecode));
}
// Return true if |bytecode| is an accumulator load without effects, // Return true if |bytecode| is an accumulator load without effects,
// e.g. LdaConstant, LdaTrue, Ldar. // e.g. LdaConstant, LdaTrue, Ldar.
static constexpr bool IsAccumulatorLoadWithoutEffects(Bytecode bytecode) { static constexpr bool IsAccumulatorLoadWithoutEffects(Bytecode bytecode) {
...@@ -671,20 +630,11 @@ class V8_EXPORT_PRIVATE Bytecodes final : public AllStatic { ...@@ -671,20 +630,11 @@ class V8_EXPORT_PRIVATE Bytecodes final : public AllStatic {
bytecode == Bytecode::kTestTypeOf; bytecode == Bytecode::kTestTypeOf;
} }
static constexpr bool IsShortStar(Bytecode bytecode) {
return bytecode >= Bytecode::kFirstShortStar &&
bytecode <= Bytecode::kLastShortStar;
}
static constexpr bool IsAnyStar(Bytecode bytecode) {
return bytecode == Bytecode::kStar || IsShortStar(bytecode);
}
// Return true if |bytecode| is a register load without effects, // Return true if |bytecode| is a register load without effects,
// e.g. Mov, Star. // e.g. Mov, Star.
static constexpr bool IsRegisterLoadWithoutEffects(Bytecode bytecode) { static constexpr bool IsRegisterLoadWithoutEffects(Bytecode bytecode) {
return bytecode == Bytecode::kMov || bytecode == Bytecode::kPopContext || return bytecode == Bytecode::kMov || bytecode == Bytecode::kPopContext ||
bytecode == Bytecode::kPushContext || IsAnyStar(bytecode); bytecode == Bytecode::kPushContext || bytecode == Bytecode::kStar;
} }
// Returns true if the bytecode is a conditional jump taking // Returns true if the bytecode is a conditional jump taking
...@@ -774,7 +724,7 @@ class V8_EXPORT_PRIVATE Bytecodes final : public AllStatic { ...@@ -774,7 +724,7 @@ class V8_EXPORT_PRIVATE Bytecodes final : public AllStatic {
// Returns true if the bytecode is Ldar or Star. // Returns true if the bytecode is Ldar or Star.
static constexpr bool IsLdarOrStar(Bytecode bytecode) { static constexpr bool IsLdarOrStar(Bytecode bytecode) {
return bytecode == Bytecode::kLdar || IsAnyStar(bytecode); return bytecode == Bytecode::kLdar || bytecode == Bytecode::kStar;
} }
// Returns true if the bytecode is a call or a constructor call. // Returns true if the bytecode is a call or a constructor call.
......
...@@ -298,35 +298,6 @@ void InterpreterAssembler::StoreRegister(TNode<Object> value, ...@@ -298,35 +298,6 @@ void InterpreterAssembler::StoreRegister(TNode<Object> value,
RegisterFrameOffset(reg_index), value); RegisterFrameOffset(reg_index), value);
} }
void InterpreterAssembler::StoreRegisterForShortStar(TNode<Object> value,
TNode<WordT> opcode) {
DCHECK(Bytecodes::IsShortStar(bytecode_));
implicit_register_use_ =
implicit_register_use_ | ImplicitRegisterUse::kWriteShortStar;
CSA_ASSERT(
this, UintPtrGreaterThanOrEqual(opcode, UintPtrConstant(static_cast<int>(
Bytecode::kFirstShortStar))));
CSA_ASSERT(
this,
UintPtrLessThanOrEqual(
opcode, UintPtrConstant(static_cast<int>(Bytecode::kLastShortStar))));
// Compute the constant that we can add to a Bytecode value to map the range
// [Bytecode::kStar15, Bytecode::kStar0] to the range
// [Register(15).ToOperand(), Register(0).ToOperand()].
constexpr int short_star_to_operand =
Register(0).ToOperand() - static_cast<int>(Bytecode::kStar0);
// Make sure the values count in the right direction.
STATIC_ASSERT(short_star_to_operand ==
Register(1).ToOperand() - static_cast<int>(Bytecode::kStar1));
TNode<IntPtrT> offset =
IntPtrAdd(RegisterFrameOffset(Signed(opcode)),
IntPtrConstant(short_star_to_operand * kSystemPointerSize));
StoreFullTaggedNoWriteBarrier(GetInterpretedFramePointer(), offset, value);
}
void InterpreterAssembler::StoreRegisterAtOperandIndex(TNode<Object> value, void InterpreterAssembler::StoreRegisterAtOperandIndex(TNode<Object> value,
int operand_index) { int operand_index) {
StoreRegister(value, StoreRegister(value,
...@@ -1134,51 +1105,40 @@ TNode<WordT> InterpreterAssembler::LoadBytecode( ...@@ -1134,51 +1105,40 @@ TNode<WordT> InterpreterAssembler::LoadBytecode(
return ChangeUint32ToWord(bytecode); return ChangeUint32ToWord(bytecode);
} }
void InterpreterAssembler::StarDispatchLookahead(TNode<WordT> target_bytecode) { TNode<WordT> InterpreterAssembler::StarDispatchLookahead(
TNode<WordT> target_bytecode) {
Label do_inline_star(this), done(this); Label do_inline_star(this), done(this);
// Check whether the following opcode is one of the short Star codes. All TVARIABLE(WordT, var_bytecode, target_bytecode);
// opcodes higher than the short Star variants are invalid, and invalid
// opcodes are never deliberately written, so we can use a one-sided check. TNode<Int32T> star_bytecode =
// This is no less secure than the normal-length Star handler, which performs Int32Constant(static_cast<int>(Bytecode::kStar));
// no validation on its operand. TNode<BoolT> is_star =
STATIC_ASSERT(static_cast<int>(Bytecode::kLastShortStar) + 1 == Word32Equal(TruncateWordToInt32(target_bytecode), star_bytecode);
static_cast<int>(Bytecode::kIllegal));
STATIC_ASSERT(Bytecode::kIllegal == Bytecode::kLast);
TNode<Int32T> first_short_star_bytecode =
Int32Constant(static_cast<int>(Bytecode::kFirstShortStar));
TNode<BoolT> is_star = Uint32GreaterThanOrEqual(
TruncateWordToInt32(target_bytecode), first_short_star_bytecode);
Branch(is_star, &do_inline_star, &done); Branch(is_star, &do_inline_star, &done);
BIND(&do_inline_star); BIND(&do_inline_star);
{ {
InlineShortStar(target_bytecode); InlineStar();
var_bytecode = LoadBytecode(BytecodeOffset());
// Rather than merging control flow to a single indirect jump, we can get Goto(&done);
// better branch prediction by duplicating it. This is because the
// instruction following a merged X + StarN is a bad predictor of the
// instruction following a non-merged X, and vice versa.
DispatchToBytecode(LoadBytecode(BytecodeOffset()), BytecodeOffset());
} }
BIND(&done); BIND(&done);
return var_bytecode.value();
} }
void InterpreterAssembler::InlineShortStar(TNode<WordT> target_bytecode) { void InterpreterAssembler::InlineStar() {
Bytecode previous_bytecode = bytecode_; Bytecode previous_bytecode = bytecode_;
ImplicitRegisterUse previous_acc_use = implicit_register_use_; ImplicitRegisterUse previous_acc_use = implicit_register_use_;
// At this point we don't know statically what bytecode we're executing, but bytecode_ = Bytecode::kStar;
// kStar0 has the right attributes (namely, no operands) for any of the short
// Star codes.
bytecode_ = Bytecode::kStar0;
implicit_register_use_ = ImplicitRegisterUse::kNone; implicit_register_use_ = ImplicitRegisterUse::kNone;
#ifdef V8_TRACE_UNOPTIMIZED #ifdef V8_TRACE_UNOPTIMIZED
TraceBytecode(Runtime::kTraceUnoptimizedBytecodeEntry); TraceBytecode(Runtime::kTraceUnoptimizedBytecodeEntry);
#endif #endif
StoreRegister(GetAccumulator(),
StoreRegisterForShortStar(GetAccumulator(), target_bytecode); BytecodeOperandReg(0, LoadSensitivity::kSafe));
DCHECK_EQ(implicit_register_use_, DCHECK_EQ(implicit_register_use_,
Bytecodes::GetImplicitRegisterUse(bytecode_)); Bytecodes::GetImplicitRegisterUse(bytecode_));
...@@ -1193,13 +1153,9 @@ void InterpreterAssembler::Dispatch() { ...@@ -1193,13 +1153,9 @@ void InterpreterAssembler::Dispatch() {
DCHECK_IMPLIES(Bytecodes::MakesCallAlongCriticalPath(bytecode_), made_call_); DCHECK_IMPLIES(Bytecodes::MakesCallAlongCriticalPath(bytecode_), made_call_);
TNode<IntPtrT> target_offset = Advance(); TNode<IntPtrT> target_offset = Advance();
TNode<WordT> target_bytecode = LoadBytecode(target_offset); TNode<WordT> target_bytecode = LoadBytecode(target_offset);
DispatchToBytecodeWithOptionalStarLookahead(target_bytecode);
}
void InterpreterAssembler::DispatchToBytecodeWithOptionalStarLookahead(
TNode<WordT> target_bytecode) {
if (Bytecodes::IsStarLookahead(bytecode_, operand_scale_)) { if (Bytecodes::IsStarLookahead(bytecode_, operand_scale_)) {
StarDispatchLookahead(target_bytecode); target_bytecode = StarDispatchLookahead(target_bytecode);
} }
DispatchToBytecode(target_bytecode, BytecodeOffset()); DispatchToBytecode(target_bytecode, BytecodeOffset());
} }
......
...@@ -226,12 +226,6 @@ class V8_EXPORT_PRIVATE InterpreterAssembler : public CodeStubAssembler { ...@@ -226,12 +226,6 @@ class V8_EXPORT_PRIVATE InterpreterAssembler : public CodeStubAssembler {
void DispatchToBytecode(TNode<WordT> target_bytecode, void DispatchToBytecode(TNode<WordT> target_bytecode,
TNode<IntPtrT> new_bytecode_offset); TNode<IntPtrT> new_bytecode_offset);
// Dispatches to |target_bytecode| at BytecodeOffset(). Includes short-star
// lookahead if the current bytecode_ is likely followed by a short-star
// instruction.
void DispatchToBytecodeWithOptionalStarLookahead(
TNode<WordT> target_bytecode);
// Abort with the given abort reason. // Abort with the given abort reason.
void Abort(AbortReason abort_reason); void Abort(AbortReason abort_reason);
void AbortIfWordNotEqual(TNode<WordT> lhs, TNode<WordT> rhs, void AbortIfWordNotEqual(TNode<WordT> lhs, TNode<WordT> rhs,
...@@ -253,11 +247,6 @@ class V8_EXPORT_PRIVATE InterpreterAssembler : public CodeStubAssembler { ...@@ -253,11 +247,6 @@ class V8_EXPORT_PRIVATE InterpreterAssembler : public CodeStubAssembler {
void ToNumberOrNumeric(Object::Conversion mode); void ToNumberOrNumeric(Object::Conversion mode);
void StoreRegisterForShortStar(TNode<Object> value, TNode<WordT> opcode);
// Load the bytecode at |bytecode_offset|.
TNode<WordT> LoadBytecode(TNode<IntPtrT> bytecode_offset);
private: private:
// Returns a pointer to the current function's BytecodeArray object. // Returns a pointer to the current function's BytecodeArray object.
TNode<BytecodeArray> BytecodeArrayTaggedPointer(); TNode<BytecodeArray> BytecodeArrayTaggedPointer();
...@@ -378,14 +367,16 @@ class V8_EXPORT_PRIVATE InterpreterAssembler : public CodeStubAssembler { ...@@ -378,14 +367,16 @@ class V8_EXPORT_PRIVATE InterpreterAssembler : public CodeStubAssembler {
TNode<IntPtrT> Advance(int delta); TNode<IntPtrT> Advance(int delta);
TNode<IntPtrT> Advance(TNode<IntPtrT> delta, bool backward = false); TNode<IntPtrT> Advance(TNode<IntPtrT> delta, bool backward = false);
// Look ahead for short Star and inline it in a branch, including subsequent // Load the bytecode at |bytecode_offset|.
// dispatch. Anything after this point can assume that the following TNode<WordT> LoadBytecode(TNode<IntPtrT> bytecode_offset);
// instruction was not a short Star.
void StarDispatchLookahead(TNode<WordT> target_bytecode); // Look ahead for Star and inline it in a branch. Returns a new target
// bytecode node for dispatch.
TNode<WordT> StarDispatchLookahead(TNode<WordT> target_bytecode);
// Build code for short Star at the current BytecodeOffset() and Advance() to // Build code for Star at the current BytecodeOffset() and Advance() to the
// the next dispatch offset. // next dispatch offset.
void InlineShortStar(TNode<WordT> target_bytecode); void InlineStar();
// Dispatch to the bytecode handler with code entry point |handler_entry|. // Dispatch to the bytecode handler with code entry point |handler_entry|.
void DispatchToBytecodeHandlerEntry(TNode<RawPtrT> handler_entry, void DispatchToBytecodeHandlerEntry(TNode<RawPtrT> handler_entry,
......
...@@ -145,20 +145,6 @@ IGNITION_HANDLER(Star, InterpreterAssembler) { ...@@ -145,20 +145,6 @@ IGNITION_HANDLER(Star, InterpreterAssembler) {
Dispatch(); Dispatch();
} }
// Star0 - StarN
//
// Store accumulator to one of a special batch of registers, without using a
// second byte to specify the destination.
//
// Even though this handler is declared as Star0, multiple entries in
// the jump table point to this handler.
IGNITION_HANDLER(Star0, InterpreterAssembler) {
TNode<Object> accumulator = GetAccumulator();
TNode<WordT> opcode = LoadBytecode(BytecodeOffset());
StoreRegisterForShortStar(accumulator, opcode);
Dispatch();
}
// Mov <src> <dst> // Mov <src> <dst>
// //
// Stores the value of register <src> to register <dst>. // Stores the value of register <src> to register <dst>.
...@@ -2797,7 +2783,7 @@ IGNITION_HANDLER(Debugger, InterpreterAssembler) { ...@@ -2797,7 +2783,7 @@ IGNITION_HANDLER(Debugger, InterpreterAssembler) {
TNode<IntPtrT> original_bytecode = SmiUntag(Projection<1>(result_pair)); \ TNode<IntPtrT> original_bytecode = SmiUntag(Projection<1>(result_pair)); \
MaybeDropFrames(context); \ MaybeDropFrames(context); \
SetAccumulator(return_value); \ SetAccumulator(return_value); \
DispatchToBytecodeWithOptionalStarLookahead(original_bytecode); \ DispatchToBytecode(original_bytecode, BytecodeOffset()); \
} }
DEBUG_BREAK_BYTECODE_LIST(DEBUG_BREAK) DEBUG_BREAK_BYTECODE_LIST(DEBUG_BREAK)
#undef DEBUG_BREAK #undef DEBUG_BREAK
...@@ -3117,19 +3103,8 @@ Handle<Code> GenerateBytecodeHandler(Isolate* isolate, const char* debug_name, ...@@ -3117,19 +3103,8 @@ Handle<Code> GenerateBytecodeHandler(Isolate* isolate, const char* debug_name,
case Bytecode::k##Name: \ case Bytecode::k##Name: \
Name##Assembler::Generate(&state, operand_scale); \ Name##Assembler::Generate(&state, operand_scale); \
break; break;
BYTECODE_LIST_WITH_UNIQUE_HANDLERS(CALL_GENERATOR); BYTECODE_LIST(CALL_GENERATOR);
#undef CALL_GENERATOR #undef CALL_GENERATOR
case Bytecode::kIllegal:
IllegalAssembler::Generate(&state, operand_scale);
break;
case Bytecode::kStar0:
Star0Assembler::Generate(&state, operand_scale);
break;
default:
// Others (the rest of the short stars, and the rest of the illegal range)
// must not get their own handler generated. Rather, multiple entries in
// the jump table point to those handlers.
UNREACHABLE();
} }
Handle<Code> code = compiler::CodeAssembler::GenerateCode( Handle<Code> code = compiler::CodeAssembler::GenerateCode(
......
...@@ -83,14 +83,7 @@ namespace { ...@@ -83,14 +83,7 @@ namespace {
int BuiltinIndexFromBytecode(Bytecode bytecode, OperandScale operand_scale) { int BuiltinIndexFromBytecode(Bytecode bytecode, OperandScale operand_scale) {
int index = static_cast<int>(bytecode); int index = static_cast<int>(bytecode);
if (operand_scale == OperandScale::kSingle) { if (operand_scale != OperandScale::kSingle) {
if (Bytecodes::IsShortStar(bytecode)) {
index = static_cast<int>(Bytecode::kFirstShortStar);
} else if (bytecode > Bytecode::kLastShortStar) {
// Adjust the index due to repeated handlers.
index -= Bytecodes::kShortStarCount - 1;
}
} else {
// The table contains uint8_t offsets starting at 0 with // The table contains uint8_t offsets starting at 0 with
// kIllegalBytecodeHandlerEncoding for illegal bytecode/scale combinations. // kIllegalBytecodeHandlerEncoding for illegal bytecode/scale combinations.
uint8_t offset = kWideBytecodeToBuiltinsMapping[index]; uint8_t offset = kWideBytecodeToBuiltinsMapping[index];
...@@ -284,7 +277,6 @@ InterpreterCompilationJob::Status InterpreterCompilationJob::DoFinalizeJobImpl( ...@@ -284,7 +277,6 @@ InterpreterCompilationJob::Status InterpreterCompilationJob::DoFinalizeJobImpl(
compilation_info()->literal()->GetDebugName(); compilation_info()->literal()->GetDebugName();
os << "[generated bytecode for function: " << name.get() << " (" os << "[generated bytecode for function: " << name.get() << " ("
<< shared_info << ")]" << std::endl; << shared_info << ")]" << std::endl;
os << "Bytecode length: " << bytecodes->length() << std::endl;
bytecodes->Disassemble(os); bytecodes->Disassemble(os);
os << std::flush; os << std::flush;
} }
...@@ -344,23 +336,23 @@ void Interpreter::Initialize() { ...@@ -344,23 +336,23 @@ void Interpreter::Initialize() {
interpreter_entry_trampoline_instruction_start_ = code->InstructionStart(); interpreter_entry_trampoline_instruction_start_ = code->InstructionStart();
// Initialize the dispatch table. // Initialize the dispatch table.
ForEachBytecode([=](Bytecode bytecode, OperandScale operand_scale) { Code illegal = builtins->builtin(Builtins::kIllegalHandler);
int builtin_id = BuiltinIndexFromBytecode(bytecode, operand_scale); int builtin_id = Builtins::kFirstBytecodeHandler;
Code handler = builtins->builtin(builtin_id); ForEachBytecode([=, &builtin_id](Bytecode bytecode,
OperandScale operand_scale) {
Code handler = illegal;
if (Bytecodes::BytecodeHasHandler(bytecode, operand_scale)) { if (Bytecodes::BytecodeHasHandler(bytecode, operand_scale)) {
#ifdef DEBUG #ifdef DEBUG
std::string builtin_name(Builtins::name(builtin_id)); std::string builtin_name(Builtins::name(builtin_id));
std::string expected_name = std::string expected_name =
(Bytecodes::IsShortStar(bytecode) Bytecodes::ToString(bytecode, operand_scale, "") + "Handler";
? "ShortStar"
: Bytecodes::ToString(bytecode, operand_scale, "")) +
"Handler";
DCHECK_EQ(expected_name, builtin_name); DCHECK_EQ(expected_name, builtin_name);
#endif #endif
handler = builtins->builtin(builtin_id++);
} }
SetBytecodeHandler(bytecode, operand_scale, handler); SetBytecodeHandler(bytecode, operand_scale, handler);
}); });
DCHECK(builtin_id == Builtins::builtin_count);
DCHECK(IsDispatchTableInitialized()); DCHECK(IsDispatchTableInitialized());
} }
......
...@@ -28,18 +28,18 @@ snippet: " ...@@ -28,18 +28,18 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 31 bytecode array length: 35
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 45 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37), /* 45 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
B(Star2), B(Star), R(2),
B(LdaZero), B(LdaZero),
B(Star1), B(Star), R(1),
B(Ldar), R(0), B(Ldar), R(0),
/* 54 E> */ B(StaInArrayLiteral), R(2), R(1), U8(1), /* 54 E> */ B(StaInArrayLiteral), R(2), R(1), U8(1),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star1), B(Star), R(1),
B(Ldar), R(0), B(Ldar), R(0),
/* 59 E> */ B(AddSmi), I8(1), U8(3), /* 59 E> */ B(AddSmi), I8(1), U8(3),
B(StaInArrayLiteral), R(2), R(1), U8(1), B(StaInArrayLiteral), R(2), R(1), U8(1),
...@@ -75,28 +75,28 @@ snippet: " ...@@ -75,28 +75,28 @@ snippet: "
" "
frame size: 5 frame size: 5
parameter count: 1 parameter count: 1
bytecode array length: 57 bytecode array length: 65
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 45 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(4), /* 45 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(4),
B(Star2), B(Star), R(2),
B(LdaZero), B(LdaZero),
B(Star1), B(Star), R(1),
B(CreateArrayLiteral), U8(1), U8(1), U8(37), B(CreateArrayLiteral), U8(1), U8(1), U8(37),
B(Star4), B(Star), R(4),
B(LdaZero), B(LdaZero),
B(Star3), B(Star), R(3),
B(Ldar), R(0), B(Ldar), R(0),
/* 56 E> */ B(StaInArrayLiteral), R(4), R(3), U8(2), /* 56 E> */ B(StaInArrayLiteral), R(4), R(3), U8(2),
B(Ldar), R(4), B(Ldar), R(4),
B(StaInArrayLiteral), R(2), R(1), U8(4), B(StaInArrayLiteral), R(2), R(1), U8(4),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star1), B(Star), R(1),
B(CreateArrayLiteral), U8(2), U8(6), U8(37), B(CreateArrayLiteral), U8(2), U8(6), U8(37),
B(Star4), B(Star), R(4),
B(LdaZero), B(LdaZero),
B(Star3), B(Star), R(3),
B(Ldar), R(0), B(Ldar), R(0),
/* 68 E> */ B(AddSmi), I8(2), U8(7), /* 68 E> */ B(AddSmi), I8(2), U8(7),
B(StaInArrayLiteral), R(4), R(3), U8(8), B(StaInArrayLiteral), R(4), R(3), U8(8),
...@@ -119,10 +119,10 @@ snippet: " ...@@ -119,10 +119,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 7 bytecode array length: 8
bytecodes: [ bytecodes: [
/* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37), /* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
B(Star0), B(Star), R(0),
/* 64 S> */ B(CreateArrayFromIterable), /* 64 S> */ B(CreateArrayFromIterable),
/* 68 S> */ B(Return), /* 68 S> */ B(Return),
] ]
...@@ -138,32 +138,32 @@ snippet: " ...@@ -138,32 +138,32 @@ snippet: "
" "
frame size: 6 frame size: 6
parameter count: 1 parameter count: 1
bytecode array length: 67 bytecode array length: 74
bytecodes: [ bytecodes: [
/* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37), /* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
B(Star0), B(Star), R(0),
/* 52 S> */ B(CreateArrayLiteral), U8(1), U8(1), U8(37), /* 52 S> */ B(CreateArrayLiteral), U8(1), U8(1), U8(37),
B(Star2), B(Star), R(2),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
/* 67 S> */ B(Star1), /* 67 S> */ B(Star), R(1),
/* 67 E> */ B(GetIterator), R(0), U8(2), U8(4), /* 67 E> */ B(GetIterator), R(0), U8(2), U8(4),
B(JumpIfJSReceiver), U8(7), B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star4), B(Star), R(4),
B(LdaNamedProperty), R(4), U8(2), U8(6), B(LdaNamedProperty), R(4), U8(2), U8(6),
B(Star3), B(Star), R(3),
B(CallProperty0), R(3), R(4), U8(15), B(CallProperty0), R(3), R(4), U8(15),
B(Star5), B(Star), R(5),
B(JumpIfJSReceiver), U8(7), B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
B(LdaNamedProperty), R(5), U8(3), U8(17), B(LdaNamedProperty), R(5), U8(3), U8(17),
B(JumpIfToBooleanTrue), U8(18), B(JumpIfToBooleanTrue), U8(19),
B(LdaNamedProperty), R(5), U8(4), U8(8), B(LdaNamedProperty), R(5), U8(4), U8(8),
B(StaInArrayLiteral), R(2), R(1), U8(13), B(StaInArrayLiteral), R(2), R(1), U8(13),
B(Ldar), R(1), B(Ldar), R(1),
B(Inc), U8(12), B(Inc), U8(12),
B(Star1), B(Star), R(1),
B(JumpLoop), U8(31), I8(0), B(JumpLoop), U8(33), I8(0),
B(Ldar), R(2), B(Ldar), R(2),
/* 71 S> */ B(Return), /* 71 S> */ B(Return),
] ]
...@@ -183,14 +183,14 @@ snippet: " ...@@ -183,14 +183,14 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 21 bytecode array length: 24
bytecodes: [ bytecodes: [
/* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37), /* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
B(Star0), B(Star), R(0),
/* 64 S> */ B(CreateArrayFromIterable), /* 64 S> */ B(CreateArrayFromIterable),
B(Star2), B(Star), R(2),
B(LdaNamedProperty), R(2), U8(1), U8(1), B(LdaNamedProperty), R(2), U8(1), U8(1),
B(Star1), B(Star), R(1),
B(LdaSmi), I8(3), B(LdaSmi), I8(3),
B(StaInArrayLiteral), R(2), R(1), U8(3), B(StaInArrayLiteral), R(2), R(1), U8(3),
B(Ldar), R(2), B(Ldar), R(2),
......
...@@ -12,20 +12,20 @@ snippet: " ...@@ -12,20 +12,20 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 18 bytecode array length: 24
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaZero), /* 42 S> */ B(LdaZero),
B(Star0), B(Star), R(0),
/* 49 S> */ B(LdaSmi), I8(1), /* 49 S> */ B(LdaSmi), I8(1),
B(Star1), B(Star), R(1),
/* 52 S> */ B(LdaSmi), I8(2), /* 52 S> */ B(LdaSmi), I8(2),
B(Star0), B(Star), R(0),
B(LdaSmi), I8(3), B(LdaSmi), I8(3),
B(Star1), B(Star), R(1),
B(LdaSmi), I8(4), B(LdaSmi), I8(4),
B(Star0), B(Star), R(0),
B(LdaSmi), I8(5), B(LdaSmi), I8(5),
B(Star1), B(Star), R(1),
/* 88 S> */ B(Return), /* 88 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -41,13 +41,13 @@ snippet: " ...@@ -41,13 +41,13 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 8 bytecode array length: 11
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(55), /* 42 S> */ B(LdaSmi), I8(55),
B(Star0), B(Star), R(0),
/* 54 S> */ B(LdaSmi), I8(100), /* 54 S> */ B(LdaSmi), I8(100),
B(Star0), B(Star), R(0),
B(Star1), B(Star), R(1),
/* 74 S> */ B(Return), /* 74 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -63,19 +63,19 @@ snippet: " ...@@ -63,19 +63,19 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 21 bytecode array length: 26
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(55), /* 42 S> */ B(LdaSmi), I8(55),
B(Star0), B(Star), R(0),
/* 46 S> */ B(LdaSmi), I8(100), /* 46 S> */ B(LdaSmi), I8(100),
B(Mov), R(0), R(1), B(Mov), R(0), R(1),
B(Star0), B(Star), R(0),
/* 52 E> */ B(Add), R(1), U8(0), /* 52 E> */ B(Add), R(1), U8(0),
B(Star1), B(Star), R(1),
B(LdaSmi), I8(101), B(LdaSmi), I8(101),
B(Star0), B(Star), R(0),
/* 64 E> */ B(Add), R(1), U8(1), /* 64 E> */ B(Add), R(1), U8(1),
B(Star0), B(Star), R(0),
/* 86 S> */ B(Return), /* 86 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -92,20 +92,20 @@ snippet: " ...@@ -92,20 +92,20 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 21 bytecode array length: 27
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(55), /* 42 S> */ B(LdaSmi), I8(55),
B(Star0), B(Star), R(0),
/* 46 S> */ B(LdaSmi), I8(56), /* 46 S> */ B(LdaSmi), I8(56),
B(Star0), B(Star), R(0),
/* 59 E> */ B(Sub), R(0), U8(1), /* 59 E> */ B(Sub), R(0), U8(1),
B(Star1), B(Star), R(1),
B(LdaSmi), I8(57), B(LdaSmi), I8(57),
B(Star0), B(Star), R(0),
/* 63 E> */ B(Add), R(1), U8(0), /* 63 E> */ B(Add), R(1), U8(0),
B(Star0), B(Star), R(0),
/* 75 S> */ B(Inc), U8(2), /* 75 S> */ B(Inc), U8(2),
B(Star0), B(Star), R(0),
/* 89 S> */ B(Return), /* 89 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -121,23 +121,23 @@ snippet: " ...@@ -121,23 +121,23 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 28 bytecode array length: 35
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(55), /* 42 S> */ B(LdaSmi), I8(55),
B(Star0), B(Star), R(0),
/* 54 S> */ B(LdaSmi), I8(1), /* 54 S> */ B(LdaSmi), I8(1),
B(Mov), R(0), R(2), B(Mov), R(0), R(2),
B(Star0), B(Star), R(0),
/* 56 E> */ B(Add), R(2), U8(0), /* 56 E> */ B(Add), R(2), U8(0),
B(Star2), B(Star), R(2),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(Star0), B(Star), R(0),
/* 66 E> */ B(Add), R(2), U8(1), /* 66 E> */ B(Add), R(2), U8(1),
B(Star2), B(Star), R(2),
B(LdaSmi), I8(3), B(LdaSmi), I8(3),
B(Star0), B(Star), R(0),
/* 76 E> */ B(Add), R(2), U8(2), /* 76 E> */ B(Add), R(2), U8(2),
B(Star1), B(Star), R(1),
/* 96 S> */ B(Return), /* 96 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -153,23 +153,23 @@ snippet: " ...@@ -153,23 +153,23 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 28 bytecode array length: 35
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(55), /* 42 S> */ B(LdaSmi), I8(55),
B(Star0), B(Star), R(0),
/* 54 S> */ B(LdaSmi), I8(1), /* 54 S> */ B(LdaSmi), I8(1),
B(Mov), R(0), R(1), B(Mov), R(0), R(1),
B(Star0), B(Star), R(0),
/* 56 E> */ B(Add), R(1), U8(0), /* 56 E> */ B(Add), R(1), U8(0),
B(Star1), B(Star), R(1),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(Star0), B(Star), R(0),
/* 66 E> */ B(Add), R(1), U8(1), /* 66 E> */ B(Add), R(1), U8(1),
B(Star1), B(Star), R(1),
B(LdaSmi), I8(3), B(LdaSmi), I8(3),
B(Star0), B(Star), R(0),
/* 76 E> */ B(Add), R(1), U8(2), /* 76 E> */ B(Add), R(1), U8(2),
B(Star0), B(Star), R(0),
/* 96 S> */ B(Return), /* 96 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -184,37 +184,37 @@ snippet: " ...@@ -184,37 +184,37 @@ snippet: "
" "
frame size: 4 frame size: 4
parameter count: 1 parameter count: 1
bytecode array length: 59 bytecode array length: 72
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(10), /* 42 S> */ B(LdaSmi), I8(10),
B(Star0), B(Star), R(0),
/* 50 S> */ B(LdaSmi), I8(20), /* 50 S> */ B(LdaSmi), I8(20),
B(Star1), B(Star), R(1),
/* 54 S> */ B(LdaSmi), I8(1), /* 54 S> */ B(LdaSmi), I8(1),
B(Mov), R(0), R(2), B(Mov), R(0), R(2),
B(Star0), B(Star), R(0),
/* 63 E> */ B(Add), R(2), U8(0), /* 63 E> */ B(Add), R(2), U8(0),
B(Star2), B(Star), R(2),
B(Ldar), R(0), B(Ldar), R(0),
/* 78 E> */ B(AddSmi), I8(1), U8(2), /* 78 E> */ B(AddSmi), I8(1), U8(2),
B(Star3), B(Star), R(3),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(Star1), B(Star), R(1),
/* 83 E> */ B(Mul), R(3), U8(1), /* 83 E> */ B(Mul), R(3), U8(1),
/* 73 E> */ B(Add), R(2), U8(3), /* 73 E> */ B(Add), R(2), U8(3),
B(Star2), B(Star), R(2),
B(LdaSmi), I8(3), B(LdaSmi), I8(3),
B(Star1), B(Star), R(1),
/* 93 E> */ B(Add), R(2), U8(4), /* 93 E> */ B(Add), R(2), U8(4),
B(Star2), B(Star), R(2),
B(LdaSmi), I8(4), B(LdaSmi), I8(4),
B(Star0), B(Star), R(0),
/* 103 E> */ B(Add), R(2), U8(5), /* 103 E> */ B(Add), R(2), U8(5),
B(Star2), B(Star), R(2),
B(LdaSmi), I8(5), B(LdaSmi), I8(5),
B(Star1), B(Star), R(1),
/* 113 E> */ B(Add), R(2), U8(6), /* 113 E> */ B(Add), R(2), U8(6),
B(Star2), B(Star), R(2),
B(Ldar), R(1), B(Ldar), R(1),
/* 123 E> */ B(Add), R(2), U8(7), /* 123 E> */ B(Add), R(2), U8(7),
/* 127 S> */ B(Return), /* 127 S> */ B(Return),
...@@ -231,26 +231,26 @@ snippet: " ...@@ -231,26 +231,26 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 35 bytecode array length: 42
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(17), /* 42 S> */ B(LdaSmi), I8(17),
B(Star0), B(Star), R(0),
/* 46 S> */ B(LdaSmi), I8(1), /* 46 S> */ B(LdaSmi), I8(1),
B(Star1), B(Star), R(1),
B(Ldar), R(0), B(Ldar), R(0),
/* 55 E> */ B(Add), R(1), U8(0), /* 55 E> */ B(Add), R(1), U8(0),
B(Star1), B(Star), R(1),
B(Ldar), R(0), B(Ldar), R(0),
B(ToNumeric), U8(1), B(ToNumeric), U8(1),
B(Star2), B(Star), R(2),
B(Inc), U8(1), B(Inc), U8(1),
B(Star0), B(Star), R(0),
B(Ldar), R(2), B(Ldar), R(2),
/* 59 E> */ B(Add), R(1), U8(2), /* 59 E> */ B(Add), R(1), U8(2),
B(Star1), B(Star), R(1),
B(Ldar), R(0), B(Ldar), R(0),
B(Inc), U8(3), B(Inc), U8(3),
B(Star0), B(Star), R(0),
/* 67 E> */ B(Add), R(1), U8(4), /* 67 E> */ B(Add), R(1), U8(4),
/* 75 S> */ B(Return), /* 75 S> */ B(Return),
] ]
......
...@@ -11,10 +11,10 @@ snippet: " ...@@ -11,10 +11,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 16 bytecode array length: 17
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 45 S> */ B(JumpIfToBooleanTrue), U8(8), /* 45 S> */ B(JumpIfToBooleanTrue), U8(8),
B(LdaZero), B(LdaZero),
/* 56 E> */ B(TestLessThan), R(0), U8(0), /* 56 E> */ B(TestLessThan), R(0), U8(0),
...@@ -35,10 +35,10 @@ snippet: " ...@@ -35,10 +35,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 16 bytecode array length: 17
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 45 S> */ B(JumpIfToBooleanFalse), U8(11), /* 45 S> */ B(JumpIfToBooleanFalse), U8(11),
B(LdaZero), B(LdaZero),
/* 56 E> */ B(TestLessThan), R(0), U8(0), /* 56 E> */ B(TestLessThan), R(0), U8(0),
...@@ -59,10 +59,10 @@ snippet: " ...@@ -59,10 +59,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 20 bytecode array length: 22
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 45 S> */ B(JumpIfToBooleanTrue), U8(8), /* 45 S> */ B(JumpIfToBooleanTrue), U8(8),
B(LdaZero), B(LdaZero),
/* 57 E> */ B(TestLessThan), R(0), U8(0), /* 57 E> */ B(TestLessThan), R(0), U8(0),
...@@ -70,7 +70,7 @@ bytecodes: [ ...@@ -70,7 +70,7 @@ bytecodes: [
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(Jump), U8(4), B(Jump), U8(4),
B(LdaSmi), I8(3), B(LdaSmi), I8(3),
B(Star0), B(Star), R(0),
B(LdaUndefined), B(LdaUndefined),
/* 71 S> */ B(Return), /* 71 S> */ B(Return),
] ]
......
...@@ -17,12 +17,12 @@ snippet: " ...@@ -17,12 +17,12 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 11 bytecode array length: 13
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaZero), /* 42 S> */ B(LdaZero),
B(Star0), B(Star), R(0),
/* 62 S> */ B(AddSmi), I8(1), U8(0), /* 62 S> */ B(AddSmi), I8(1), U8(0),
B(Star0), B(Star), R(0),
/* 69 S> */ B(Jump), U8(2), /* 69 S> */ B(Jump), U8(2),
/* 97 S> */ B(Ldar), R(0), /* 97 S> */ B(Ldar), R(0),
/* 106 S> */ B(Return), /* 106 S> */ B(Return),
...@@ -47,38 +47,38 @@ snippet: " ...@@ -47,38 +47,38 @@ snippet: "
" "
frame size: 4 frame size: 4
parameter count: 1 parameter count: 1
bytecode array length: 59 bytecode array length: 66
bytecodes: [ bytecodes: [
/* 44 S> */ B(LdaZero), /* 44 S> */ B(LdaZero),
B(Star0), B(Star), R(0),
/* 71 S> */ B(LdaZero), /* 71 S> */ B(LdaZero),
B(Star1), B(Star), R(1),
/* 76 S> */ B(LdaSmi), I8(10), /* 76 S> */ B(LdaSmi), I8(10),
/* 76 E> */ B(TestLessThan), R(1), U8(0), /* 76 E> */ B(TestLessThan), R(1), U8(0),
B(JumpIfFalse), U8(47), B(JumpIfFalse), U8(52),
/* 106 S> */ B(LdaZero), /* 106 S> */ B(LdaZero),
B(Star2), B(Star), R(2),
/* 111 S> */ B(LdaSmi), I8(3), /* 111 S> */ B(LdaSmi), I8(3),
/* 111 E> */ B(TestLessThan), R(2), U8(1), /* 111 E> */ B(TestLessThan), R(2), U8(1),
B(JumpIfFalse), U8(30), B(JumpIfFalse), U8(33),
/* 129 S> */ B(Ldar), R(0), /* 129 S> */ B(Ldar), R(0),
B(Inc), U8(2), B(Inc), U8(2),
B(Star0), B(Star), R(0),
/* 142 S> */ B(Ldar), R(2), /* 142 S> */ B(Ldar), R(2),
/* 148 E> */ B(Add), R(1), U8(3), /* 148 E> */ B(Add), R(1), U8(3),
B(Star3), B(Star), R(3),
B(LdaSmi), I8(12), B(LdaSmi), I8(12),
/* 152 E> */ B(TestEqual), R(3), U8(4), /* 152 E> */ B(TestEqual), R(3), U8(4),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
/* 161 S> */ B(Jump), U8(18), /* 161 S> */ B(Jump), U8(20),
/* 118 S> */ B(Ldar), R(2), /* 118 S> */ B(Ldar), R(2),
B(Inc), U8(5), B(Inc), U8(5),
B(Star2), B(Star), R(2),
/* 93 E> */ B(JumpLoop), U8(32), I8(1), /* 93 E> */ B(JumpLoop), U8(35), I8(1),
/* 84 S> */ B(Ldar), R(1), /* 84 S> */ B(Ldar), R(1),
B(Inc), U8(6), B(Inc), U8(6),
B(Star1), B(Star), R(1),
/* 58 E> */ B(JumpLoop), U8(49), I8(0), /* 58 E> */ B(JumpLoop), U8(54), I8(0),
/* 188 S> */ B(Ldar), R(0), /* 188 S> */ B(Ldar), R(0),
/* 199 S> */ B(Return), /* 199 S> */ B(Return),
] ]
...@@ -97,14 +97,14 @@ snippet: " ...@@ -97,14 +97,14 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 27 bytecode array length: 28
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateBlockContext), U8(0), /* 30 E> */ B(CreateBlockContext), U8(0),
B(PushContext), R(2), B(PushContext), R(2),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(2),
B(CreateClosure), U8(1), U8(0), U8(2), B(CreateClosure), U8(1), U8(0), U8(2),
B(Star1), B(Star), R(1),
/* 53 S> */ B(LdaSmi), I8(10), /* 53 S> */ B(LdaSmi), I8(10),
/* 53 E> */ B(StaCurrentContextSlot), U8(2), /* 53 E> */ B(StaCurrentContextSlot), U8(2),
/* 85 S> */ B(Mov), R(1), R(0), /* 85 S> */ B(Mov), R(1), R(0),
...@@ -136,7 +136,7 @@ snippet: " ...@@ -136,7 +136,7 @@ snippet: "
" "
frame size: 4 frame size: 4
parameter count: 1 parameter count: 1
bytecode array length: 51 bytecode array length: 52
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateFunctionContext), U8(0), U8(1), /* 30 E> */ B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(2), B(PushContext), R(2),
...@@ -149,7 +149,7 @@ bytecodes: [ ...@@ -149,7 +149,7 @@ bytecodes: [
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(2),
B(CreateClosure), U8(2), U8(0), U8(2), B(CreateClosure), U8(2), U8(0), U8(2),
B(Star1), B(Star), R(1),
/* 76 S> */ B(LdaSmi), I8(2), /* 76 S> */ B(LdaSmi), I8(2),
/* 76 E> */ B(StaCurrentContextSlot), U8(2), /* 76 E> */ B(StaCurrentContextSlot), U8(2),
/* 113 S> */ B(Mov), R(1), R(0), /* 113 S> */ B(Mov), R(1), R(0),
......
...@@ -11,14 +11,14 @@ snippet: " ...@@ -11,14 +11,14 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 21 bytecode array length: 24
bytecodes: [ bytecodes: [
/* 34 S> */ B(LdaGlobal), U8(0), U8(0), /* 34 S> */ B(LdaGlobal), U8(0), U8(0),
B(Star1), B(Star), R(1),
/* 39 E> */ B(LdaNamedProperty), R(1), U8(1), U8(2), /* 39 E> */ B(LdaNamedProperty), R(1), U8(1), U8(2),
B(Star0), B(Star), R(0),
B(CreateArrayLiteral), U8(2), U8(4), U8(37), B(CreateArrayLiteral), U8(2), U8(4), U8(37),
B(Star2), B(Star), R(2),
/* 39 E> */ B(CallWithSpread), R(0), R(1), U8(2), U8(5), /* 39 E> */ B(CallWithSpread), R(0), R(1), U8(2), U8(5),
B(LdaUndefined), B(LdaUndefined),
/* 58 S> */ B(Return), /* 58 S> */ B(Return),
...@@ -37,16 +37,16 @@ snippet: " ...@@ -37,16 +37,16 @@ snippet: "
" "
frame size: 4 frame size: 4
parameter count: 1 parameter count: 1
bytecode array length: 23 bytecode array length: 27
bytecodes: [ bytecodes: [
/* 34 S> */ B(LdaGlobal), U8(0), U8(0), /* 34 S> */ B(LdaGlobal), U8(0), U8(0),
B(Star1), B(Star), R(1),
/* 39 E> */ B(LdaNamedProperty), R(1), U8(1), U8(2), /* 39 E> */ B(LdaNamedProperty), R(1), U8(1), U8(2),
B(Star0), B(Star), R(0),
B(LdaZero), B(LdaZero),
B(Star2), B(Star), R(2),
B(CreateArrayLiteral), U8(2), U8(4), U8(37), B(CreateArrayLiteral), U8(2), U8(4), U8(37),
B(Star3), B(Star), R(3),
/* 39 E> */ B(CallWithSpread), R(0), R(1), U8(3), U8(5), /* 39 E> */ B(CallWithSpread), R(0), R(1), U8(3), U8(5),
B(LdaUndefined), B(LdaUndefined),
/* 61 S> */ B(Return), /* 61 S> */ B(Return),
...@@ -65,37 +65,37 @@ snippet: " ...@@ -65,37 +65,37 @@ snippet: "
" "
frame size: 8 frame size: 8
parameter count: 1 parameter count: 1
bytecode array length: 91 bytecode array length: 100
bytecodes: [ bytecodes: [
/* 34 S> */ B(LdaGlobal), U8(0), U8(0), /* 34 S> */ B(LdaGlobal), U8(0), U8(0),
B(Star0), B(Star), R(0),
B(LdaNamedProperty), R(0), U8(1), U8(2), B(LdaNamedProperty), R(0), U8(1), U8(2),
B(Star1), B(Star), R(1),
B(CreateArrayLiteral), U8(2), U8(4), U8(37), B(CreateArrayLiteral), U8(2), U8(4), U8(37),
B(Star4), B(Star), R(4),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star3), B(Star), R(3),
/* 49 S> */ B(CreateArrayLiteral), U8(3), U8(5), U8(37), /* 49 S> */ B(CreateArrayLiteral), U8(3), U8(5), U8(37),
B(Star7), B(Star), R(7),
/* 49 E> */ B(GetIterator), R(7), U8(6), U8(8), /* 49 E> */ B(GetIterator), R(7), U8(6), U8(8),
B(Mov), R(0), R(2), B(Mov), R(0), R(2),
B(JumpIfJSReceiver), U8(7), B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
B(Star6), B(Star), R(6),
B(LdaNamedProperty), R(6), U8(4), U8(10), B(LdaNamedProperty), R(6), U8(4), U8(10),
B(Star5), B(Star), R(5),
B(CallProperty0), R(5), R(6), U8(19), B(CallProperty0), R(5), R(6), U8(19),
B(Star7), B(Star), R(7),
B(JumpIfJSReceiver), U8(7), B(JumpIfJSReceiver), U8(7),
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(7), U8(1), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(7), U8(1),
B(LdaNamedProperty), R(7), U8(5), U8(21), B(LdaNamedProperty), R(7), U8(5), U8(21),
B(JumpIfToBooleanTrue), U8(18), B(JumpIfToBooleanTrue), U8(19),
B(LdaNamedProperty), R(7), U8(6), U8(12), B(LdaNamedProperty), R(7), U8(6), U8(12),
B(StaInArrayLiteral), R(4), R(3), U8(17), B(StaInArrayLiteral), R(4), R(3), U8(17),
B(Ldar), R(3), B(Ldar), R(3),
B(Inc), U8(16), B(Inc), U8(16),
B(Star3), B(Star), R(3),
B(JumpLoop), U8(31), I8(0), B(JumpLoop), U8(33), I8(0),
B(LdaSmi), I8(4), B(LdaSmi), I8(4),
B(StaInArrayLiteral), R(4), R(3), U8(17), B(StaInArrayLiteral), R(4), R(3), U8(17),
B(Mov), R(4), R(3), B(Mov), R(4), R(3),
......
...@@ -14,10 +14,10 @@ snippet: " ...@@ -14,10 +14,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 8 bytecode array length: 9
bytecodes: [ bytecodes: [
/* 32 S> */ B(LdaGlobal), U8(0), U8(0), /* 32 S> */ B(LdaGlobal), U8(0), U8(0),
B(Star0), B(Star), R(0),
/* 39 E> */ B(CallUndefinedReceiver0), R(0), U8(2), /* 39 E> */ B(CallUndefinedReceiver0), R(0), U8(2),
/* 43 S> */ B(Return), /* 43 S> */ B(Return),
] ]
...@@ -35,16 +35,16 @@ snippet: " ...@@ -35,16 +35,16 @@ snippet: "
" "
frame size: 4 frame size: 4
parameter count: 1 parameter count: 1
bytecode array length: 19 bytecode array length: 23
bytecodes: [ bytecodes: [
/* 39 S> */ B(LdaGlobal), U8(0), U8(0), /* 39 S> */ B(LdaGlobal), U8(0), U8(0),
B(Star0), B(Star), R(0),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star1), B(Star), R(1),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(Star2), B(Star), R(2),
B(LdaSmi), I8(3), B(LdaSmi), I8(3),
B(Star3), B(Star), R(3),
/* 46 E> */ B(CallUndefinedReceiver), R(0), R(1), U8(3), U8(2), /* 46 E> */ B(CallUndefinedReceiver), R(0), R(1), U8(3), U8(2),
/* 57 S> */ B(Return), /* 57 S> */ B(Return),
] ]
......
...@@ -11,7 +11,7 @@ snippet: " ...@@ -11,7 +11,7 @@ snippet: "
" "
frame size: 10 frame size: 10
parameter count: 1 parameter count: 1
bytecode array length: 67 bytecode array length: 74
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateFunctionContext), U8(0), U8(4), /* 30 E> */ B(CreateFunctionContext), U8(0), U8(4),
B(PushContext), R(1), B(PushContext), R(1),
...@@ -24,23 +24,23 @@ bytecodes: [ ...@@ -24,23 +24,23 @@ bytecodes: [
/* 34 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 34 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
/* 36 E> */ B(StaLookupSlot), U8(2), U8(0), /* 36 E> */ B(StaLookupSlot), U8(2), U8(0),
/* 52 S> */ B(LdaLookupGlobalSlot), U8(3), U8(0), U8(1), /* 52 S> */ B(LdaLookupGlobalSlot), U8(3), U8(0), U8(1),
B(Star2), B(Star), R(2),
B(LdaConstant), U8(4), B(LdaConstant), U8(4),
B(Star3), B(Star), R(3),
B(LdaZero), B(LdaZero),
B(Star7), B(Star), R(7),
B(LdaSmi), I8(30), B(LdaSmi), I8(30),
B(Star8), B(Star), R(8),
B(LdaSmi), I8(52), B(LdaSmi), I8(52),
B(Star9), B(Star), R(9),
B(Mov), R(2), R(4), B(Mov), R(2), R(4),
B(Mov), R(3), R(5), B(Mov), R(3), R(5),
B(Mov), R(closure), R(6), B(Mov), R(closure), R(6),
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6), B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6),
B(Star2), B(Star), R(2),
/* 52 E> */ B(CallUndefinedReceiver1), R(2), R(3), U8(2), /* 52 E> */ B(CallUndefinedReceiver1), R(2), R(3), U8(2),
/* 62 S> */ B(LdaLookupGlobalSlot), U8(2), U8(4), U8(1), /* 62 S> */ B(LdaLookupGlobalSlot), U8(2), U8(4), U8(1),
B(Star2), B(Star), R(2),
/* 69 E> */ B(CallUndefinedReceiver0), R(2), U8(6), /* 69 E> */ B(CallUndefinedReceiver0), R(2), U8(6),
/* 73 S> */ B(Return), /* 73 S> */ B(Return),
] ]
......
...@@ -14,10 +14,10 @@ snippet: " ...@@ -14,10 +14,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 10 bytecode array length: 11
bytecodes: [ bytecodes: [
/* 50 S> */ B(LdaGlobal), U8(0), U8(0), /* 50 S> */ B(LdaGlobal), U8(0), U8(0),
B(Star0), B(Star), R(0),
/* 57 E> */ B(Construct), R(0), R(0), U8(0), U8(2), /* 57 E> */ B(Construct), R(0), R(0), U8(0), U8(2),
/* 67 S> */ B(Return), /* 67 S> */ B(Return),
] ]
...@@ -35,12 +35,12 @@ snippet: " ...@@ -35,12 +35,12 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 15 bytecode array length: 17
bytecodes: [ bytecodes: [
/* 63 S> */ B(LdaGlobal), U8(0), U8(0), /* 63 S> */ B(LdaGlobal), U8(0), U8(0),
B(Star0), B(Star), R(0),
B(LdaSmi), I8(3), B(LdaSmi), I8(3),
B(Star1), B(Star), R(1),
B(Ldar), R(0), B(Ldar), R(0),
/* 70 E> */ B(Construct), R(0), R(1), U8(1), U8(2), /* 70 E> */ B(Construct), R(0), R(1), U8(1), U8(2),
/* 81 S> */ B(Return), /* 81 S> */ B(Return),
...@@ -64,16 +64,16 @@ snippet: " ...@@ -64,16 +64,16 @@ snippet: "
" "
frame size: 4 frame size: 4
parameter count: 1 parameter count: 1
bytecode array length: 21 bytecode array length: 25
bytecodes: [ bytecodes: [
/* 105 S> */ B(LdaGlobal), U8(0), U8(0), /* 105 S> */ B(LdaGlobal), U8(0), U8(0),
B(Star0), B(Star), R(0),
B(LdaSmi), I8(3), B(LdaSmi), I8(3),
B(Star1), B(Star), R(1),
B(LdaSmi), I8(4), B(LdaSmi), I8(4),
B(Star2), B(Star), R(2),
B(LdaSmi), I8(5), B(LdaSmi), I8(5),
B(Star3), B(Star), R(3),
B(Ldar), R(0), B(Ldar), R(0),
/* 112 E> */ B(Construct), R(0), R(1), U8(3), U8(2), /* 112 E> */ B(Construct), R(0), R(1), U8(3), U8(2),
/* 129 S> */ B(Return), /* 129 S> */ B(Return),
......
...@@ -48,12 +48,12 @@ snippet: " ...@@ -48,12 +48,12 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 12 bytecode array length: 14
bytecodes: [ bytecodes: [
/* 15 S> */ B(LdaSmi), I8(1), /* 15 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(Star1), B(Star), R(1),
B(CallRuntime), U16(Runtime::kAdd), R(0), U8(2), B(CallRuntime), U16(Runtime::kAdd), R(0), U8(2),
/* 32 S> */ B(Return), /* 32 S> */ B(Return),
] ]
......
...@@ -22,11 +22,11 @@ snippet: " ...@@ -22,11 +22,11 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 16 bytecode array length: 17
bytecodes: [ bytecodes: [
/* 104 S> */ B(LdaImmutableCurrentContextSlot), U8(2), /* 104 S> */ B(LdaImmutableCurrentContextSlot), U8(2),
/* 117 E> */ B(LdaNamedPropertyFromSuper), R(this), U8(0), U8(1), /* 117 E> */ B(LdaNamedPropertyFromSuper), R(this), U8(0), U8(1),
B(Star0), B(Star), R(0),
/* 117 E> */ B(CallAnyReceiver), R(0), R(this), U8(1), U8(3), /* 117 E> */ B(CallAnyReceiver), R(0), R(this), U8(1), U8(3),
/* 126 E> */ B(AddSmi), I8(1), U8(0), /* 126 E> */ B(AddSmi), I8(1), U8(0),
/* 130 S> */ B(Return), /* 130 S> */ B(Return),
...@@ -54,14 +54,14 @@ snippet: " ...@@ -54,14 +54,14 @@ snippet: "
" "
frame size: 4 frame size: 4
parameter count: 1 parameter count: 1
bytecode array length: 24 bytecode array length: 27
bytecodes: [ bytecodes: [
/* 130 S> */ B(LdaImmutableCurrentContextSlot), U8(2), /* 130 S> */ B(LdaImmutableCurrentContextSlot), U8(2),
B(Star1), B(Star), R(1),
B(LdaConstant), U8(0), B(LdaConstant), U8(0),
B(Star2), B(Star), R(2),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(Star3), B(Star), R(3),
B(Mov), R(this), R(0), B(Mov), R(this), R(0),
/* 138 E> */ B(CallRuntime), U16(Runtime::kStoreToSuper), R(0), U8(4), /* 138 E> */ B(CallRuntime), U16(Runtime::kStoreToSuper), R(0), U8(4),
/* 143 S> */ B(LdaImmutableCurrentContextSlot), U8(2), /* 143 S> */ B(LdaImmutableCurrentContextSlot), U8(2),
...@@ -89,17 +89,17 @@ snippet: " ...@@ -89,17 +89,17 @@ snippet: "
" "
frame size: 6 frame size: 6
parameter count: 1 parameter count: 1
bytecode array length: 39 bytecode array length: 41
bytecodes: [ bytecodes: [
B(Mov), R(closure), R(1), B(Mov), R(closure), R(1),
/* 118 S> */ B(Ldar), R(1), /* 118 S> */ B(Ldar), R(1),
B(GetSuperConstructor), R(3), B(GetSuperConstructor), R(3),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(ThrowIfNotSuperConstructor), R(3), B(ThrowIfNotSuperConstructor), R(3),
B(Star4), B(Star), R(4),
B(Ldar), R(0), B(Ldar), R(0),
/* 118 E> */ B(Construct), R(3), R(4), U8(1), U8(0), /* 118 E> */ B(Construct), R(3), R(4), U8(1), U8(0),
B(Star5), B(Star), R(5),
B(Ldar), R(this), B(Ldar), R(this),
B(ThrowSuperAlreadyCalledIfNotHole), B(ThrowSuperAlreadyCalledIfNotHole),
B(Mov), R(5), R(this), B(Mov), R(5), R(this),
...@@ -132,7 +132,7 @@ snippet: " ...@@ -132,7 +132,7 @@ snippet: "
" "
frame size: 5 frame size: 5
parameter count: 1 parameter count: 1
bytecode array length: 36 bytecode array length: 37
bytecodes: [ bytecodes: [
B(Mov), R(closure), R(1), B(Mov), R(closure), R(1),
/* 117 S> */ B(Ldar), R(1), /* 117 S> */ B(Ldar), R(1),
...@@ -140,7 +140,7 @@ bytecodes: [ ...@@ -140,7 +140,7 @@ bytecodes: [
B(ThrowIfNotSuperConstructor), R(3), B(ThrowIfNotSuperConstructor), R(3),
B(Ldar), R(0), B(Ldar), R(0),
/* 117 E> */ B(Construct), R(3), R(0), U8(0), U8(0), /* 117 E> */ B(Construct), R(3), R(0), U8(0), U8(0),
B(Star4), B(Star), R(4),
B(Ldar), R(this), B(Ldar), R(this),
B(ThrowSuperAlreadyCalledIfNotHole), B(ThrowSuperAlreadyCalledIfNotHole),
B(Mov), R(4), R(this), B(Mov), R(4), R(this),
......
...@@ -14,21 +14,21 @@ snippet: " ...@@ -14,21 +14,21 @@ snippet: "
" "
frame size: 7 frame size: 7
parameter count: 1 parameter count: 1
bytecode array length: 35 bytecode array length: 40
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateBlockContext), U8(0), /* 30 E> */ B(CreateBlockContext), U8(0),
B(PushContext), R(1), B(PushContext), R(1),
B(LdaTheHole), B(LdaTheHole),
B(Star5), B(Star), R(5),
B(CreateClosure), U8(2), U8(0), U8(2), B(CreateClosure), U8(2), U8(0), U8(2),
B(Star2), B(Star), R(2),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star3), B(Star), R(3),
B(CreateClosure), U8(3), U8(1), U8(2), B(CreateClosure), U8(3), U8(1), U8(2),
B(Star6), B(Star), R(6),
B(Mov), R(2), R(4), B(Mov), R(2), R(4),
B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(4), B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(4),
B(Star3), B(Star), R(3),
B(PopContext), R(1), B(PopContext), R(1),
B(Mov), R(4), R(0), B(Mov), R(4), R(0),
B(LdaUndefined), B(LdaUndefined),
...@@ -52,21 +52,21 @@ snippet: " ...@@ -52,21 +52,21 @@ snippet: "
" "
frame size: 7 frame size: 7
parameter count: 1 parameter count: 1
bytecode array length: 35 bytecode array length: 40
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateBlockContext), U8(0), /* 30 E> */ B(CreateBlockContext), U8(0),
B(PushContext), R(1), B(PushContext), R(1),
B(LdaTheHole), B(LdaTheHole),
B(Star5), B(Star), R(5),
B(CreateClosure), U8(2), U8(0), U8(2), B(CreateClosure), U8(2), U8(0), U8(2),
B(Star2), B(Star), R(2),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star3), B(Star), R(3),
B(CreateClosure), U8(3), U8(1), U8(2), B(CreateClosure), U8(3), U8(1), U8(2),
B(Star6), B(Star), R(6),
B(Mov), R(2), R(4), B(Mov), R(2), R(4),
B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(4), B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(4),
B(Star3), B(Star), R(3),
B(PopContext), R(1), B(PopContext), R(1),
B(Mov), R(4), R(0), B(Mov), R(4), R(0),
B(LdaUndefined), B(LdaUndefined),
...@@ -92,7 +92,7 @@ snippet: " ...@@ -92,7 +92,7 @@ snippet: "
" "
frame size: 11 frame size: 11
parameter count: 1 parameter count: 1
bytecode array length: 77 bytecode array length: 83
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateFunctionContext), U8(0), U8(2), /* 30 E> */ B(CreateFunctionContext), U8(0), U8(2),
B(PushContext), R(1), B(PushContext), R(1),
...@@ -103,15 +103,15 @@ bytecodes: [ ...@@ -103,15 +103,15 @@ bytecodes: [
B(CreateBlockContext), U8(3), B(CreateBlockContext), U8(3),
B(PushContext), R(2), B(PushContext), R(2),
B(LdaTheHole), B(LdaTheHole),
B(Star6), B(Star), R(6),
B(CreateClosure), U8(5), U8(0), U8(2), B(CreateClosure), U8(5), U8(0), U8(2),
B(Star3), B(Star), R(3),
B(LdaConstant), U8(4), B(LdaConstant), U8(4),
B(Star4), B(Star), R(4),
/* 75 S> */ B(LdaImmutableContextSlot), R(2), U8(2), U8(0), /* 75 S> */ B(LdaImmutableContextSlot), R(2), U8(2), U8(0),
B(ToName), R(7), B(ToName), R(7),
B(CreateClosure), U8(6), U8(1), U8(2), B(CreateClosure), U8(6), U8(1), U8(2),
B(Star8), B(Star), R(8),
/* 106 S> */ B(LdaImmutableContextSlot), R(2), U8(3), U8(0), /* 106 S> */ B(LdaImmutableContextSlot), R(2), U8(3), U8(0),
B(ToName), R(9), B(ToName), R(9),
B(LdaConstant), U8(7), B(LdaConstant), U8(7),
...@@ -120,9 +120,9 @@ bytecodes: [ ...@@ -120,9 +120,9 @@ bytecodes: [
B(JumpIfFalse), U8(7), B(JumpIfFalse), U8(7),
B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
B(CreateClosure), U8(8), U8(2), U8(2), B(CreateClosure), U8(8), U8(2), U8(2),
B(Star10), B(Star), R(10),
B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(7), B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(7),
B(Star4), B(Star), R(4),
B(PopContext), R(2), B(PopContext), R(2),
B(Mov), R(3), R(0), B(Mov), R(3), R(0),
B(LdaUndefined), B(LdaUndefined),
...@@ -150,7 +150,7 @@ snippet: " ...@@ -150,7 +150,7 @@ snippet: "
" "
frame size: 7 frame size: 7
parameter count: 1 parameter count: 1
bytecode array length: 44 bytecode array length: 48
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateFunctionContext), U8(0), U8(1), /* 30 E> */ B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(1), B(PushContext), R(1),
...@@ -159,14 +159,14 @@ bytecodes: [ ...@@ -159,14 +159,14 @@ bytecodes: [
B(CreateBlockContext), U8(1), B(CreateBlockContext), U8(1),
B(PushContext), R(2), B(PushContext), R(2),
B(LdaTheHole), B(LdaTheHole),
B(Star6), B(Star), R(6),
B(CreateClosure), U8(3), U8(0), U8(2), B(CreateClosure), U8(3), U8(0), U8(2),
B(Star3), B(Star), R(3),
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star4), B(Star), R(4),
B(Mov), R(3), R(5), B(Mov), R(3), R(5),
B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(3), B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(3),
B(Star4), B(Star), R(4),
B(PopContext), R(2), B(PopContext), R(2),
B(Mov), R(5), R(0), B(Mov), R(5), R(0),
/* 87 S> */ B(Ldar), R(0), /* 87 S> */ B(Ldar), R(0),
...@@ -189,33 +189,33 @@ snippet: " ...@@ -189,33 +189,33 @@ snippet: "
" "
frame size: 7 frame size: 7
parameter count: 1 parameter count: 1
bytecode array length: 60 bytecode array length: 69
bytecodes: [ bytecodes: [
/* 34 S> */ B(CreateBlockContext), U8(0), /* 34 S> */ B(CreateBlockContext), U8(0),
B(PushContext), R(1), B(PushContext), R(1),
B(LdaTheHole), B(LdaTheHole),
B(Star5), B(Star), R(5),
B(CreateClosure), U8(2), U8(0), U8(2), B(CreateClosure), U8(2), U8(0), U8(2),
B(Star2), B(Star), R(2),
B(LdaConstant), U8(1), B(LdaConstant), U8(1),
B(Star3), B(Star), R(3),
B(Mov), R(2), R(4), B(Mov), R(2), R(4),
B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(3), B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(3),
B(Star3), B(Star), R(3),
B(PopContext), R(1), B(PopContext), R(1),
B(CreateBlockContext), U8(3), B(CreateBlockContext), U8(3),
B(PushContext), R(1), B(PushContext), R(1),
B(LdaTheHole), B(LdaTheHole),
B(Star5), B(Star), R(5),
B(CreateClosure), U8(5), U8(1), U8(2), B(CreateClosure), U8(5), U8(1), U8(2),
B(Star2), B(Star), R(2),
B(LdaConstant), U8(4), B(LdaConstant), U8(4),
B(Star3), B(Star), R(3),
B(CreateClosure), U8(6), U8(2), U8(2), B(CreateClosure), U8(6), U8(2), U8(2),
B(Star6), B(Star), R(6),
B(Mov), R(2), R(4), B(Mov), R(2), R(4),
B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(4), B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(4),
B(Star3), B(Star), R(3),
B(PopContext), R(1), B(PopContext), R(1),
B(Mov), R(4), R(0), B(Mov), R(4), R(0),
B(LdaUndefined), B(LdaUndefined),
......
...@@ -12,10 +12,10 @@ snippet: " ...@@ -12,10 +12,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 5 bytecode array length: 6
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 45 S> */ B(TestNull), /* 45 S> */ B(TestNull),
/* 63 S> */ B(Return), /* 63 S> */ B(Return),
] ]
...@@ -31,10 +31,10 @@ snippet: " ...@@ -31,10 +31,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 4 bytecode array length: 5
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaUndefined), /* 42 S> */ B(LdaUndefined),
B(Star0), B(Star), R(0),
/* 53 S> */ B(TestUndefined), /* 53 S> */ B(TestUndefined),
/* 76 S> */ B(Return), /* 76 S> */ B(Return),
] ]
...@@ -50,10 +50,10 @@ snippet: " ...@@ -50,10 +50,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 5 bytecode array length: 6
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaUndefined), /* 42 S> */ B(LdaUndefined),
B(Star0), B(Star), R(0),
/* 53 S> */ B(TestUndefined), /* 53 S> */ B(TestUndefined),
/* 70 E> */ B(LogicalNot), /* 70 E> */ B(LogicalNot),
/* 76 S> */ B(Return), /* 76 S> */ B(Return),
...@@ -70,10 +70,10 @@ snippet: " ...@@ -70,10 +70,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 6 bytecode array length: 7
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(2), /* 42 S> */ B(LdaSmi), I8(2),
B(Star0), B(Star), R(0),
/* 45 S> */ B(TestUndetectable), /* 45 S> */ B(TestUndetectable),
/* 54 E> */ B(LogicalNot), /* 54 E> */ B(LogicalNot),
/* 62 S> */ B(Return), /* 62 S> */ B(Return),
...@@ -90,10 +90,10 @@ snippet: " ...@@ -90,10 +90,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 4 bytecode array length: 5
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaUndefined), /* 42 S> */ B(LdaUndefined),
B(Star0), B(Star), R(0),
/* 53 S> */ B(TestUndetectable), /* 53 S> */ B(TestUndetectable),
/* 75 S> */ B(Return), /* 75 S> */ B(Return),
] ]
...@@ -109,10 +109,10 @@ snippet: " ...@@ -109,10 +109,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 11 bytecode array length: 12
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaUndefined), /* 42 S> */ B(LdaUndefined),
B(Star0), B(Star), R(0),
/* 53 S> */ B(JumpIfNotUndefined), U8(6), /* 53 S> */ B(JumpIfNotUndefined), U8(6),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Jump), U8(4), B(Jump), U8(4),
...@@ -131,10 +131,10 @@ snippet: " ...@@ -131,10 +131,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 12 bytecode array length: 13
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaZero), /* 42 S> */ B(LdaZero),
B(Star0), B(Star), R(0),
/* 45 S> */ B(TestUndetectable), /* 45 S> */ B(TestUndetectable),
B(JumpIfFalse), U8(6), B(JumpIfFalse), U8(6),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
...@@ -154,10 +154,10 @@ snippet: " ...@@ -154,10 +154,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 11 bytecode array length: 12
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaZero), /* 42 S> */ B(LdaZero),
B(Star0), B(Star), R(0),
/* 45 S> */ B(JumpIfUndefined), U8(6), /* 45 S> */ B(JumpIfUndefined), U8(6),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Jump), U8(4), B(Jump), U8(4),
...@@ -176,10 +176,10 @@ snippet: " ...@@ -176,10 +176,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 11 bytecode array length: 12
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaZero), /* 42 S> */ B(LdaZero),
B(Star0), B(Star), R(0),
/* 45 S> */ B(JumpIfNotNull), U8(6), /* 45 S> */ B(JumpIfNotNull), U8(6),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Jump), U8(4), B(Jump), U8(4),
...@@ -202,10 +202,10 @@ snippet: " ...@@ -202,10 +202,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 10 bytecode array length: 11
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaZero), /* 42 S> */ B(LdaZero),
B(Star0), B(Star), R(0),
/* 45 S> */ B(JumpIfNotNull), U8(5), /* 45 S> */ B(JumpIfNotNull), U8(5),
/* 65 S> */ B(LdaSmi), I8(1), /* 65 S> */ B(LdaSmi), I8(1),
/* 74 S> */ B(Return), /* 74 S> */ B(Return),
...@@ -226,10 +226,10 @@ snippet: " ...@@ -226,10 +226,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 10 bytecode array length: 11
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaZero), /* 42 S> */ B(LdaZero),
B(Star0), B(Star), R(0),
/* 45 S> */ B(TestUndetectable), /* 45 S> */ B(TestUndetectable),
B(JumpIfTrue), U8(5), B(JumpIfTrue), U8(5),
/* 69 S> */ B(LdaSmi), I8(1), /* 69 S> */ B(LdaSmi), I8(1),
...@@ -252,18 +252,18 @@ snippet: " ...@@ -252,18 +252,18 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 18 bytecode array length: 21
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaUndefined), /* 42 S> */ B(LdaUndefined),
B(Star0), B(Star), R(0),
/* 61 S> */ B(LdaZero), /* 61 S> */ B(LdaZero),
B(Star1), B(Star), R(1),
/* 73 S> */ B(Ldar), R(0), /* 73 S> */ B(Ldar), R(0),
B(JumpIfUndefined), U8(10), B(JumpIfUndefined), U8(11),
/* 92 S> */ B(Ldar), R(1), /* 92 S> */ B(Ldar), R(1),
B(Inc), U8(0), B(Inc), U8(0),
B(Star1), B(Star), R(1),
/* 64 E> */ B(JumpLoop), U8(9), I8(0), /* 64 E> */ B(JumpLoop), U8(10), I8(0),
B(LdaUndefined), B(LdaUndefined),
/* 99 S> */ B(Return), /* 99 S> */ B(Return),
] ]
......
...@@ -11,12 +11,12 @@ snippet: " ...@@ -11,12 +11,12 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 9 bytecode array length: 11
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 45 S> */ B(AddSmi), I8(2), U8(0), /* 45 S> */ B(AddSmi), I8(2), U8(0),
B(Star0), B(Star), R(0),
B(LdaUndefined), B(LdaUndefined),
/* 53 S> */ B(Return), /* 53 S> */ B(Return),
] ]
...@@ -31,12 +31,12 @@ snippet: " ...@@ -31,12 +31,12 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 9 bytecode array length: 11
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 45 S> */ B(DivSmi), I8(2), U8(0), /* 45 S> */ B(DivSmi), I8(2), U8(0),
B(Star0), B(Star), R(0),
B(LdaUndefined), B(LdaUndefined),
/* 53 S> */ B(Return), /* 53 S> */ B(Return),
] ]
...@@ -51,10 +51,10 @@ snippet: " ...@@ -51,10 +51,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 18 bytecode array length: 19
bytecodes: [ bytecodes: [
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 54 S> */ B(LdaNamedProperty), R(0), U8(1), U8(1), /* 54 S> */ B(LdaNamedProperty), R(0), U8(1), U8(1),
B(MulSmi), I8(2), U8(3), B(MulSmi), I8(2), U8(3),
/* 61 E> */ B(StaNamedProperty), R(0), U8(1), U8(4), /* 61 E> */ B(StaNamedProperty), R(0), U8(1), U8(4),
...@@ -74,12 +74,12 @@ snippet: " ...@@ -74,12 +74,12 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 20 bytecode array length: 22
bytecodes: [ bytecodes: [
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 52 S> */ B(LdaSmi), I8(1), /* 52 S> */ B(LdaSmi), I8(1),
B(Star2), B(Star), R(2),
B(LdaKeyedProperty), R(0), U8(1), B(LdaKeyedProperty), R(0), U8(1),
B(BitwiseXorSmi), I8(2), U8(3), B(BitwiseXorSmi), I8(2), U8(3),
/* 57 E> */ B(StaKeyedProperty), R(0), R(2), U8(4), /* 57 E> */ B(StaKeyedProperty), R(0), R(2), U8(4),
......
...@@ -43,10 +43,10 @@ snippet: " ...@@ -43,10 +43,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 16 bytecode array length: 17
bytecodes: [ bytecodes: [
/* 34 S> */ B(LdaZero), /* 34 S> */ B(LdaZero),
B(Star0), B(Star), R(0),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
/* 43 E> */ B(TestLessThan), R(0), U8(0), /* 43 E> */ B(TestLessThan), R(0), U8(0),
B(JumpIfFalse), U8(6), B(JumpIfFalse), U8(6),
...@@ -67,10 +67,10 @@ snippet: " ...@@ -67,10 +67,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 11 bytecode array length: 12
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaZero), /* 42 S> */ B(LdaZero),
B(Star0), B(Star), R(0),
/* 45 S> */ B(JumpIfToBooleanFalse), U8(6), /* 45 S> */ B(JumpIfToBooleanFalse), U8(6),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(Jump), U8(4), B(Jump), U8(4),
......
...@@ -11,10 +11,10 @@ snippet: " ...@@ -11,10 +11,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 5 bytecode array length: 6
bytecodes: [ bytecodes: [
/* 44 S> */ B(LdaSmi), I8(10), /* 44 S> */ B(LdaSmi), I8(10),
B(Star0), B(Star), R(0),
B(LdaUndefined), B(LdaUndefined),
/* 48 S> */ B(Return), /* 48 S> */ B(Return),
] ]
...@@ -29,10 +29,10 @@ snippet: " ...@@ -29,10 +29,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 4 bytecode array length: 5
bytecodes: [ bytecodes: [
/* 44 S> */ B(LdaSmi), I8(10), /* 44 S> */ B(LdaSmi), I8(10),
B(Star0), B(Star), R(0),
/* 57 S> */ B(Return), /* 57 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -46,16 +46,16 @@ snippet: " ...@@ -46,16 +46,16 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 17 bytecode array length: 20
bytecodes: [ bytecodes: [
B(LdaTheHole), B(LdaTheHole),
B(Star0), B(Star), R(0),
/* 44 S> */ B(LdaSmi), I8(20), /* 44 S> */ B(LdaSmi), I8(20),
B(Star1), B(Star), R(1),
B(Ldar), R(0), B(Ldar), R(0),
/* 48 E> */ B(ThrowReferenceErrorIfHole), U8(0), /* 48 E> */ B(ThrowReferenceErrorIfHole), U8(0),
B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
B(Star0), B(Star), R(0),
B(LdaUndefined), B(LdaUndefined),
/* 55 S> */ B(Return), /* 55 S> */ B(Return),
] ]
...@@ -71,10 +71,10 @@ snippet: " ...@@ -71,10 +71,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 12 bytecode array length: 13
bytecodes: [ bytecodes: [
/* 44 S> */ B(LdaSmi), I8(10), /* 44 S> */ B(LdaSmi), I8(10),
B(Star0), B(Star), R(0),
/* 48 S> */ B(LdaSmi), I8(20), /* 48 S> */ B(LdaSmi), I8(20),
/* 50 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0), /* 50 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
B(LdaUndefined), B(LdaUndefined),
......
...@@ -57,14 +57,14 @@ snippet: " ...@@ -57,14 +57,14 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 24 bytecode array length: 25
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateFunctionContext), U8(0), U8(1), /* 30 E> */ B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(2),
/* 44 S> */ B(LdaSmi), I8(20), /* 44 S> */ B(LdaSmi), I8(20),
B(Star1), B(Star), R(1),
B(LdaCurrentContextSlot), U8(2), B(LdaCurrentContextSlot), U8(2),
/* 47 E> */ B(ThrowReferenceErrorIfHole), U8(1), /* 47 E> */ B(ThrowReferenceErrorIfHole), U8(1),
B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0), B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
......
...@@ -36,14 +36,14 @@ snippet: " ...@@ -36,14 +36,14 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 2 parameter count: 2
bytecode array length: 17 bytecode array length: 18
bytecodes: [ bytecodes: [
/* 10 E> */ B(CreateFunctionContext), U8(0), U8(1), /* 10 E> */ B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(arg0), B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(2),
/* 27 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 27 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
B(Star0), B(Star), R(0),
/* 53 S> */ B(LdaCurrentContextSlot), U8(2), /* 53 S> */ B(LdaCurrentContextSlot), U8(2),
/* 65 S> */ B(Return), /* 65 S> */ B(Return),
] ]
......
...@@ -77,12 +77,12 @@ snippet: " ...@@ -77,12 +77,12 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 16 bytecode array length: 17
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateFunctionContext), U8(0), U8(1), /* 30 E> */ B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
/* 41 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 41 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
B(Star1), B(Star), R(1),
/* 64 E> */ B(CallUndefinedReceiver0), R(1), U8(0), /* 64 E> */ B(CallUndefinedReceiver0), R(1), U8(0),
/* 68 S> */ B(LdaCurrentContextSlot), U8(2), /* 68 S> */ B(LdaCurrentContextSlot), U8(2),
/* 77 S> */ B(Return), /* 77 S> */ B(Return),
...@@ -388,7 +388,7 @@ snippet: " ...@@ -388,7 +388,7 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 795 bytecode array length: 796
bytecodes: [ bytecodes: [
/* 30 E> */ B(Wide), B(CreateFunctionContext), U16(0), U16(256), /* 30 E> */ B(Wide), B(CreateFunctionContext), U16(0), U16(256),
B(PushContext), R(1), B(PushContext), R(1),
...@@ -903,7 +903,7 @@ bytecodes: [ ...@@ -903,7 +903,7 @@ bytecodes: [
/* 3721 S> */ B(LdaZero), /* 3721 S> */ B(LdaZero),
/* 3721 E> */ B(StaCurrentContextSlot), U8(255), /* 3721 E> */ B(StaCurrentContextSlot), U8(255),
/* 3724 S> */ B(LdaGlobal), U8(1), U8(0), /* 3724 S> */ B(LdaGlobal), U8(1), U8(0),
B(Star2), B(Star), R(2),
/* 3724 E> */ B(CallUndefinedReceiver0), R(2), U8(2), /* 3724 E> */ B(CallUndefinedReceiver0), R(2), U8(2),
/* 3740 S> */ B(LdaSmi), I8(100), /* 3740 S> */ B(LdaSmi), I8(100),
/* 3740 E> */ B(Wide), B(StaCurrentContextSlot), U16(256), /* 3740 E> */ B(Wide), B(StaCurrentContextSlot), U16(256),
......
...@@ -11,12 +11,12 @@ snippet: " ...@@ -11,12 +11,12 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 7 bytecode array length: 9
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 45 S> */ B(Inc), U8(0), /* 45 S> */ B(Inc), U8(0),
B(Star0), B(Star), R(0),
/* 56 S> */ B(Return), /* 56 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -30,14 +30,14 @@ snippet: " ...@@ -30,14 +30,14 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 12 bytecode array length: 15
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 45 S> */ B(ToNumeric), U8(0), /* 45 S> */ B(ToNumeric), U8(0),
B(Star1), B(Star), R(1),
B(Inc), U8(0), B(Inc), U8(0),
B(Star0), B(Star), R(0),
B(Ldar), R(1), B(Ldar), R(1),
/* 56 S> */ B(Return), /* 56 S> */ B(Return),
] ]
...@@ -52,12 +52,12 @@ snippet: " ...@@ -52,12 +52,12 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 7 bytecode array length: 9
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 45 S> */ B(Dec), U8(0), /* 45 S> */ B(Dec), U8(0),
B(Star0), B(Star), R(0),
/* 56 S> */ B(Return), /* 56 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -71,14 +71,14 @@ snippet: " ...@@ -71,14 +71,14 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 12 bytecode array length: 15
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 45 S> */ B(ToNumeric), U8(0), /* 45 S> */ B(ToNumeric), U8(0),
B(Star1), B(Star), R(1),
B(Dec), U8(0), B(Dec), U8(0),
B(Star0), B(Star), R(0),
B(Ldar), R(1), B(Ldar), R(1),
/* 56 S> */ B(Return), /* 56 S> */ B(Return),
] ]
...@@ -93,15 +93,15 @@ snippet: " ...@@ -93,15 +93,15 @@ snippet: "
" "
frame size: 4 frame size: 4
parameter count: 1 parameter count: 1
bytecode array length: 22 bytecode array length: 25
bytecodes: [ bytecodes: [
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 54 S> */ B(LdaNamedProperty), R(0), U8(1), U8(1), /* 54 S> */ B(LdaNamedProperty), R(0), U8(1), U8(1),
B(ToNumeric), U8(3), B(ToNumeric), U8(3),
B(Star2), B(Star), R(2),
B(Inc), U8(3), B(Inc), U8(3),
B(Star3), B(Star), R(3),
/* 66 E> */ B(StaNamedProperty), R(0), U8(1), U8(4), /* 66 E> */ B(StaNamedProperty), R(0), U8(1), U8(4),
B(Ldar), R(2), B(Ldar), R(2),
/* 69 S> */ B(Return), /* 69 S> */ B(Return),
...@@ -119,13 +119,13 @@ snippet: " ...@@ -119,13 +119,13 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 19 bytecode array length: 21
bytecodes: [ bytecodes: [
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 54 S> */ B(LdaNamedProperty), R(0), U8(1), U8(1), /* 54 S> */ B(LdaNamedProperty), R(0), U8(1), U8(1),
B(Dec), U8(3), B(Dec), U8(3),
B(Star2), B(Star), R(2),
/* 65 E> */ B(StaNamedProperty), R(0), U8(1), U8(4), /* 65 E> */ B(StaNamedProperty), R(0), U8(1), U8(4),
B(Ldar), R(2), B(Ldar), R(2),
/* 69 S> */ B(Return), /* 69 S> */ B(Return),
...@@ -143,18 +143,18 @@ snippet: " ...@@ -143,18 +143,18 @@ snippet: "
" "
frame size: 6 frame size: 6
parameter count: 1 parameter count: 1
bytecode array length: 26 bytecode array length: 30
bytecodes: [ bytecodes: [
/* 45 S> */ B(LdaConstant), U8(0), /* 45 S> */ B(LdaConstant), U8(0),
B(Star0), B(Star), R(0),
/* 60 S> */ B(CreateObjectLiteral), U8(1), U8(0), U8(41), /* 60 S> */ B(CreateObjectLiteral), U8(1), U8(0), U8(41),
B(Star1), B(Star), R(1),
/* 72 S> */ B(Ldar), R(0), /* 72 S> */ B(Ldar), R(0),
/* 81 E> */ B(LdaKeyedProperty), R(1), U8(1), /* 81 E> */ B(LdaKeyedProperty), R(1), U8(1),
B(ToNumeric), U8(3), B(ToNumeric), U8(3),
B(Star4), B(Star), R(4),
B(Dec), U8(3), B(Dec), U8(3),
B(Star5), B(Star), R(5),
/* 86 E> */ B(StaKeyedProperty), R(1), R(0), U8(4), /* 86 E> */ B(StaKeyedProperty), R(1), R(0), U8(4),
B(Ldar), R(4), B(Ldar), R(4),
/* 89 S> */ B(Return), /* 89 S> */ B(Return),
...@@ -172,16 +172,16 @@ snippet: " ...@@ -172,16 +172,16 @@ snippet: "
" "
frame size: 5 frame size: 5
parameter count: 1 parameter count: 1
bytecode array length: 23 bytecode array length: 26
bytecodes: [ bytecodes: [
/* 45 S> */ B(LdaConstant), U8(0), /* 45 S> */ B(LdaConstant), U8(0),
B(Star0), B(Star), R(0),
/* 60 S> */ B(CreateObjectLiteral), U8(1), U8(0), U8(41), /* 60 S> */ B(CreateObjectLiteral), U8(1), U8(0), U8(41),
B(Star1), B(Star), R(1),
/* 72 S> */ B(Ldar), R(0), /* 72 S> */ B(Ldar), R(0),
/* 83 E> */ B(LdaKeyedProperty), R(1), U8(1), /* 83 E> */ B(LdaKeyedProperty), R(1), U8(1),
B(Inc), U8(3), B(Inc), U8(3),
B(Star4), B(Star), R(4),
/* 87 E> */ B(StaKeyedProperty), R(1), R(0), U8(4), /* 87 E> */ B(StaKeyedProperty), R(1), R(0), U8(4),
B(Ldar), R(4), B(Ldar), R(4),
/* 89 S> */ B(Return), /* 89 S> */ B(Return),
...@@ -199,14 +199,14 @@ snippet: " ...@@ -199,14 +199,14 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 21 bytecode array length: 22
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateFunctionContext), U8(0), U8(1), /* 30 E> */ B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(1), B(PushContext), R(1),
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
/* 42 E> */ B(StaCurrentContextSlot), U8(2), /* 42 E> */ B(StaCurrentContextSlot), U8(2),
/* 53 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 53 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
B(Star0), B(Star), R(0),
/* 78 S> */ B(LdaCurrentContextSlot), U8(2), /* 78 S> */ B(LdaCurrentContextSlot), U8(2),
B(Inc), U8(0), B(Inc), U8(0),
/* 87 E> */ B(StaCurrentContextSlot), U8(2), /* 87 E> */ B(StaCurrentContextSlot), U8(2),
...@@ -225,17 +225,17 @@ snippet: " ...@@ -225,17 +225,17 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 26 bytecode array length: 28
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateFunctionContext), U8(0), U8(1), /* 30 E> */ B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(1), B(PushContext), R(1),
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
/* 42 E> */ B(StaCurrentContextSlot), U8(2), /* 42 E> */ B(StaCurrentContextSlot), U8(2),
/* 53 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 53 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
B(Star0), B(Star), R(0),
/* 78 S> */ B(LdaCurrentContextSlot), U8(2), /* 78 S> */ B(LdaCurrentContextSlot), U8(2),
B(ToNumeric), U8(0), B(ToNumeric), U8(0),
B(Star2), B(Star), R(2),
B(Dec), U8(0), B(Dec), U8(0),
/* 86 E> */ B(StaCurrentContextSlot), U8(2), /* 86 E> */ B(StaCurrentContextSlot), U8(2),
B(Ldar), R(2), B(Ldar), R(2),
...@@ -254,19 +254,19 @@ snippet: " ...@@ -254,19 +254,19 @@ snippet: "
" "
frame size: 5 frame size: 5
parameter count: 1 parameter count: 1
bytecode array length: 26 bytecode array length: 31
bytecodes: [ bytecodes: [
/* 44 S> */ B(LdaSmi), I8(1), /* 44 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 55 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37), /* 55 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
B(Star1), B(Star), R(1),
/* 63 S> */ B(Ldar), R(0), /* 63 S> */ B(Ldar), R(0),
B(ToNumeric), U8(1), B(ToNumeric), U8(1),
B(Star3), B(Star), R(3),
B(Inc), U8(1), B(Inc), U8(1),
B(Star0), B(Star), R(0),
B(LdaSmi), I8(2), B(LdaSmi), I8(2),
B(Star4), B(Star), R(4),
/* 79 E> */ B(StaKeyedProperty), R(1), R(3), U8(2), /* 79 E> */ B(StaKeyedProperty), R(1), R(3), U8(2),
B(Ldar), R(4), B(Ldar), R(4),
/* 83 S> */ B(Return), /* 83 S> */ B(Return),
......
...@@ -13,10 +13,10 @@ snippet: " ...@@ -13,10 +13,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 3 bytecode array length: 4
bytecodes: [ bytecodes: [
/* 10 E> */ B(CreateMappedArguments), /* 10 E> */ B(CreateMappedArguments),
B(Star0), B(Star), R(0),
/* 32 S> */ B(Return), /* 32 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -31,10 +31,10 @@ snippet: " ...@@ -31,10 +31,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 7 bytecode array length: 8
bytecodes: [ bytecodes: [
/* 10 E> */ B(CreateMappedArguments), /* 10 E> */ B(CreateMappedArguments),
B(Star0), B(Star), R(0),
/* 15 S> */ B(LdaZero), /* 15 S> */ B(LdaZero),
/* 31 E> */ B(LdaKeyedProperty), R(0), U8(0), /* 31 E> */ B(LdaKeyedProperty), R(0), U8(0),
/* 35 S> */ B(Return), /* 35 S> */ B(Return),
...@@ -51,10 +51,10 @@ snippet: " ...@@ -51,10 +51,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 3 bytecode array length: 4
bytecodes: [ bytecodes: [
/* 10 E> */ B(CreateUnmappedArguments), /* 10 E> */ B(CreateUnmappedArguments),
B(Star0), B(Star), R(0),
/* 46 S> */ B(Return), /* 46 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -69,14 +69,14 @@ snippet: " ...@@ -69,14 +69,14 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 2 parameter count: 2
bytecode array length: 16 bytecode array length: 17
bytecodes: [ bytecodes: [
/* 10 E> */ B(CreateFunctionContext), U8(0), U8(1), /* 10 E> */ B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(1), B(PushContext), R(1),
B(Ldar), R(arg0), B(Ldar), R(arg0),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(2),
B(CreateMappedArguments), B(CreateMappedArguments),
B(Star0), B(Star), R(0),
/* 16 S> */ B(LdaZero), /* 16 S> */ B(LdaZero),
/* 32 E> */ B(LdaKeyedProperty), R(0), U8(0), /* 32 E> */ B(LdaKeyedProperty), R(0), U8(0),
/* 36 S> */ B(Return), /* 36 S> */ B(Return),
...@@ -94,7 +94,7 @@ snippet: " ...@@ -94,7 +94,7 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 4 parameter count: 4
bytecode array length: 20 bytecode array length: 21
bytecodes: [ bytecodes: [
/* 10 E> */ B(CreateFunctionContext), U8(0), U8(3), /* 10 E> */ B(CreateFunctionContext), U8(0), U8(3),
B(PushContext), R(1), B(PushContext), R(1),
...@@ -105,7 +105,7 @@ bytecodes: [ ...@@ -105,7 +105,7 @@ bytecodes: [
B(Ldar), R(arg2), B(Ldar), R(arg2),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(2),
B(CreateMappedArguments), B(CreateMappedArguments),
B(Star0), B(Star), R(0),
/* 39 S> */ B(Return), /* 39 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -121,10 +121,10 @@ snippet: " ...@@ -121,10 +121,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 4 parameter count: 4
bytecode array length: 3 bytecode array length: 4
bytecodes: [ bytecodes: [
/* 10 E> */ B(CreateUnmappedArguments), /* 10 E> */ B(CreateUnmappedArguments),
B(Star0), B(Star), R(0),
/* 53 S> */ B(Return), /* 53 S> */ B(Return),
] ]
constant pool: [ constant pool: [
......
...@@ -13,11 +13,11 @@ snippet: " ...@@ -13,11 +13,11 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 4 bytecode array length: 6
bytecodes: [ bytecodes: [
/* 10 E> */ B(CreateRestParameter), /* 10 E> */ B(CreateRestParameter),
B(Star1), B(Star), R(1),
B(Star0), B(Star), R(0),
/* 42 S> */ B(Return), /* 42 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -32,10 +32,10 @@ snippet: " ...@@ -32,10 +32,10 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 2 parameter count: 2
bytecode array length: 11 bytecode array length: 12
bytecodes: [ bytecodes: [
/* 10 E> */ B(CreateRestParameter), /* 10 E> */ B(CreateRestParameter),
B(Star2), B(Star), R(2),
B(Mov), R(arg0), R(0), B(Mov), R(arg0), R(0),
B(Mov), R(2), R(1), B(Mov), R(2), R(1),
/* 29 S> */ B(Ldar), R(1), /* 29 S> */ B(Ldar), R(1),
...@@ -53,10 +53,10 @@ snippet: " ...@@ -53,10 +53,10 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 2 parameter count: 2
bytecode array length: 13 bytecode array length: 14
bytecodes: [ bytecodes: [
/* 10 E> */ B(CreateRestParameter), /* 10 E> */ B(CreateRestParameter),
B(Star2), B(Star), R(2),
B(Mov), R(arg0), R(0), B(Mov), R(arg0), R(0),
B(Mov), R(2), R(1), B(Mov), R(2), R(1),
/* 29 S> */ B(LdaZero), /* 29 S> */ B(LdaZero),
...@@ -75,17 +75,17 @@ snippet: " ...@@ -75,17 +75,17 @@ snippet: "
" "
frame size: 5 frame size: 5
parameter count: 2 parameter count: 2
bytecode array length: 23 bytecode array length: 26
bytecodes: [ bytecodes: [
/* 10 E> */ B(CreateUnmappedArguments), /* 10 E> */ B(CreateUnmappedArguments),
B(Star3), B(Star), R(3),
B(CreateRestParameter), B(CreateRestParameter),
B(Star2), B(Star), R(2),
B(Mov), R(arg0), R(0), B(Mov), R(arg0), R(0),
B(Mov), R(2), R(1), B(Mov), R(2), R(1),
/* 29 S> */ B(LdaZero), /* 29 S> */ B(LdaZero),
/* 44 E> */ B(LdaKeyedProperty), R(1), U8(1), /* 44 E> */ B(LdaKeyedProperty), R(1), U8(1),
B(Star4), B(Star), R(4),
B(LdaZero), B(LdaZero),
/* 59 E> */ B(LdaKeyedProperty), R(3), U8(3), /* 59 E> */ B(LdaKeyedProperty), R(3), U8(3),
/* 48 E> */ B(Add), R(4), U8(0), /* 48 E> */ B(Add), R(4), U8(0),
......
...@@ -27,10 +27,10 @@ snippet: " ...@@ -27,10 +27,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 5 bytecode array length: 6
bytecodes: [ bytecodes: [
/* 66 S> */ B(LdaSmi), I8(1), /* 66 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
B(LdaUndefined), B(LdaUndefined),
/* 69 S> */ B(Return), /* 69 S> */ B(Return),
] ]
...@@ -61,10 +61,10 @@ snippet: " ...@@ -61,10 +61,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 11 bytecode array length: 12
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(1), /* 42 S> */ B(LdaSmi), I8(1),
B(Star0), B(Star), R(0),
/* 45 S> */ B(JumpIfToBooleanFalse), U8(5), /* 45 S> */ B(JumpIfToBooleanFalse), U8(5),
/* 54 S> */ B(LdaSmi), I8(1), /* 54 S> */ B(LdaSmi), I8(1),
/* 63 S> */ B(Return), /* 63 S> */ B(Return),
......
...@@ -12,10 +12,10 @@ snippet: " ...@@ -12,10 +12,10 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 18 bytecode array length: 19
bytecodes: [ bytecodes: [
B(LdaConstant), U8(0), B(LdaConstant), U8(0),
B(Star1), B(Star), R(1),
B(Mov), R(closure), R(2), B(Mov), R(closure), R(2),
/* 0 E> */ B(CallRuntime), U16(Runtime::kDeclareGlobals), R(1), U8(2), /* 0 E> */ B(CallRuntime), U16(Runtime::kDeclareGlobals), R(1), U8(2),
/* 8 S> */ B(LdaSmi), I8(1), /* 8 S> */ B(LdaSmi), I8(1),
...@@ -36,10 +36,10 @@ snippet: " ...@@ -36,10 +36,10 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 13 bytecode array length: 14
bytecodes: [ bytecodes: [
B(LdaConstant), U8(0), B(LdaConstant), U8(0),
B(Star0), B(Star), R(0),
B(Mov), R(closure), R(1), B(Mov), R(closure), R(1),
/* 0 E> */ B(CallRuntime), U16(Runtime::kDeclareGlobals), R(0), U8(2), /* 0 E> */ B(CallRuntime), U16(Runtime::kDeclareGlobals), R(0), U8(2),
B(LdaUndefined), B(LdaUndefined),
...@@ -58,17 +58,17 @@ snippet: " ...@@ -58,17 +58,17 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 23 bytecode array length: 25
bytecodes: [ bytecodes: [
B(LdaConstant), U8(0), B(LdaConstant), U8(0),
B(Star1), B(Star), R(1),
B(Mov), R(closure), R(2), B(Mov), R(closure), R(2),
/* 0 E> */ B(CallRuntime), U16(Runtime::kDeclareGlobals), R(1), U8(2), /* 0 E> */ B(CallRuntime), U16(Runtime::kDeclareGlobals), R(1), U8(2),
/* 8 S> */ B(LdaSmi), I8(1), /* 8 S> */ B(LdaSmi), I8(1),
/* 8 E> */ B(StaGlobal), U8(1), U8(0), /* 8 E> */ B(StaGlobal), U8(1), U8(0),
/* 11 S> */ B(LdaSmi), I8(2), /* 11 S> */ B(LdaSmi), I8(2),
/* 12 E> */ B(StaGlobal), U8(1), U8(0), /* 12 E> */ B(StaGlobal), U8(1), U8(0),
B(Star0), B(Star), R(0),
/* 16 S> */ B(Return), /* 16 S> */ B(Return),
] ]
constant pool: [ constant pool: [
...@@ -85,16 +85,16 @@ snippet: " ...@@ -85,16 +85,16 @@ snippet: "
" "
frame size: 3 frame size: 3
parameter count: 1 parameter count: 1
bytecode array length: 20 bytecode array length: 23
bytecodes: [ bytecodes: [
B(LdaConstant), U8(0), B(LdaConstant), U8(0),
B(Star1), B(Star), R(1),
B(Mov), R(closure), R(2), B(Mov), R(closure), R(2),
/* 0 E> */ B(CallRuntime), U16(Runtime::kDeclareGlobals), R(1), U8(2), /* 0 E> */ B(CallRuntime), U16(Runtime::kDeclareGlobals), R(1), U8(2),
/* 16 S> */ B(LdaGlobal), U8(1), U8(0), /* 16 S> */ B(LdaGlobal), U8(1), U8(0),
B(Star1), B(Star), R(1),
/* 16 E> */ B(CallUndefinedReceiver0), R(1), U8(2), /* 16 E> */ B(CallUndefinedReceiver0), R(1), U8(2),
B(Star0), B(Star), R(0),
/* 21 S> */ B(Return), /* 21 S> */ B(Return),
] ]
constant pool: [ constant pool: [
......
...@@ -11,10 +11,10 @@ snippet: " ...@@ -11,10 +11,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 10 bytecode array length: 11
bytecodes: [ bytecodes: [
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 56 S> */ B(LdaConstant), U8(1), /* 56 S> */ B(LdaConstant), U8(1),
B(DeletePropertySloppy), R(0), B(DeletePropertySloppy), R(0),
/* 74 S> */ B(Return), /* 74 S> */ B(Return),
...@@ -32,10 +32,10 @@ snippet: " ...@@ -32,10 +32,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 10 bytecode array length: 11
bytecodes: [ bytecodes: [
/* 56 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 56 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 70 S> */ B(LdaConstant), U8(1), /* 70 S> */ B(LdaConstant), U8(1),
B(DeletePropertyStrict), R(0), B(DeletePropertyStrict), R(0),
/* 88 S> */ B(Return), /* 88 S> */ B(Return),
...@@ -53,10 +53,10 @@ snippet: " ...@@ -53,10 +53,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 10 bytecode array length: 11
bytecodes: [ bytecodes: [
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 56 S> */ B(LdaSmi), I8(2), /* 56 S> */ B(LdaSmi), I8(2),
B(DeletePropertySloppy), R(0), B(DeletePropertySloppy), R(0),
/* 75 S> */ B(Return), /* 75 S> */ B(Return),
...@@ -73,10 +73,10 @@ snippet: " ...@@ -73,10 +73,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 5 bytecode array length: 6
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaSmi), I8(10), /* 42 S> */ B(LdaSmi), I8(10),
B(Star0), B(Star), R(0),
/* 46 S> */ B(LdaFalse), /* 46 S> */ B(LdaFalse),
/* 62 S> */ B(Return), /* 62 S> */ B(Return),
] ]
...@@ -94,7 +94,7 @@ snippet: " ...@@ -94,7 +94,7 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 23 bytecode array length: 24
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateFunctionContext), U8(0), U8(1), /* 30 E> */ B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
...@@ -102,7 +102,7 @@ bytecodes: [ ...@@ -102,7 +102,7 @@ bytecodes: [
/* 56 E> */ B(StaCurrentContextSlot), U8(2), /* 56 E> */ B(StaCurrentContextSlot), U8(2),
/* 64 S> */ B(CreateClosure), U8(2), U8(0), U8(2), /* 64 S> */ B(CreateClosure), U8(2), U8(0), U8(2),
/* 93 S> */ B(LdaImmutableCurrentContextSlot), U8(2), /* 93 S> */ B(LdaImmutableCurrentContextSlot), U8(2),
B(Star1), B(Star), R(1),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(DeletePropertyStrict), R(1), B(DeletePropertyStrict), R(1),
/* 112 S> */ B(Return), /* 112 S> */ B(Return),
......
...@@ -19,10 +19,10 @@ snippet: " ...@@ -19,10 +19,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 10 bytecode array length: 11
bytecodes: [ bytecodes: [
/* 15 S> */ B(LdaConstant), U8(0), /* 15 S> */ B(LdaConstant), U8(0),
B(Star0), B(Star), R(0),
B(CallRuntime), U16(Runtime::kDeleteLookupSlot), R(0), U8(1), B(CallRuntime), U16(Runtime::kDeleteLookupSlot), R(0), U8(1),
B(LdaUndefined), B(LdaUndefined),
/* 25 S> */ B(Return), /* 25 S> */ B(Return),
...@@ -69,10 +69,10 @@ snippet: " ...@@ -69,10 +69,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 9 bytecode array length: 10
bytecodes: [ bytecodes: [
/* 15 S> */ B(LdaConstant), U8(0), /* 15 S> */ B(LdaConstant), U8(0),
B(Star0), B(Star), R(0),
B(CallRuntime), U16(Runtime::kDeleteLookupSlot), R(0), U8(1), B(CallRuntime), U16(Runtime::kDeleteLookupSlot), R(0), U8(1),
/* 31 S> */ B(Return), /* 31 S> */ B(Return),
] ]
......
...@@ -11,7 +11,7 @@ snippet: " ...@@ -11,7 +11,7 @@ snippet: "
" "
frame size: 10 frame size: 10
parameter count: 1 parameter count: 1
bytecode array length: 52 bytecode array length: 58
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateFunctionContext), U8(0), U8(4), /* 30 E> */ B(CreateFunctionContext), U8(0), U8(4),
B(PushContext), R(1), B(PushContext), R(1),
...@@ -22,20 +22,20 @@ bytecodes: [ ...@@ -22,20 +22,20 @@ bytecodes: [
B(Ldar), R(0), B(Ldar), R(0),
B(StaCurrentContextSlot), U8(4), B(StaCurrentContextSlot), U8(4),
/* 34 S> */ B(LdaLookupGlobalSlot), U8(1), U8(0), U8(1), /* 34 S> */ B(LdaLookupGlobalSlot), U8(1), U8(0), U8(1),
B(Star2), B(Star), R(2),
B(LdaConstant), U8(2), B(LdaConstant), U8(2),
B(Star3), B(Star), R(3),
B(LdaZero), B(LdaZero),
B(Star7), B(Star), R(7),
B(LdaSmi), I8(30), B(LdaSmi), I8(30),
B(Star8), B(Star), R(8),
B(LdaSmi), I8(41), B(LdaSmi), I8(41),
B(Star9), B(Star), R(9),
B(Mov), R(2), R(4), B(Mov), R(2), R(4),
B(Mov), R(3), R(5), B(Mov), R(3), R(5),
B(Mov), R(closure), R(6), B(Mov), R(closure), R(6),
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6), B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6),
B(Star2), B(Star), R(2),
/* 41 E> */ B(CallUndefinedReceiver1), R(2), R(3), U8(2), /* 41 E> */ B(CallUndefinedReceiver1), R(2), R(3), U8(2),
/* 52 S> */ B(Return), /* 52 S> */ B(Return),
] ]
......
...@@ -60,26 +60,26 @@ snippet: " ...@@ -60,26 +60,26 @@ snippet: "
" "
frame size: 8 frame size: 8
parameter count: 1 parameter count: 1
bytecode array length: 37 bytecode array length: 42
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaConstant), U8(0), /* 42 S> */ B(LdaConstant), U8(0),
B(Star0), B(Star), R(0),
/* 68 S> */ B(JumpIfUndefinedOrNull), U8(32), /* 68 S> */ B(JumpIfUndefinedOrNull), U8(36),
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),
B(LdaZero), B(LdaZero),
B(Star7), B(Star), R(7),
/* 63 S> */ B(ForInContinue), R(7), R(6), /* 63 S> */ B(ForInContinue), R(7), R(6),
B(JumpIfFalse), U8(18), B(JumpIfFalse), U8(21),
B(ForInNext), R(3), R(7), R(4), U8(0), B(ForInNext), R(3), R(7), R(4), U8(0),
B(JumpIfUndefined), U8(5), B(JumpIfUndefined), U8(7),
B(Star2), B(Star), R(2),
/* 63 S> */ B(Star1), /* 63 S> */ B(Star), R(1),
/* 82 S> */ B(Return), /* 82 S> */ B(Return),
B(ForInStep), R(7), B(ForInStep), R(7),
B(Star7), B(Star), R(7),
/* 54 E> */ B(JumpLoop), U8(18), I8(0), /* 54 E> */ B(JumpLoop), U8(21), I8(0),
B(LdaUndefined), B(LdaUndefined),
/* 85 S> */ B(Return), /* 85 S> */ B(Return),
] ]
...@@ -96,30 +96,30 @@ snippet: " ...@@ -96,30 +96,30 @@ snippet: "
" "
frame size: 9 frame size: 9
parameter count: 1 parameter count: 1
bytecode array length: 48 bytecode array length: 54
bytecodes: [ bytecodes: [
/* 42 S> */ B(LdaZero), /* 42 S> */ B(LdaZero),
B(Star0), 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(JumpIfUndefinedOrNull), U8(40), B(JumpIfUndefinedOrNull), U8(45),
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),
B(LdaZero), B(LdaZero),
B(Star7), B(Star), R(7),
/* 54 S> */ B(ForInContinue), R(7), R(6), /* 54 S> */ B(ForInContinue), R(7), R(6),
B(JumpIfFalse), U8(26), B(JumpIfFalse), U8(30),
B(ForInNext), R(3), R(7), R(4), U8(0), B(ForInNext), R(3), R(7), R(4), U8(0),
B(JumpIfUndefined), U8(13), B(JumpIfUndefined), U8(16),
B(Star2), B(Star), R(2),
/* 54 S> */ B(Star1), /* 54 S> */ B(Star), R(1),
/* 70 S> */ B(Ldar), R(2), /* 70 S> */ B(Ldar), R(2),
/* 75 E> */ B(Add), R(0), U8(2), /* 75 E> */ B(Add), R(0), U8(2),
B(Mov), R(0), R(8), B(Mov), R(0), R(8),
B(Star0), B(Star), R(0),
/* 72 E> */ B(ForInStep), R(7), /* 72 E> */ B(ForInStep), R(7),
B(Star7), B(Star), R(7),
/* 45 E> */ B(JumpLoop), U8(26), I8(0), /* 45 E> */ B(JumpLoop), U8(30), I8(0),
B(LdaUndefined), B(LdaUndefined),
/* 80 S> */ B(Return), /* 80 S> */ B(Return),
] ]
...@@ -139,39 +139,39 @@ snippet: " ...@@ -139,39 +139,39 @@ snippet: "
" "
frame size: 7 frame size: 7
parameter count: 1 parameter count: 1
bytecode array length: 75 bytecode array length: 81
bytecodes: [ bytecodes: [
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), 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(JumpIfUndefinedOrNull), U8(64), B(JumpIfUndefinedOrNull), U8(69),
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),
B(LdaZero), B(LdaZero),
B(Star5), B(Star), R(5),
/* 68 S> */ B(ForInContinue), R(5), R(4), /* 68 S> */ B(ForInContinue), R(5), R(4),
B(JumpIfFalse), U8(50), B(JumpIfFalse), U8(54),
B(ForInNext), R(1), R(5), R(2), U8(1), B(ForInNext), R(1), R(5), R(2), U8(1),
B(JumpIfUndefined), U8(37), B(JumpIfUndefined), U8(40),
B(Star6), B(Star), R(6),
B(Ldar), R(6), B(Ldar), R(6),
/* 68 E> */ B(StaNamedProperty), R(0), U8(2), U8(3), /* 68 E> */ B(StaNamedProperty), R(0), U8(2), U8(3),
/* 100 S> */ B(LdaNamedProperty), R(0), U8(2), U8(5), /* 100 S> */ B(LdaNamedProperty), R(0), U8(2), U8(5),
B(Star6), B(Star), R(6),
B(LdaSmi), I8(10), B(LdaSmi), I8(10),
/* 106 E> */ B(TestEqual), R(6), U8(7), /* 106 E> */ B(TestEqual), R(6), U8(7),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
/* 113 S> */ B(Jump), U8(16), /* 113 S> */ B(Jump), U8(17),
/* 130 S> */ B(LdaNamedProperty), R(0), U8(2), U8(5), /* 130 S> */ B(LdaNamedProperty), R(0), U8(2), U8(5),
B(Star6), B(Star), R(6),
B(LdaSmi), I8(20), B(LdaSmi), I8(20),
/* 136 E> */ B(TestEqual), R(6), U8(8), /* 136 E> */ B(TestEqual), R(6), U8(8),
B(JumpIfFalse), U8(4), B(JumpIfFalse), U8(4),
/* 143 S> */ B(Jump), U8(8), /* 143 S> */ B(Jump), U8(9),
B(ForInStep), R(5), B(ForInStep), R(5),
B(Star5), B(Star), R(5),
/* 62 E> */ B(JumpLoop), U8(50), I8(0), /* 62 E> */ B(JumpLoop), U8(54), I8(0),
B(LdaUndefined), B(LdaUndefined),
/* 152 S> */ B(Return), /* 152 S> */ B(Return),
] ]
...@@ -190,32 +190,32 @@ snippet: " ...@@ -190,32 +190,32 @@ snippet: "
" "
frame size: 9 frame size: 9
parameter count: 1 parameter count: 1
bytecode array length: 55 bytecode array length: 60
bytecodes: [ bytecodes: [
/* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37), /* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
B(Star0), 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(JumpIfUndefinedOrNull), U8(44), B(JumpIfUndefinedOrNull), U8(48),
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),
B(LdaZero), B(LdaZero),
B(Star5), B(Star), R(5),
/* 65 S> */ B(ForInContinue), R(5), R(4), /* 65 S> */ B(ForInContinue), R(5), R(4),
B(JumpIfFalse), U8(30), B(JumpIfFalse), U8(33),
B(ForInNext), R(1), R(5), R(2), U8(1), B(ForInNext), R(1), R(5), R(2), U8(1),
B(JumpIfUndefined), U8(17), B(JumpIfUndefined), U8(19),
B(Star6), B(Star), R(6),
B(LdaZero), B(LdaZero),
B(Star8), B(Star), R(8),
B(Ldar), R(6), B(Ldar), R(6),
/* 65 E> */ B(StaKeyedProperty), R(0), R(8), U8(3), /* 65 E> */ B(StaKeyedProperty), R(0), R(8), U8(3),
/* 83 S> */ B(LdaSmi), I8(3), /* 83 S> */ B(LdaSmi), I8(3),
/* 91 E> */ B(LdaKeyedProperty), R(0), U8(5), /* 91 E> */ B(LdaKeyedProperty), R(0), U8(5),
/* 95 S> */ B(Return), /* 95 S> */ B(Return),
B(ForInStep), R(5), B(ForInStep), R(5),
B(Star5), B(Star), R(5),
/* 59 E> */ B(JumpLoop), U8(30), I8(0), /* 59 E> */ B(JumpLoop), U8(33), I8(0),
B(LdaUndefined), B(LdaUndefined),
/* 98 S> */ B(Return), /* 98 S> */ B(Return),
] ]
......
...@@ -28,10 +28,10 @@ snippet: " ...@@ -28,10 +28,10 @@ snippet: "
" "
frame size: 1 frame size: 1
parameter count: 1 parameter count: 1
bytecode array length: 9 bytecode array length: 10
bytecodes: [ bytecodes: [
/* 34 S> */ B(CreateClosure), U8(0), U8(0), U8(2), /* 34 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
B(Star0), B(Star), R(0),
/* 56 E> */ B(CallUndefinedReceiver0), R(0), U8(0), /* 56 E> */ B(CallUndefinedReceiver0), R(0), U8(0),
/* 58 S> */ B(Return), /* 58 S> */ B(Return),
] ]
...@@ -47,12 +47,12 @@ snippet: " ...@@ -47,12 +47,12 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 13 bytecode array length: 15
bytecodes: [ bytecodes: [
/* 34 S> */ B(CreateClosure), U8(0), U8(0), U8(2), /* 34 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
B(Star0), B(Star), R(0),
B(LdaSmi), I8(1), B(LdaSmi), I8(1),
B(Star1), B(Star), R(1),
/* 67 E> */ B(CallUndefinedReceiver1), R(0), R(1), U8(0), /* 67 E> */ B(CallUndefinedReceiver1), R(0), R(1), U8(0),
/* 70 S> */ B(Return), /* 70 S> */ B(Return),
] ]
......
...@@ -14,17 +14,17 @@ snippet: " ...@@ -14,17 +14,17 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 19 bytecode array length: 22
bytecodes: [ bytecodes: [
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 63 S> */ B(LdaSmi), I8(10), /* 63 S> */ B(LdaSmi), I8(10),
B(Star1), B(Star), R(1),
/* 67 S> */ B(Ldar), R(0), /* 67 S> */ B(Ldar), R(0),
B(TestUndetectable), B(TestUndetectable),
B(JumpIfFalse), U8(5), B(JumpIfFalse), U8(6),
/* 88 S> */ B(LdaSmi), I8(20), /* 88 S> */ B(LdaSmi), I8(20),
B(Star1), B(Star), R(1),
/* 97 S> */ B(Ldar), R(1), /* 97 S> */ B(Ldar), R(1),
/* 106 S> */ B(Return), /* 106 S> */ B(Return),
] ]
...@@ -43,17 +43,17 @@ snippet: " ...@@ -43,17 +43,17 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 19 bytecode array length: 22
bytecodes: [ bytecodes: [
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 63 S> */ B(LdaSmi), I8(10), /* 63 S> */ B(LdaSmi), I8(10),
B(Star1), B(Star), R(1),
/* 67 S> */ B(Ldar), R(0), /* 67 S> */ B(Ldar), R(0),
B(TestUndetectable), B(TestUndetectable),
B(JumpIfFalse), U8(5), B(JumpIfFalse), U8(6),
/* 93 S> */ B(LdaSmi), I8(20), /* 93 S> */ B(LdaSmi), I8(20),
B(Star1), B(Star), R(1),
/* 102 S> */ B(Ldar), R(1), /* 102 S> */ B(Ldar), R(1),
/* 111 S> */ B(Return), /* 111 S> */ B(Return),
] ]
...@@ -72,17 +72,17 @@ snippet: " ...@@ -72,17 +72,17 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 19 bytecode array length: 22
bytecodes: [ bytecodes: [
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 63 S> */ B(LdaSmi), I8(10), /* 63 S> */ B(LdaSmi), I8(10),
B(Star1), B(Star), R(1),
/* 67 S> */ B(Ldar), R(0), /* 67 S> */ B(Ldar), R(0),
B(TestUndetectable), B(TestUndetectable),
B(JumpIfTrue), U8(5), B(JumpIfTrue), U8(6),
/* 88 S> */ B(LdaSmi), I8(20), /* 88 S> */ B(LdaSmi), I8(20),
B(Star1), B(Star), R(1),
/* 97 S> */ B(Ldar), R(1), /* 97 S> */ B(Ldar), R(1),
/* 106 S> */ B(Return), /* 106 S> */ B(Return),
] ]
...@@ -101,17 +101,17 @@ snippet: " ...@@ -101,17 +101,17 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 19 bytecode array length: 22
bytecodes: [ bytecodes: [
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 63 S> */ B(LdaSmi), I8(10), /* 63 S> */ B(LdaSmi), I8(10),
B(Star1), B(Star), R(1),
/* 67 S> */ B(Ldar), R(0), /* 67 S> */ B(Ldar), R(0),
B(TestUndetectable), B(TestUndetectable),
B(JumpIfTrue), U8(5), B(JumpIfTrue), U8(6),
/* 93 S> */ B(LdaSmi), I8(20), /* 93 S> */ B(LdaSmi), I8(20),
B(Star1), B(Star), R(1),
/* 102 S> */ B(Ldar), R(1), /* 102 S> */ B(Ldar), R(1),
/* 111 S> */ B(Return), /* 111 S> */ B(Return),
] ]
...@@ -130,16 +130,16 @@ snippet: " ...@@ -130,16 +130,16 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 18 bytecode array length: 21
bytecodes: [ bytecodes: [
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 63 S> */ B(LdaSmi), I8(10), /* 63 S> */ B(LdaSmi), I8(10),
B(Star1), B(Star), R(1),
/* 67 S> */ B(Ldar), R(0), /* 67 S> */ B(Ldar), R(0),
B(JumpIfNotNull), U8(5), B(JumpIfNotNull), U8(6),
/* 89 S> */ B(LdaSmi), I8(20), /* 89 S> */ B(LdaSmi), I8(20),
B(Star1), B(Star), R(1),
/* 98 S> */ B(Ldar), R(1), /* 98 S> */ B(Ldar), R(1),
/* 107 S> */ B(Return), /* 107 S> */ B(Return),
] ]
...@@ -158,16 +158,16 @@ snippet: " ...@@ -158,16 +158,16 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 18 bytecode array length: 21
bytecodes: [ bytecodes: [
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 63 S> */ B(LdaSmi), I8(10), /* 63 S> */ B(LdaSmi), I8(10),
B(Star1), B(Star), R(1),
/* 67 S> */ B(Ldar), R(0), /* 67 S> */ B(Ldar), R(0),
B(JumpIfNotUndefined), U8(5), B(JumpIfNotUndefined), U8(6),
/* 94 S> */ B(LdaSmi), I8(20), /* 94 S> */ B(LdaSmi), I8(20),
B(Star1), B(Star), R(1),
/* 103 S> */ B(Ldar), R(1), /* 103 S> */ B(Ldar), R(1),
/* 112 S> */ B(Return), /* 112 S> */ B(Return),
] ]
...@@ -186,16 +186,16 @@ snippet: " ...@@ -186,16 +186,16 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 18 bytecode array length: 21
bytecodes: [ bytecodes: [
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 63 S> */ B(LdaSmi), I8(10), /* 63 S> */ B(LdaSmi), I8(10),
B(Star1), B(Star), R(1),
/* 67 S> */ B(Ldar), R(0), /* 67 S> */ B(Ldar), R(0),
B(JumpIfNull), U8(5), B(JumpIfNull), U8(6),
/* 89 S> */ B(LdaSmi), I8(20), /* 89 S> */ B(LdaSmi), I8(20),
B(Star1), B(Star), R(1),
/* 98 S> */ B(Ldar), R(1), /* 98 S> */ B(Ldar), R(1),
/* 107 S> */ B(Return), /* 107 S> */ B(Return),
] ]
...@@ -214,16 +214,16 @@ snippet: " ...@@ -214,16 +214,16 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 18 bytecode array length: 21
bytecodes: [ bytecodes: [
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), /* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
B(Star0), B(Star), R(0),
/* 63 S> */ B(LdaSmi), I8(10), /* 63 S> */ B(LdaSmi), I8(10),
B(Star1), B(Star), R(1),
/* 67 S> */ B(Ldar), R(0), /* 67 S> */ B(Ldar), R(0),
B(JumpIfUndefined), U8(5), B(JumpIfUndefined), U8(6),
/* 94 S> */ B(LdaSmi), I8(20), /* 94 S> */ B(LdaSmi), I8(20),
B(Star1), B(Star), R(1),
/* 103 S> */ B(Ldar), R(1), /* 103 S> */ B(Ldar), R(1),
/* 112 S> */ B(Return), /* 112 S> */ B(Return),
] ]
......
...@@ -57,14 +57,14 @@ snippet: " ...@@ -57,14 +57,14 @@ snippet: "
" "
frame size: 2 frame size: 2
parameter count: 1 parameter count: 1
bytecode array length: 23 bytecode array length: 24
bytecodes: [ bytecodes: [
/* 30 E> */ B(CreateFunctionContext), U8(0), U8(1), /* 30 E> */ B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(0), B(PushContext), R(0),
B(LdaTheHole), B(LdaTheHole),
B(StaCurrentContextSlot), U8(2), B(StaCurrentContextSlot), U8(2),
/* 42 S> */ B(LdaSmi), I8(20), /* 42 S> */ B(LdaSmi), I8(20),
B(Star1), B(Star), R(1),
B(LdaCurrentContextSlot), U8(2), B(LdaCurrentContextSlot), U8(2),
/* 45 E> */ B(ThrowReferenceErrorIfHole), U8(1), /* 45 E> */ B(ThrowReferenceErrorIfHole), U8(1),
B(Ldar), R(1), B(Ldar), R(1),
......
This diff is collapsed.
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