[objects] Make feedback vector a first-class object
Instead of having feedback vector as a subtype of FixedArray with reserved slots, make it a first-class variable-sized object with a fixed-size header. This allows us to compress counters to ints in the header, rather than forcing them to be Smis. Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: Icc5f088ffbc2e2651b845bc71ea42060639e3e48 Reviewed-on: https://chromium-review.googlesource.com/585129 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#46935}
This commit is contained in:
parent
9836cdb1ad
commit
37680d6563
@ -8992,8 +8992,8 @@ class Internals {
|
||||
static const int kNodeIsIndependentShift = 3;
|
||||
static const int kNodeIsActiveShift = 4;
|
||||
|
||||
static const int kJSApiObjectType = 0xbc;
|
||||
static const int kJSObjectType = 0xbd;
|
||||
static const int kJSApiObjectType = 0xbd;
|
||||
static const int kJSObjectType = 0xbe;
|
||||
static const int kFirstNonstringType = 0x80;
|
||||
static const int kOddballType = 0x82;
|
||||
static const int kForeignType = 0x86;
|
||||
|
@ -1165,7 +1165,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
|
||||
// Load the cache state into r5.
|
||||
__ add(r5, r2, Operand::PointerOffsetFromSmiKey(r3));
|
||||
__ ldr(r5, FieldMemOperand(r5, FixedArray::kHeaderSize));
|
||||
__ ldr(r5, FieldMemOperand(r5, FeedbackVector::kFeedbackSlotsOffset));
|
||||
|
||||
// A monomorphic cache hit or an already megamorphic state: invoke the
|
||||
// function without changing the state.
|
||||
@ -1212,7 +1212,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
__ bind(&megamorphic);
|
||||
__ add(r5, r2, Operand::PointerOffsetFromSmiKey(r3));
|
||||
__ LoadRoot(r4, Heap::kmegamorphic_symbolRootIndex);
|
||||
__ str(r4, FieldMemOperand(r5, FixedArray::kHeaderSize));
|
||||
__ str(r4, FieldMemOperand(r5, FeedbackVector::kFeedbackSlotsOffset));
|
||||
__ jmp(&done);
|
||||
|
||||
// An uninitialized cache is patched with the function
|
||||
@ -1238,7 +1238,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
|
||||
// Increment the call count for all function calls.
|
||||
__ add(r5, r2, Operand::PointerOffsetFromSmiKey(r3));
|
||||
__ add(r5, r5, Operand(FixedArray::kHeaderSize + kPointerSize));
|
||||
__ add(r5, r5, Operand(FeedbackVector::kFeedbackSlotsOffset + kPointerSize));
|
||||
__ ldr(r4, FieldMemOperand(r5, 0));
|
||||
__ add(r4, r4, Operand(Smi::FromInt(1)));
|
||||
__ str(r4, FieldMemOperand(r5, 0));
|
||||
@ -1262,7 +1262,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
__ add(r5, r2, Operand::PointerOffsetFromSmiKey(r3));
|
||||
Label feedback_register_initialized;
|
||||
// Put the AllocationSite from the feedback vector into r2, or undefined.
|
||||
__ ldr(r2, FieldMemOperand(r5, FixedArray::kHeaderSize));
|
||||
__ ldr(r2, FieldMemOperand(r5, FeedbackVector::kFeedbackSlotsOffset));
|
||||
__ ldr(r5, FieldMemOperand(r2, AllocationSite::kMapOffset));
|
||||
__ CompareRoot(r5, Heap::kAllocationSiteMapRootIndex);
|
||||
__ b(eq, &feedback_register_initialized);
|
||||
|
@ -1245,7 +1245,8 @@ static void GenerateRecordCallTarget(MacroAssembler* masm, Register argc,
|
||||
Register feedback_value = scratch3;
|
||||
__ Add(feedback, feedback_vector,
|
||||
Operand::UntagSmiAndScale(index, kPointerSizeLog2));
|
||||
__ Ldr(feedback, FieldMemOperand(feedback, FixedArray::kHeaderSize));
|
||||
__ Ldr(feedback,
|
||||
FieldMemOperand(feedback, FeedbackVector::kFeedbackSlotsOffset));
|
||||
|
||||
// A monomorphic cache hit or an already megamorphic state: invoke the
|
||||
// function without changing the state.
|
||||
@ -1290,7 +1291,8 @@ static void GenerateRecordCallTarget(MacroAssembler* masm, Register argc,
|
||||
__ Add(scratch1, feedback_vector,
|
||||
Operand::UntagSmiAndScale(index, kPointerSizeLog2));
|
||||
__ LoadRoot(scratch2, Heap::kmegamorphic_symbolRootIndex);
|
||||
__ Str(scratch2, FieldMemOperand(scratch1, FixedArray::kHeaderSize));
|
||||
__ Str(scratch2,
|
||||
FieldMemOperand(scratch1, FeedbackVector::kFeedbackSlotsOffset));
|
||||
__ B(&done);
|
||||
|
||||
// An uninitialized cache is patched with the function or sentinel to
|
||||
@ -1320,7 +1322,8 @@ static void GenerateRecordCallTarget(MacroAssembler* masm, Register argc,
|
||||
// Increment the call count for all function calls.
|
||||
__ Add(scratch1, feedback_vector,
|
||||
Operand::UntagSmiAndScale(index, kPointerSizeLog2));
|
||||
__ Add(scratch1, scratch1, Operand(FixedArray::kHeaderSize + kPointerSize));
|
||||
__ Add(scratch1, scratch1,
|
||||
Operand(FeedbackVector::kFeedbackSlotsOffset + kPointerSize));
|
||||
__ Ldr(scratch2, FieldMemOperand(scratch1, 0));
|
||||
__ Add(scratch2, scratch2, Operand(Smi::FromInt(1)));
|
||||
__ Str(scratch2, FieldMemOperand(scratch1, 0));
|
||||
@ -1348,7 +1351,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
__ Add(x5, x2, Operand::UntagSmiAndScale(x3, kPointerSizeLog2));
|
||||
Label feedback_register_initialized;
|
||||
// Put the AllocationSite from the feedback vector into x2, or undefined.
|
||||
__ Ldr(x2, FieldMemOperand(x5, FixedArray::kHeaderSize));
|
||||
__ Ldr(x2, FieldMemOperand(x5, FeedbackVector::kFeedbackSlotsOffset));
|
||||
__ Ldr(x5, FieldMemOperand(x2, AllocationSite::kMapOffset));
|
||||
__ JumpIfRoot(x5, Heap::kAllocationSiteMapRootIndex,
|
||||
&feedback_register_initialized);
|
||||
|
@ -283,7 +283,7 @@ struct Use {
|
||||
// This allows conversion of Addresses and integral types into
|
||||
// 0-relative int offsets.
|
||||
template <typename T>
|
||||
inline intptr_t OffsetFrom(T x) {
|
||||
constexpr inline intptr_t OffsetFrom(T x) {
|
||||
return x - static_cast<T>(0);
|
||||
}
|
||||
|
||||
@ -292,7 +292,7 @@ inline intptr_t OffsetFrom(T x) {
|
||||
// This allows conversion of 0-relative int offsets into Addresses and
|
||||
// integral types.
|
||||
template <typename T>
|
||||
inline T AddressFrom(intptr_t x) {
|
||||
constexpr inline T AddressFrom(intptr_t x) {
|
||||
return static_cast<T>(static_cast<T>(0) + x);
|
||||
}
|
||||
|
||||
@ -304,12 +304,21 @@ inline T RoundDown(T x, intptr_t m) {
|
||||
DCHECK(m != 0 && ((m & (m - 1)) == 0));
|
||||
return AddressFrom<T>(OffsetFrom(x) & -m);
|
||||
}
|
||||
|
||||
template <intptr_t m, typename T>
|
||||
constexpr inline T RoundDown(T x) {
|
||||
// m must be a power of two.
|
||||
STATIC_ASSERT(m != 0 && ((m & (m - 1)) == 0));
|
||||
return AddressFrom<T>(OffsetFrom(x) & -m);
|
||||
}
|
||||
|
||||
// Return the smallest multiple of m which is >= x.
|
||||
template <typename T>
|
||||
inline T RoundUp(T x, intptr_t m) {
|
||||
return RoundDown<T>(static_cast<T>(x + m - 1), m);
|
||||
}
|
||||
template <intptr_t m, typename T>
|
||||
constexpr inline T RoundUp(T x) {
|
||||
return RoundDown<m, T>(static_cast<T>(x + m - 1));
|
||||
}
|
||||
|
||||
#endif // V8_BASE_MACROS_H_
|
||||
|
@ -1010,11 +1010,9 @@ static void MaybeTailCallOptimizedCodeSlot(MacroAssembler* masm,
|
||||
Register closure = r1;
|
||||
Register optimized_code_entry = scratch1;
|
||||
|
||||
const int kOptimizedCodeCellOffset =
|
||||
FeedbackVector::kOptimizedCodeIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize;
|
||||
__ ldr(optimized_code_entry,
|
||||
FieldMemOperand(feedback_vector, kOptimizedCodeCellOffset));
|
||||
__ ldr(
|
||||
optimized_code_entry,
|
||||
FieldMemOperand(feedback_vector, FeedbackVector::kOptimizedCodeOffset));
|
||||
|
||||
// Check if the code entry is a Smi. If yes, we interpret it as an
|
||||
// optimisation marker. Otherwise, interpret is as a weak cell to a code
|
||||
@ -1149,15 +1147,11 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
__ b(ne, &switch_to_different_code_kind);
|
||||
|
||||
// Increment invocation count for the function.
|
||||
__ ldr(r9,
|
||||
FieldMemOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ add(r9, r9, Operand(Smi::FromInt(1)));
|
||||
__ str(r9,
|
||||
FieldMemOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ ldr(r9, FieldMemOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountOffset));
|
||||
__ add(r9, r9, Operand(1));
|
||||
__ str(r9, FieldMemOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountOffset));
|
||||
|
||||
// Check function data field is actually a BytecodeArray object.
|
||||
if (FLAG_debug_code) {
|
||||
|
@ -1028,11 +1028,9 @@ static void MaybeTailCallOptimizedCodeSlot(MacroAssembler* masm,
|
||||
Register closure = x1;
|
||||
Register optimized_code_entry = scratch1;
|
||||
|
||||
const int kOptimizedCodeCellOffset =
|
||||
FeedbackVector::kOptimizedCodeIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize;
|
||||
__ Ldr(optimized_code_entry,
|
||||
FieldMemOperand(feedback_vector, kOptimizedCodeCellOffset));
|
||||
__ Ldr(
|
||||
optimized_code_entry,
|
||||
FieldMemOperand(feedback_vector, FeedbackVector::kOptimizedCodeOffset));
|
||||
|
||||
// Check if the code entry is a Smi. If yes, we interpret it as an
|
||||
// optimisation marker. Otherwise, interpret is as a weak cell to a code
|
||||
@ -1169,13 +1167,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
// Increment invocation count for the function.
|
||||
__ Ldr(x11, FieldMemOperand(closure, JSFunction::kFeedbackVectorOffset));
|
||||
__ Ldr(x11, FieldMemOperand(x11, Cell::kValueOffset));
|
||||
__ Ldr(x10, FieldMemOperand(
|
||||
x11, FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ Add(x10, x10, Operand(Smi::FromInt(1)));
|
||||
__ Str(x10, FieldMemOperand(
|
||||
x11, FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ Ldr(w10, FieldMemOperand(x11, FeedbackVector::kInvocationCountOffset));
|
||||
__ Add(w10, w10, Operand(1));
|
||||
__ Str(w10, FieldMemOperand(x11, FeedbackVector::kInvocationCountOffset));
|
||||
|
||||
// Check function data field is actually a BytecodeArray object.
|
||||
if (FLAG_debug_code) {
|
||||
|
@ -126,7 +126,7 @@ Node* ConstructorBuiltinsAssembler::EmitFastNewClosure(Node* shared_info,
|
||||
empty_fixed_array);
|
||||
StoreObjectFieldNoWriteBarrier(result, JSObject::kElementsOffset,
|
||||
empty_fixed_array);
|
||||
Node* literals_cell = LoadFixedArrayElement(
|
||||
Node* literals_cell = LoadFeedbackVectorSlot(
|
||||
feedback_vector, slot, 0, CodeStubAssembler::SMI_PARAMETERS);
|
||||
{
|
||||
// Bump the closure counter encoded in the cell's map.
|
||||
@ -135,7 +135,8 @@ Node* ConstructorBuiltinsAssembler::EmitFastNewClosure(Node* shared_info,
|
||||
|
||||
GotoIf(IsNoClosuresCellMap(cell_map), &no_closures);
|
||||
GotoIf(IsOneClosureCellMap(cell_map), &one_closure);
|
||||
CSA_ASSERT(this, IsManyClosuresCellMap(cell_map));
|
||||
CSA_ASSERT(this, IsManyClosuresCellMap(cell_map), cell_map, literals_cell,
|
||||
feedback_vector, slot);
|
||||
Goto(&cell_done);
|
||||
|
||||
BIND(&no_closures);
|
||||
@ -155,7 +156,7 @@ Node* ConstructorBuiltinsAssembler::EmitFastNewClosure(Node* shared_info,
|
||||
Node* literals = LoadObjectField(literals_cell, Cell::kValueOffset);
|
||||
GotoIfNot(IsFeedbackVector(literals), &optimized_code_ok);
|
||||
Node* optimized_code_cell_slot =
|
||||
LoadFixedArrayElement(literals, FeedbackVector::kOptimizedCodeIndex);
|
||||
LoadObjectField(literals, FeedbackVector::kOptimizedCodeOffset);
|
||||
GotoIf(TaggedIsSmi(optimized_code_cell_slot), &optimized_code_ok);
|
||||
|
||||
Node* optimized_code =
|
||||
@ -169,8 +170,8 @@ Node* ConstructorBuiltinsAssembler::EmitFastNewClosure(Node* shared_info,
|
||||
|
||||
// Cell is empty or code is marked for deopt, clear the optimized code slot.
|
||||
BIND(&clear_optimized_code);
|
||||
StoreFixedArrayElement(literals, FeedbackVector::kOptimizedCodeIndex,
|
||||
SmiConstant(0), SKIP_WRITE_BARRIER);
|
||||
StoreObjectFieldNoWriteBarrier(
|
||||
literals, FeedbackVector::kOptimizedCodeOffset, SmiConstant(0));
|
||||
Goto(&optimized_code_ok);
|
||||
|
||||
BIND(&optimized_code_ok);
|
||||
@ -369,7 +370,9 @@ Node* ConstructorBuiltinsAssembler::EmitFastCloneRegExp(Node* closure,
|
||||
Label call_runtime(this, Label::kDeferred), end(this);
|
||||
|
||||
VARIABLE(result, MachineRepresentation::kTagged);
|
||||
Node* literal_site = LoadFeedbackVectorSlot(closure, literal_index);
|
||||
Node* feedback_vector = LoadFeedbackVector(closure);
|
||||
Node* literal_site =
|
||||
LoadFeedbackVectorSlot(feedback_vector, literal_index, 0, SMI_PARAMETERS);
|
||||
GotoIf(NotHasBoilerplate(literal_site), &call_runtime);
|
||||
{
|
||||
Node* boilerplate = literal_site;
|
||||
@ -444,7 +447,9 @@ Node* ConstructorBuiltinsAssembler::EmitFastCloneShallowArray(
|
||||
return_result(this);
|
||||
VARIABLE(result, MachineRepresentation::kTagged);
|
||||
|
||||
Node* allocation_site = LoadFeedbackVectorSlot(closure, literal_index);
|
||||
Node* feedback_vector = LoadFeedbackVector(closure);
|
||||
Node* allocation_site =
|
||||
LoadFeedbackVectorSlot(feedback_vector, literal_index, 0, SMI_PARAMETERS);
|
||||
GotoIf(NotHasBoilerplate(allocation_site), call_runtime);
|
||||
|
||||
Node* boilerplate = LoadAllocationSiteBoilerplate(allocation_site);
|
||||
@ -556,8 +561,10 @@ Node* ConstructorBuiltinsAssembler::EmitCreateEmptyArrayLiteral(
|
||||
Node* closure, Node* literal_index, Node* context) {
|
||||
// Array literals always have a valid AllocationSite to properly track
|
||||
// elements transitions.
|
||||
Node* feedback_vector = LoadFeedbackVector(closure);
|
||||
VARIABLE(allocation_site, MachineRepresentation::kTagged,
|
||||
LoadFeedbackVectorSlot(closure, literal_index));
|
||||
LoadFeedbackVectorSlot(feedback_vector, literal_index, 0,
|
||||
SMI_PARAMETERS));
|
||||
|
||||
Label create_empty_array(this),
|
||||
initialize_allocation_site(this, Label::kDeferred), done(this);
|
||||
@ -567,7 +574,6 @@ Node* ConstructorBuiltinsAssembler::EmitCreateEmptyArrayLiteral(
|
||||
// TODO(cbruni): create the AllocationSite in CSA.
|
||||
BIND(&initialize_allocation_site);
|
||||
{
|
||||
Node* feedback_vector = LoadFeedbackVector(closure);
|
||||
allocation_site.Bind(
|
||||
CreateAllocationSiteInFeedbackVector(feedback_vector, literal_index));
|
||||
Goto(&create_empty_array);
|
||||
@ -604,7 +610,9 @@ TF_BUILTIN(CreateEmptyArrayLiteral, ConstructorBuiltinsAssembler) {
|
||||
|
||||
Node* ConstructorBuiltinsAssembler::EmitFastCloneShallowObject(
|
||||
Label* call_runtime, Node* closure, Node* literals_index) {
|
||||
Node* allocation_site = LoadFeedbackVectorSlot(closure, literals_index);
|
||||
Node* feedback_vector = LoadFeedbackVector(closure);
|
||||
Node* allocation_site = LoadFeedbackVectorSlot(
|
||||
feedback_vector, literals_index, 0, SMI_PARAMETERS);
|
||||
GotoIf(NotHasBoilerplate(allocation_site), call_runtime);
|
||||
|
||||
Node* boilerplate = LoadAllocationSiteBoilerplate(allocation_site);
|
||||
|
@ -662,11 +662,8 @@ static void MaybeTailCallOptimizedCodeSlot(MacroAssembler* masm,
|
||||
Register closure = edi;
|
||||
Register optimized_code_entry = scratch;
|
||||
|
||||
const int kOptimizedCodeCellOffset =
|
||||
FeedbackVector::kOptimizedCodeIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize;
|
||||
__ mov(optimized_code_entry,
|
||||
FieldOperand(feedback_vector, kOptimizedCodeCellOffset));
|
||||
FieldOperand(feedback_vector, FeedbackVector::kOptimizedCodeOffset));
|
||||
|
||||
// Check if the code entry is a Smi. If yes, we interpret it as an
|
||||
// optimisation marker. Otherwise, interpret is as a weak cell to a code
|
||||
@ -807,10 +804,7 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
__ j(not_equal, &switch_to_different_code_kind);
|
||||
|
||||
// Increment invocation count for the function.
|
||||
__ add(FieldOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize),
|
||||
Immediate(Smi::FromInt(1)));
|
||||
__ inc(FieldOperand(feedback_vector, FeedbackVector::kInvocationCountOffset));
|
||||
|
||||
// Check function data field is actually a BytecodeArray object.
|
||||
if (FLAG_debug_code) {
|
||||
|
@ -996,11 +996,8 @@ static void MaybeTailCallOptimizedCodeSlot(MacroAssembler* masm,
|
||||
Register closure = a1;
|
||||
Register optimized_code_entry = scratch1;
|
||||
|
||||
const int kOptimizedCodeCellOffset =
|
||||
FeedbackVector::kOptimizedCodeIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize;
|
||||
__ lw(optimized_code_entry,
|
||||
FieldMemOperand(feedback_vector, kOptimizedCodeCellOffset));
|
||||
FieldMemOperand(feedback_vector, FeedbackVector::kOptimizedCodeOffset));
|
||||
|
||||
// Check if the code entry is a Smi. If yes, we interpret it as an
|
||||
// optimisation marker. Otherwise, interpret is as a weak cell to a code
|
||||
@ -1130,15 +1127,11 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
Operand(masm->CodeObject())); // Self-reference to this code.
|
||||
|
||||
// Increment invocation count for the function.
|
||||
__ lw(t0,
|
||||
FieldMemOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ Addu(t0, t0, Operand(Smi::FromInt(1)));
|
||||
__ sw(t0,
|
||||
FieldMemOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ lw(t0, FieldMemOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountOffset));
|
||||
__ Addu(t0, t0, Operand(1));
|
||||
__ sw(t0, FieldMemOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountOffset));
|
||||
|
||||
// Check function data field is actually a BytecodeArray object.
|
||||
if (FLAG_debug_code) {
|
||||
|
@ -998,11 +998,8 @@ static void MaybeTailCallOptimizedCodeSlot(MacroAssembler* masm,
|
||||
Register closure = a1;
|
||||
Register optimized_code_entry = scratch1;
|
||||
|
||||
const int kOptimizedCodeCellOffset =
|
||||
FeedbackVector::kOptimizedCodeIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize;
|
||||
__ Ld(optimized_code_entry,
|
||||
FieldMemOperand(feedback_vector, kOptimizedCodeCellOffset));
|
||||
FieldMemOperand(feedback_vector, FeedbackVector::kOptimizedCodeOffset));
|
||||
|
||||
// Check if the code entry is a Smi. If yes, we interpret it as an
|
||||
// optimisation marker. Otherwise, interpret is as a weak cell to a code
|
||||
@ -1134,15 +1131,11 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
Operand(masm->CodeObject())); // Self-reference to this code.
|
||||
|
||||
// Increment invocation count for the function.
|
||||
__ Ld(a4,
|
||||
FieldMemOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ Daddu(a4, a4, Operand(Smi::FromInt(1)));
|
||||
__ Sd(a4,
|
||||
FieldMemOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ Lw(a4, FieldMemOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountOffset));
|
||||
__ Addu(a4, a4, Operand(1));
|
||||
__ Sw(a4, FieldMemOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountOffset));
|
||||
|
||||
// Check function data field is actually a BytecodeArray object.
|
||||
if (FLAG_debug_code) {
|
||||
|
@ -744,11 +744,8 @@ static void MaybeTailCallOptimizedCodeSlot(MacroAssembler* masm,
|
||||
Register closure = rdi;
|
||||
Register optimized_code_entry = scratch1;
|
||||
|
||||
const int kOptimizedCodeCellOffset =
|
||||
FeedbackVector::kOptimizedCodeIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize;
|
||||
__ movp(optimized_code_entry,
|
||||
FieldOperand(feedback_vector, kOptimizedCodeCellOffset));
|
||||
FieldOperand(feedback_vector, FeedbackVector::kOptimizedCodeOffset));
|
||||
|
||||
// Check if the code entry is a Smi. If yes, we interpret it as an
|
||||
// optimisation marker. Otherwise, interpret is as a weak cell to a code
|
||||
@ -884,11 +881,8 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
__ j(not_equal, &switch_to_different_code_kind);
|
||||
|
||||
// Increment invocation count for the function.
|
||||
__ SmiAddConstant(
|
||||
FieldOperand(feedback_vector,
|
||||
FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize),
|
||||
Smi::FromInt(1));
|
||||
__ incl(
|
||||
FieldOperand(feedback_vector, FeedbackVector::kInvocationCountOffset));
|
||||
|
||||
// Check function data field is actually a BytecodeArray object.
|
||||
if (FLAG_debug_code) {
|
||||
|
@ -1367,6 +1367,19 @@ Node* CodeStubAssembler::LoadFixedTypedArrayElementAsTagged(
|
||||
}
|
||||
}
|
||||
|
||||
Node* CodeStubAssembler::LoadFeedbackVectorSlot(Node* object,
|
||||
Node* slot_index_node,
|
||||
int additional_offset,
|
||||
ParameterMode parameter_mode) {
|
||||
CSA_SLOW_ASSERT(this, IsFeedbackVector(object));
|
||||
CSA_SLOW_ASSERT(this, MatchesParameterMode(slot_index_node, parameter_mode));
|
||||
int32_t header_size =
|
||||
FeedbackVector::kFeedbackSlotsOffset + additional_offset - kHeapObjectTag;
|
||||
Node* offset = ElementOffsetFromIndex(slot_index_node, HOLEY_ELEMENTS,
|
||||
parameter_mode, header_size);
|
||||
return Load(MachineType::AnyTagged(), object, offset);
|
||||
}
|
||||
|
||||
Node* CodeStubAssembler::LoadAndUntagToWord32FixedArrayElement(
|
||||
Node* object, Node* index_node, int additional_offset,
|
||||
ParameterMode parameter_mode) {
|
||||
@ -1599,6 +1612,28 @@ Node* CodeStubAssembler::StoreFixedDoubleArrayElement(
|
||||
return StoreNoWriteBarrier(rep, object, offset, value);
|
||||
}
|
||||
|
||||
Node* CodeStubAssembler::StoreFeedbackVectorSlot(Node* object,
|
||||
Node* slot_index_node,
|
||||
Node* value,
|
||||
WriteBarrierMode barrier_mode,
|
||||
int additional_offset,
|
||||
ParameterMode parameter_mode) {
|
||||
CSA_SLOW_ASSERT(this, IsFeedbackVector(object));
|
||||
CSA_SLOW_ASSERT(this, MatchesParameterMode(slot_index_node, parameter_mode));
|
||||
DCHECK(barrier_mode == SKIP_WRITE_BARRIER ||
|
||||
barrier_mode == UPDATE_WRITE_BARRIER);
|
||||
int header_size =
|
||||
FeedbackVector::kFeedbackSlotsOffset + additional_offset - kHeapObjectTag;
|
||||
Node* offset = ElementOffsetFromIndex(slot_index_node, HOLEY_ELEMENTS,
|
||||
parameter_mode, header_size);
|
||||
if (barrier_mode == SKIP_WRITE_BARRIER) {
|
||||
return StoreNoWriteBarrier(MachineRepresentation::kTagged, object, offset,
|
||||
value);
|
||||
} else {
|
||||
return Store(object, offset, value);
|
||||
}
|
||||
}
|
||||
|
||||
void CodeStubAssembler::EnsureArrayLengthWritable(Node* map, Label* bailout) {
|
||||
// Check whether the length property is writable. The length property is the
|
||||
// only default named property on arrays. It's nonconfigurable, hence is
|
||||
@ -6398,37 +6433,22 @@ Node* CodeStubAssembler::LoadFeedbackVectorForStub() {
|
||||
return LoadFeedbackVector(function);
|
||||
}
|
||||
|
||||
Node* CodeStubAssembler::LoadFeedbackVectorSlot(Node* closure,
|
||||
Node* smi_index) {
|
||||
Node* feedback_vector = LoadFeedbackVector(closure);
|
||||
return LoadFixedArrayElement(feedback_vector, smi_index, 0,
|
||||
CodeStubAssembler::SMI_PARAMETERS);
|
||||
}
|
||||
|
||||
void CodeStubAssembler::StoreFeedbackVectorSlot(Node* closure, Node* smi_index,
|
||||
Node* value) {
|
||||
Node* feedback_vector = LoadFeedbackVector(closure);
|
||||
StoreFixedArrayElement(feedback_vector, smi_index, value,
|
||||
UPDATE_WRITE_BARRIER, 0,
|
||||
CodeStubAssembler::SMI_PARAMETERS);
|
||||
}
|
||||
|
||||
void CodeStubAssembler::UpdateFeedback(Node* feedback, Node* feedback_vector,
|
||||
Node* slot_id, Node* function) {
|
||||
// This method is used for binary op and compare feedback. These
|
||||
// vector nodes are initialized with a smi 0, so we can simply OR
|
||||
// our new feedback in place.
|
||||
Node* previous_feedback = LoadFixedArrayElement(feedback_vector, slot_id);
|
||||
Node* previous_feedback = LoadFeedbackVectorSlot(feedback_vector, slot_id);
|
||||
Node* combined_feedback = SmiOr(previous_feedback, feedback);
|
||||
Label end(this);
|
||||
|
||||
GotoIf(SmiEqual(previous_feedback, combined_feedback), &end);
|
||||
{
|
||||
StoreFixedArrayElement(feedback_vector, slot_id, combined_feedback,
|
||||
SKIP_WRITE_BARRIER);
|
||||
StoreFeedbackVectorSlot(feedback_vector, slot_id, combined_feedback,
|
||||
SKIP_WRITE_BARRIER);
|
||||
// Reset profiler ticks.
|
||||
StoreFixedArrayElement(feedback_vector, FeedbackVector::kProfilerTicksIndex,
|
||||
SmiConstant(0), SKIP_WRITE_BARRIER);
|
||||
StoreObjectFieldNoWriteBarrier(
|
||||
feedback_vector, FeedbackVector::kProfilerTicksOffset, SmiConstant(0));
|
||||
Goto(&end);
|
||||
}
|
||||
|
||||
@ -7050,8 +7070,8 @@ Node* CodeStubAssembler::CreateAllocationSiteInFeedbackVector(
|
||||
StoreObjectField(site, AllocationSite::kWeakNextOffset, next_site);
|
||||
StoreNoWriteBarrier(MachineRepresentation::kTagged, site_list, site);
|
||||
|
||||
StoreFixedArrayElement(feedback_vector, slot, site, UPDATE_WRITE_BARRIER, 0,
|
||||
CodeStubAssembler::SMI_PARAMETERS);
|
||||
StoreFeedbackVectorSlot(feedback_vector, slot, site, UPDATE_WRITE_BARRIER, 0,
|
||||
CodeStubAssembler::SMI_PARAMETERS);
|
||||
return site;
|
||||
}
|
||||
|
||||
@ -7067,8 +7087,8 @@ Node* CodeStubAssembler::CreateWeakCellInFeedbackVector(Node* feedback_vector,
|
||||
StoreObjectField(cell, WeakCell::kValueOffset, value);
|
||||
|
||||
// Store the WeakCell in the feedback vector.
|
||||
StoreFixedArrayElement(feedback_vector, slot, cell, UPDATE_WRITE_BARRIER, 0,
|
||||
CodeStubAssembler::SMI_PARAMETERS);
|
||||
StoreFeedbackVectorSlot(feedback_vector, slot, cell, UPDATE_WRITE_BARRIER, 0,
|
||||
CodeStubAssembler::SMI_PARAMETERS);
|
||||
return cell;
|
||||
}
|
||||
|
||||
|
@ -476,6 +476,11 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler {
|
||||
ParameterMode parameter_mode = INTPTR_PARAMETERS,
|
||||
Label* if_hole = nullptr);
|
||||
|
||||
// Load a feedback slot from a FeedbackVector.
|
||||
Node* LoadFeedbackVectorSlot(
|
||||
Node* object, Node* index, int additional_offset = 0,
|
||||
ParameterMode parameter_mode = INTPTR_PARAMETERS);
|
||||
|
||||
// Load Float64 value by |base| + |offset| address. If the value is a double
|
||||
// hole then jump to |if_hole|. If |machine_type| is None then only the hole
|
||||
// check is generated.
|
||||
@ -540,6 +545,12 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler {
|
||||
Node* object, Node* index, Node* value,
|
||||
ParameterMode parameter_mode = INTPTR_PARAMETERS);
|
||||
|
||||
Node* StoreFeedbackVectorSlot(
|
||||
Node* object, Node* index, Node* value,
|
||||
WriteBarrierMode barrier_mode = UPDATE_WRITE_BARRIER,
|
||||
int additional_offset = 0,
|
||||
ParameterMode parameter_mode = INTPTR_PARAMETERS);
|
||||
|
||||
void EnsureArrayLengthWritable(Node* map, Label* bailout);
|
||||
|
||||
// EnsureArrayPushable verifies that receiver is:
|
||||
@ -1324,9 +1335,8 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler {
|
||||
// Load type feedback vector from the stub caller's frame.
|
||||
Node* LoadFeedbackVectorForStub();
|
||||
|
||||
// Load type feedback vector for the given closure.
|
||||
Node* LoadFeedbackVector(Node* closure);
|
||||
Node* LoadFeedbackVectorSlot(Node* closure, Node* smi_index);
|
||||
void StoreFeedbackVectorSlot(Node* closure, Node* smi_index, Node* value);
|
||||
|
||||
// Update the type feedback vector.
|
||||
void UpdateFeedback(Node* feedback, Node* feedback_vector, Node* slot_id,
|
||||
|
@ -604,16 +604,16 @@ TF_STUB(CallICStub, CodeStubAssembler) {
|
||||
// Increment the call count.
|
||||
// TODO(bmeurer): Would it be beneficial to use Int32Add on 64-bit?
|
||||
Comment("increment call count");
|
||||
Node* call_count = LoadFixedArrayElement(vector, slot, 1 * kPointerSize);
|
||||
Node* call_count = LoadFeedbackVectorSlot(vector, slot, 1 * kPointerSize);
|
||||
Node* new_count = SmiAdd(call_count, SmiConstant(1));
|
||||
// Count is Smi, so we don't need a write barrier.
|
||||
StoreFixedArrayElement(vector, slot, new_count, SKIP_WRITE_BARRIER,
|
||||
1 * kPointerSize);
|
||||
StoreFeedbackVectorSlot(vector, slot, new_count, SKIP_WRITE_BARRIER,
|
||||
1 * kPointerSize);
|
||||
|
||||
Label call_function(this), extra_checks(this), call(this);
|
||||
|
||||
// The checks. First, does function match the recorded monomorphic target?
|
||||
Node* feedback_element = LoadFixedArrayElement(vector, slot);
|
||||
Node* feedback_element = LoadFeedbackVectorSlot(vector, slot);
|
||||
Node* feedback_value = LoadWeakCellValueUnchecked(feedback_element);
|
||||
Node* is_monomorphic = WordEqual(target, feedback_value);
|
||||
GotoIfNot(is_monomorphic, &extra_checks);
|
||||
@ -717,7 +717,7 @@ TF_STUB(CallICStub, CodeStubAssembler) {
|
||||
// MegamorphicSentinel is created as a part of Heap::InitialObjects
|
||||
// and will not move during a GC. So it is safe to skip write barrier.
|
||||
DCHECK(Heap::RootIsImmortalImmovable(Heap::kmegamorphic_symbolRootIndex));
|
||||
StoreFixedArrayElement(
|
||||
StoreFeedbackVectorSlot(
|
||||
vector, slot,
|
||||
HeapConstant(FeedbackVector::MegamorphicSentinel(isolate())),
|
||||
SKIP_WRITE_BARRIER);
|
||||
|
@ -507,11 +507,7 @@ Node* BytecodeGraphBuilder::BuildLoadNativeContextField(int index) {
|
||||
|
||||
|
||||
VectorSlotPair BytecodeGraphBuilder::CreateVectorSlotPair(int slot_id) {
|
||||
FeedbackSlot slot;
|
||||
if (slot_id >= FeedbackVector::kReservedIndexCount) {
|
||||
slot = feedback_vector()->ToSlot(slot_id);
|
||||
}
|
||||
return VectorSlotPair(feedback_vector(), slot);
|
||||
return VectorSlotPair(feedback_vector(), feedback_vector()->ToSlot(slot_id));
|
||||
}
|
||||
|
||||
void BytecodeGraphBuilder::CreateGraph() {
|
||||
@ -1570,9 +1566,6 @@ void BytecodeGraphBuilder::BuildCall(ConvertReceiverMode receiver_mode,
|
||||
receiver_mode);
|
||||
PrepareEagerCheckpoint();
|
||||
|
||||
// Slot index of 0 is used indicate no feedback slot is available. Assert
|
||||
// the assumption that slot index 0 is never a valid feedback slot.
|
||||
STATIC_ASSERT(FeedbackVector::kReservedIndexCount > 0);
|
||||
VectorSlotPair feedback = CreateVectorSlotPair(slot_id);
|
||||
|
||||
CallFrequency frequency = ComputeCallFrequency(slot_id);
|
||||
@ -1715,10 +1708,7 @@ void BytecodeGraphBuilder::VisitCallWithSpread() {
|
||||
int arg_count = static_cast<int>(reg_count) - 1;
|
||||
Node* const* args =
|
||||
GetCallArgumentsFromRegister(callee, receiver_node, first_arg, arg_count);
|
||||
// Slot index of 0 is used indicate no feedback slot is available. Assert
|
||||
// the assumption that slot index 0 is never a valid feedback slot.
|
||||
int const slot_id = bytecode_iterator().GetIndexOperand(3);
|
||||
STATIC_ASSERT(FeedbackVector::kReservedIndexCount > 0);
|
||||
VectorSlotPair feedback = CreateVectorSlotPair(slot_id);
|
||||
|
||||
CallFrequency frequency = ComputeCallFrequency(slot_id);
|
||||
@ -1818,9 +1808,6 @@ void BytecodeGraphBuilder::VisitConstruct() {
|
||||
interpreter::Register callee_reg = bytecode_iterator().GetRegisterOperand(0);
|
||||
interpreter::Register first_reg = bytecode_iterator().GetRegisterOperand(1);
|
||||
size_t reg_count = bytecode_iterator().GetRegisterCountOperand(2);
|
||||
// Slot index of 0 is used indicate no feedback slot is available. Assert
|
||||
// the assumption that slot index 0 is never a valid feedback slot.
|
||||
STATIC_ASSERT(FeedbackVector::kReservedIndexCount > 0);
|
||||
int const slot_id = bytecode_iterator().GetIndexOperand(3);
|
||||
VectorSlotPair feedback = CreateVectorSlotPair(slot_id);
|
||||
|
||||
@ -1849,9 +1836,6 @@ void BytecodeGraphBuilder::VisitConstructWithSpread() {
|
||||
interpreter::Register callee_reg = bytecode_iterator().GetRegisterOperand(0);
|
||||
interpreter::Register first_reg = bytecode_iterator().GetRegisterOperand(1);
|
||||
size_t reg_count = bytecode_iterator().GetRegisterCountOperand(2);
|
||||
// Slot index of 0 is used indicate no feedback slot is available. Assert
|
||||
// the assumption that slot index 0 is never a valid feedback slot.
|
||||
STATIC_ASSERT(FeedbackVector::kReservedIndexCount > 0);
|
||||
int const slot_id = bytecode_iterator().GetIndexOperand(3);
|
||||
VectorSlotPair feedback = CreateVectorSlotPair(slot_id);
|
||||
|
||||
@ -1990,11 +1974,7 @@ BinaryOperationHint BytecodeGraphBuilder::GetBinaryOperationHint(
|
||||
// feedback.
|
||||
CompareOperationHint BytecodeGraphBuilder::GetCompareOperationHint() {
|
||||
int slot_index = bytecode_iterator().GetIndexOperand(1);
|
||||
if (slot_index == 0) {
|
||||
return CompareOperationHint::kAny;
|
||||
}
|
||||
FeedbackSlot slot =
|
||||
feedback_vector()->ToSlot(bytecode_iterator().GetIndexOperand(1));
|
||||
FeedbackSlot slot = feedback_vector()->ToSlot(slot_index);
|
||||
DCHECK_EQ(FeedbackSlotKind::kCompareOp, feedback_vector()->GetKind(slot));
|
||||
CompareICNexus nexus(feedback_vector(), slot);
|
||||
return nexus.GetCompareOperationFeedback();
|
||||
@ -2201,7 +2181,6 @@ void BytecodeGraphBuilder::BuildCompareOp(const Operator* op) {
|
||||
Node* right = environment()->LookupAccumulator();
|
||||
|
||||
int slot_index = bytecode_iterator().GetIndexOperand(1);
|
||||
DCHECK(slot_index != 0);
|
||||
FeedbackSlot slot = feedback_vector()->ToSlot(slot_index);
|
||||
Node* node = nullptr;
|
||||
if (Node* simplified = TryBuildSimplifiedBinaryOp(op, left, right, slot)) {
|
||||
|
@ -298,6 +298,7 @@ Type::bitset BitsetType::Lub(i::Map* map) {
|
||||
case FIXED_DOUBLE_ARRAY_TYPE:
|
||||
case BYTE_ARRAY_TYPE:
|
||||
case BYTECODE_ARRAY_TYPE:
|
||||
case FEEDBACK_VECTOR_TYPE:
|
||||
case TRANSITION_ARRAY_TYPE:
|
||||
case PROPERTY_ARRAY_TYPE:
|
||||
case FOREIGN_TYPE:
|
||||
|
@ -3907,6 +3907,7 @@ Handle<Object> TranslatedState::MaterializeCapturedObjectAt(
|
||||
case BYTE_ARRAY_TYPE:
|
||||
case BYTECODE_ARRAY_TYPE:
|
||||
case TRANSITION_ARRAY_TYPE:
|
||||
case FEEDBACK_VECTOR_TYPE:
|
||||
case FOREIGN_TYPE:
|
||||
case SCRIPT_TYPE:
|
||||
case CODE_TYPE:
|
||||
|
@ -192,6 +192,13 @@ Handle<FixedArray> Factory::NewUninitializedFixedArray(int size) {
|
||||
FixedArray);
|
||||
}
|
||||
|
||||
Handle<FeedbackVector> Factory::NewFeedbackVector(
|
||||
Handle<SharedFunctionInfo> shared, PretenureFlag pretenure) {
|
||||
CALL_HEAP_FUNCTION(
|
||||
isolate(), isolate()->heap()->AllocateFeedbackVector(*shared, pretenure),
|
||||
FeedbackVector);
|
||||
}
|
||||
|
||||
Handle<BoilerplateDescription> Factory::NewBoilerplateDescription(
|
||||
int boilerplate, int all_properties, int index_keys, bool has_seen_proto) {
|
||||
DCHECK_GE(boilerplate, 0);
|
||||
@ -1339,6 +1346,11 @@ Handle<FixedDoubleArray> Factory::CopyFixedDoubleArray(
|
||||
FixedDoubleArray);
|
||||
}
|
||||
|
||||
Handle<FeedbackVector> Factory::CopyFeedbackVector(
|
||||
Handle<FeedbackVector> array) {
|
||||
CALL_HEAP_FUNCTION(isolate(), isolate()->heap()->CopyFeedbackVector(*array),
|
||||
FeedbackVector);
|
||||
}
|
||||
|
||||
Handle<Object> Factory::NewNumber(double value,
|
||||
PretenureFlag pretenure) {
|
||||
|
@ -84,6 +84,11 @@ class V8_EXPORT_PRIVATE Factory final {
|
||||
// Allocates an uninitialized fixed array. It must be filled by the caller.
|
||||
Handle<FixedArray> NewUninitializedFixedArray(int size);
|
||||
|
||||
// Allocates a feedback vector whose slots are initialized with undefined
|
||||
// values.
|
||||
Handle<FeedbackVector> NewFeedbackVector(
|
||||
Handle<SharedFunctionInfo> shared, PretenureFlag pretenure = NOT_TENURED);
|
||||
|
||||
// Allocates a fixed array for name-value pairs of boilerplate properties and
|
||||
// calculates the number of properties we need to store in the backing store.
|
||||
Handle<BoilerplateDescription> NewBoilerplateDescription(int boilerplate,
|
||||
@ -441,6 +446,8 @@ class V8_EXPORT_PRIVATE Factory final {
|
||||
Handle<FixedDoubleArray> CopyFixedDoubleArray(
|
||||
Handle<FixedDoubleArray> array);
|
||||
|
||||
Handle<FeedbackVector> CopyFeedbackVector(Handle<FeedbackVector> array);
|
||||
|
||||
// Numbers (e.g. literals) are pretenured by the parser.
|
||||
// The return value may be a smi or a heap number.
|
||||
Handle<Object> NewNumber(double value,
|
||||
|
@ -8,8 +8,13 @@
|
||||
#include "src/factory.h"
|
||||
#include "src/feedback-vector.h"
|
||||
#include "src/globals.h"
|
||||
#include "src/heap/heap-inl.h"
|
||||
#include "src/heap/heap.h"
|
||||
#include "src/objects/shared-function-info.h"
|
||||
|
||||
// Has to be the last include (doesn't have include guards):
|
||||
#include "src/objects/object-macros.h"
|
||||
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
@ -89,33 +94,20 @@ int FeedbackMetadata::GetSlotSize(FeedbackSlotKind kind) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool FeedbackVector::is_empty() const {
|
||||
return length() == kReservedIndexCount;
|
||||
}
|
||||
ACCESSORS(FeedbackVector, shared_function_info, SharedFunctionInfo,
|
||||
kSharedFunctionInfoOffset)
|
||||
ACCESSORS(FeedbackVector, optimized_code_cell, Object, kOptimizedCodeOffset)
|
||||
INT32_ACCESSORS(FeedbackVector, length, kLengthOffset)
|
||||
INT32_ACCESSORS(FeedbackVector, invocation_count, kInvocationCountOffset)
|
||||
INT32_ACCESSORS(FeedbackVector, profiler_ticks, kProfilerTicksOffset)
|
||||
|
||||
int FeedbackVector::slot_count() const {
|
||||
return length() - kReservedIndexCount;
|
||||
}
|
||||
bool FeedbackVector::is_empty() const { return length() == 0; }
|
||||
|
||||
FeedbackMetadata* FeedbackVector::metadata() const {
|
||||
return shared_function_info()->feedback_metadata();
|
||||
}
|
||||
|
||||
SharedFunctionInfo* FeedbackVector::shared_function_info() const {
|
||||
return SharedFunctionInfo::cast(get(kSharedFunctionInfoIndex));
|
||||
}
|
||||
|
||||
int FeedbackVector::invocation_count() const {
|
||||
return Smi::ToInt(get(kInvocationCountIndex));
|
||||
}
|
||||
|
||||
void FeedbackVector::clear_invocation_count() {
|
||||
set(kInvocationCountIndex, Smi::kZero);
|
||||
}
|
||||
|
||||
Object* FeedbackVector::optimized_code_cell() const {
|
||||
return get(kOptimizedCodeIndex);
|
||||
}
|
||||
void FeedbackVector::clear_invocation_count() { set_invocation_count(0); }
|
||||
|
||||
Code* FeedbackVector::optimized_code() const {
|
||||
Object* slot = optimized_code_cell();
|
||||
@ -139,30 +131,41 @@ bool FeedbackVector::has_optimization_marker() const {
|
||||
return optimization_marker() != OptimizationMarker::kNone;
|
||||
}
|
||||
|
||||
int FeedbackVector::profiler_ticks() const {
|
||||
return Smi::ToInt(get(kProfilerTicksIndex));
|
||||
}
|
||||
|
||||
void FeedbackVector::set_profiler_ticks(int ticks) {
|
||||
set(kProfilerTicksIndex, Smi::FromInt(ticks));
|
||||
}
|
||||
|
||||
// Conversion from an integer index to either a slot or an ic slot.
|
||||
// static
|
||||
FeedbackSlot FeedbackVector::ToSlot(int index) {
|
||||
DCHECK_GE(index, kReservedIndexCount);
|
||||
return FeedbackSlot(index - kReservedIndexCount);
|
||||
DCHECK_GE(index, 0);
|
||||
return FeedbackSlot(index);
|
||||
}
|
||||
|
||||
Object* FeedbackVector::Get(FeedbackSlot slot) const {
|
||||
return get(GetIndex(slot));
|
||||
}
|
||||
|
||||
Object* FeedbackVector::get(int index) const {
|
||||
DCHECK_GE(index, 0);
|
||||
DCHECK_LT(index, this->length());
|
||||
int offset = kFeedbackSlotsOffset + index * kPointerSize;
|
||||
return RELAXED_READ_FIELD(this, offset);
|
||||
}
|
||||
|
||||
void FeedbackVector::Set(FeedbackSlot slot, Object* value,
|
||||
WriteBarrierMode mode) {
|
||||
set(GetIndex(slot), value, mode);
|
||||
}
|
||||
|
||||
void FeedbackVector::set(int index, Object* value, WriteBarrierMode mode) {
|
||||
DCHECK_GE(index, 0);
|
||||
DCHECK_LT(index, this->length());
|
||||
int offset = kFeedbackSlotsOffset + index * kPointerSize;
|
||||
RELAXED_WRITE_FIELD(this, offset, value);
|
||||
CONDITIONAL_WRITE_BARRIER(GetHeap(), this, offset, value, mode);
|
||||
}
|
||||
|
||||
inline Object** FeedbackVector::slots_start() {
|
||||
return HeapObject::RawField(this, kFeedbackSlotsOffset);
|
||||
}
|
||||
|
||||
// Helper function to transform the feedback to BinaryOperationHint.
|
||||
BinaryOperationHint BinaryOperationHintFromFeedback(int type_feedback) {
|
||||
switch (type_feedback) {
|
||||
@ -359,4 +362,6 @@ Isolate* FeedbackNexus::GetIsolate() const { return vector()->GetIsolate(); }
|
||||
} // namespace internal
|
||||
} // namespace v8
|
||||
|
||||
#include "src/objects/object-macros-undef.h"
|
||||
|
||||
#endif // V8_FEEDBACK_VECTOR_INL_H_
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include "src/ic/ic-inl.h"
|
||||
#include "src/ic/ic-state.h"
|
||||
#include "src/objects.h"
|
||||
#include "src/objects/object-macros.h"
|
||||
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
@ -195,14 +196,16 @@ Handle<FeedbackVector> FeedbackVector::New(Isolate* isolate,
|
||||
Factory* factory = isolate->factory();
|
||||
|
||||
const int slot_count = shared->feedback_metadata()->slot_count();
|
||||
const int length = slot_count + kReservedIndexCount;
|
||||
|
||||
Handle<FixedArray> array = factory->NewFixedArray(length, TENURED);
|
||||
array->set_map_no_write_barrier(isolate->heap()->feedback_vector_map());
|
||||
array->set(kSharedFunctionInfoIndex, *shared);
|
||||
array->set(kOptimizedCodeIndex, Smi::FromEnum(OptimizationMarker::kNone));
|
||||
array->set(kProfilerTicksIndex, Smi::kZero);
|
||||
array->set(kInvocationCountIndex, Smi::kZero);
|
||||
Handle<FeedbackVector> vector = factory->NewFeedbackVector(shared, TENURED);
|
||||
|
||||
DCHECK_EQ(vector->length(), slot_count);
|
||||
|
||||
DCHECK_EQ(vector->shared_function_info(), *shared);
|
||||
DCHECK_EQ(vector->optimized_code_cell(),
|
||||
Smi::FromEnum(OptimizationMarker::kNone));
|
||||
DCHECK_EQ(vector->invocation_count(), 0);
|
||||
DCHECK_EQ(vector->profiler_ticks(), 0);
|
||||
|
||||
// Ensure we can skip the write barrier
|
||||
Handle<Object> uninitialized_sentinel = UninitializedSentinel(isolate);
|
||||
@ -218,23 +221,23 @@ Handle<FeedbackVector> FeedbackVector::New(Isolate* isolate,
|
||||
switch (kind) {
|
||||
case FeedbackSlotKind::kLoadGlobalInsideTypeof:
|
||||
case FeedbackSlotKind::kLoadGlobalNotInsideTypeof:
|
||||
array->set(index, isolate->heap()->empty_weak_cell(),
|
||||
SKIP_WRITE_BARRIER);
|
||||
vector->set(index, isolate->heap()->empty_weak_cell(),
|
||||
SKIP_WRITE_BARRIER);
|
||||
break;
|
||||
case FeedbackSlotKind::kCompareOp:
|
||||
case FeedbackSlotKind::kBinaryOp:
|
||||
array->set(index, Smi::kZero, SKIP_WRITE_BARRIER);
|
||||
vector->set(index, Smi::kZero, SKIP_WRITE_BARRIER);
|
||||
break;
|
||||
case FeedbackSlotKind::kCreateClosure: {
|
||||
Handle<Cell> cell = factory->NewNoClosuresCell(undefined_value);
|
||||
array->set(index, *cell);
|
||||
vector->set(index, *cell);
|
||||
break;
|
||||
}
|
||||
case FeedbackSlotKind::kLiteral:
|
||||
array->set(index, Smi::kZero, SKIP_WRITE_BARRIER);
|
||||
vector->set(index, Smi::kZero, SKIP_WRITE_BARRIER);
|
||||
break;
|
||||
case FeedbackSlotKind::kCall:
|
||||
array->set(index, *uninitialized_sentinel, SKIP_WRITE_BARRIER);
|
||||
vector->set(index, *uninitialized_sentinel, SKIP_WRITE_BARRIER);
|
||||
extra_value = Smi::kZero;
|
||||
break;
|
||||
case FeedbackSlotKind::kLoadProperty:
|
||||
@ -249,22 +252,22 @@ Handle<FeedbackVector> FeedbackVector::New(Isolate* isolate,
|
||||
case FeedbackSlotKind::kStoreDataPropertyInLiteral:
|
||||
case FeedbackSlotKind::kGeneral:
|
||||
case FeedbackSlotKind::kTypeProfile:
|
||||
array->set(index, *uninitialized_sentinel, SKIP_WRITE_BARRIER);
|
||||
vector->set(index, *uninitialized_sentinel, SKIP_WRITE_BARRIER);
|
||||
break;
|
||||
|
||||
case FeedbackSlotKind::kInvalid:
|
||||
case FeedbackSlotKind::kKindsNumber:
|
||||
UNREACHABLE();
|
||||
array->set(index, Smi::kZero, SKIP_WRITE_BARRIER);
|
||||
vector->set(index, Smi::kZero, SKIP_WRITE_BARRIER);
|
||||
break;
|
||||
}
|
||||
for (int j = 1; j < entry_size; j++) {
|
||||
array->set(index + j, extra_value, SKIP_WRITE_BARRIER);
|
||||
vector->set(index + j, extra_value, SKIP_WRITE_BARRIER);
|
||||
}
|
||||
i += entry_size;
|
||||
}
|
||||
|
||||
Handle<FeedbackVector> result = Handle<FeedbackVector>::cast(array);
|
||||
Handle<FeedbackVector> result = Handle<FeedbackVector>::cast(vector);
|
||||
if (!isolate->is_best_effort_code_coverage()) {
|
||||
AddToCodeCoverageList(isolate, result);
|
||||
}
|
||||
@ -300,20 +303,20 @@ void FeedbackVector::SetOptimizedCode(Handle<FeedbackVector> vector,
|
||||
DCHECK_EQ(code->kind(), Code::OPTIMIZED_FUNCTION);
|
||||
Factory* factory = vector->GetIsolate()->factory();
|
||||
Handle<WeakCell> cell = factory->NewWeakCell(code);
|
||||
vector->set(kOptimizedCodeIndex, *cell);
|
||||
vector->set_optimized_code_cell(*cell);
|
||||
}
|
||||
|
||||
void FeedbackVector::SetOptimizationMarker(OptimizationMarker marker) {
|
||||
set(kOptimizedCodeIndex, Smi::FromEnum(marker));
|
||||
set_optimized_code_cell(Smi::FromEnum(marker));
|
||||
}
|
||||
|
||||
void FeedbackVector::ClearOptimizedCode() {
|
||||
set(kOptimizedCodeIndex, Smi::FromEnum(OptimizationMarker::kNone));
|
||||
set_optimized_code_cell(Smi::FromEnum(OptimizationMarker::kNone));
|
||||
}
|
||||
|
||||
void FeedbackVector::EvictOptimizedCodeMarkedForDeoptimization(
|
||||
SharedFunctionInfo* shared, const char* reason) {
|
||||
Object* slot = get(kOptimizedCodeIndex);
|
||||
Object* slot = optimized_code_cell();
|
||||
if (slot->IsSmi()) return;
|
||||
|
||||
WeakCell* cell = WeakCell::cast(slot);
|
||||
|
@ -8,9 +8,11 @@
|
||||
#include <vector>
|
||||
|
||||
#include "src/base/logging.h"
|
||||
#include "src/base/macros.h"
|
||||
#include "src/elements-kind.h"
|
||||
#include "src/objects/map.h"
|
||||
#include "src/objects/name.h"
|
||||
#include "src/objects/object-macros.h"
|
||||
#include "src/type-hints.h"
|
||||
#include "src/zone/zone-containers.h"
|
||||
|
||||
@ -108,40 +110,46 @@ std::ostream& operator<<(std::ostream& os, FeedbackSlotKind kind);
|
||||
|
||||
class FeedbackMetadata;
|
||||
|
||||
// The shape of the FeedbackVector is an array with:
|
||||
// 0: feedback metadata
|
||||
// 1: invocation count
|
||||
// 2: optimized code slot (weak cell or Smi marker)
|
||||
// 3: profiler tick count
|
||||
// 4: feedback slot #0
|
||||
// ...
|
||||
// 4 + slot_count - 1: feedback slot #(slot_count-1)
|
||||
//
|
||||
class FeedbackVector : public FixedArray {
|
||||
// A FeedbackVector has a fixed header with:
|
||||
// - shared function info (which includes feedback metadata)
|
||||
// - invocation count
|
||||
// - runtime profiler ticks
|
||||
// - optimized code cell (weak cell or Smi marker)
|
||||
// followed by an array of feedback slots, of length determined by the feedback
|
||||
// metadata.
|
||||
class FeedbackVector : public HeapObject {
|
||||
public:
|
||||
// Casting.
|
||||
static inline FeedbackVector* cast(Object* obj);
|
||||
|
||||
static const int kSharedFunctionInfoIndex = 0;
|
||||
static const int kInvocationCountIndex = 1;
|
||||
static const int kOptimizedCodeIndex = 2;
|
||||
static const int kProfilerTicksIndex = 3;
|
||||
static const int kReservedIndexCount = 4;
|
||||
|
||||
inline void ComputeCounts(int* with_type_info, int* generic,
|
||||
int* vector_ic_count, bool code_is_interpreted);
|
||||
|
||||
inline bool is_empty() const;
|
||||
|
||||
// Returns number of slots in the vector.
|
||||
inline int slot_count() const;
|
||||
|
||||
inline FeedbackMetadata* metadata() const;
|
||||
inline SharedFunctionInfo* shared_function_info() const;
|
||||
inline int invocation_count() const;
|
||||
|
||||
// [shared_function_info]: The shared function info for the function with this
|
||||
// feedback vector.
|
||||
DECL_ACCESSORS(shared_function_info, SharedFunctionInfo)
|
||||
|
||||
// [optimized_code_cell]: WeakCell containing optimized code or a Smi marker
|
||||
// definining optimization behaviour.
|
||||
DECL_ACCESSORS(optimized_code_cell, Object)
|
||||
|
||||
// [length]: The length of the feedback vector (not including the header, i.e.
|
||||
// the number of feedback slots).
|
||||
DECL_INT32_ACCESSORS(length)
|
||||
|
||||
// [invocation_count]: The number of times this function has been invoked.
|
||||
DECL_INT32_ACCESSORS(invocation_count)
|
||||
|
||||
// [invocation_count]: The number of times this function has been seen by the
|
||||
// runtime profiler.
|
||||
DECL_INT32_ACCESSORS(profiler_ticks)
|
||||
|
||||
inline void clear_invocation_count();
|
||||
|
||||
inline Object* optimized_code_cell() const;
|
||||
inline Code* optimized_code() const;
|
||||
inline OptimizationMarker optimization_marker() const;
|
||||
inline bool has_optimized_code() const;
|
||||
@ -153,19 +161,20 @@ class FeedbackVector : public FixedArray {
|
||||
Handle<Code> code);
|
||||
void SetOptimizationMarker(OptimizationMarker marker);
|
||||
|
||||
inline int profiler_ticks() const;
|
||||
inline void set_profiler_ticks(int ticks);
|
||||
|
||||
// Conversion from a slot to an integer index to the underlying array.
|
||||
static int GetIndex(FeedbackSlot slot) {
|
||||
return kReservedIndexCount + slot.ToInt();
|
||||
}
|
||||
static int GetIndex(FeedbackSlot slot) { return slot.ToInt(); }
|
||||
|
||||
// Conversion from an integer index to the underlying array to a slot.
|
||||
static inline FeedbackSlot ToSlot(int index);
|
||||
inline Object* Get(FeedbackSlot slot) const;
|
||||
inline Object* get(int index) const;
|
||||
inline void Set(FeedbackSlot slot, Object* value,
|
||||
WriteBarrierMode mode = UPDATE_WRITE_BARRIER);
|
||||
inline void set(int index, Object* value,
|
||||
WriteBarrierMode mode = UPDATE_WRITE_BARRIER);
|
||||
|
||||
// Gives access to raw memory which stores the array's data.
|
||||
inline Object** slots_start();
|
||||
|
||||
// Returns slot kind for given slot.
|
||||
FeedbackSlotKind GetKind(FeedbackSlot slot) const;
|
||||
@ -208,6 +217,7 @@ class FeedbackVector : public FixedArray {
|
||||
#endif // OBJECT_PRINT
|
||||
|
||||
DECL_PRINTER(FeedbackVector)
|
||||
DECL_VERIFIER(FeedbackVector)
|
||||
|
||||
// Clears the vector slots.
|
||||
void ClearSlots(JSFunction* host_function);
|
||||
@ -225,6 +235,32 @@ class FeedbackVector : public FixedArray {
|
||||
// garbage collection (e.g., for patching the cache).
|
||||
static inline Symbol* RawUninitializedSentinel(Isolate* isolate);
|
||||
|
||||
// Layout description.
|
||||
#define FEEDBACK_VECTOR_FIELDS(V) \
|
||||
/* Header fields. */ \
|
||||
V(kSharedFunctionInfoOffset, kPointerSize) \
|
||||
V(kOptimizedCodeOffset, kPointerSize) \
|
||||
V(kLengthOffset, kInt32Size) \
|
||||
V(kInvocationCountOffset, kInt32Size) \
|
||||
V(kProfilerTicksOffset, kInt32Size) \
|
||||
V(kUnalignedHeaderSize, 0)
|
||||
|
||||
DEFINE_FIELD_OFFSET_CONSTANTS(HeapObject::kHeaderSize, FEEDBACK_VECTOR_FIELDS)
|
||||
#undef FEEDBACK_VECTOR_FIELDS
|
||||
|
||||
static const int kHeaderSize =
|
||||
RoundUp<kPointerAlignment>(kUnalignedHeaderSize);
|
||||
static const int kFeedbackSlotsOffset = kHeaderSize;
|
||||
|
||||
class BodyDescriptor;
|
||||
// No weak fields.
|
||||
typedef BodyDescriptor BodyDescriptorWeak;
|
||||
|
||||
// Garbage collection support.
|
||||
static constexpr int SizeFor(int length) {
|
||||
return kFeedbackSlotsOffset + length * kPointerSize;
|
||||
}
|
||||
|
||||
private:
|
||||
static void AddToCodeCoverageList(Isolate* isolate,
|
||||
Handle<FeedbackVector> vector);
|
||||
@ -354,7 +390,7 @@ class FeedbackVectorSpec : public FeedbackVectorSpecBase<FeedbackVectorSpec> {
|
||||
// If used, the TypeProfileSlot is always added as the first slot and its
|
||||
// index is constant. If other slots are added before the TypeProfileSlot,
|
||||
// this number changes.
|
||||
static const int kTypeProfileSlotIndex = FeedbackVector::kReservedIndexCount;
|
||||
static const int kTypeProfileSlotIndex = 0;
|
||||
|
||||
private:
|
||||
friend class FeedbackVectorSpecBase<FeedbackVectorSpec>;
|
||||
|
@ -141,13 +141,9 @@ void FullCodeGenerator::Generate() {
|
||||
Comment cmnt(masm_, "[ Increment invocation count");
|
||||
__ ldr(r2, FieldMemOperand(r1, JSFunction::kFeedbackVectorOffset));
|
||||
__ ldr(r2, FieldMemOperand(r2, Cell::kValueOffset));
|
||||
__ ldr(r9, FieldMemOperand(
|
||||
r2, FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ add(r9, r9, Operand(Smi::FromInt(1)));
|
||||
__ str(r9, FieldMemOperand(
|
||||
r2, FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ ldr(r9, FieldMemOperand(r2, FeedbackVector::kInvocationCountOffset));
|
||||
__ add(r9, r9, Operand(1));
|
||||
__ str(r9, FieldMemOperand(r2, FeedbackVector::kInvocationCountOffset));
|
||||
}
|
||||
|
||||
{ Comment cmnt(masm_, "[ Allocate locals");
|
||||
@ -1041,7 +1037,8 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
int const vector_index = SmiFromSlot(slot)->value();
|
||||
__ EmitLoadFeedbackVector(r3);
|
||||
__ mov(r2, Operand(FeedbackVector::MegamorphicSentinel(isolate())));
|
||||
__ str(r2, FieldMemOperand(r3, FixedArray::OffsetOfElementAt(vector_index)));
|
||||
__ str(r2, FieldMemOperand(r3, FeedbackVector::kFeedbackSlotsOffset +
|
||||
vector_index * kPointerSize));
|
||||
|
||||
// r0 contains the key. The receiver in r1 is the second argument to the
|
||||
// ForInFilter. ForInFilter returns undefined if the receiver doesn't
|
||||
|
@ -144,13 +144,9 @@ void FullCodeGenerator::Generate() {
|
||||
Comment cmnt(masm_, "[ Increment invocation count");
|
||||
__ Ldr(x11, FieldMemOperand(x1, JSFunction::kFeedbackVectorOffset));
|
||||
__ Ldr(x11, FieldMemOperand(x11, Cell::kValueOffset));
|
||||
__ Ldr(x10, FieldMemOperand(
|
||||
x11, FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ Add(x10, x10, Operand(Smi::FromInt(1)));
|
||||
__ Str(x10, FieldMemOperand(
|
||||
x11, FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ Ldr(w10, FieldMemOperand(x11, FeedbackVector::kInvocationCountOffset));
|
||||
__ Add(w10, w10, Operand(1));
|
||||
__ Str(w10, FieldMemOperand(x11, FeedbackVector::kInvocationCountOffset));
|
||||
}
|
||||
|
||||
// Reserve space on the stack for locals.
|
||||
@ -1029,7 +1025,8 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
int const vector_index = SmiFromSlot(slot)->value();
|
||||
__ EmitLoadFeedbackVector(x3);
|
||||
__ Mov(x10, Operand(FeedbackVector::MegamorphicSentinel(isolate())));
|
||||
__ Str(x10, FieldMemOperand(x3, FixedArray::OffsetOfElementAt(vector_index)));
|
||||
__ Str(x10, FieldMemOperand(x3, FeedbackVector::kFeedbackSlotsOffset +
|
||||
vector_index * kPointerSize));
|
||||
|
||||
// x0 contains the key. The receiver in x1 is the second argument to the
|
||||
// ForInFilter. ForInFilter returns undefined if the receiver doesn't
|
||||
|
@ -123,10 +123,7 @@ void FullCodeGenerator::Generate() {
|
||||
Comment cmnt(masm_, "[ Increment invocation count");
|
||||
__ mov(ecx, FieldOperand(edi, JSFunction::kFeedbackVectorOffset));
|
||||
__ mov(ecx, FieldOperand(ecx, Cell::kValueOffset));
|
||||
__ add(
|
||||
FieldOperand(ecx, FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize),
|
||||
Immediate(Smi::FromInt(1)));
|
||||
__ inc(FieldOperand(ecx, FeedbackVector::kInvocationCountOffset));
|
||||
}
|
||||
|
||||
{ Comment cmnt(masm_, "[ Allocate locals");
|
||||
@ -956,7 +953,8 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
// We need to filter the key, record slow-path here.
|
||||
int const vector_index = SmiFromSlot(slot)->value();
|
||||
__ EmitLoadFeedbackVector(edx);
|
||||
__ mov(FieldOperand(edx, FixedArray::OffsetOfElementAt(vector_index)),
|
||||
__ mov(FieldOperand(edx, FeedbackVector::kFeedbackSlotsOffset +
|
||||
vector_index * kPointerSize),
|
||||
Immediate(FeedbackVector::MegamorphicSentinel(isolate())));
|
||||
|
||||
// eax contains the key. The receiver in ebx is the second argument to the
|
||||
|
@ -143,13 +143,9 @@ void FullCodeGenerator::Generate() {
|
||||
Comment cmnt(masm_, "[ Increment invocation count");
|
||||
__ lw(a0, FieldMemOperand(a1, JSFunction::kFeedbackVectorOffset));
|
||||
__ lw(a0, FieldMemOperand(a0, Cell::kValueOffset));
|
||||
__ lw(t0, FieldMemOperand(
|
||||
a0, FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ Addu(t0, t0, Operand(Smi::FromInt(1)));
|
||||
__ sw(t0, FieldMemOperand(
|
||||
a0, FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ lw(t0, FieldMemOperand(a0, FeedbackVector::kInvocationCountOffset));
|
||||
__ Addu(t0, t0, Operand(1));
|
||||
__ sw(t0, FieldMemOperand(a0, FeedbackVector::kInvocationCountOffset));
|
||||
}
|
||||
|
||||
{ Comment cmnt(masm_, "[ Allocate locals");
|
||||
@ -1030,7 +1026,8 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
int const vector_index = SmiFromSlot(slot)->value();
|
||||
__ EmitLoadFeedbackVector(a3);
|
||||
__ li(a2, Operand(FeedbackVector::MegamorphicSentinel(isolate())));
|
||||
__ sw(a2, FieldMemOperand(a3, FixedArray::OffsetOfElementAt(vector_index)));
|
||||
__ sw(a2, FieldMemOperand(a3, FeedbackVector::kFeedbackSlotsOffset +
|
||||
vector_index * kPointerSize));
|
||||
|
||||
__ mov(a0, result_register());
|
||||
// a0 contains the key. The receiver in a1 is the second argument to the
|
||||
|
@ -142,13 +142,9 @@ void FullCodeGenerator::Generate() {
|
||||
Comment cmnt(masm_, "[ Increment invocation count");
|
||||
__ Ld(a0, FieldMemOperand(a1, JSFunction::kFeedbackVectorOffset));
|
||||
__ Ld(a0, FieldMemOperand(a0, Cell::kValueOffset));
|
||||
__ Ld(a4, FieldMemOperand(
|
||||
a0, FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ Daddu(a4, a4, Operand(Smi::FromInt(1)));
|
||||
__ Sd(a4, FieldMemOperand(
|
||||
a0, FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize));
|
||||
__ Lw(a4, FieldMemOperand(a0, FeedbackVector::kInvocationCountOffset));
|
||||
__ Addu(a4, a4, Operand(1));
|
||||
__ Sw(a4, FieldMemOperand(a0, FeedbackVector::kInvocationCountOffset));
|
||||
}
|
||||
|
||||
{ Comment cmnt(masm_, "[ Allocate locals");
|
||||
@ -1032,7 +1028,8 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
int const vector_index = SmiFromSlot(slot)->value();
|
||||
__ EmitLoadFeedbackVector(a3);
|
||||
__ li(a2, Operand(FeedbackVector::MegamorphicSentinel(isolate())));
|
||||
__ Sd(a2, FieldMemOperand(a3, FixedArray::OffsetOfElementAt(vector_index)));
|
||||
__ Sd(a2, FieldMemOperand(a3, FeedbackVector::kFeedbackSlotsOffset +
|
||||
vector_index * kPointerSize));
|
||||
|
||||
__ mov(a0, result_register());
|
||||
// a0 contains the key. The receiver in a1 is the second argument to the
|
||||
|
@ -126,10 +126,7 @@ void FullCodeGenerator::Generate() {
|
||||
Comment cmnt(masm_, "[ Increment invocation count");
|
||||
__ movp(rcx, FieldOperand(rdi, JSFunction::kFeedbackVectorOffset));
|
||||
__ movp(rcx, FieldOperand(rcx, Cell::kValueOffset));
|
||||
__ SmiAddConstant(
|
||||
FieldOperand(rcx, FeedbackVector::kInvocationCountIndex * kPointerSize +
|
||||
FeedbackVector::kHeaderSize),
|
||||
Smi::FromInt(1));
|
||||
__ incl(FieldOperand(rcx, FeedbackVector::kInvocationCountOffset));
|
||||
}
|
||||
|
||||
{ Comment cmnt(masm_, "[ Allocate locals");
|
||||
@ -982,7 +979,8 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
// We need to filter the key, record slow-path here.
|
||||
int const vector_index = SmiFromSlot(slot)->value();
|
||||
__ EmitLoadFeedbackVector(rdx);
|
||||
__ Move(FieldOperand(rdx, FixedArray::OffsetOfElementAt(vector_index)),
|
||||
__ Move(FieldOperand(rdx, FeedbackVector::kFeedbackSlotsOffset +
|
||||
vector_index * kPointerSize),
|
||||
FeedbackVector::MegamorphicSentinel(isolate()));
|
||||
|
||||
// rax contains the key. The receiver in rbx is the second argument to
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
#include "src/base/platform/platform.h"
|
||||
#include "src/counters-inl.h"
|
||||
#include "src/feedback-vector-inl.h"
|
||||
#include "src/feedback-vector.h"
|
||||
#include "src/heap/heap.h"
|
||||
#include "src/heap/incremental-marking-inl.h"
|
||||
#include "src/heap/mark-compact.h"
|
||||
|
@ -2498,7 +2498,7 @@ bool Heap::CreateInitialMaps() {
|
||||
|
||||
ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, scope_info)
|
||||
ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, module_info)
|
||||
ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, feedback_vector)
|
||||
ALLOCATE_VARSIZE_MAP(FEEDBACK_VECTOR_TYPE, feedback_vector)
|
||||
ALLOCATE_PRIMITIVE_MAP(HEAP_NUMBER_TYPE, HeapNumber::kSize, heap_number,
|
||||
Context::NUMBER_FUNCTION_INDEX)
|
||||
ALLOCATE_MAP(MUTABLE_HEAP_NUMBER_TYPE, HeapNumber::kSize,
|
||||
@ -4202,6 +4202,36 @@ AllocationResult Heap::CopyFixedDoubleArrayWithMap(FixedDoubleArray* src,
|
||||
return obj;
|
||||
}
|
||||
|
||||
AllocationResult Heap::CopyFeedbackVector(FeedbackVector* src) {
|
||||
int len = src->length();
|
||||
HeapObject* obj = nullptr;
|
||||
{
|
||||
AllocationResult allocation = AllocateRawFeedbackVector(len, NOT_TENURED);
|
||||
if (!allocation.To(&obj)) return allocation;
|
||||
}
|
||||
obj->set_map_after_allocation(feedback_vector_map(), SKIP_WRITE_BARRIER);
|
||||
|
||||
FeedbackVector* result = FeedbackVector::cast(obj);
|
||||
|
||||
DisallowHeapAllocation no_gc;
|
||||
WriteBarrierMode mode = result->GetWriteBarrierMode(no_gc);
|
||||
|
||||
// Eliminate the write barrier if possible.
|
||||
if (mode == SKIP_WRITE_BARRIER) {
|
||||
CopyBlock(result->address() + kPointerSize,
|
||||
result->address() + kPointerSize,
|
||||
FeedbackVector::SizeFor(len) - kPointerSize);
|
||||
return result;
|
||||
}
|
||||
|
||||
// Slow case: Just copy the content one-by-one.
|
||||
result->set_shared_function_info(src->shared_function_info());
|
||||
result->set_invocation_count(src->invocation_count());
|
||||
result->set_profiler_ticks(src->profiler_ticks());
|
||||
result->set_optimized_code_cell(src->optimized_code_cell());
|
||||
for (int i = 0; i < len; i++) result->set(i, src->get(i), mode);
|
||||
return result;
|
||||
}
|
||||
|
||||
AllocationResult Heap::AllocateRawFixedArray(int length,
|
||||
PretenureFlag pretenure) {
|
||||
@ -4307,6 +4337,44 @@ AllocationResult Heap::AllocateRawFixedDoubleArray(int length,
|
||||
return object;
|
||||
}
|
||||
|
||||
AllocationResult Heap::AllocateRawFeedbackVector(int length,
|
||||
PretenureFlag pretenure) {
|
||||
DCHECK(length >= 0);
|
||||
|
||||
int size = FeedbackVector::SizeFor(length);
|
||||
AllocationSpace space = SelectSpace(pretenure);
|
||||
|
||||
HeapObject* object = nullptr;
|
||||
{
|
||||
AllocationResult allocation = AllocateRaw(size, space);
|
||||
if (!allocation.To(&object)) return allocation;
|
||||
}
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
AllocationResult Heap::AllocateFeedbackVector(SharedFunctionInfo* shared,
|
||||
PretenureFlag pretenure) {
|
||||
int length = shared->feedback_metadata()->slot_count();
|
||||
|
||||
HeapObject* result = nullptr;
|
||||
{
|
||||
AllocationResult allocation = AllocateRawFeedbackVector(length, pretenure);
|
||||
if (!allocation.To(&result)) return allocation;
|
||||
}
|
||||
|
||||
// Initialize the object's map.
|
||||
result->set_map_after_allocation(feedback_vector_map(), SKIP_WRITE_BARRIER);
|
||||
FeedbackVector* vector = FeedbackVector::cast(result);
|
||||
vector->set_shared_function_info(shared);
|
||||
vector->set_optimized_code_cell(Smi::FromEnum(OptimizationMarker::kNone));
|
||||
vector->set_length(length);
|
||||
vector->set_invocation_count(0);
|
||||
vector->set_profiler_ticks(0);
|
||||
// TODO(leszeks): Initialize based on the feedback metadata.
|
||||
MemsetPointer(vector->slots_start(), undefined_value(), length);
|
||||
return vector;
|
||||
}
|
||||
|
||||
AllocationResult Heap::AllocateSymbol() {
|
||||
// Statically ensure that it is safe to allocate symbols in paged spaces.
|
||||
|
@ -1989,6 +1989,15 @@ class Heap {
|
||||
MUST_USE_RESULT AllocationResult
|
||||
AllocatePropertyArray(int length, PretenureFlag pretenure = NOT_TENURED);
|
||||
|
||||
// Allocate a feedback vector for the given shared function info. The slots
|
||||
// are pre-filled with undefined.
|
||||
MUST_USE_RESULT AllocationResult
|
||||
AllocateFeedbackVector(SharedFunctionInfo* shared, PretenureFlag pretenure);
|
||||
|
||||
// Allocate an uninitialized feedback vector.
|
||||
MUST_USE_RESULT AllocationResult
|
||||
AllocateRawFeedbackVector(int length, PretenureFlag pretenure);
|
||||
|
||||
MUST_USE_RESULT AllocationResult AllocateSmallOrderedHashSet(
|
||||
int length, PretenureFlag pretenure = NOT_TENURED);
|
||||
MUST_USE_RESULT AllocationResult AllocateSmallOrderedHashMap(
|
||||
@ -2092,6 +2101,9 @@ class Heap {
|
||||
MUST_USE_RESULT inline AllocationResult CopyFixedDoubleArray(
|
||||
FixedDoubleArray* src);
|
||||
|
||||
// Make a copy of src and return it.
|
||||
MUST_USE_RESULT AllocationResult CopyFeedbackVector(FeedbackVector* src);
|
||||
|
||||
// Computes a single character string where the character has code.
|
||||
// A cache is used for one-byte (Latin1) codes.
|
||||
MUST_USE_RESULT AllocationResult
|
||||
|
@ -267,7 +267,6 @@ void ObjectStatsCollector::CollectStatistics(HeapObject* obj) {
|
||||
if (obj->IsJSCollection()) {
|
||||
RecordJSCollectionDetails(JSObject::cast(obj));
|
||||
}
|
||||
if (obj->IsJSFunction()) RecordJSFunctionDetails(JSFunction::cast(obj));
|
||||
if (obj->IsScript()) RecordScriptDetails(Script::cast(obj));
|
||||
}
|
||||
|
||||
@ -552,14 +551,6 @@ void ObjectStatsCollector::RecordSharedFunctionInfoDetails(
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectStatsCollector::RecordJSFunctionDetails(JSFunction* function) {
|
||||
if (function->feedback_vector_cell()->value()->IsFeedbackVector()) {
|
||||
FeedbackVector* feedback_vector = function->feedback_vector();
|
||||
RecordFixedArrayHelper(function, feedback_vector, FEEDBACK_VECTOR_SUB_TYPE,
|
||||
0);
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectStatsCollector::RecordFixedArrayDetails(FixedArray* array) {
|
||||
if (array->IsContext()) {
|
||||
RecordFixedArrayHelper(nullptr, array, CONTEXT_SUB_TYPE, 0);
|
||||
|
@ -146,7 +146,6 @@ class ObjectStatsCollector {
|
||||
void RecordCodeDetails(Code* code);
|
||||
void RecordFixedArrayDetails(FixedArray* array);
|
||||
void RecordJSCollectionDetails(JSObject* obj);
|
||||
void RecordJSFunctionDetails(JSFunction* function);
|
||||
void RecordJSObjectDetails(JSObject* object);
|
||||
void RecordJSWeakCollectionDetails(JSWeakCollection* obj);
|
||||
void RecordMapDetails(Map* map);
|
||||
|
@ -21,6 +21,7 @@ namespace internal {
|
||||
V(Cell) \
|
||||
V(Code) \
|
||||
V(ConsString) \
|
||||
V(FeedbackVector) \
|
||||
V(FixedArray) \
|
||||
V(FixedDoubleArray) \
|
||||
V(FixedFloat64Array) \
|
||||
|
@ -3413,17 +3413,16 @@ void LargeObjectSpace::Verify() {
|
||||
CHECK(map->IsMap());
|
||||
CHECK(heap()->map_space()->Contains(map));
|
||||
|
||||
// We have only code, sequential strings, external strings
|
||||
// (sequential strings that have been morphed into external
|
||||
// strings), thin strings (sequential strings that have been
|
||||
// morphed into thin strings), fixed arrays, fixed double arrays,
|
||||
// byte arrays, and free space (right after allocation) in the
|
||||
// large object space.
|
||||
// We have only code, sequential strings, external strings (sequential
|
||||
// strings that have been morphed into external strings), thin strings
|
||||
// (sequential strings that have been morphed into thin strings), fixed
|
||||
// arrays, fixed double arrays, byte arrays, feedback vectors and free space
|
||||
// (right after allocation) in the large object space.
|
||||
CHECK(object->IsAbstractCode() || object->IsSeqString() ||
|
||||
object->IsExternalString() || object->IsThinString() ||
|
||||
object->IsFixedArray() || object->IsFixedDoubleArray() ||
|
||||
object->IsPropertyArray() || object->IsByteArray() ||
|
||||
object->IsFreeSpace());
|
||||
object->IsFeedbackVector() || object->IsFreeSpace());
|
||||
|
||||
// The object itself should look OK.
|
||||
object->ObjectVerify();
|
||||
|
@ -800,7 +800,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
|
||||
// Load the cache state into ecx.
|
||||
__ mov(ecx, FieldOperand(ebx, edx, times_half_pointer_size,
|
||||
FixedArray::kHeaderSize));
|
||||
FeedbackVector::kFeedbackSlotsOffset));
|
||||
|
||||
// A monomorphic cache hit or an already megamorphic state: invoke the
|
||||
// function without changing the state.
|
||||
@ -842,9 +842,9 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
// MegamorphicSentinel is an immortal immovable object (undefined) so no
|
||||
// write-barrier is needed.
|
||||
__ bind(&megamorphic);
|
||||
__ mov(
|
||||
FieldOperand(ebx, edx, times_half_pointer_size, FixedArray::kHeaderSize),
|
||||
Immediate(FeedbackVector::MegamorphicSentinel(isolate)));
|
||||
__ mov(FieldOperand(ebx, edx, times_half_pointer_size,
|
||||
FeedbackVector::kFeedbackSlotsOffset),
|
||||
Immediate(FeedbackVector::MegamorphicSentinel(isolate)));
|
||||
__ jmp(&done, Label::kFar);
|
||||
|
||||
// An uninitialized cache is patched with the function or sentinel to
|
||||
@ -869,7 +869,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
__ bind(&done);
|
||||
// Increment the call count for all function calls.
|
||||
__ add(FieldOperand(ebx, edx, times_half_pointer_size,
|
||||
FixedArray::kHeaderSize + kPointerSize),
|
||||
FeedbackVector::kFeedbackSlotsOffset + kPointerSize),
|
||||
Immediate(Smi::FromInt(1)));
|
||||
}
|
||||
|
||||
@ -892,7 +892,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
Label feedback_register_initialized;
|
||||
// Put the AllocationSite from the feedback vector into ebx, or undefined.
|
||||
__ mov(ebx, FieldOperand(ebx, edx, times_half_pointer_size,
|
||||
FixedArray::kHeaderSize));
|
||||
FeedbackVector::kFeedbackSlotsOffset));
|
||||
Handle<Map> allocation_site_map = isolate()->factory()->allocation_site_map();
|
||||
__ cmp(FieldOperand(ebx, 0), Immediate(allocation_site_map));
|
||||
__ j(equal, &feedback_register_initialized);
|
||||
|
@ -30,7 +30,8 @@ Node* AccessorAssembler::TryMonomorphicCase(Node* slot, Node* vector,
|
||||
|
||||
// TODO(ishell): add helper class that hides offset computations for a series
|
||||
// of loads.
|
||||
int32_t header_size = FixedArray::kHeaderSize - kHeapObjectTag;
|
||||
CSA_ASSERT(this, IsFeedbackVector(vector), vector);
|
||||
int32_t header_size = FeedbackVector::kFeedbackSlotsOffset - kHeapObjectTag;
|
||||
// Adding |header_size| with a separate IntPtrAdd rather than passing it
|
||||
// into ElementOffsetFromIndex() allows it to be folded into a single
|
||||
// [base, index, offset] indirect memory access on x64.
|
||||
@ -1865,9 +1866,9 @@ void AccessorAssembler::LoadIC_Uninitialized(const LoadICParameters* p) {
|
||||
Node* instance_type = LoadMapInstanceType(receiver_map);
|
||||
|
||||
// Optimistically write the state transition to the vector.
|
||||
StoreFixedArrayElement(p->vector, p->slot,
|
||||
LoadRoot(Heap::kpremonomorphic_symbolRootIndex),
|
||||
SKIP_WRITE_BARRIER, 0, SMI_PARAMETERS);
|
||||
StoreFeedbackVectorSlot(p->vector, p->slot,
|
||||
LoadRoot(Heap::kpremonomorphic_symbolRootIndex),
|
||||
SKIP_WRITE_BARRIER, 0, SMI_PARAMETERS);
|
||||
|
||||
{
|
||||
// Special case for Function.prototype load, because it's very common
|
||||
@ -1889,9 +1890,9 @@ void AccessorAssembler::LoadIC_Uninitialized(const LoadICParameters* p) {
|
||||
BIND(&miss);
|
||||
{
|
||||
// Undo the optimistic state transition.
|
||||
StoreFixedArrayElement(p->vector, p->slot,
|
||||
LoadRoot(Heap::kuninitialized_symbolRootIndex),
|
||||
SKIP_WRITE_BARRIER, 0, SMI_PARAMETERS);
|
||||
StoreFeedbackVectorSlot(p->vector, p->slot,
|
||||
LoadRoot(Heap::kuninitialized_symbolRootIndex),
|
||||
SKIP_WRITE_BARRIER, 0, SMI_PARAMETERS);
|
||||
|
||||
TailCallRuntime(Runtime::kLoadIC_Miss, p->context, p->receiver, p->name,
|
||||
p->slot, p->vector);
|
||||
@ -1931,7 +1932,7 @@ void AccessorAssembler::LoadGlobalIC_TryPropertyCellCase(
|
||||
Label* miss, ParameterMode slot_mode) {
|
||||
Comment("LoadGlobalIC_TryPropertyCellCase");
|
||||
|
||||
Node* weak_cell = LoadFixedArrayElement(vector, slot, 0, slot_mode);
|
||||
Node* weak_cell = LoadFeedbackVectorSlot(vector, slot, 0, slot_mode);
|
||||
CSA_ASSERT(this, HasInstanceType(weak_cell, WEAK_CELL_TYPE));
|
||||
|
||||
// Load value or try handler case if the {weak_cell} is cleared.
|
||||
@ -1951,8 +1952,8 @@ void AccessorAssembler::LoadGlobalIC_TryHandlerCase(const LoadICParameters* pp,
|
||||
|
||||
Label call_handler(this), non_smi(this);
|
||||
|
||||
Node* handler =
|
||||
LoadFixedArrayElement(pp->vector, pp->slot, kPointerSize, SMI_PARAMETERS);
|
||||
Node* handler = LoadFeedbackVectorSlot(pp->vector, pp->slot, kPointerSize,
|
||||
SMI_PARAMETERS);
|
||||
GotoIf(WordEqual(handler, LoadRoot(Heap::kuninitialized_symbolRootIndex)),
|
||||
miss);
|
||||
|
||||
@ -2064,8 +2065,8 @@ void AccessorAssembler::KeyedLoadIC(const LoadICParameters* p) {
|
||||
GotoIfNot(WordEqual(feedback, p->name), &miss);
|
||||
// If the name comparison succeeded, we know we have a fixed array with
|
||||
// at least one map/handler pair.
|
||||
Node* array =
|
||||
LoadFixedArrayElement(p->vector, p->slot, kPointerSize, SMI_PARAMETERS);
|
||||
Node* array = LoadFeedbackVectorSlot(p->vector, p->slot, kPointerSize,
|
||||
SMI_PARAMETERS);
|
||||
HandlePolymorphicCase(receiver_map, array, &if_handler, &var_handler, &miss,
|
||||
1);
|
||||
}
|
||||
@ -2239,10 +2240,10 @@ void AccessorAssembler::KeyedStoreIC(const StoreICParameters* p,
|
||||
// We might have a name in feedback, and a fixed array in the next slot.
|
||||
Comment("KeyedStoreIC_try_polymorphic_name");
|
||||
GotoIfNot(WordEqual(feedback, p->name), &miss);
|
||||
// If the name comparison succeeded, we know we have a FixedArray with
|
||||
// at least one map/handler pair.
|
||||
Node* array = LoadFixedArrayElement(p->vector, p->slot, kPointerSize,
|
||||
SMI_PARAMETERS);
|
||||
// If the name comparison succeeded, we know we have a feedback vector
|
||||
// with at least one map/handler pair.
|
||||
Node* array = LoadFeedbackVectorSlot(p->vector, p->slot, kPointerSize,
|
||||
SMI_PARAMETERS);
|
||||
HandlePolymorphicCase(receiver_map, array, &if_handler, &var_handler,
|
||||
&miss, 1);
|
||||
}
|
||||
@ -2284,7 +2285,7 @@ void AccessorAssembler::GenerateLoadIC_Noninlined() {
|
||||
Label if_handler(this, &var_handler), miss(this, Label::kDeferred);
|
||||
|
||||
Node* receiver_map = LoadReceiverMap(receiver);
|
||||
Node* feedback = LoadFixedArrayElement(vector, slot, 0, SMI_PARAMETERS);
|
||||
Node* feedback = LoadFeedbackVectorSlot(vector, slot, 0, SMI_PARAMETERS);
|
||||
|
||||
LoadICParameters p(context, receiver, name, slot, vector);
|
||||
LoadIC_Noninlined(&p, receiver_map, feedback, &var_handler, &if_handler,
|
||||
|
@ -980,9 +980,9 @@ void KeyedStoreGenericAssembler::StoreIC_Uninitialized(
|
||||
&miss);
|
||||
|
||||
// Optimistically write the state transition to the vector.
|
||||
StoreFixedArrayElement(vector, slot,
|
||||
LoadRoot(Heap::kpremonomorphic_symbolRootIndex),
|
||||
SKIP_WRITE_BARRIER, 0, SMI_PARAMETERS);
|
||||
StoreFeedbackVectorSlot(vector, slot,
|
||||
LoadRoot(Heap::kpremonomorphic_symbolRootIndex),
|
||||
SKIP_WRITE_BARRIER, 0, SMI_PARAMETERS);
|
||||
|
||||
StoreICParameters p(context, receiver, name, value, slot, vector);
|
||||
EmitGenericPropertyStore(receiver, receiver_map, &p, &miss, language_mode,
|
||||
@ -991,9 +991,9 @@ void KeyedStoreGenericAssembler::StoreIC_Uninitialized(
|
||||
BIND(&miss);
|
||||
{
|
||||
// Undo the optimistic state transition.
|
||||
StoreFixedArrayElement(vector, slot,
|
||||
LoadRoot(Heap::kuninitialized_symbolRootIndex),
|
||||
SKIP_WRITE_BARRIER, 0, SMI_PARAMETERS);
|
||||
StoreFeedbackVectorSlot(vector, slot,
|
||||
LoadRoot(Heap::kuninitialized_symbolRootIndex),
|
||||
SKIP_WRITE_BARRIER, 0, SMI_PARAMETERS);
|
||||
TailCallRuntime(Runtime::kStoreIC_Miss, context, value, slot, vector,
|
||||
receiver, name);
|
||||
}
|
||||
|
@ -461,7 +461,6 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::GetSuperConstructor(Register out) {
|
||||
|
||||
BytecodeArrayBuilder& BytecodeArrayBuilder::CompareOperation(
|
||||
Token::Value op, Register reg, int feedback_slot) {
|
||||
DCHECK(feedback_slot != kNoFeedbackSlot);
|
||||
switch (op) {
|
||||
case Token::Value::EQ:
|
||||
OutputTestEqual(reg, feedback_slot);
|
||||
|
@ -566,8 +566,6 @@ class V8_EXPORT_PRIVATE BytecodeArrayBuilder final
|
||||
BytecodeSourceInfo latest_source_info_;
|
||||
BytecodeSourceInfo deferred_source_info_;
|
||||
|
||||
static int const kNoFeedbackSlot = 0;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(BytecodeArrayBuilder);
|
||||
};
|
||||
|
||||
|
@ -4235,6 +4235,7 @@ LanguageMode BytecodeGenerator::language_mode() const {
|
||||
}
|
||||
|
||||
int BytecodeGenerator::feedback_index(FeedbackSlot slot) const {
|
||||
DCHECK(!slot.IsInvalid());
|
||||
return FeedbackVector::GetIndex(slot);
|
||||
}
|
||||
|
||||
|
@ -555,12 +555,12 @@ void InterpreterAssembler::CallEpilogue() {
|
||||
Node* InterpreterAssembler::IncrementCallCount(Node* feedback_vector,
|
||||
Node* slot_id) {
|
||||
Comment("increment call count");
|
||||
Node* call_count_slot = IntPtrAdd(slot_id, IntPtrConstant(1));
|
||||
Node* call_count = LoadFixedArrayElement(feedback_vector, call_count_slot);
|
||||
Node* call_count =
|
||||
LoadFeedbackVectorSlot(feedback_vector, slot_id, kPointerSize);
|
||||
Node* new_count = SmiAdd(call_count, SmiConstant(1));
|
||||
// Count is Smi, so we don't need a write barrier.
|
||||
return StoreFixedArrayElement(feedback_vector, call_count_slot, new_count,
|
||||
SKIP_WRITE_BARRIER);
|
||||
return StoreFeedbackVectorSlot(feedback_vector, slot_id, new_count,
|
||||
SKIP_WRITE_BARRIER, kPointerSize);
|
||||
}
|
||||
|
||||
void InterpreterAssembler::CollectCallFeedback(Node* target, Node* context,
|
||||
@ -574,7 +574,7 @@ void InterpreterAssembler::CollectCallFeedback(Node* target, Node* context,
|
||||
IncrementCallCount(feedback_vector, slot_id);
|
||||
|
||||
// Check if we have monomorphic {target} feedback already.
|
||||
Node* feedback_element = LoadFixedArrayElement(feedback_vector, slot_id);
|
||||
Node* feedback_element = LoadFeedbackVectorSlot(feedback_vector, slot_id);
|
||||
Node* feedback_value = LoadWeakCellValueUnchecked(feedback_element);
|
||||
Branch(WordEqual(target, feedback_value), &done, &extra_checks);
|
||||
|
||||
@ -632,7 +632,7 @@ void InterpreterAssembler::CollectCallFeedback(Node* target, Node* context,
|
||||
// write-barrier is not needed.
|
||||
Comment("transition to megamorphic");
|
||||
DCHECK(Heap::RootIsImmortalImmovable(Heap::kmegamorphic_symbolRootIndex));
|
||||
StoreFixedArrayElement(
|
||||
StoreFeedbackVectorSlot(
|
||||
feedback_vector, slot_id,
|
||||
HeapConstant(FeedbackVector::MegamorphicSentinel(isolate())),
|
||||
SKIP_WRITE_BARRIER);
|
||||
@ -675,7 +675,7 @@ Node* InterpreterAssembler::CallJSWithFeedback(
|
||||
IncrementCallCount(feedback_vector, slot_id);
|
||||
|
||||
// The checks. First, does function match the recorded monomorphic target?
|
||||
Node* feedback_element = LoadFixedArrayElement(feedback_vector, slot_id);
|
||||
Node* feedback_element = LoadFeedbackVectorSlot(feedback_vector, slot_id);
|
||||
Node* feedback_value = LoadWeakCellValueUnchecked(feedback_element);
|
||||
Node* is_monomorphic = WordEqual(function, feedback_value);
|
||||
GotoIfNot(is_monomorphic, &extra_checks);
|
||||
@ -793,7 +793,7 @@ Node* InterpreterAssembler::CallJSWithFeedback(
|
||||
// MegamorphicSentinel is created as a part of Heap::InitialObjects
|
||||
// and will not move during a GC. So it is safe to skip write barrier.
|
||||
DCHECK(Heap::RootIsImmortalImmovable(Heap::kmegamorphic_symbolRootIndex));
|
||||
StoreFixedArrayElement(
|
||||
StoreFeedbackVectorSlot(
|
||||
feedback_vector, slot_id,
|
||||
HeapConstant(FeedbackVector::MegamorphicSentinel(isolate())),
|
||||
SKIP_WRITE_BARRIER);
|
||||
@ -874,7 +874,7 @@ Node* InterpreterAssembler::Construct(Node* constructor, Node* context,
|
||||
GotoIfNot(is_js_function, &call_construct);
|
||||
|
||||
// Check if it is a monomorphic constructor.
|
||||
Node* feedback_element = LoadFixedArrayElement(feedback_vector, slot_id);
|
||||
Node* feedback_element = LoadFeedbackVectorSlot(feedback_vector, slot_id);
|
||||
Node* feedback_value = LoadWeakCellValueUnchecked(feedback_element);
|
||||
Node* is_monomorphic = WordEqual(constructor, feedback_value);
|
||||
allocation_feedback.Bind(UndefinedConstant());
|
||||
@ -975,7 +975,7 @@ Node* InterpreterAssembler::Construct(Node* constructor, Node* context,
|
||||
// write-barrier is not needed.
|
||||
Comment("transition to megamorphic");
|
||||
DCHECK(Heap::RootIsImmortalImmovable(Heap::kmegamorphic_symbolRootIndex));
|
||||
StoreFixedArrayElement(
|
||||
StoreFeedbackVectorSlot(
|
||||
feedback_vector, slot_id,
|
||||
HeapConstant(FeedbackVector::MegamorphicSentinel(isolate())),
|
||||
SKIP_WRITE_BARRIER);
|
||||
|
@ -3152,8 +3152,8 @@ IGNITION_HANDLER(ForInNext, InterpreterAssembler) {
|
||||
Node* feedback_vector = LoadFeedbackVector();
|
||||
Node* megamorphic_sentinel =
|
||||
HeapConstant(FeedbackVector::MegamorphicSentinel(isolate()));
|
||||
StoreFixedArrayElement(feedback_vector, vector_index, megamorphic_sentinel,
|
||||
SKIP_WRITE_BARRIER);
|
||||
StoreFeedbackVectorSlot(feedback_vector, vector_index, megamorphic_sentinel,
|
||||
SKIP_WRITE_BARRIER);
|
||||
|
||||
// Need to filter the {key} for the {receiver}.
|
||||
Node* context = GetContext();
|
||||
|
@ -1281,7 +1281,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
|
||||
// Load the cache state into t2.
|
||||
__ Lsa(t2, a2, a3, kPointerSizeLog2 - kSmiTagSize);
|
||||
__ lw(t2, FieldMemOperand(t2, FixedArray::kHeaderSize));
|
||||
__ lw(t2, FieldMemOperand(t2, FeedbackVector::kFeedbackSlotsOffset));
|
||||
|
||||
// A monomorphic cache hit or an already megamorphic state: invoke the
|
||||
// function without changing the state.
|
||||
@ -1326,7 +1326,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
__ bind(&megamorphic);
|
||||
__ Lsa(t2, a2, a3, kPointerSizeLog2 - kSmiTagSize);
|
||||
__ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex);
|
||||
__ sw(at, FieldMemOperand(t2, FixedArray::kHeaderSize));
|
||||
__ sw(at, FieldMemOperand(t2, FeedbackVector::kFeedbackSlotsOffset));
|
||||
__ jmp(&done);
|
||||
|
||||
// An uninitialized cache is patched with the function.
|
||||
@ -1350,9 +1350,11 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
|
||||
// Increment the call count for all function calls.
|
||||
__ Lsa(at, a2, a3, kPointerSizeLog2 - kSmiTagSize);
|
||||
__ lw(t0, FieldMemOperand(at, FixedArray::kHeaderSize + kPointerSize));
|
||||
__ lw(t0, FieldMemOperand(
|
||||
at, FeedbackVector::kFeedbackSlotsOffset + kPointerSize));
|
||||
__ Addu(t0, t0, Operand(Smi::FromInt(1)));
|
||||
__ sw(t0, FieldMemOperand(at, FixedArray::kHeaderSize + kPointerSize));
|
||||
__ sw(t0, FieldMemOperand(
|
||||
at, FeedbackVector::kFeedbackSlotsOffset + kPointerSize));
|
||||
}
|
||||
|
||||
|
||||
@ -1374,7 +1376,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
__ Lsa(t1, a2, a3, kPointerSizeLog2 - kSmiTagSize);
|
||||
Label feedback_register_initialized;
|
||||
// Put the AllocationSite from the feedback vector into a2, or undefined.
|
||||
__ lw(a2, FieldMemOperand(t1, FixedArray::kHeaderSize));
|
||||
__ lw(a2, FieldMemOperand(t1, FeedbackVector::kFeedbackSlotsOffset));
|
||||
__ lw(t1, FieldMemOperand(a2, AllocationSite::kMapOffset));
|
||||
__ LoadRoot(at, Heap::kAllocationSiteMapRootIndex);
|
||||
__ Branch(&feedback_register_initialized, eq, t1, Operand(at));
|
||||
|
@ -1279,7 +1279,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
// Load the cache state into a5.
|
||||
__ dsrl(a5, a3, 32 - kPointerSizeLog2);
|
||||
__ Daddu(a5, a2, Operand(a5));
|
||||
__ Ld(a5, FieldMemOperand(a5, FixedArray::kHeaderSize));
|
||||
__ Ld(a5, FieldMemOperand(a5, FeedbackVector::kFeedbackSlotsOffset));
|
||||
|
||||
// A monomorphic cache hit or an already megamorphic state: invoke the
|
||||
// function without changing the state.
|
||||
@ -1325,7 +1325,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
__ dsrl(a5, a3, 32 - kPointerSizeLog2);
|
||||
__ Daddu(a5, a2, Operand(a5));
|
||||
__ LoadRoot(at, Heap::kmegamorphic_symbolRootIndex);
|
||||
__ Sd(at, FieldMemOperand(a5, FixedArray::kHeaderSize));
|
||||
__ Sd(at, FieldMemOperand(a5, FeedbackVector::kFeedbackSlotsOffset));
|
||||
__ jmp(&done);
|
||||
|
||||
// An uninitialized cache is patched with the function.
|
||||
@ -1351,9 +1351,11 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
// Increment the call count for all function calls.
|
||||
__ SmiScale(a4, a3, kPointerSizeLog2);
|
||||
__ Daddu(a5, a2, Operand(a4));
|
||||
__ Ld(a4, FieldMemOperand(a5, FixedArray::kHeaderSize + kPointerSize));
|
||||
__ Ld(a4, FieldMemOperand(
|
||||
a5, FeedbackVector::kFeedbackSlotsOffset + kPointerSize));
|
||||
__ Daddu(a4, a4, Operand(Smi::FromInt(1)));
|
||||
__ Sd(a4, FieldMemOperand(a5, FixedArray::kHeaderSize + kPointerSize));
|
||||
__ Sd(a4, FieldMemOperand(
|
||||
a5, FeedbackVector::kFeedbackSlotsOffset + kPointerSize));
|
||||
}
|
||||
|
||||
|
||||
@ -1376,7 +1378,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
__ Daddu(a5, a2, at);
|
||||
Label feedback_register_initialized;
|
||||
// Put the AllocationSite from the feedback vector into a2, or undefined.
|
||||
__ Ld(a2, FieldMemOperand(a5, FixedArray::kHeaderSize));
|
||||
__ Ld(a2, FieldMemOperand(a5, FeedbackVector::kFeedbackSlotsOffset));
|
||||
__ Ld(a5, FieldMemOperand(a2, AllocationSite::kMapOffset));
|
||||
__ LoadRoot(at, Heap::kAllocationSiteMapRootIndex);
|
||||
__ Branch(&feedback_register_initialized, eq, a5, Operand(at));
|
||||
|
@ -6,6 +6,7 @@
|
||||
#define V8_OBJECTS_BODY_DESCRIPTORS_INL_H_
|
||||
|
||||
#include "src/assembler-inl.h"
|
||||
#include "src/feedback-vector.h"
|
||||
#include "src/objects-body-descriptors.h"
|
||||
#include "src/objects/hash-table.h"
|
||||
#include "src/transitions.h"
|
||||
@ -354,6 +355,35 @@ class FixedTypedArrayBase::BodyDescriptor final : public BodyDescriptorBase {
|
||||
}
|
||||
};
|
||||
|
||||
class FeedbackVector::BodyDescriptor final : public BodyDescriptorBase {
|
||||
public:
|
||||
static bool IsValidSlot(HeapObject* obj, int offset) {
|
||||
return offset == kSharedFunctionInfoOffset ||
|
||||
offset == kOptimizedCodeOffset || offset >= kFeedbackSlotsOffset;
|
||||
}
|
||||
|
||||
template <typename ObjectVisitor>
|
||||
static inline void IterateBody(HeapObject* obj, int object_size,
|
||||
ObjectVisitor* v) {
|
||||
IteratePointer(obj, kSharedFunctionInfoOffset, v);
|
||||
IteratePointer(obj, kOptimizedCodeOffset, v);
|
||||
IteratePointers(obj, kFeedbackSlotsOffset, object_size, v);
|
||||
}
|
||||
|
||||
template <typename StaticVisitor>
|
||||
static inline void IterateBody(HeapObject* obj, int object_size) {
|
||||
Heap* heap = obj->GetHeap();
|
||||
IteratePointer<StaticVisitor>(heap, obj, kSharedFunctionInfoOffset);
|
||||
IteratePointer<StaticVisitor>(heap, obj, kOptimizedCodeOffset);
|
||||
IteratePointers<StaticVisitor>(heap, obj, kFeedbackSlotsOffset,
|
||||
object_size);
|
||||
}
|
||||
|
||||
static inline int SizeOf(Map* map, HeapObject* obj) {
|
||||
return FeedbackVector::SizeFor(FeedbackVector::cast(obj)->length());
|
||||
}
|
||||
};
|
||||
|
||||
template <JSWeakCollection::BodyVisitingPolicy body_visiting_policy>
|
||||
class JSWeakCollection::BodyDescriptorImpl final : public BodyDescriptorBase {
|
||||
public:
|
||||
@ -593,6 +623,8 @@ ReturnType BodyDescriptorApply(InstanceType type, T1 p1, T2 p2, T3 p3) {
|
||||
return Op::template apply<PropertyArray::BodyDescriptor>(p1, p2, p3);
|
||||
case TRANSITION_ARRAY_TYPE:
|
||||
return Op::template apply<TransitionArray::BodyDescriptor>(p1, p2, p3);
|
||||
case FEEDBACK_VECTOR_TYPE:
|
||||
return Op::template apply<FeedbackVector::BodyDescriptor>(p1, p2, p3);
|
||||
case JS_OBJECT_TYPE:
|
||||
case JS_ERROR_TYPE:
|
||||
case JS_ARGUMENTS_TYPE:
|
||||
|
@ -94,6 +94,9 @@ void HeapObject::HeapObjectVerify() {
|
||||
case FREE_SPACE_TYPE:
|
||||
FreeSpace::cast(this)->FreeSpaceVerify();
|
||||
break;
|
||||
case FEEDBACK_VECTOR_TYPE:
|
||||
FeedbackVector::cast(this)->FeedbackVectorVerify();
|
||||
break;
|
||||
|
||||
#define VERIFY_TYPED_ARRAY(Type, type, TYPE, ctype, size) \
|
||||
case FIXED_##TYPE##_ARRAY_TYPE: \
|
||||
@ -321,6 +324,7 @@ void FreeSpace::FreeSpaceVerify() {
|
||||
CHECK(IsFreeSpace());
|
||||
}
|
||||
|
||||
void FeedbackVector::FeedbackVectorVerify() { CHECK(IsFeedbackVector()); }
|
||||
|
||||
template <class Traits>
|
||||
void FixedTypedArray<Traits>::FixedTypedArrayVerify() {
|
||||
|
@ -3233,6 +3233,10 @@ int HeapObject::SizeFromMap(Map* map) const {
|
||||
if (instance_type == SMALL_ORDERED_HASH_MAP_TYPE) {
|
||||
return reinterpret_cast<const SmallOrderedHashMap*>(this)->Size();
|
||||
}
|
||||
if (instance_type == FEEDBACK_VECTOR_TYPE) {
|
||||
return FeedbackVector::SizeFor(
|
||||
reinterpret_cast<const FeedbackVector*>(this)->length());
|
||||
}
|
||||
DCHECK(instance_type == CODE_TYPE);
|
||||
return reinterpret_cast<const Code*>(this)->CodeSize();
|
||||
}
|
||||
|
@ -95,6 +95,9 @@ void HeapObject::HeapObjectPrint(std::ostream& os) { // NOLINT
|
||||
case TRANSITION_ARRAY_TYPE:
|
||||
TransitionArray::cast(this)->TransitionArrayPrint(os);
|
||||
break;
|
||||
case FEEDBACK_VECTOR_TYPE:
|
||||
FeedbackVector::cast(this)->FeedbackVectorPrint(os);
|
||||
break;
|
||||
case FREE_SPACE_TYPE:
|
||||
FreeSpace::cast(this)->FreeSpacePrint(os);
|
||||
break;
|
||||
@ -753,7 +756,10 @@ void FeedbackVector::FeedbackVectorPrint(std::ostream& os) { // NOLINT
|
||||
return;
|
||||
}
|
||||
|
||||
os << "\n Optimized Code: " << Brief(optimized_code());
|
||||
os << "\n SharedFunctionInfo: " << Brief(shared_function_info());
|
||||
os << "\n Optimized Code: " << Brief(optimized_code_cell());
|
||||
os << "\n Invocation Count: " << invocation_count();
|
||||
os << "\n Profiler Ticks: " << profiler_ticks();
|
||||
|
||||
FeedbackMetadataIterator iter(metadata());
|
||||
while (iter.HasNext()) {
|
||||
|
@ -3014,6 +3014,9 @@ VisitorId Map::GetVisitorId(Map* map) {
|
||||
case PROPERTY_ARRAY_TYPE:
|
||||
return kVisitPropertyArray;
|
||||
|
||||
case FEEDBACK_VECTOR_TYPE:
|
||||
return kVisitFeedbackVector;
|
||||
|
||||
case ODDBALL_TYPE:
|
||||
return kVisitOddball;
|
||||
|
||||
@ -3318,6 +3321,9 @@ void HeapObject::HeapObjectShortPrint(std::ostream& os) { // NOLINT
|
||||
case PROPERTY_ARRAY_TYPE:
|
||||
os << "<PropertyArray[" << PropertyArray::cast(this)->length() << "]>";
|
||||
break;
|
||||
case FEEDBACK_VECTOR_TYPE:
|
||||
os << "<FeedbackVector[" << FeedbackVector::cast(this)->length() << "]>";
|
||||
break;
|
||||
case FREE_SPACE_TYPE:
|
||||
os << "<FreeSpace[" << FreeSpace::cast(this)->size() << "]>";
|
||||
break;
|
||||
|
@ -96,7 +96,6 @@
|
||||
// - OrderedHashMap
|
||||
// - Context
|
||||
// - FeedbackMetadata
|
||||
// - FeedbackVector
|
||||
// - TemplateList
|
||||
// - TransitionArray
|
||||
// - ScopeInfo
|
||||
@ -161,6 +160,7 @@
|
||||
// - ModuleInfoEntry
|
||||
// - PreParsedScopeData
|
||||
// - WeakCell
|
||||
// - FeedbackVector
|
||||
//
|
||||
// Formats of Object*:
|
||||
// Smi: [31 bit signed int] 0
|
||||
@ -367,6 +367,7 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1;
|
||||
V(ASYNC_GENERATOR_REQUEST_TYPE) \
|
||||
V(FIXED_ARRAY_TYPE) \
|
||||
V(HASH_TABLE_TYPE) \
|
||||
V(FEEDBACK_VECTOR_TYPE) \
|
||||
V(TRANSITION_ARRAY_TYPE) \
|
||||
V(PROPERTY_ARRAY_TYPE) \
|
||||
V(SHARED_FUNCTION_INFO_TYPE) \
|
||||
@ -714,6 +715,7 @@ enum InstanceType : uint8_t {
|
||||
ASYNC_GENERATOR_REQUEST_TYPE,
|
||||
FIXED_ARRAY_TYPE,
|
||||
HASH_TABLE_TYPE,
|
||||
FEEDBACK_VECTOR_TYPE,
|
||||
TRANSITION_ARRAY_TYPE,
|
||||
PROPERTY_ARRAY_TYPE,
|
||||
SHARED_FUNCTION_INFO_TYPE,
|
||||
@ -913,7 +915,6 @@ V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
|
||||
V(STRING_SPLIT_CACHE_SUB_TYPE) \
|
||||
V(STRING_TABLE_SUB_TYPE) \
|
||||
V(TEMPLATE_INFO_SUB_TYPE) \
|
||||
V(FEEDBACK_VECTOR_SUB_TYPE) \
|
||||
V(FEEDBACK_METADATA_SUB_TYPE) \
|
||||
V(WEAK_NEW_SPACE_OBJECT_TO_CODE_SUB_TYPE)
|
||||
|
||||
@ -5195,7 +5196,7 @@ class JSFunction: public JSObject {
|
||||
// Completes inobject slack tracking on initial map if it is active.
|
||||
inline void CompleteInobjectSlackTrackingIfActive();
|
||||
|
||||
// [feedback_vector_cell]: Fixed array holding the feedback vector.
|
||||
// [feedback_vector_cell]: The feedback vector.
|
||||
DECL_ACCESSORS(feedback_vector_cell, Cell)
|
||||
|
||||
enum FeedbackVectorState {
|
||||
|
@ -23,6 +23,7 @@ namespace internal {
|
||||
V(Code) \
|
||||
V(ConsString) \
|
||||
V(DataObject) \
|
||||
V(FeedbackVector) \
|
||||
V(FixedArray) \
|
||||
V(FixedDoubleArray) \
|
||||
V(FixedFloat64Array) \
|
||||
|
@ -20,6 +20,10 @@
|
||||
inline int name() const; \
|
||||
inline void set_##name(int value);
|
||||
|
||||
#define DECL_INT32_ACCESSORS(name) \
|
||||
inline int32_t name() const; \
|
||||
inline void set_##name(int32_t value);
|
||||
|
||||
#define DECL_ACCESSORS(name, type) \
|
||||
inline type* name() const; \
|
||||
inline void set_##name(type* value, \
|
||||
@ -43,6 +47,12 @@
|
||||
int holder::name() const { return READ_INT_FIELD(this, offset); } \
|
||||
void holder::set_##name(int value) { WRITE_INT_FIELD(this, offset, value); }
|
||||
|
||||
#define INT32_ACCESSORS(holder, name, offset) \
|
||||
int32_t holder::name() const { return READ_INT32_FIELD(this, offset); } \
|
||||
void holder::set_##name(int32_t value) { \
|
||||
WRITE_INT32_FIELD(this, offset, value); \
|
||||
}
|
||||
|
||||
#define ACCESSORS_CHECKED2(holder, name, type, offset, get_condition, \
|
||||
set_condition) \
|
||||
type* holder::name() const { \
|
||||
|
@ -6,6 +6,7 @@
|
||||
#define V8_OBJECTS_SHARED_FUNCTION_INFO_INL_H_
|
||||
|
||||
#include "src/heap/heap-inl.h"
|
||||
#include "src/objects/scope-info.h"
|
||||
#include "src/objects/shared-function-info.h"
|
||||
|
||||
// Has to be the last include (doesn't have include guards):
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include "src/objects/string.h"
|
||||
|
||||
#include "src/conversions-inl.h"
|
||||
#include "src/factory.h"
|
||||
#include "src/objects/name-inl.h"
|
||||
#include "src/string-hasher-inl.h"
|
||||
|
||||
|
@ -456,7 +456,7 @@ MaybeHandle<JSObject> CreateLiteral(Isolate* isolate,
|
||||
Handle<HeapObject> description, int flags) {
|
||||
Handle<FeedbackVector> vector(closure->feedback_vector(), isolate);
|
||||
FeedbackSlot literals_slot(FeedbackVector::ToSlot(literals_index));
|
||||
CHECK(literals_slot.ToInt() < vector->slot_count());
|
||||
CHECK(literals_slot.ToInt() < vector->length());
|
||||
Handle<Object> literal_site(vector->Get(literals_slot), isolate);
|
||||
DeepCopyHints copy_hints =
|
||||
(flags & AggregateLiteral::kIsShallow) ? kObjectIsShallow : kNoHints;
|
||||
|
@ -687,8 +687,8 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
|
||||
// Load the cache state into r11.
|
||||
__ SmiToInteger32(rdx, rdx);
|
||||
__ movp(r11,
|
||||
FieldOperand(rbx, rdx, times_pointer_size, FixedArray::kHeaderSize));
|
||||
__ movp(r11, FieldOperand(rbx, rdx, times_pointer_size,
|
||||
FeedbackVector::kFeedbackSlotsOffset));
|
||||
|
||||
// A monomorphic cache hit or an already megamorphic state: invoke the
|
||||
// function without changing the state.
|
||||
@ -731,7 +731,8 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
// MegamorphicSentinel is an immortal immovable object (undefined) so no
|
||||
// write-barrier is needed.
|
||||
__ bind(&megamorphic);
|
||||
__ Move(FieldOperand(rbx, rdx, times_pointer_size, FixedArray::kHeaderSize),
|
||||
__ Move(FieldOperand(rbx, rdx, times_pointer_size,
|
||||
FeedbackVector::kFeedbackSlotsOffset),
|
||||
FeedbackVector::MegamorphicSentinel(isolate));
|
||||
__ jmp(&done);
|
||||
|
||||
@ -754,9 +755,10 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
||||
|
||||
__ bind(&done);
|
||||
// Increment the call count for all function calls.
|
||||
__ SmiAddConstant(FieldOperand(rbx, rdx, times_pointer_size,
|
||||
FixedArray::kHeaderSize + kPointerSize),
|
||||
Smi::FromInt(1));
|
||||
__ SmiAddConstant(
|
||||
FieldOperand(rbx, rdx, times_pointer_size,
|
||||
FeedbackVector::kFeedbackSlotsOffset + kPointerSize),
|
||||
Smi::FromInt(1));
|
||||
}
|
||||
|
||||
|
||||
@ -777,8 +779,8 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
|
||||
Label feedback_register_initialized;
|
||||
// Put the AllocationSite from the feedback vector into rbx, or undefined.
|
||||
__ movp(rbx,
|
||||
FieldOperand(rbx, rdx, times_pointer_size, FixedArray::kHeaderSize));
|
||||
__ movp(rbx, FieldOperand(rbx, rdx, times_pointer_size,
|
||||
FeedbackVector::kFeedbackSlotsOffset));
|
||||
__ CompareRoot(FieldOperand(rbx, 0), Heap::kAllocationSiteMapRootIndex);
|
||||
__ j(equal, &feedback_register_initialized, Label::kNear);
|
||||
__ LoadRoot(rbx, Heap::kUndefinedValueRootIndex);
|
||||
|
@ -14,7 +14,7 @@ parameter count: 1
|
||||
bytecode array length: 6
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 34 S> */ B(CreateArrayLiteral), U8(0), U8(4), U8(37),
|
||||
/* 34 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
|
||||
/* 50 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -34,17 +34,17 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(1),
|
||||
B(Star), R(0),
|
||||
/* 45 S> */ B(CreateArrayLiteral), U8(0), U8(5), U8(37),
|
||||
/* 45 S> */ B(CreateArrayLiteral), U8(0), U8(1), U8(37),
|
||||
B(Star), R(2),
|
||||
B(LdaZero),
|
||||
B(Star), R(1),
|
||||
B(Ldar), R(0),
|
||||
/* 54 E> */ B(StaKeyedPropertySloppy), R(2), R(1), U8(6),
|
||||
/* 54 E> */ B(StaKeyedPropertySloppy), R(2), R(1), U8(2),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(1),
|
||||
B(Ldar), R(0),
|
||||
/* 59 E> */ B(AddSmi), I8(1), U8(4),
|
||||
B(StaKeyedPropertySloppy), R(2), R(1), U8(6),
|
||||
/* 59 E> */ B(AddSmi), I8(1), U8(0),
|
||||
B(StaKeyedPropertySloppy), R(2), R(1), U8(2),
|
||||
B(Ldar), R(2),
|
||||
/* 65 S> */ B(Return),
|
||||
]
|
||||
@ -63,7 +63,7 @@ parameter count: 1
|
||||
bytecode array length: 6
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 34 S> */ B(CreateArrayLiteral), U8(0), U8(6), U8(4),
|
||||
/* 34 S> */ B(CreateArrayLiteral), U8(0), U8(2), U8(4),
|
||||
/* 61 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -83,29 +83,29 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(1),
|
||||
B(Star), R(0),
|
||||
/* 45 S> */ B(CreateArrayLiteral), U8(0), U8(11), U8(4),
|
||||
/* 45 S> */ B(CreateArrayLiteral), U8(0), U8(7), U8(4),
|
||||
B(Star), R(2),
|
||||
B(LdaZero),
|
||||
B(Star), R(1),
|
||||
B(CreateArrayLiteral), U8(1), U8(4), U8(37),
|
||||
B(CreateArrayLiteral), U8(1), U8(0), U8(37),
|
||||
B(Star), R(4),
|
||||
B(LdaZero),
|
||||
B(Star), R(3),
|
||||
B(Ldar), R(0),
|
||||
/* 56 E> */ B(StaKeyedPropertySloppy), R(4), R(3), U8(5),
|
||||
/* 56 E> */ B(StaKeyedPropertySloppy), R(4), R(3), U8(1),
|
||||
B(Ldar), R(4),
|
||||
B(StaKeyedPropertySloppy), R(2), R(1), U8(12),
|
||||
B(StaKeyedPropertySloppy), R(2), R(1), U8(8),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(1),
|
||||
B(CreateArrayLiteral), U8(2), U8(8), U8(37),
|
||||
B(CreateArrayLiteral), U8(2), U8(4), U8(37),
|
||||
B(Star), R(4),
|
||||
B(LdaZero),
|
||||
B(Star), R(3),
|
||||
B(Ldar), R(0),
|
||||
/* 68 E> */ B(AddSmi), I8(2), U8(7),
|
||||
B(StaKeyedPropertySloppy), R(4), R(3), U8(9),
|
||||
/* 68 E> */ B(AddSmi), I8(2), U8(3),
|
||||
B(StaKeyedPropertySloppy), R(4), R(3), U8(5),
|
||||
B(Ldar), R(4),
|
||||
B(StaKeyedPropertySloppy), R(2), R(1), U8(12),
|
||||
B(StaKeyedPropertySloppy), R(2), R(1), U8(8),
|
||||
B(Ldar), R(2),
|
||||
/* 76 S> */ B(Return),
|
||||
]
|
||||
|
@ -783,7 +783,7 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 2591 S> */ B(LdaConstant), U8(255),
|
||||
B(Star), R(0),
|
||||
/* 2601 S> */ B(Wide), B(CreateArrayLiteral), U16(256), U16(4), U8(37),
|
||||
/* 2601 S> */ B(Wide), B(CreateArrayLiteral), U16(256), U16(0), U8(37),
|
||||
/* 2618 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
@ -73,11 +73,11 @@ bytecodes: [
|
||||
/* 46 S> */ B(LdaSmi), I8(100),
|
||||
B(Mov), R(0), R(1),
|
||||
B(Star), R(0),
|
||||
/* 52 E> */ B(Add), R(1), U8(4),
|
||||
/* 52 E> */ B(Add), R(1), U8(0),
|
||||
B(Star), R(1),
|
||||
B(LdaSmi), I8(101),
|
||||
B(Star), R(0),
|
||||
/* 64 E> */ B(Add), R(1), U8(5),
|
||||
/* 64 E> */ B(Add), R(1), U8(1),
|
||||
B(Star), R(0),
|
||||
/* 86 S> */ B(Return),
|
||||
]
|
||||
@ -102,13 +102,13 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 46 S> */ B(LdaSmi), I8(56),
|
||||
B(Star), R(0),
|
||||
/* 59 E> */ B(Sub), R(0), U8(4),
|
||||
/* 59 E> */ B(Sub), R(0), U8(0),
|
||||
B(Star), R(1),
|
||||
B(LdaSmi), I8(57),
|
||||
B(Star), R(0),
|
||||
/* 63 E> */ B(Add), R(1), U8(5),
|
||||
/* 63 E> */ B(Add), R(1), U8(1),
|
||||
B(Star), R(0),
|
||||
/* 75 S> */ B(Inc), U8(6),
|
||||
/* 75 S> */ B(Inc), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 89 S> */ B(Return),
|
||||
]
|
||||
@ -133,15 +133,15 @@ bytecodes: [
|
||||
/* 54 S> */ B(LdaSmi), I8(1),
|
||||
B(Mov), R(0), R(2),
|
||||
B(Star), R(0),
|
||||
/* 56 E> */ B(Add), R(2), U8(4),
|
||||
/* 56 E> */ B(Add), R(2), U8(0),
|
||||
B(Star), R(2),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(0),
|
||||
/* 66 E> */ B(Add), R(2), U8(5),
|
||||
/* 66 E> */ B(Add), R(2), U8(1),
|
||||
B(Star), R(2),
|
||||
B(LdaSmi), I8(3),
|
||||
B(Star), R(0),
|
||||
/* 76 E> */ B(Add), R(2), U8(6),
|
||||
/* 76 E> */ B(Add), R(2), U8(2),
|
||||
B(Star), R(1),
|
||||
/* 96 S> */ B(Return),
|
||||
]
|
||||
@ -166,15 +166,15 @@ bytecodes: [
|
||||
/* 54 S> */ B(LdaSmi), I8(1),
|
||||
B(Mov), R(0), R(1),
|
||||
B(Star), R(0),
|
||||
/* 56 E> */ B(Add), R(1), U8(4),
|
||||
/* 56 E> */ B(Add), R(1), U8(0),
|
||||
B(Star), R(1),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(0),
|
||||
/* 66 E> */ B(Add), R(1), U8(5),
|
||||
/* 66 E> */ B(Add), R(1), U8(1),
|
||||
B(Star), R(1),
|
||||
B(LdaSmi), I8(3),
|
||||
B(Star), R(0),
|
||||
/* 76 E> */ B(Add), R(1), U8(6),
|
||||
/* 76 E> */ B(Add), R(1), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 96 S> */ B(Return),
|
||||
]
|
||||
@ -200,30 +200,30 @@ bytecodes: [
|
||||
/* 54 S> */ B(LdaSmi), I8(1),
|
||||
B(Mov), R(0), R(2),
|
||||
B(Star), R(0),
|
||||
/* 63 E> */ B(Add), R(2), U8(4),
|
||||
/* 63 E> */ B(Add), R(2), U8(0),
|
||||
B(Star), R(2),
|
||||
B(Ldar), R(0),
|
||||
/* 78 E> */ B(AddSmi), I8(1), U8(5),
|
||||
/* 78 E> */ B(AddSmi), I8(1), U8(1),
|
||||
B(Star), R(3),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(1),
|
||||
/* 83 E> */ B(Mul), R(3), U8(6),
|
||||
/* 73 E> */ B(Add), R(2), U8(7),
|
||||
/* 83 E> */ B(Mul), R(3), U8(2),
|
||||
/* 73 E> */ B(Add), R(2), U8(3),
|
||||
B(Star), R(2),
|
||||
B(LdaSmi), I8(3),
|
||||
B(Star), R(1),
|
||||
/* 93 E> */ B(Add), R(2), U8(8),
|
||||
/* 93 E> */ B(Add), R(2), U8(4),
|
||||
B(Star), R(2),
|
||||
B(LdaSmi), I8(4),
|
||||
B(Star), R(0),
|
||||
/* 103 E> */ B(Add), R(2), U8(9),
|
||||
/* 103 E> */ B(Add), R(2), U8(5),
|
||||
B(Star), R(2),
|
||||
B(LdaSmi), I8(5),
|
||||
B(Star), R(1),
|
||||
/* 113 E> */ B(Add), R(2), U8(10),
|
||||
/* 113 E> */ B(Add), R(2), U8(6),
|
||||
B(Star), R(2),
|
||||
B(Ldar), R(1),
|
||||
/* 123 E> */ B(Add), R(2), U8(11),
|
||||
/* 123 E> */ B(Add), R(2), U8(7),
|
||||
/* 127 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -246,20 +246,20 @@ bytecodes: [
|
||||
/* 46 S> */ B(LdaSmi), I8(1),
|
||||
B(Star), R(1),
|
||||
B(Ldar), R(0),
|
||||
/* 55 E> */ B(Add), R(1), U8(4),
|
||||
/* 55 E> */ B(Add), R(1), U8(0),
|
||||
B(Star), R(1),
|
||||
B(Ldar), R(0),
|
||||
B(ToNumber), R(2), U8(5),
|
||||
B(ToNumber), R(2), U8(1),
|
||||
B(Ldar), R(2),
|
||||
B(Inc), U8(5),
|
||||
B(Inc), U8(1),
|
||||
B(Star), R(0),
|
||||
B(Ldar), R(2),
|
||||
/* 59 E> */ B(Add), R(1), U8(6),
|
||||
/* 59 E> */ B(Add), R(1), U8(2),
|
||||
B(Star), R(1),
|
||||
B(Ldar), R(0),
|
||||
B(Inc), U8(7),
|
||||
B(Inc), U8(3),
|
||||
B(Star), R(0),
|
||||
/* 67 E> */ B(Add), R(1), U8(8),
|
||||
/* 67 E> */ B(Add), R(1), U8(4),
|
||||
/* 75 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
@ -321,11 +321,11 @@ bytecodes: [
|
||||
B(Star), R(6),
|
||||
B(Mov), R(context), R(18),
|
||||
B(Mov), R(context), R(19),
|
||||
/* 36 S> */ B(CreateArrayLiteral), U8(4), U8(4), U8(37),
|
||||
/* 36 S> */ B(CreateArrayLiteral), U8(4), U8(0), U8(37),
|
||||
B(Star), R(20),
|
||||
B(LdaNamedProperty), R(20), U8(5), U8(5),
|
||||
B(LdaNamedProperty), R(20), U8(5), U8(1),
|
||||
B(Star), R(21),
|
||||
B(CallProperty0), R(21), R(20), U8(7),
|
||||
B(CallProperty0), R(21), R(20), U8(3),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(4),
|
||||
@ -337,17 +337,17 @@ bytecodes: [
|
||||
B(LdaSmi), I8(81),
|
||||
B(Star), R(20),
|
||||
B(CallRuntime), U16(Runtime::kAbort), R(20), U8(1),
|
||||
/* 31 S> */ B(LdaNamedProperty), R(4), U8(7), U8(11),
|
||||
/* 31 S> */ B(LdaNamedProperty), R(4), U8(7), U8(7),
|
||||
B(Star), R(20),
|
||||
B(CallProperty0), R(20), R(4), U8(9),
|
||||
B(CallProperty0), R(20), R(4), U8(5),
|
||||
B(Star), R(5),
|
||||
/* 31 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
|
||||
B(LdaNamedProperty), R(5), U8(8), U8(13),
|
||||
B(LdaNamedProperty), R(5), U8(8), U8(9),
|
||||
B(JumpIfToBooleanTrue), U8(77),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(15),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(11),
|
||||
B(Star), R(7),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(6),
|
||||
@ -387,7 +387,7 @@ bytecodes: [
|
||||
B(Ldar), R(19),
|
||||
B(PushContext), R(20),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(6), U8(17),
|
||||
B(TestEqualStrict), R(6), U8(13),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(6),
|
||||
@ -405,15 +405,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(18),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(6), U8(18),
|
||||
B(TestEqualStrict), R(6), U8(14),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(4), U8(14), U8(19),
|
||||
B(LdaNamedProperty), R(4), U8(14), U8(15),
|
||||
B(Star), R(8),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(6), U8(22),
|
||||
B(TestEqualStrict), R(6), U8(18),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(8),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -604,20 +604,20 @@ bytecodes: [
|
||||
B(Star), R(2),
|
||||
B(LdaUndefined),
|
||||
B(Star), R(3),
|
||||
B(LdaGlobal), U8(9), U8(6),
|
||||
B(LdaGlobal), U8(9), U8(2),
|
||||
B(Star), R(17),
|
||||
/* 56 E> */ B(CallUndefinedReceiver0), R(17), U8(4),
|
||||
/* 56 E> */ B(CallUndefinedReceiver0), R(17), U8(0),
|
||||
B(Star), R(15),
|
||||
B(LdaNamedProperty), R(15), U8(10), U8(12),
|
||||
B(LdaNamedProperty), R(15), U8(10), U8(8),
|
||||
B(JumpIfUndefined), U8(17),
|
||||
B(JumpIfNull), U8(15),
|
||||
B(Star), R(16),
|
||||
B(CallProperty0), R(16), R(15), U8(14),
|
||||
B(CallProperty0), R(16), R(15), U8(10),
|
||||
B(JumpIfJSReceiver), U8(23),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
|
||||
B(LdaNamedProperty), R(15), U8(11), U8(8),
|
||||
B(LdaNamedProperty), R(15), U8(11), U8(4),
|
||||
B(Star), R(16),
|
||||
B(CallProperty0), R(16), R(15), U8(10),
|
||||
B(CallProperty0), R(16), R(15), U8(6),
|
||||
B(Star), R(16),
|
||||
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(16), U8(1),
|
||||
B(Star), R(4),
|
||||
@ -631,19 +631,19 @@ bytecodes: [
|
||||
B(CallRuntime), U16(Runtime::kAbort), R(15), U8(1),
|
||||
B(StackCheck),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(2), U8(20),
|
||||
B(TestEqualStrict), R(2), U8(16),
|
||||
B(Mov), R(2), R(15),
|
||||
B(JumpIfTrue), U8(18),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(15), U8(24),
|
||||
B(TestEqualStrict), R(15), U8(20),
|
||||
B(JumpIfTrue), U8(83),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(15), U8(33),
|
||||
B(TestEqualStrict), R(15), U8(29),
|
||||
B(JumpIfTrue), U8(167),
|
||||
B(JumpConstant), U8(24),
|
||||
B(LdaNamedProperty), R(4), U8(18), U8(18),
|
||||
B(LdaNamedProperty), R(4), U8(18), U8(14),
|
||||
B(Star), R(16),
|
||||
B(CallProperty1), R(16), R(4), R(1), U8(16),
|
||||
B(CallProperty1), R(16), R(4), R(1), U8(12),
|
||||
B(Star), R(17),
|
||||
B(Mov), R(9), R(16),
|
||||
B(CallJSRuntime), U8(%async_generator_await_uncaught), R(16), U8(2),
|
||||
@ -667,7 +667,7 @@ bytecodes: [
|
||||
B(Jump), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
|
||||
B(JumpConstant), U8(25),
|
||||
B(LdaNamedProperty), R(4), U8(19), U8(21),
|
||||
B(LdaNamedProperty), R(4), U8(19), U8(17),
|
||||
B(Star), R(3),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(10),
|
||||
@ -702,11 +702,11 @@ bytecodes: [
|
||||
B(Jump), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
|
||||
B(JumpConstant), U8(26),
|
||||
B(LdaNamedProperty), R(4), U8(20), U8(25),
|
||||
B(LdaNamedProperty), R(4), U8(20), U8(21),
|
||||
B(Star), R(5),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(212),
|
||||
B(LdaNamedProperty), R(4), U8(19), U8(28),
|
||||
B(LdaNamedProperty), R(4), U8(19), U8(24),
|
||||
B(Star), R(6),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
@ -714,7 +714,7 @@ bytecodes: [
|
||||
B(LdaZero),
|
||||
B(Star), R(16),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(16), U8(31),
|
||||
B(TestEqualStrict), R(16), U8(27),
|
||||
B(JumpIfFalse), U8(106),
|
||||
B(Ldar), R(6),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -817,10 +817,10 @@ bytecodes: [
|
||||
B(Jump), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
|
||||
B(Jump), U8(2),
|
||||
B(LdaNamedProperty), R(3), U8(27), U8(34),
|
||||
B(LdaNamedProperty), R(3), U8(27), U8(30),
|
||||
B(JumpIfToBooleanFalse), U8(4),
|
||||
B(Jump), U8(57),
|
||||
B(LdaNamedProperty), R(3), U8(28), U8(36),
|
||||
B(LdaNamedProperty), R(3), U8(28), U8(32),
|
||||
B(Star), R(3),
|
||||
B(LdaFalse),
|
||||
B(Star), R(17),
|
||||
@ -839,14 +839,14 @@ bytecodes: [
|
||||
B(Star), R(2),
|
||||
B(Wide), B(JumpLoop), U16(561), I16(0),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(2), U8(38),
|
||||
B(TestEqualStrict), R(2), U8(34),
|
||||
B(JumpIfFalse), U8(13),
|
||||
B(LdaNamedProperty), R(3), U8(28), U8(39),
|
||||
B(LdaNamedProperty), R(3), U8(28), U8(35),
|
||||
B(Star), R(12),
|
||||
B(LdaZero),
|
||||
B(Star), R(11),
|
||||
B(Jump), U8(67),
|
||||
B(LdaNamedProperty), R(3), U8(28), U8(41),
|
||||
B(LdaNamedProperty), R(3), U8(28), U8(37),
|
||||
B(Star), R(8),
|
||||
B(LdaUndefined),
|
||||
B(Star), R(12),
|
||||
|
@ -18,7 +18,7 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 45 S> */ B(JumpIfToBooleanTrue), U8(8),
|
||||
B(LdaZero),
|
||||
/* 56 E> */ B(TestLessThan), R(0), U8(4),
|
||||
/* 56 E> */ B(TestLessThan), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(5),
|
||||
/* 63 S> */ B(LdaSmi), I8(1),
|
||||
/* 72 S> */ B(Return),
|
||||
@ -43,7 +43,7 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 45 S> */ B(JumpIfToBooleanFalse), U8(11),
|
||||
B(LdaZero),
|
||||
/* 56 E> */ B(TestLessThan), R(0), U8(4),
|
||||
/* 56 E> */ B(TestLessThan), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(5),
|
||||
/* 63 S> */ B(LdaSmi), I8(1),
|
||||
/* 72 S> */ B(Return),
|
||||
@ -68,7 +68,7 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 45 S> */ B(JumpIfToBooleanTrue), U8(8),
|
||||
B(LdaZero),
|
||||
/* 57 E> */ B(TestLessThan), R(0), U8(4),
|
||||
/* 57 E> */ B(TestLessThan), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Jump), U8(4),
|
||||
|
@ -69,21 +69,21 @@ bytecodes: [
|
||||
/* 53 S> */ B(LdaSmi), I8(1),
|
||||
B(Star), R(1),
|
||||
/* 65 S> */ B(LdaSmi), I8(10),
|
||||
/* 65 E> */ B(TestLessThan), R(0), U8(4),
|
||||
/* 65 E> */ B(TestLessThan), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(38),
|
||||
/* 56 E> */ B(StackCheck),
|
||||
/* 75 S> */ B(Ldar), R(1),
|
||||
/* 81 E> */ B(MulSmi), I8(12), U8(5),
|
||||
/* 81 E> */ B(MulSmi), I8(12), U8(1),
|
||||
B(Star), R(1),
|
||||
/* 89 S> */ B(Ldar), R(0),
|
||||
/* 95 E> */ B(AddSmi), I8(1), U8(6),
|
||||
/* 95 E> */ B(AddSmi), I8(1), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 102 S> */ B(LdaSmi), I8(3),
|
||||
/* 108 E> */ B(TestEqual), R(0), U8(7),
|
||||
/* 108 E> */ B(TestEqual), R(0), U8(3),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 114 S> */ B(Jump), U8(11),
|
||||
/* 126 S> */ B(LdaSmi), I8(4),
|
||||
/* 132 E> */ B(TestEqual), R(0), U8(8),
|
||||
/* 132 E> */ B(TestEqual), R(0), U8(4),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 138 S> */ B(Jump), U8(5),
|
||||
B(JumpLoop), U8(40), I8(0),
|
||||
@ -117,27 +117,27 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 45 E> */ B(StackCheck),
|
||||
/* 62 S> */ B(LdaZero),
|
||||
/* 68 E> */ B(TestLessThan), R(0), U8(4),
|
||||
/* 68 E> */ B(TestLessThan), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 73 S> */ B(Jump), U8(45),
|
||||
/* 85 S> */ B(LdaSmi), I8(3),
|
||||
/* 91 E> */ B(TestEqual), R(0), U8(5),
|
||||
/* 91 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 97 S> */ B(Jump), U8(39),
|
||||
/* 106 S> */ B(LdaSmi), I8(4),
|
||||
/* 112 E> */ B(TestEqual), R(0), U8(6),
|
||||
/* 112 E> */ B(TestEqual), R(0), U8(2),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 118 S> */ B(Jump), U8(30),
|
||||
/* 127 S> */ B(LdaSmi), I8(10),
|
||||
/* 133 E> */ B(TestEqual), R(0), U8(7),
|
||||
/* 133 E> */ B(TestEqual), R(0), U8(3),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 140 S> */ B(Jump), U8(18),
|
||||
/* 152 S> */ B(LdaSmi), I8(5),
|
||||
/* 158 E> */ B(TestEqual), R(0), U8(8),
|
||||
/* 158 E> */ B(TestEqual), R(0), U8(4),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 164 S> */ B(Jump), U8(12),
|
||||
/* 173 S> */ B(Ldar), R(0),
|
||||
/* 179 E> */ B(AddSmi), I8(1), U8(9),
|
||||
/* 179 E> */ B(AddSmi), I8(1), U8(5),
|
||||
B(Star), R(0),
|
||||
B(JumpLoop), U8(52), I8(0),
|
||||
/* 186 S> */ B(Ldar), R(0),
|
||||
@ -170,19 +170,19 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 45 E> */ B(StackCheck),
|
||||
/* 71 S> */ B(LdaSmi), I8(3),
|
||||
/* 71 E> */ B(TestLessThan), R(0), U8(4),
|
||||
/* 71 E> */ B(TestLessThan), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(22),
|
||||
/* 62 E> */ B(StackCheck),
|
||||
/* 82 S> */ B(LdaSmi), I8(2),
|
||||
/* 88 E> */ B(TestEqual), R(0), U8(5),
|
||||
/* 88 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 94 S> */ B(Jump), U8(12),
|
||||
/* 105 S> */ B(Ldar), R(0),
|
||||
/* 111 E> */ B(AddSmi), I8(1), U8(6),
|
||||
/* 111 E> */ B(AddSmi), I8(1), U8(2),
|
||||
B(Star), R(0),
|
||||
B(JumpLoop), U8(24), I8(1),
|
||||
/* 122 S> */ B(Ldar), R(0),
|
||||
/* 128 E> */ B(AddSmi), I8(1), U8(7),
|
||||
/* 128 E> */ B(AddSmi), I8(1), U8(3),
|
||||
B(Star), R(0),
|
||||
/* 135 S> */ B(Jump), U8(2),
|
||||
/* 144 S> */ B(Ldar), R(0),
|
||||
@ -216,10 +216,10 @@ bytecodes: [
|
||||
B(JumpIfToBooleanFalse), U8(20),
|
||||
/* 57 E> */ B(StackCheck),
|
||||
/* 71 S> */ B(Ldar), R(1),
|
||||
/* 77 E> */ B(MulSmi), I8(12), U8(4),
|
||||
/* 77 E> */ B(MulSmi), I8(12), U8(0),
|
||||
B(Star), R(1),
|
||||
/* 85 S> */ B(Ldar), R(0),
|
||||
/* 91 E> */ B(SubSmi), I8(1), U8(5),
|
||||
/* 91 E> */ B(SubSmi), I8(1), U8(1),
|
||||
B(Star), R(0),
|
||||
B(JumpLoop), U8(19), I8(0),
|
||||
/* 98 S> */ B(Ldar), R(1),
|
||||
@ -252,21 +252,21 @@ bytecodes: [
|
||||
B(Star), R(1),
|
||||
/* 56 E> */ B(StackCheck),
|
||||
/* 63 S> */ B(Ldar), R(1),
|
||||
/* 69 E> */ B(MulSmi), I8(10), U8(4),
|
||||
/* 69 E> */ B(MulSmi), I8(10), U8(0),
|
||||
B(Star), R(1),
|
||||
/* 77 S> */ B(LdaSmi), I8(5),
|
||||
/* 83 E> */ B(TestEqual), R(0), U8(5),
|
||||
/* 83 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 89 S> */ B(Jump), U8(28),
|
||||
/* 98 S> */ B(LdaSmi), I8(6),
|
||||
/* 104 E> */ B(TestEqual), R(0), U8(6),
|
||||
/* 104 E> */ B(TestEqual), R(0), U8(2),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 110 S> */ B(Jump), U8(9),
|
||||
/* 122 S> */ B(Ldar), R(0),
|
||||
/* 128 E> */ B(AddSmi), I8(1), U8(7),
|
||||
/* 128 E> */ B(AddSmi), I8(1), U8(3),
|
||||
B(Star), R(0),
|
||||
/* 144 S> */ B(LdaSmi), I8(10),
|
||||
/* 144 E> */ B(TestLessThan), R(0), U8(8),
|
||||
/* 144 E> */ B(TestLessThan), R(0), U8(4),
|
||||
B(JumpIfFalse), U8(5),
|
||||
B(JumpLoop), U8(40), I8(0),
|
||||
/* 151 S> */ B(Ldar), R(1),
|
||||
@ -298,10 +298,10 @@ bytecodes: [
|
||||
B(Star), R(1),
|
||||
/* 57 E> */ B(StackCheck),
|
||||
/* 64 S> */ B(Ldar), R(1),
|
||||
/* 70 E> */ B(MulSmi), I8(12), U8(4),
|
||||
/* 70 E> */ B(MulSmi), I8(12), U8(0),
|
||||
B(Star), R(1),
|
||||
/* 78 S> */ B(Ldar), R(0),
|
||||
/* 84 E> */ B(SubSmi), I8(1), U8(5),
|
||||
/* 84 E> */ B(SubSmi), I8(1), U8(1),
|
||||
B(Star), R(0),
|
||||
/* 98 S> */ B(JumpIfToBooleanFalse), U8(5),
|
||||
B(JumpLoop), U8(17), I8(0),
|
||||
@ -334,17 +334,17 @@ bytecodes: [
|
||||
/* 53 S> */ B(LdaSmi), I8(1),
|
||||
B(Star), R(1),
|
||||
/* 56 E> */ B(StackCheck),
|
||||
/* 69 S> */ B(MulSmi), I8(10), U8(4),
|
||||
/* 69 S> */ B(MulSmi), I8(10), U8(0),
|
||||
B(Star), R(1),
|
||||
/* 77 S> */ B(LdaSmi), I8(5),
|
||||
/* 83 E> */ B(TestEqual), R(0), U8(5),
|
||||
/* 83 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 89 S> */ B(Jump), U8(18),
|
||||
/* 98 S> */ B(Ldar), R(0),
|
||||
/* 104 E> */ B(AddSmi), I8(1), U8(6),
|
||||
/* 104 E> */ B(AddSmi), I8(1), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 111 S> */ B(LdaSmi), I8(6),
|
||||
/* 117 E> */ B(TestEqual), R(0), U8(7),
|
||||
/* 117 E> */ B(TestEqual), R(0), U8(3),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 123 S> */ B(Jump), U8(2),
|
||||
/* 150 S> */ B(Ldar), R(1),
|
||||
@ -377,17 +377,17 @@ bytecodes: [
|
||||
B(Star), R(1),
|
||||
/* 56 E> */ B(StackCheck),
|
||||
/* 63 S> */ B(Ldar), R(1),
|
||||
/* 69 E> */ B(MulSmi), I8(10), U8(4),
|
||||
/* 69 E> */ B(MulSmi), I8(10), U8(0),
|
||||
B(Star), R(1),
|
||||
/* 77 S> */ B(LdaSmi), I8(5),
|
||||
/* 83 E> */ B(TestEqual), R(0), U8(5),
|
||||
/* 83 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 89 S> */ B(Jump), U8(21),
|
||||
/* 98 S> */ B(Ldar), R(0),
|
||||
/* 104 E> */ B(AddSmi), I8(1), U8(6),
|
||||
/* 104 E> */ B(AddSmi), I8(1), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 111 S> */ B(LdaSmi), I8(6),
|
||||
/* 117 E> */ B(TestEqual), R(0), U8(7),
|
||||
/* 117 E> */ B(TestEqual), R(0), U8(3),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 123 S> */ B(Jump), U8(2),
|
||||
B(JumpLoop), U8(33), I8(0),
|
||||
@ -417,15 +417,15 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 45 E> */ B(StackCheck),
|
||||
/* 58 S> */ B(LdaSmi), I8(1),
|
||||
/* 64 E> */ B(TestEqual), R(0), U8(4),
|
||||
/* 64 E> */ B(TestEqual), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 70 S> */ B(Jump), U8(21),
|
||||
/* 79 S> */ B(LdaSmi), I8(2),
|
||||
/* 85 E> */ B(TestEqual), R(0), U8(5),
|
||||
/* 85 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 91 S> */ B(Jump), U8(9),
|
||||
/* 103 S> */ B(Ldar), R(0),
|
||||
/* 109 E> */ B(AddSmi), I8(1), U8(6),
|
||||
/* 109 E> */ B(AddSmi), I8(1), U8(2),
|
||||
B(Star), R(0),
|
||||
B(JumpLoop), U8(26), I8(0),
|
||||
B(LdaUndefined),
|
||||
@ -453,15 +453,15 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 34 E> */ B(StackCheck),
|
||||
/* 56 S> */ B(LdaSmi), I8(1),
|
||||
/* 62 E> */ B(TestEqual), R(0), U8(4),
|
||||
/* 62 E> */ B(TestEqual), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 68 S> */ B(Jump), U8(21),
|
||||
/* 77 S> */ B(LdaSmi), I8(2),
|
||||
/* 83 E> */ B(TestEqual), R(0), U8(5),
|
||||
/* 83 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 89 S> */ B(Jump), U8(9),
|
||||
/* 101 S> */ B(Ldar), R(0),
|
||||
/* 107 E> */ B(AddSmi), I8(1), U8(6),
|
||||
/* 107 E> */ B(AddSmi), I8(1), U8(2),
|
||||
B(Star), R(0),
|
||||
B(JumpLoop), U8(26), I8(0),
|
||||
B(LdaUndefined),
|
||||
@ -489,15 +489,15 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 45 E> */ B(StackCheck),
|
||||
/* 68 S> */ B(LdaSmi), I8(1),
|
||||
/* 74 E> */ B(TestEqual), R(0), U8(5),
|
||||
/* 74 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 80 S> */ B(Jump), U8(21),
|
||||
/* 89 S> */ B(LdaSmi), I8(2),
|
||||
/* 95 E> */ B(TestEqual), R(0), U8(6),
|
||||
/* 95 E> */ B(TestEqual), R(0), U8(2),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 101 S> */ B(Jump), U8(2),
|
||||
/* 55 S> */ B(Ldar), R(0),
|
||||
/* 59 E> */ B(AddSmi), I8(1), U8(4),
|
||||
/* 59 E> */ B(AddSmi), I8(1), U8(0),
|
||||
B(Star), R(0),
|
||||
B(JumpLoop), U8(26), I8(0),
|
||||
B(LdaUndefined),
|
||||
@ -524,15 +524,15 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 34 E> */ B(StackCheck),
|
||||
/* 66 S> */ B(LdaSmi), I8(1),
|
||||
/* 72 E> */ B(TestEqual), R(0), U8(5),
|
||||
/* 72 E> */ B(TestEqual), R(0), U8(1),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 78 S> */ B(Jump), U8(21),
|
||||
/* 87 S> */ B(LdaSmi), I8(2),
|
||||
/* 93 E> */ B(TestEqual), R(0), U8(6),
|
||||
/* 93 E> */ B(TestEqual), R(0), U8(2),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 99 S> */ B(Jump), U8(2),
|
||||
/* 53 S> */ B(Ldar), R(0),
|
||||
/* 57 E> */ B(AddSmi), I8(1), U8(4),
|
||||
/* 57 E> */ B(AddSmi), I8(1), U8(0),
|
||||
B(Star), R(0),
|
||||
B(JumpLoop), U8(26), I8(0),
|
||||
B(LdaUndefined),
|
||||
@ -561,15 +561,15 @@ bytecodes: [
|
||||
/* 58 S> */ B(LdaZero),
|
||||
B(Star), R(1),
|
||||
/* 63 S> */ B(LdaSmi), I8(100),
|
||||
/* 63 E> */ B(TestLessThan), R(1), U8(4),
|
||||
/* 63 E> */ B(TestLessThan), R(1), U8(0),
|
||||
B(JumpIfFalse), U8(22),
|
||||
/* 45 E> */ B(StackCheck),
|
||||
/* 85 S> */ B(Ldar), R(0),
|
||||
/* 91 E> */ B(AddSmi), I8(1), U8(6),
|
||||
/* 91 E> */ B(AddSmi), I8(1), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 98 S> */ B(Jump), U8(2),
|
||||
/* 72 S> */ B(Ldar), R(1),
|
||||
/* 76 E> */ B(AddSmi), I8(1), U8(5),
|
||||
/* 76 E> */ B(AddSmi), I8(1), U8(1),
|
||||
B(Star), R(1),
|
||||
B(JumpLoop), U8(24), I8(0),
|
||||
B(LdaUndefined),
|
||||
@ -601,10 +601,10 @@ bytecodes: [
|
||||
B(JumpIfToBooleanFalse), U8(19),
|
||||
/* 45 E> */ B(StackCheck),
|
||||
/* 74 S> */ B(Ldar), R(0),
|
||||
/* 80 E> */ B(MulSmi), I8(12), U8(5),
|
||||
/* 80 E> */ B(MulSmi), I8(12), U8(1),
|
||||
B(Star), R(0),
|
||||
/* 67 S> */ B(Ldar), R(1),
|
||||
B(Dec), U8(4),
|
||||
B(Dec), U8(0),
|
||||
B(Star), R(1),
|
||||
B(JumpLoop), U8(18), I8(0),
|
||||
/* 88 S> */ B(Ldar), R(0),
|
||||
@ -660,14 +660,14 @@ bytecodes: [
|
||||
B(Star), R(1),
|
||||
/* 45 E> */ B(StackCheck),
|
||||
/* 76 S> */ B(Ldar), R(0),
|
||||
/* 82 E> */ B(AddSmi), I8(1), U8(5),
|
||||
/* 82 E> */ B(AddSmi), I8(1), U8(1),
|
||||
B(Star), R(0),
|
||||
/* 89 S> */ B(LdaSmi), I8(20),
|
||||
/* 95 E> */ B(TestEqual), R(0), U8(6),
|
||||
/* 95 E> */ B(TestEqual), R(0), U8(2),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 102 S> */ B(Jump), U8(11),
|
||||
/* 69 S> */ B(Ldar), R(1),
|
||||
B(Inc), U8(4),
|
||||
B(Inc), U8(0),
|
||||
B(Star), R(1),
|
||||
B(JumpLoop), U8(23), I8(0),
|
||||
/* 112 S> */ B(Ldar), R(0),
|
||||
@ -705,7 +705,7 @@ bytecodes: [
|
||||
B(PushContext), R(3),
|
||||
B(LdaTheHole),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
B(CreateClosure), U8(1), U8(4), U8(2),
|
||||
B(CreateClosure), U8(1), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 73 S> */ B(LdaSmi), I8(1),
|
||||
/* 73 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
@ -715,7 +715,7 @@ bytecodes: [
|
||||
/* 113 S> */ B(PopContext), R(3),
|
||||
B(Jump), U8(10),
|
||||
/* 126 S> */ B(LdaCurrentContextSlot), U8(4),
|
||||
B(Inc), U8(5),
|
||||
B(Inc), U8(1),
|
||||
/* 127 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
B(PopContext), R(3),
|
||||
B(JumpLoop), U8(43), I8(0),
|
||||
|
@ -22,7 +22,7 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star), R(0),
|
||||
/* 62 S> */ B(AddSmi), I8(1), U8(4),
|
||||
/* 62 S> */ B(AddSmi), I8(1), U8(0),
|
||||
B(Star), R(0),
|
||||
/* 69 S> */ B(Jump), U8(2),
|
||||
/* 97 S> */ B(Ldar), R(0),
|
||||
@ -56,31 +56,31 @@ bytecodes: [
|
||||
/* 71 S> */ B(LdaZero),
|
||||
B(Star), R(1),
|
||||
/* 76 S> */ B(LdaSmi), I8(10),
|
||||
/* 76 E> */ B(TestLessThan), R(1), U8(4),
|
||||
/* 76 E> */ B(TestLessThan), R(1), U8(0),
|
||||
B(JumpIfFalse), U8(54),
|
||||
/* 58 E> */ B(StackCheck),
|
||||
/* 106 S> */ B(LdaZero),
|
||||
B(Star), R(2),
|
||||
/* 111 S> */ B(LdaSmi), I8(3),
|
||||
/* 111 E> */ B(TestLessThan), R(2), U8(6),
|
||||
/* 111 E> */ B(TestLessThan), R(2), U8(2),
|
||||
B(JumpIfFalse), U8(34),
|
||||
/* 93 E> */ B(StackCheck),
|
||||
/* 129 S> */ B(Ldar), R(0),
|
||||
B(Inc), U8(8),
|
||||
B(Inc), U8(4),
|
||||
B(Star), R(0),
|
||||
/* 142 S> */ B(Ldar), R(2),
|
||||
/* 148 E> */ B(Add), R(1), U8(9),
|
||||
/* 148 E> */ B(Add), R(1), U8(5),
|
||||
B(Star), R(3),
|
||||
B(LdaSmi), I8(12),
|
||||
/* 152 E> */ B(TestEqual), R(3), U8(10),
|
||||
/* 152 E> */ B(TestEqual), R(3), U8(6),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 161 S> */ B(Jump), U8(20),
|
||||
/* 118 S> */ B(Ldar), R(2),
|
||||
B(Inc), U8(7),
|
||||
B(Inc), U8(3),
|
||||
B(Star), R(2),
|
||||
B(JumpLoop), U8(36), I8(1),
|
||||
/* 84 S> */ B(Ldar), R(1),
|
||||
B(Inc), U8(5),
|
||||
B(Inc), U8(1),
|
||||
B(Star), R(1),
|
||||
B(JumpLoop), U8(56), I8(0),
|
||||
/* 188 S> */ B(Ldar), R(0),
|
||||
@ -109,7 +109,7 @@ bytecodes: [
|
||||
B(PushContext), R(2),
|
||||
B(LdaTheHole),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
B(CreateClosure), U8(1), U8(4), U8(2),
|
||||
B(CreateClosure), U8(1), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 53 S> */ B(LdaSmi), I8(10),
|
||||
/* 53 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
@ -156,7 +156,7 @@ bytecodes: [
|
||||
B(PushContext), R(3),
|
||||
B(LdaTheHole),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
B(CreateClosure), U8(1), U8(4), U8(2),
|
||||
B(CreateClosure), U8(1), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 76 S> */ B(LdaSmi), I8(2),
|
||||
/* 76 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
|
@ -14,13 +14,13 @@ parameter count: 1
|
||||
bytecode array length: 25
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 34 S> */ B(LdaGlobal), U8(0), U8(6),
|
||||
/* 34 S> */ B(LdaGlobal), U8(0), U8(2),
|
||||
B(Star), R(1),
|
||||
/* 39 E> */ B(LdaNamedProperty), R(1), U8(1), U8(8),
|
||||
/* 39 E> */ B(LdaNamedProperty), R(1), U8(1), U8(4),
|
||||
B(Star), R(0),
|
||||
B(CreateArrayLiteral), U8(2), U8(10), U8(37),
|
||||
B(CreateArrayLiteral), U8(2), U8(6), U8(37),
|
||||
B(Star), R(2),
|
||||
/* 39 E> */ B(CallWithSpread), R(0), R(1), U8(2), U8(4),
|
||||
/* 39 E> */ B(CallWithSpread), R(0), R(1), U8(2), U8(0),
|
||||
B(LdaUndefined),
|
||||
/* 58 S> */ B(Return),
|
||||
]
|
||||
@ -41,15 +41,15 @@ parameter count: 1
|
||||
bytecode array length: 28
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 34 S> */ B(LdaGlobal), U8(0), U8(6),
|
||||
/* 34 S> */ B(LdaGlobal), U8(0), U8(2),
|
||||
B(Star), R(1),
|
||||
/* 39 E> */ B(LdaNamedProperty), R(1), U8(1), U8(8),
|
||||
/* 39 E> */ B(LdaNamedProperty), R(1), U8(1), U8(4),
|
||||
B(Star), R(0),
|
||||
B(LdaZero),
|
||||
B(Star), R(2),
|
||||
B(CreateArrayLiteral), U8(2), U8(10), U8(37),
|
||||
B(CreateArrayLiteral), U8(2), U8(6), U8(37),
|
||||
B(Star), R(3),
|
||||
/* 39 E> */ B(CallWithSpread), R(0), R(1), U8(3), U8(4),
|
||||
/* 39 E> */ B(CallWithSpread), R(0), R(1), U8(3), U8(0),
|
||||
B(LdaUndefined),
|
||||
/* 61 S> */ B(Return),
|
||||
]
|
||||
@ -72,21 +72,21 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 34 S> */ B(LdaUndefined),
|
||||
B(Star), R(1),
|
||||
/* 34 E> */ B(LdaGlobal), U8(0), U8(4),
|
||||
/* 34 E> */ B(LdaGlobal), U8(0), U8(0),
|
||||
B(Star), R(0),
|
||||
B(LdaNamedProperty), R(0), U8(1), U8(6),
|
||||
B(LdaNamedProperty), R(0), U8(1), U8(2),
|
||||
B(Star), R(2),
|
||||
B(LdaUndefined),
|
||||
B(Star), R(4),
|
||||
B(CreateArrayLiteral), U8(2), U8(8), U8(37),
|
||||
B(CreateArrayLiteral), U8(2), U8(4), U8(37),
|
||||
B(Star), R(5),
|
||||
B(LdaUndefined),
|
||||
B(Star), R(6),
|
||||
B(CreateArrayLiteral), U8(3), U8(9), U8(37),
|
||||
B(CreateArrayLiteral), U8(3), U8(5), U8(37),
|
||||
B(Star), R(7),
|
||||
B(CallJSRuntime), U8(%spread_iterable), R(6), U8(2),
|
||||
B(Star), R(6),
|
||||
B(CreateArrayLiteral), U8(4), U8(10), U8(37),
|
||||
B(CreateArrayLiteral), U8(4), U8(6), U8(37),
|
||||
B(Star), R(7),
|
||||
B(CallJSRuntime), U8(%spread_arguments), R(4), U8(4),
|
||||
B(Star), R(4),
|
||||
|
@ -17,9 +17,9 @@ parameter count: 1
|
||||
bytecode array length: 10
|
||||
bytecodes: [
|
||||
/* 27 E> */ B(StackCheck),
|
||||
/* 32 S> */ B(LdaGlobal), U8(0), U8(6),
|
||||
/* 32 S> */ B(LdaGlobal), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 39 E> */ B(CallUndefinedReceiver0), R(0), U8(4),
|
||||
/* 39 E> */ B(CallUndefinedReceiver0), R(0), U8(0),
|
||||
/* 43 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -39,7 +39,7 @@ parameter count: 1
|
||||
bytecode array length: 24
|
||||
bytecodes: [
|
||||
/* 34 E> */ B(StackCheck),
|
||||
/* 39 S> */ B(LdaGlobal), U8(0), U8(6),
|
||||
/* 39 S> */ B(LdaGlobal), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(1),
|
||||
@ -47,7 +47,7 @@ bytecodes: [
|
||||
B(Star), R(2),
|
||||
B(LdaSmi), I8(3),
|
||||
B(Star), R(3),
|
||||
/* 46 E> */ B(CallUndefinedReceiver), R(0), R(1), U8(3), U8(4),
|
||||
/* 46 E> */ B(CallUndefinedReceiver), R(0), R(1), U8(3), U8(0),
|
||||
/* 57 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
@ -22,9 +22,9 @@ bytecodes: [
|
||||
B(Ldar), R(new_target),
|
||||
B(StaCurrentContextSlot), U8(5),
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 34 S> */ B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
/* 34 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
/* 36 E> */ B(StaLookupSlot), U8(1), U8(0),
|
||||
/* 52 S> */ B(LdaLookupGlobalSlot), U8(2), U8(7), U8(1),
|
||||
/* 52 S> */ B(LdaLookupGlobalSlot), U8(2), U8(3), U8(1),
|
||||
B(Star), R(1),
|
||||
B(LdaConstant), U8(3),
|
||||
B(Star), R(2),
|
||||
@ -39,10 +39,10 @@ bytecodes: [
|
||||
B(Mov), R(closure), R(5),
|
||||
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6),
|
||||
B(Star), R(1),
|
||||
/* 52 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(5),
|
||||
/* 62 S> */ B(LdaLookupGlobalSlot), U8(1), U8(11), U8(1),
|
||||
/* 52 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(1),
|
||||
/* 62 S> */ B(LdaLookupGlobalSlot), U8(1), U8(7), U8(1),
|
||||
B(Star), R(1),
|
||||
/* 69 E> */ B(CallUndefinedReceiver0), R(1), U8(9),
|
||||
/* 69 E> */ B(CallUndefinedReceiver0), R(1), U8(5),
|
||||
/* 73 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
@ -17,9 +17,9 @@ parameter count: 1
|
||||
bytecode array length: 12
|
||||
bytecodes: [
|
||||
/* 45 E> */ B(StackCheck),
|
||||
/* 50 S> */ B(LdaGlobal), U8(0), U8(6),
|
||||
/* 50 S> */ B(LdaGlobal), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 57 E> */ B(Construct), R(0), R(0), U8(0), U8(4),
|
||||
/* 57 E> */ B(Construct), R(0), R(0), U8(0), U8(0),
|
||||
/* 67 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -39,12 +39,12 @@ parameter count: 1
|
||||
bytecode array length: 18
|
||||
bytecodes: [
|
||||
/* 58 E> */ B(StackCheck),
|
||||
/* 63 S> */ B(LdaGlobal), U8(0), U8(6),
|
||||
/* 63 S> */ B(LdaGlobal), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
B(LdaSmi), I8(3),
|
||||
B(Star), R(1),
|
||||
B(Ldar), R(0),
|
||||
/* 70 E> */ B(Construct), R(0), R(1), U8(1), U8(4),
|
||||
/* 70 E> */ B(Construct), R(0), R(1), U8(1), U8(0),
|
||||
/* 81 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -69,7 +69,7 @@ parameter count: 1
|
||||
bytecode array length: 26
|
||||
bytecodes: [
|
||||
/* 100 E> */ B(StackCheck),
|
||||
/* 105 S> */ B(LdaGlobal), U8(0), U8(6),
|
||||
/* 105 S> */ B(LdaGlobal), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
B(LdaSmi), I8(3),
|
||||
B(Star), R(1),
|
||||
@ -78,7 +78,7 @@ bytecodes: [
|
||||
B(LdaSmi), I8(5),
|
||||
B(Star), R(3),
|
||||
B(Ldar), R(0),
|
||||
/* 112 E> */ B(Construct), R(0), R(1), U8(3), U8(4),
|
||||
/* 112 E> */ B(Construct), R(0), R(1), U8(3), U8(0),
|
||||
/* 129 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
@ -77,7 +77,7 @@ bytecodes: [
|
||||
/* 10 E> */ B(StackCheck),
|
||||
/* 15 S> */ B(LdaUndefined),
|
||||
B(Star), R(0),
|
||||
B(CreateArrayLiteral), U8(0), U8(4), U8(37),
|
||||
B(CreateArrayLiteral), U8(0), U8(0), U8(37),
|
||||
B(Star), R(1),
|
||||
B(CallJSRuntime), U8(%spread_iterable), R(0), U8(2),
|
||||
/* 43 S> */ B(Return),
|
||||
|
@ -27,15 +27,15 @@ bytecodes: [
|
||||
B(Mov), R(closure), R(0),
|
||||
/* 99 E> */ B(StackCheck),
|
||||
/* 104 S> */ B(LdaConstant), U8(0),
|
||||
/* 111 E> */ B(LdaKeyedProperty), R(closure), U8(6),
|
||||
/* 111 E> */ B(LdaKeyedProperty), R(closure), U8(2),
|
||||
B(Star), R(4),
|
||||
B(LdaConstant), U8(1),
|
||||
B(Star), R(5),
|
||||
B(Mov), R(this), R(3),
|
||||
/* 117 E> */ B(CallRuntime), U16(Runtime::kLoadFromSuper), R(3), U8(3),
|
||||
B(Star), R(1),
|
||||
/* 117 E> */ B(CallAnyReceiver), R(1), R(this), U8(1), U8(4),
|
||||
/* 126 E> */ B(AddSmi), I8(1), U8(10),
|
||||
/* 117 E> */ B(CallAnyReceiver), R(1), R(this), U8(1), U8(0),
|
||||
/* 126 E> */ B(AddSmi), I8(1), U8(6),
|
||||
/* 130 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -67,7 +67,7 @@ bytecodes: [
|
||||
B(Mov), R(closure), R(0),
|
||||
/* 125 E> */ B(StackCheck),
|
||||
/* 130 S> */ B(LdaConstant), U8(0),
|
||||
/* 130 E> */ B(LdaKeyedProperty), R(closure), U8(4),
|
||||
/* 130 E> */ B(LdaKeyedProperty), R(closure), U8(0),
|
||||
B(Star), R(2),
|
||||
B(LdaConstant), U8(1),
|
||||
B(Star), R(3),
|
||||
@ -76,7 +76,7 @@ bytecodes: [
|
||||
B(Mov), R(this), R(1),
|
||||
/* 138 E> */ B(CallRuntime), U16(Runtime::kStoreToSuper_Strict), R(1), U8(4),
|
||||
/* 143 S> */ B(LdaConstant), U8(0),
|
||||
/* 150 E> */ B(LdaKeyedProperty), R(closure), U8(6),
|
||||
/* 150 E> */ B(LdaKeyedProperty), R(closure), U8(2),
|
||||
B(Star), R(2),
|
||||
B(LdaConstant), U8(1),
|
||||
B(Star), R(3),
|
||||
@ -117,7 +117,7 @@ bytecodes: [
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(3),
|
||||
B(Ldar), R(0),
|
||||
/* 118 E> */ B(Construct), R(2), R(3), U8(1), U8(4),
|
||||
/* 118 E> */ B(Construct), R(2), R(3), U8(1), U8(0),
|
||||
B(Star), R(2),
|
||||
B(Ldar), R(this),
|
||||
/* 118 E> */ B(ThrowSuperAlreadyCalledIfNotHole),
|
||||
@ -125,7 +125,7 @@ bytecodes: [
|
||||
/* 128 S> */ B(Ldar), R(this),
|
||||
B(ThrowSuperNotCalledIfHole),
|
||||
B(LdaSmi), I8(2),
|
||||
/* 136 E> */ B(StaNamedPropertyStrict), R(2), U8(0), U8(6),
|
||||
/* 136 E> */ B(StaNamedPropertyStrict), R(2), U8(0), U8(2),
|
||||
B(Ldar), R(this),
|
||||
B(ThrowSuperNotCalledIfHole),
|
||||
/* 141 S> */ B(Return),
|
||||
@ -160,7 +160,7 @@ bytecodes: [
|
||||
/* 117 S> */ B(Ldar), R(1),
|
||||
B(GetSuperConstructor), R(2),
|
||||
B(Ldar), R(0),
|
||||
/* 117 E> */ B(Construct), R(2), R(0), U8(0), U8(4),
|
||||
/* 117 E> */ B(Construct), R(2), R(0), U8(0), U8(0),
|
||||
B(Star), R(2),
|
||||
B(Ldar), R(this),
|
||||
/* 117 E> */ B(ThrowSuperAlreadyCalledIfNotHole),
|
||||
@ -168,7 +168,7 @@ bytecodes: [
|
||||
/* 126 S> */ B(Ldar), R(this),
|
||||
B(ThrowSuperNotCalledIfHole),
|
||||
B(LdaSmi), I8(2),
|
||||
/* 134 E> */ B(StaNamedPropertyStrict), R(2), U8(0), U8(6),
|
||||
/* 134 E> */ B(StaNamedPropertyStrict), R(2), U8(0), U8(2),
|
||||
B(Ldar), R(this),
|
||||
B(ThrowSuperNotCalledIfHole),
|
||||
/* 139 S> */ B(Return),
|
||||
|
@ -17,7 +17,7 @@ parameter count: 1
|
||||
bytecode array length: 67
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(2),
|
||||
B(LdaTheHole),
|
||||
B(Star), R(3),
|
||||
@ -30,12 +30,12 @@ bytecodes: [
|
||||
B(Star), R(3),
|
||||
B(LdaConstant), U8(1),
|
||||
B(Star), R(5),
|
||||
B(CreateClosure), U8(2), U8(5), U8(2),
|
||||
B(CreateClosure), U8(2), U8(1), U8(2),
|
||||
B(Star), R(6),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(7),
|
||||
B(Ldar), R(6),
|
||||
B(StaDataPropertyInLiteral), R(3), R(5), U8(1), U8(6),
|
||||
B(StaDataPropertyInLiteral), R(3), R(5), U8(1), U8(2),
|
||||
B(CallRuntime), U16(Runtime::kInstallClassNameAccessor), R(2), U8(1),
|
||||
B(CallRuntime), U16(Runtime::kToFastProperties), R(2), U8(1),
|
||||
B(Star), R(0),
|
||||
@ -63,7 +63,7 @@ parameter count: 1
|
||||
bytecode array length: 67
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(2),
|
||||
B(LdaTheHole),
|
||||
B(Star), R(3),
|
||||
@ -76,12 +76,12 @@ bytecodes: [
|
||||
B(Star), R(3),
|
||||
B(LdaConstant), U8(1),
|
||||
B(Star), R(5),
|
||||
B(CreateClosure), U8(2), U8(5), U8(2),
|
||||
B(CreateClosure), U8(2), U8(1), U8(2),
|
||||
B(Star), R(6),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(7),
|
||||
B(Ldar), R(6),
|
||||
B(StaDataPropertyInLiteral), R(3), R(5), U8(1), U8(6),
|
||||
B(StaDataPropertyInLiteral), R(3), R(5), U8(1), U8(2),
|
||||
B(CallRuntime), U16(Runtime::kInstallClassNameAccessor), R(2), U8(1),
|
||||
B(CallRuntime), U16(Runtime::kToFastProperties), R(2), U8(1),
|
||||
B(Star), R(0),
|
||||
@ -117,7 +117,7 @@ bytecodes: [
|
||||
/* 43 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
/* 57 S> */ B(LdaConstant), U8(1),
|
||||
/* 57 E> */ B(StaCurrentContextSlot), U8(5),
|
||||
B(CreateClosure), U8(2), U8(4), U8(2),
|
||||
B(CreateClosure), U8(2), U8(0), U8(2),
|
||||
B(Star), R(3),
|
||||
B(LdaTheHole),
|
||||
B(Star), R(4),
|
||||
@ -130,12 +130,12 @@ bytecodes: [
|
||||
B(Star), R(4),
|
||||
B(LdaImmutableCurrentContextSlot), U8(4),
|
||||
/* 75 E> */ B(ToName), R(6),
|
||||
B(CreateClosure), U8(3), U8(5), U8(2),
|
||||
B(CreateClosure), U8(3), U8(1), U8(2),
|
||||
B(Star), R(7),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(8),
|
||||
B(Ldar), R(7),
|
||||
B(StaDataPropertyInLiteral), R(4), R(6), U8(3), U8(7),
|
||||
B(StaDataPropertyInLiteral), R(4), R(6), U8(3), U8(3),
|
||||
B(LdaImmutableCurrentContextSlot), U8(5),
|
||||
/* 106 E> */ B(ToName), R(6),
|
||||
B(LdaConstant), U8(4),
|
||||
@ -143,8 +143,8 @@ bytecodes: [
|
||||
B(Mov), R(3), R(5),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
|
||||
B(CreateClosure), U8(5), U8(6), U8(2),
|
||||
B(StaDataPropertyInLiteral), R(5), R(6), U8(3), U8(9),
|
||||
B(CreateClosure), U8(5), U8(2), U8(2),
|
||||
B(StaDataPropertyInLiteral), R(5), R(6), U8(3), U8(5),
|
||||
B(CallRuntime), U16(Runtime::kInstallClassNameAccessorWithCheck), R(3), U8(1),
|
||||
B(CallRuntime), U16(Runtime::kToFastProperties), R(3), U8(1),
|
||||
B(Star), R(0),
|
||||
@ -178,7 +178,7 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 46 S> */ B(LdaZero),
|
||||
/* 46 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(3),
|
||||
B(LdaTheHole),
|
||||
B(Star), R(4),
|
||||
@ -193,7 +193,7 @@ bytecodes: [
|
||||
B(CallRuntime), U16(Runtime::kToFastProperties), R(3), U8(1),
|
||||
B(Star), R(0),
|
||||
B(Star), R(1),
|
||||
/* 94 S> */ B(Construct), R(1), R(0), U8(0), U8(5),
|
||||
/* 94 S> */ B(Construct), R(1), R(0), U8(0), U8(1),
|
||||
/* 102 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -212,7 +212,7 @@ parameter count: 1
|
||||
bytecode array length: 92
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 34 S> */ B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
/* 34 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(2),
|
||||
B(LdaTheHole),
|
||||
B(Star), R(3),
|
||||
@ -224,7 +224,7 @@ bytecodes: [
|
||||
B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(4),
|
||||
B(Star), R(3),
|
||||
B(CallRuntime), U16(Runtime::kToFastProperties), R(2), U8(1),
|
||||
B(CreateClosure), U8(1), U8(5), U8(2),
|
||||
B(CreateClosure), U8(1), U8(1), U8(2),
|
||||
B(Star), R(2),
|
||||
B(LdaTheHole),
|
||||
B(Star), R(3),
|
||||
@ -237,12 +237,12 @@ bytecodes: [
|
||||
B(Star), R(3),
|
||||
B(LdaConstant), U8(2),
|
||||
B(Star), R(5),
|
||||
B(CreateClosure), U8(3), U8(6), U8(2),
|
||||
B(CreateClosure), U8(3), U8(2), U8(2),
|
||||
B(Star), R(6),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(7),
|
||||
B(Ldar), R(6),
|
||||
B(StaDataPropertyInLiteral), R(4), R(5), U8(1), U8(7),
|
||||
B(StaDataPropertyInLiteral), R(4), R(5), U8(1), U8(3),
|
||||
B(CallRuntime), U16(Runtime::kToFastProperties), R(2), U8(1),
|
||||
B(Star), R(0),
|
||||
B(Star), R(1),
|
||||
|
@ -276,7 +276,7 @@ bytecodes: [
|
||||
B(JumpIfUndefined), U8(12),
|
||||
/* 64 E> */ B(StackCheck),
|
||||
/* 92 S> */ B(Ldar), R(1),
|
||||
B(Inc), U8(7),
|
||||
B(Inc), U8(3),
|
||||
B(Star), R(1),
|
||||
B(JumpLoop), U8(11), I8(0),
|
||||
B(LdaUndefined),
|
||||
|
@ -16,7 +16,7 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(1),
|
||||
B(Star), R(0),
|
||||
/* 45 S> */ B(AddSmi), I8(2), U8(4),
|
||||
/* 45 S> */ B(AddSmi), I8(2), U8(0),
|
||||
B(Star), R(0),
|
||||
B(LdaUndefined),
|
||||
/* 53 S> */ B(Return),
|
||||
@ -37,7 +37,7 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(1),
|
||||
B(Star), R(0),
|
||||
/* 45 S> */ B(DivSmi), I8(2), U8(4),
|
||||
/* 45 S> */ B(DivSmi), I8(2), U8(0),
|
||||
B(Star), R(0),
|
||||
B(LdaUndefined),
|
||||
/* 53 S> */ B(Return),
|
||||
@ -56,11 +56,11 @@ parameter count: 1
|
||||
bytecode array length: 22
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(1),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(1),
|
||||
B(Mov), R(1), R(0),
|
||||
/* 54 S> */ B(LdaNamedProperty), R(1), U8(1), U8(5),
|
||||
B(MulSmi), I8(2), U8(7),
|
||||
/* 61 E> */ B(StaNamedPropertySloppy), R(1), U8(1), U8(8),
|
||||
/* 54 S> */ B(LdaNamedProperty), R(1), U8(1), U8(1),
|
||||
B(MulSmi), I8(2), U8(3),
|
||||
/* 61 E> */ B(StaNamedPropertySloppy), R(1), U8(1), U8(4),
|
||||
B(LdaUndefined),
|
||||
/* 67 S> */ B(Return),
|
||||
]
|
||||
@ -80,13 +80,13 @@ parameter count: 1
|
||||
bytecode array length: 25
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(1),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(1),
|
||||
B(Mov), R(1), R(0),
|
||||
/* 52 S> */ B(LdaSmi), I8(1),
|
||||
B(Star), R(2),
|
||||
B(LdaKeyedProperty), R(1), U8(5),
|
||||
B(BitwiseXorSmi), I8(2), U8(7),
|
||||
/* 57 E> */ B(StaKeyedPropertySloppy), R(1), R(2), U8(8),
|
||||
B(LdaKeyedProperty), R(1), U8(1),
|
||||
B(BitwiseXorSmi), I8(2), U8(3),
|
||||
/* 57 E> */ B(StaKeyedPropertySloppy), R(1), R(2), U8(4),
|
||||
B(LdaUndefined),
|
||||
/* 63 S> */ B(Return),
|
||||
]
|
||||
@ -109,9 +109,9 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(1),
|
||||
/* 42 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
/* 45 S> */ B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
/* 45 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
/* 75 S> */ B(LdaCurrentContextSlot), U8(4),
|
||||
B(BitwiseOrSmi), I8(24), U8(5),
|
||||
B(BitwiseOrSmi), I8(24), U8(1),
|
||||
/* 77 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
B(LdaUndefined),
|
||||
/* 84 S> */ B(Return),
|
||||
|
@ -51,7 +51,7 @@ bytecodes: [
|
||||
/* 34 S> */ B(LdaZero),
|
||||
B(Star), R(0),
|
||||
B(LdaSmi), I8(1),
|
||||
/* 43 E> */ B(TestLessThan), R(0), U8(4),
|
||||
/* 43 E> */ B(TestLessThan), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Jump), U8(4),
|
||||
|
@ -17,7 +17,7 @@ bytecodes: [
|
||||
B(PushContext), R(1),
|
||||
B(LdaTheHole),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 44 S> */ B(LdaSmi), I8(10),
|
||||
@ -43,7 +43,7 @@ bytecodes: [
|
||||
B(PushContext), R(1),
|
||||
B(LdaTheHole),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 44 S> */ B(LdaSmi), I8(10),
|
||||
@ -69,7 +69,7 @@ bytecodes: [
|
||||
B(PushContext), R(1),
|
||||
B(LdaTheHole),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 44 S> */ B(LdaSmi), I8(20),
|
||||
@ -100,7 +100,7 @@ bytecodes: [
|
||||
B(PushContext), R(1),
|
||||
B(LdaTheHole),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 44 S> */ B(LdaSmi), I8(10),
|
||||
|
@ -20,7 +20,7 @@ bytecodes: [
|
||||
B(Ldar), R(arg0),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
/* 10 E> */ B(StackCheck),
|
||||
/* 19 S> */ B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
/* 19 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
/* 51 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -43,7 +43,7 @@ bytecodes: [
|
||||
B(Ldar), R(arg0),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
/* 10 E> */ B(StackCheck),
|
||||
/* 27 S> */ B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
/* 27 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 53 S> */ B(LdaCurrentContextSlot), U8(4),
|
||||
/* 65 S> */ B(Return),
|
||||
@ -70,7 +70,7 @@ bytecodes: [
|
||||
B(Ldar), R(arg2),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
/* 10 E> */ B(StackCheck),
|
||||
/* 29 S> */ B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
/* 29 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
/* 60 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -93,7 +93,7 @@ bytecodes: [
|
||||
/* 10 E> */ B(StackCheck),
|
||||
/* 26 S> */ B(Ldar), R(this),
|
||||
/* 26 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
/* 32 S> */ B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
/* 32 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
/* 64 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
@ -16,7 +16,7 @@ bytecodes: [
|
||||
B(CreateFunctionContext), U8(1),
|
||||
B(PushContext), R(0),
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 41 S> */ B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
/* 41 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
/* 70 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -38,7 +38,7 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(1),
|
||||
/* 42 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
/* 45 S> */ B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
/* 45 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
/* 74 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -62,7 +62,7 @@ bytecodes: [
|
||||
/* 42 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
/* 53 S> */ B(LdaSmi), I8(2),
|
||||
/* 53 E> */ B(StaCurrentContextSlot), U8(5),
|
||||
/* 56 S> */ B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
/* 56 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
/* 91 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -82,9 +82,9 @@ bytecodes: [
|
||||
B(CreateFunctionContext), U8(1),
|
||||
B(PushContext), R(0),
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 41 S> */ B(CreateClosure), U8(0), U8(6), U8(2),
|
||||
/* 41 S> */ B(CreateClosure), U8(0), U8(2), U8(2),
|
||||
B(Star), R(1),
|
||||
/* 64 E> */ B(CallUndefinedReceiver0), R(1), U8(4),
|
||||
/* 64 E> */ B(CallUndefinedReceiver0), R(1), U8(0),
|
||||
/* 68 S> */ B(LdaCurrentContextSlot), U8(4),
|
||||
/* 77 S> */ B(Return),
|
||||
]
|
||||
@ -118,7 +118,7 @@ bytecodes: [
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
/* 69 S> */ B(LdaSmi), I8(2),
|
||||
/* 69 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
/* 72 S> */ B(CreateClosure), U8(1), U8(4), U8(2),
|
||||
/* 72 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
|
||||
/* 101 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -898,9 +898,9 @@ bytecodes: [
|
||||
/* 3421 E> */ B(StaCurrentContextSlot), U8(254),
|
||||
/* 3435 S> */ B(LdaZero),
|
||||
/* 3435 E> */ B(StaCurrentContextSlot), U8(255),
|
||||
/* 3438 S> */ B(LdaGlobal), U8(0), U8(6),
|
||||
/* 3438 S> */ B(LdaGlobal), U8(0), U8(2),
|
||||
B(Star), R(1),
|
||||
/* 3438 E> */ B(CallUndefinedReceiver0), R(1), U8(4),
|
||||
/* 3438 E> */ B(CallUndefinedReceiver0), R(1), U8(0),
|
||||
/* 3454 S> */ B(LdaSmi), I8(100),
|
||||
/* 3454 E> */ B(Wide), B(StaCurrentContextSlot), U16(256),
|
||||
/* 3459 S> */ B(Wide), B(LdaCurrentContextSlot), U16(256),
|
||||
|
@ -16,7 +16,7 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(1),
|
||||
B(Star), R(0),
|
||||
/* 45 S> */ B(Inc), U8(4),
|
||||
/* 45 S> */ B(Inc), U8(0),
|
||||
B(Star), R(0),
|
||||
/* 56 S> */ B(Return),
|
||||
]
|
||||
@ -36,9 +36,9 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(1),
|
||||
B(Star), R(0),
|
||||
/* 45 S> */ B(ToNumber), R(1), U8(4),
|
||||
/* 45 S> */ B(ToNumber), R(1), U8(0),
|
||||
B(Ldar), R(1),
|
||||
B(Inc), U8(4),
|
||||
B(Inc), U8(0),
|
||||
B(Star), R(0),
|
||||
B(Ldar), R(1),
|
||||
/* 56 S> */ B(Return),
|
||||
@ -59,7 +59,7 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(1),
|
||||
B(Star), R(0),
|
||||
/* 45 S> */ B(Dec), U8(4),
|
||||
/* 45 S> */ B(Dec), U8(0),
|
||||
B(Star), R(0),
|
||||
/* 56 S> */ B(Return),
|
||||
]
|
||||
@ -79,9 +79,9 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(1),
|
||||
B(Star), R(0),
|
||||
/* 45 S> */ B(ToNumber), R(1), U8(4),
|
||||
/* 45 S> */ B(ToNumber), R(1), U8(0),
|
||||
B(Ldar), R(1),
|
||||
B(Dec), U8(4),
|
||||
B(Dec), U8(0),
|
||||
B(Star), R(0),
|
||||
B(Ldar), R(1),
|
||||
/* 56 S> */ B(Return),
|
||||
@ -100,13 +100,13 @@ parameter count: 1
|
||||
bytecode array length: 27
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(1),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(1),
|
||||
B(Mov), R(1), R(0),
|
||||
/* 54 S> */ B(LdaNamedProperty), R(1), U8(1), U8(5),
|
||||
B(ToNumber), R(2), U8(9),
|
||||
/* 54 S> */ B(LdaNamedProperty), R(1), U8(1), U8(1),
|
||||
B(ToNumber), R(2), U8(5),
|
||||
B(Ldar), R(2),
|
||||
B(Inc), U8(9),
|
||||
/* 66 E> */ B(StaNamedPropertySloppy), R(1), U8(1), U8(7),
|
||||
B(Inc), U8(5),
|
||||
/* 66 E> */ B(StaNamedPropertySloppy), R(1), U8(1), U8(3),
|
||||
B(Ldar), R(2),
|
||||
/* 69 S> */ B(Return),
|
||||
]
|
||||
@ -126,11 +126,11 @@ parameter count: 1
|
||||
bytecode array length: 20
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(1),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(1),
|
||||
B(Mov), R(1), R(0),
|
||||
/* 54 S> */ B(LdaNamedProperty), R(1), U8(1), U8(5),
|
||||
B(Dec), U8(9),
|
||||
/* 65 E> */ B(StaNamedPropertySloppy), R(1), U8(1), U8(7),
|
||||
/* 54 S> */ B(LdaNamedProperty), R(1), U8(1), U8(1),
|
||||
B(Dec), U8(5),
|
||||
/* 65 E> */ B(StaNamedPropertySloppy), R(1), U8(1), U8(3),
|
||||
/* 69 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -151,14 +151,14 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 45 S> */ B(LdaConstant), U8(0),
|
||||
B(Star), R(0),
|
||||
/* 60 S> */ B(CreateObjectLiteral), U8(1), U8(4), U8(41), R(2),
|
||||
/* 60 S> */ B(CreateObjectLiteral), U8(1), U8(0), U8(41), R(2),
|
||||
B(Mov), R(2), R(1),
|
||||
/* 72 S> */ B(Ldar), R(0),
|
||||
/* 81 E> */ B(LdaKeyedProperty), R(2), U8(5),
|
||||
B(ToNumber), R(4), U8(9),
|
||||
/* 81 E> */ B(LdaKeyedProperty), R(2), U8(1),
|
||||
B(ToNumber), R(4), U8(5),
|
||||
B(Ldar), R(4),
|
||||
B(Dec), U8(9),
|
||||
/* 86 E> */ B(StaKeyedPropertySloppy), R(2), R(0), U8(7),
|
||||
B(Dec), U8(5),
|
||||
/* 86 E> */ B(StaKeyedPropertySloppy), R(2), R(0), U8(3),
|
||||
B(Ldar), R(4),
|
||||
/* 89 S> */ B(Return),
|
||||
]
|
||||
@ -180,12 +180,12 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 45 S> */ B(LdaConstant), U8(0),
|
||||
B(Star), R(0),
|
||||
/* 60 S> */ B(CreateObjectLiteral), U8(1), U8(4), U8(41), R(2),
|
||||
/* 60 S> */ B(CreateObjectLiteral), U8(1), U8(0), U8(41), R(2),
|
||||
B(Mov), R(2), R(1),
|
||||
/* 72 S> */ B(Ldar), R(0),
|
||||
/* 83 E> */ B(LdaKeyedProperty), R(2), U8(5),
|
||||
B(Inc), U8(9),
|
||||
/* 87 E> */ B(StaKeyedPropertySloppy), R(2), R(0), U8(7),
|
||||
/* 83 E> */ B(LdaKeyedProperty), R(2), U8(1),
|
||||
B(Inc), U8(5),
|
||||
/* 87 E> */ B(StaKeyedPropertySloppy), R(2), R(0), U8(3),
|
||||
/* 89 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -208,10 +208,10 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(1),
|
||||
/* 42 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
/* 53 S> */ B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
/* 53 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 78 S> */ B(LdaCurrentContextSlot), U8(4),
|
||||
B(Inc), U8(5),
|
||||
B(Inc), U8(1),
|
||||
/* 87 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
/* 89 S> */ B(Return),
|
||||
]
|
||||
@ -234,12 +234,12 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(1),
|
||||
/* 42 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
/* 53 S> */ B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
/* 53 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 78 S> */ B(LdaCurrentContextSlot), U8(4),
|
||||
B(ToNumber), R(2), U8(5),
|
||||
B(ToNumber), R(2), U8(1),
|
||||
B(Ldar), R(2),
|
||||
B(Dec), U8(5),
|
||||
B(Dec), U8(1),
|
||||
/* 86 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
B(Ldar), R(2),
|
||||
/* 89 S> */ B(Return),
|
||||
@ -261,15 +261,15 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 44 S> */ B(LdaSmi), I8(1),
|
||||
B(Star), R(0),
|
||||
/* 55 S> */ B(CreateArrayLiteral), U8(0), U8(4), U8(37),
|
||||
/* 55 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
|
||||
B(Star), R(1),
|
||||
/* 63 S> */ B(Ldar), R(0),
|
||||
B(ToNumber), R(3), U8(5),
|
||||
B(ToNumber), R(3), U8(1),
|
||||
B(Ldar), R(3),
|
||||
B(Inc), U8(5),
|
||||
B(Inc), U8(1),
|
||||
B(Star), R(0),
|
||||
B(LdaSmi), I8(2),
|
||||
/* 79 E> */ B(StaKeyedPropertySloppy), R(1), R(3), U8(6),
|
||||
/* 79 E> */ B(StaKeyedPropertySloppy), R(1), R(3), U8(2),
|
||||
/* 83 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
@ -38,7 +38,7 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 10 E> */ B(StackCheck),
|
||||
/* 15 S> */ B(LdaZero),
|
||||
/* 31 E> */ B(LdaKeyedProperty), R(0), U8(4),
|
||||
/* 31 E> */ B(LdaKeyedProperty), R(0), U8(0),
|
||||
/* 35 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -82,7 +82,7 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 10 E> */ B(StackCheck),
|
||||
/* 16 S> */ B(LdaZero),
|
||||
/* 32 E> */ B(LdaKeyedProperty), R(0), U8(4),
|
||||
/* 32 E> */ B(LdaKeyedProperty), R(0), U8(0),
|
||||
/* 36 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
@ -63,7 +63,7 @@ bytecodes: [
|
||||
B(Mov), R(arg0), R(1),
|
||||
B(Mov), R(0), R(2),
|
||||
/* 29 S> */ B(LdaZero),
|
||||
/* 44 E> */ B(LdaKeyedProperty), R(2), U8(4),
|
||||
/* 44 E> */ B(LdaKeyedProperty), R(2), U8(0),
|
||||
/* 48 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -88,11 +88,11 @@ bytecodes: [
|
||||
B(Mov), R(arg0), R(1),
|
||||
B(Mov), R(0), R(2),
|
||||
/* 29 S> */ B(LdaZero),
|
||||
/* 44 E> */ B(LdaKeyedProperty), R(2), U8(4),
|
||||
/* 44 E> */ B(LdaKeyedProperty), R(2), U8(0),
|
||||
B(Star), R(4),
|
||||
B(LdaZero),
|
||||
/* 59 E> */ B(LdaKeyedProperty), R(3), U8(6),
|
||||
/* 48 E> */ B(Add), R(4), U8(8),
|
||||
/* 59 E> */ B(LdaKeyedProperty), R(3), U8(2),
|
||||
/* 48 E> */ B(Add), R(4), U8(4),
|
||||
/* 63 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
@ -22,7 +22,7 @@ bytecodes: [
|
||||
B(CallRuntime), U16(Runtime::kDeclareGlobalsForInterpreter), R(1), U8(3),
|
||||
/* 0 E> */ B(StackCheck),
|
||||
/* 8 S> */ B(LdaSmi), I8(1),
|
||||
/* 8 E> */ B(StaGlobalSloppy), U8(1), U8(6),
|
||||
/* 8 E> */ B(StaGlobalSloppy), U8(1), U8(2),
|
||||
B(LdaUndefined),
|
||||
/* 10 S> */ B(Return),
|
||||
]
|
||||
@ -74,9 +74,9 @@ bytecodes: [
|
||||
B(CallRuntime), U16(Runtime::kDeclareGlobalsForInterpreter), R(1), U8(3),
|
||||
/* 0 E> */ B(StackCheck),
|
||||
/* 8 S> */ B(LdaSmi), I8(1),
|
||||
/* 8 E> */ B(StaGlobalSloppy), U8(1), U8(6),
|
||||
/* 8 E> */ B(StaGlobalSloppy), U8(1), U8(2),
|
||||
/* 11 S> */ B(LdaSmi), I8(2),
|
||||
/* 12 E> */ B(StaGlobalSloppy), U8(1), U8(8),
|
||||
/* 12 E> */ B(StaGlobalSloppy), U8(1), U8(4),
|
||||
B(Star), R(0),
|
||||
/* 15 S> */ B(Return),
|
||||
]
|
||||
@ -103,9 +103,9 @@ bytecodes: [
|
||||
B(Mov), R(closure), R(3),
|
||||
B(CallRuntime), U16(Runtime::kDeclareGlobalsForInterpreter), R(1), U8(3),
|
||||
/* 0 E> */ B(StackCheck),
|
||||
/* 16 S> */ B(LdaGlobal), U8(1), U8(4),
|
||||
/* 16 S> */ B(LdaGlobal), U8(1), U8(0),
|
||||
B(Star), R(1),
|
||||
/* 16 E> */ B(CallUndefinedReceiver0), R(1), U8(7),
|
||||
/* 16 E> */ B(CallUndefinedReceiver0), R(1), U8(3),
|
||||
B(Star), R(0),
|
||||
/* 20 S> */ B(Return),
|
||||
]
|
||||
|
@ -14,7 +14,7 @@ parameter count: 1
|
||||
bytecode array length: 14
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(1),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(1),
|
||||
B(Mov), R(1), R(0),
|
||||
/* 56 S> */ B(LdaConstant), U8(1),
|
||||
B(DeletePropertySloppy), R(1),
|
||||
@ -36,7 +36,7 @@ parameter count: 1
|
||||
bytecode array length: 14
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 56 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(1),
|
||||
/* 56 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(1),
|
||||
B(Mov), R(1), R(0),
|
||||
/* 70 S> */ B(LdaConstant), U8(1),
|
||||
B(DeletePropertyStrict), R(1),
|
||||
@ -58,7 +58,7 @@ parameter count: 1
|
||||
bytecode array length: 14
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(1),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(1),
|
||||
B(Mov), R(1), R(0),
|
||||
/* 56 S> */ B(LdaSmi), I8(2),
|
||||
B(DeletePropertySloppy), R(1),
|
||||
@ -103,10 +103,10 @@ bytecodes: [
|
||||
B(CreateFunctionContext), U8(1),
|
||||
B(PushContext), R(0),
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 56 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(1),
|
||||
/* 56 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(1),
|
||||
B(Ldar), R(1),
|
||||
/* 56 E> */ B(StaCurrentContextSlot), U8(4),
|
||||
/* 64 S> */ B(CreateClosure), U8(1), U8(5), U8(2),
|
||||
/* 64 S> */ B(CreateClosure), U8(1), U8(1), U8(2),
|
||||
/* 93 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
|
||||
B(Star), R(1),
|
||||
B(LdaSmi), I8(1),
|
||||
|
@ -57,7 +57,7 @@ bytecodes: [
|
||||
/* 34 E> */ B(StackCheck),
|
||||
/* 56 S> */ B(LdaSmi), I8(10),
|
||||
B(Star), R(0),
|
||||
/* 69 S> */ B(Inc), U8(4),
|
||||
/* 69 S> */ B(Inc), U8(0),
|
||||
B(Star), R(0),
|
||||
B(Star), R(1),
|
||||
/* 74 S> */ B(Jump), U8(2),
|
||||
|
@ -22,7 +22,7 @@ bytecodes: [
|
||||
B(Ldar), R(new_target),
|
||||
B(StaCurrentContextSlot), U8(5),
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 34 S> */ B(LdaLookupGlobalSlot), U8(0), U8(6), U8(1),
|
||||
/* 34 S> */ B(LdaLookupGlobalSlot), U8(0), U8(2), U8(1),
|
||||
B(Star), R(1),
|
||||
B(LdaConstant), U8(1),
|
||||
B(Star), R(2),
|
||||
@ -37,7 +37,7 @@ bytecodes: [
|
||||
B(Mov), R(closure), R(5),
|
||||
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6),
|
||||
B(Star), R(1),
|
||||
/* 41 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(4),
|
||||
/* 41 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(0),
|
||||
/* 52 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
@ -49,18 +49,18 @@ bytecodes: [
|
||||
B(Star), R(6),
|
||||
B(Mov), R(context), R(19),
|
||||
B(Mov), R(context), R(20),
|
||||
/* 43 S> */ B(CreateArrayLiteral), U8(3), U8(4), U8(37),
|
||||
/* 43 S> */ B(CreateArrayLiteral), U8(3), U8(0), U8(37),
|
||||
B(Star), R(21),
|
||||
B(LdaNamedProperty), R(21), U8(4), U8(9),
|
||||
B(LdaNamedProperty), R(21), U8(4), U8(5),
|
||||
B(JumpIfUndefined), U8(17),
|
||||
B(JumpIfNull), U8(15),
|
||||
B(Star), R(22),
|
||||
B(CallProperty0), R(22), R(21), U8(11),
|
||||
B(CallProperty0), R(22), R(21), U8(7),
|
||||
B(JumpIfJSReceiver), U8(23),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
|
||||
B(LdaNamedProperty), R(21), U8(5), U8(5),
|
||||
B(LdaNamedProperty), R(21), U8(5), U8(1),
|
||||
B(Star), R(22),
|
||||
B(CallProperty0), R(22), R(21), U8(7),
|
||||
B(CallProperty0), R(22), R(21), U8(3),
|
||||
B(Star), R(22),
|
||||
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(22), U8(1),
|
||||
B(Star), R(4),
|
||||
@ -72,9 +72,9 @@ bytecodes: [
|
||||
B(LdaSmi), I8(81),
|
||||
B(Star), R(21),
|
||||
B(CallRuntime), U16(Runtime::kAbort), R(21), U8(1),
|
||||
/* 40 S> */ B(LdaNamedProperty), R(4), U8(7), U8(15),
|
||||
/* 40 S> */ B(LdaNamedProperty), R(4), U8(7), U8(11),
|
||||
B(Star), R(21),
|
||||
B(CallProperty0), R(21), R(4), U8(13),
|
||||
B(CallProperty0), R(21), R(4), U8(9),
|
||||
B(Star), R(22),
|
||||
B(Mov), R(11), R(21),
|
||||
B(Mov), R(10), R(23),
|
||||
@ -98,9 +98,9 @@ bytecodes: [
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
|
||||
B(LdaNamedProperty), R(5), U8(8), U8(17),
|
||||
B(LdaNamedProperty), R(5), U8(8), U8(13),
|
||||
B(JumpIfToBooleanTrue), U8(25),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(19),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(15),
|
||||
B(Star), R(7),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(6),
|
||||
@ -120,7 +120,7 @@ bytecodes: [
|
||||
B(Ldar), R(20),
|
||||
B(PushContext), R(21),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(6), U8(21),
|
||||
B(TestEqualStrict), R(6), U8(17),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(6),
|
||||
@ -138,15 +138,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(19),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(6), U8(22),
|
||||
B(TestEqualStrict), R(6), U8(18),
|
||||
B(JumpIfTrue), U8(199),
|
||||
B(LdaNamedProperty), R(4), U8(12), U8(23),
|
||||
B(LdaNamedProperty), R(4), U8(12), U8(19),
|
||||
B(Star), R(8),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(188),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(6), U8(26),
|
||||
B(TestEqualStrict), R(6), U8(22),
|
||||
B(JumpIfFalse), U8(109),
|
||||
B(Ldar), R(8),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -352,18 +352,18 @@ bytecodes: [
|
||||
B(Star), R(6),
|
||||
B(Mov), R(context), R(19),
|
||||
B(Mov), R(context), R(20),
|
||||
/* 43 S> */ B(CreateArrayLiteral), U8(3), U8(4), U8(37),
|
||||
/* 43 S> */ B(CreateArrayLiteral), U8(3), U8(0), U8(37),
|
||||
B(Star), R(21),
|
||||
B(LdaNamedProperty), R(21), U8(4), U8(9),
|
||||
B(LdaNamedProperty), R(21), U8(4), U8(5),
|
||||
B(JumpIfUndefined), U8(17),
|
||||
B(JumpIfNull), U8(15),
|
||||
B(Star), R(22),
|
||||
B(CallProperty0), R(22), R(21), U8(11),
|
||||
B(CallProperty0), R(22), R(21), U8(7),
|
||||
B(JumpIfJSReceiver), U8(23),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
|
||||
B(LdaNamedProperty), R(21), U8(5), U8(5),
|
||||
B(LdaNamedProperty), R(21), U8(5), U8(1),
|
||||
B(Star), R(22),
|
||||
B(CallProperty0), R(22), R(21), U8(7),
|
||||
B(CallProperty0), R(22), R(21), U8(3),
|
||||
B(Star), R(22),
|
||||
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(22), U8(1),
|
||||
B(Star), R(4),
|
||||
@ -375,9 +375,9 @@ bytecodes: [
|
||||
B(LdaSmi), I8(81),
|
||||
B(Star), R(21),
|
||||
B(CallRuntime), U16(Runtime::kAbort), R(21), U8(1),
|
||||
/* 40 S> */ B(LdaNamedProperty), R(4), U8(7), U8(15),
|
||||
/* 40 S> */ B(LdaNamedProperty), R(4), U8(7), U8(11),
|
||||
B(Star), R(21),
|
||||
B(CallProperty0), R(21), R(4), U8(13),
|
||||
B(CallProperty0), R(21), R(4), U8(9),
|
||||
B(Star), R(22),
|
||||
B(Mov), R(11), R(21),
|
||||
B(Mov), R(10), R(23),
|
||||
@ -401,9 +401,9 @@ bytecodes: [
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
|
||||
B(LdaNamedProperty), R(5), U8(8), U8(17),
|
||||
B(LdaNamedProperty), R(5), U8(8), U8(13),
|
||||
B(JumpIfToBooleanTrue), U8(27),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(19),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(15),
|
||||
B(Star), R(7),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(6),
|
||||
@ -424,7 +424,7 @@ bytecodes: [
|
||||
B(Ldar), R(20),
|
||||
B(PushContext), R(21),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(6), U8(21),
|
||||
B(TestEqualStrict), R(6), U8(17),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(6),
|
||||
@ -442,15 +442,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(19),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(6), U8(22),
|
||||
B(TestEqualStrict), R(6), U8(18),
|
||||
B(JumpIfTrue), U8(199),
|
||||
B(LdaNamedProperty), R(4), U8(12), U8(23),
|
||||
B(LdaNamedProperty), R(4), U8(12), U8(19),
|
||||
B(Star), R(8),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(188),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(6), U8(26),
|
||||
B(TestEqualStrict), R(6), U8(22),
|
||||
B(JumpIfFalse), U8(109),
|
||||
B(Ldar), R(8),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -673,18 +673,18 @@ bytecodes: [
|
||||
B(Star), R(6),
|
||||
B(Mov), R(context), R(19),
|
||||
B(Mov), R(context), R(20),
|
||||
/* 43 S> */ B(CreateArrayLiteral), U8(3), U8(4), U8(37),
|
||||
/* 43 S> */ B(CreateArrayLiteral), U8(3), U8(0), U8(37),
|
||||
B(Star), R(21),
|
||||
B(LdaNamedProperty), R(21), U8(4), U8(9),
|
||||
B(LdaNamedProperty), R(21), U8(4), U8(5),
|
||||
B(JumpIfUndefined), U8(17),
|
||||
B(JumpIfNull), U8(15),
|
||||
B(Star), R(22),
|
||||
B(CallProperty0), R(22), R(21), U8(11),
|
||||
B(CallProperty0), R(22), R(21), U8(7),
|
||||
B(JumpIfJSReceiver), U8(23),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
|
||||
B(LdaNamedProperty), R(21), U8(5), U8(5),
|
||||
B(LdaNamedProperty), R(21), U8(5), U8(1),
|
||||
B(Star), R(22),
|
||||
B(CallProperty0), R(22), R(21), U8(7),
|
||||
B(CallProperty0), R(22), R(21), U8(3),
|
||||
B(Star), R(22),
|
||||
B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(22), U8(1),
|
||||
B(Star), R(4),
|
||||
@ -696,9 +696,9 @@ bytecodes: [
|
||||
B(LdaSmi), I8(81),
|
||||
B(Star), R(21),
|
||||
B(CallRuntime), U16(Runtime::kAbort), R(21), U8(1),
|
||||
/* 40 S> */ B(LdaNamedProperty), R(4), U8(7), U8(15),
|
||||
/* 40 S> */ B(LdaNamedProperty), R(4), U8(7), U8(11),
|
||||
B(Star), R(21),
|
||||
B(CallProperty0), R(21), R(4), U8(13),
|
||||
B(CallProperty0), R(21), R(4), U8(9),
|
||||
B(Star), R(22),
|
||||
B(Mov), R(11), R(21),
|
||||
B(Mov), R(10), R(23),
|
||||
@ -722,9 +722,9 @@ bytecodes: [
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
|
||||
B(LdaNamedProperty), R(5), U8(8), U8(17),
|
||||
B(LdaNamedProperty), R(5), U8(8), U8(13),
|
||||
B(JumpIfToBooleanTrue), U8(43),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(19),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(15),
|
||||
B(Star), R(7),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(6),
|
||||
@ -732,11 +732,11 @@ bytecodes: [
|
||||
/* 23 E> */ B(StackCheck),
|
||||
B(Mov), R(3), R(0),
|
||||
/* 63 S> */ B(LdaSmi), I8(10),
|
||||
/* 69 E> */ B(TestEqual), R(0), U8(21),
|
||||
/* 69 E> */ B(TestEqual), R(0), U8(17),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 76 S> */ B(Jump), U8(14),
|
||||
/* 90 S> */ B(LdaSmi), I8(20),
|
||||
/* 96 E> */ B(TestEqual), R(0), U8(22),
|
||||
/* 96 E> */ B(TestEqual), R(0), U8(18),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 103 S> */ B(Jump), U8(8),
|
||||
B(LdaZero),
|
||||
@ -752,7 +752,7 @@ bytecodes: [
|
||||
B(Ldar), R(20),
|
||||
B(PushContext), R(21),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(6), U8(23),
|
||||
B(TestEqualStrict), R(6), U8(19),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(6),
|
||||
@ -770,15 +770,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(19),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(6), U8(24),
|
||||
B(TestEqualStrict), R(6), U8(20),
|
||||
B(JumpIfTrue), U8(199),
|
||||
B(LdaNamedProperty), R(4), U8(12), U8(25),
|
||||
B(LdaNamedProperty), R(4), U8(12), U8(21),
|
||||
B(Star), R(8),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(188),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(6), U8(28),
|
||||
B(TestEqualStrict), R(6), U8(24),
|
||||
B(JumpIfFalse), U8(109),
|
||||
B(Ldar), R(8),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -961,38 +961,38 @@ bytecodes: [
|
||||
B(Star), R(8),
|
||||
B(Mov), R(context), R(11),
|
||||
B(Mov), R(context), R(12),
|
||||
/* 31 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(13),
|
||||
/* 31 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(13),
|
||||
B(Mov), R(13), R(1),
|
||||
B(LdaZero),
|
||||
B(Star), R(4),
|
||||
B(Mov), R(context), R(15),
|
||||
B(Mov), R(context), R(16),
|
||||
/* 68 S> */ B(CreateArrayLiteral), U8(1), U8(5), U8(37),
|
||||
/* 68 S> */ B(CreateArrayLiteral), U8(1), U8(1), U8(37),
|
||||
B(Star), R(17),
|
||||
B(LdaNamedProperty), R(17), U8(2), U8(6),
|
||||
B(LdaNamedProperty), R(17), U8(2), U8(2),
|
||||
B(Star), R(18),
|
||||
B(CallProperty0), R(18), R(17), U8(8),
|
||||
B(CallProperty0), R(18), R(17), U8(4),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(2),
|
||||
/* 59 S> */ B(LdaNamedProperty), R(2), U8(3), U8(12),
|
||||
/* 59 S> */ B(LdaNamedProperty), R(2), U8(3), U8(8),
|
||||
B(Star), R(17),
|
||||
B(CallProperty0), R(17), R(2), U8(10),
|
||||
B(CallProperty0), R(17), R(2), U8(6),
|
||||
B(Star), R(3),
|
||||
/* 59 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
|
||||
B(LdaNamedProperty), R(3), U8(4), U8(14),
|
||||
B(LdaNamedProperty), R(3), U8(4), U8(10),
|
||||
B(JumpIfToBooleanTrue), U8(30),
|
||||
/* 58 E> */ B(LdaNamedProperty), R(3), U8(5), U8(16),
|
||||
/* 58 E> */ B(LdaNamedProperty), R(3), U8(5), U8(12),
|
||||
B(Star), R(5),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(4),
|
||||
B(Ldar), R(5),
|
||||
B(StaNamedPropertySloppy), R(1), U8(6), U8(18),
|
||||
B(StaNamedPropertySloppy), R(1), U8(6), U8(14),
|
||||
/* 53 E> */ B(StackCheck),
|
||||
/* 87 S> */ B(LdaNamedProperty), R(1), U8(6), U8(20),
|
||||
/* 87 S> */ B(LdaNamedProperty), R(1), U8(6), U8(16),
|
||||
B(Star), R(14),
|
||||
B(LdaZero),
|
||||
B(Star), R(13),
|
||||
@ -1007,7 +1007,7 @@ bytecodes: [
|
||||
B(Ldar), R(16),
|
||||
B(PushContext), R(17),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(4), U8(22),
|
||||
B(TestEqualStrict), R(4), U8(18),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(4),
|
||||
@ -1025,15 +1025,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(15),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(4), U8(23),
|
||||
B(TestEqualStrict), R(4), U8(19),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(2), U8(9), U8(24),
|
||||
B(LdaNamedProperty), R(2), U8(9), U8(20),
|
||||
B(Star), R(6),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(4), U8(27),
|
||||
B(TestEqualStrict), R(4), U8(23),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(6),
|
||||
B(TestTypeOf), U8(5),
|
||||
|
@ -76,7 +76,7 @@ bytecodes: [
|
||||
B(Star), R(7),
|
||||
/* 63 S> */ B(ForInContinue), R(7), R(6),
|
||||
B(JumpIfFalse), U8(22),
|
||||
B(ForInNext), R(3), R(7), R(4), U8(4),
|
||||
B(ForInNext), R(3), R(7), R(4), U8(0),
|
||||
B(JumpIfUndefined), U8(8),
|
||||
B(Star), R(1),
|
||||
/* 54 E> */ B(StackCheck),
|
||||
@ -106,7 +106,7 @@ bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star), R(0),
|
||||
/* 59 S> */ B(CreateArrayLiteral), U8(0), U8(4), U8(37),
|
||||
/* 59 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
|
||||
B(JumpIfUndefined), U8(46),
|
||||
B(JumpIfNull), U8(44),
|
||||
B(ToObject), R(3),
|
||||
@ -115,13 +115,13 @@ bytecodes: [
|
||||
B(Star), R(7),
|
||||
/* 54 S> */ B(ForInContinue), R(7), R(6),
|
||||
B(JumpIfFalse), U8(31),
|
||||
B(ForInNext), R(3), R(7), R(4), U8(6),
|
||||
B(ForInNext), R(3), R(7), R(4), U8(2),
|
||||
B(JumpIfUndefined), U8(17),
|
||||
B(Star), R(1),
|
||||
/* 45 E> */ B(StackCheck),
|
||||
B(Star), R(2),
|
||||
/* 70 S> */ B(Ldar), R(1),
|
||||
/* 75 E> */ B(Add), R(0), U8(5),
|
||||
/* 75 E> */ B(Add), R(0), U8(1),
|
||||
B(Mov), R(0), R(8),
|
||||
B(Star), R(0),
|
||||
/* 72 E> */ B(ForInStep), R(7),
|
||||
@ -149,9 +149,9 @@ parameter count: 1
|
||||
bytecode array length: 85
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(1),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(1),
|
||||
B(Mov), R(1), R(0),
|
||||
/* 77 S> */ B(CreateArrayLiteral), U8(1), U8(5), U8(37),
|
||||
/* 77 S> */ B(CreateArrayLiteral), U8(1), U8(1), U8(37),
|
||||
B(JumpIfUndefined), U8(70),
|
||||
B(JumpIfNull), U8(68),
|
||||
B(ToObject), R(1),
|
||||
@ -160,22 +160,22 @@ bytecodes: [
|
||||
B(Star), R(5),
|
||||
/* 68 S> */ B(ForInContinue), R(5), R(4),
|
||||
B(JumpIfFalse), U8(55),
|
||||
B(ForInNext), R(1), R(5), R(2), U8(16),
|
||||
B(ForInNext), R(1), R(5), R(2), U8(12),
|
||||
B(JumpIfUndefined), U8(41),
|
||||
B(Star), R(6),
|
||||
B(Ldar), R(6),
|
||||
/* 67 E> */ B(StaNamedPropertySloppy), R(0), U8(2), U8(14),
|
||||
/* 67 E> */ B(StaNamedPropertySloppy), R(0), U8(2), U8(10),
|
||||
/* 62 E> */ B(StackCheck),
|
||||
/* 100 S> */ B(LdaNamedProperty), R(0), U8(2), U8(8),
|
||||
/* 100 S> */ B(LdaNamedProperty), R(0), U8(2), U8(4),
|
||||
B(Star), R(6),
|
||||
B(LdaSmi), I8(10),
|
||||
/* 106 E> */ B(TestEqual), R(6), U8(10),
|
||||
/* 106 E> */ B(TestEqual), R(6), U8(6),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 113 S> */ B(Jump), U8(17),
|
||||
/* 130 S> */ B(LdaNamedProperty), R(0), U8(2), U8(11),
|
||||
/* 130 S> */ B(LdaNamedProperty), R(0), U8(2), U8(7),
|
||||
B(Star), R(6),
|
||||
B(LdaSmi), I8(20),
|
||||
/* 136 E> */ B(TestEqual), R(6), U8(13),
|
||||
/* 136 E> */ B(TestEqual), R(6), U8(9),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 143 S> */ B(Jump), U8(9),
|
||||
B(ForInStep), R(5),
|
||||
@ -202,9 +202,9 @@ parameter count: 1
|
||||
bytecode array length: 62
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(CreateArrayLiteral), U8(0), U8(4), U8(37),
|
||||
/* 42 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
|
||||
B(Star), R(0),
|
||||
/* 72 S> */ B(CreateArrayLiteral), U8(1), U8(5), U8(37),
|
||||
/* 72 S> */ B(CreateArrayLiteral), U8(1), U8(1), U8(37),
|
||||
B(JumpIfUndefined), U8(49),
|
||||
B(JumpIfNull), U8(47),
|
||||
B(ToObject), R(1),
|
||||
@ -213,16 +213,16 @@ bytecodes: [
|
||||
B(Star), R(5),
|
||||
/* 65 S> */ B(ForInContinue), R(5), R(4),
|
||||
B(JumpIfFalse), U8(34),
|
||||
B(ForInNext), R(1), R(5), R(2), U8(12),
|
||||
B(ForInNext), R(1), R(5), R(2), U8(8),
|
||||
B(JumpIfUndefined), U8(20),
|
||||
B(Star), R(6),
|
||||
B(LdaZero),
|
||||
B(Star), R(8),
|
||||
B(Ldar), R(6),
|
||||
/* 64 E> */ B(StaKeyedPropertySloppy), R(0), R(8), U8(10),
|
||||
/* 64 E> */ B(StaKeyedPropertySloppy), R(0), R(8), U8(6),
|
||||
/* 59 E> */ B(StackCheck),
|
||||
/* 83 S> */ B(LdaSmi), I8(3),
|
||||
/* 91 E> */ B(LdaKeyedProperty), R(0), U8(8),
|
||||
/* 91 E> */ B(LdaKeyedProperty), R(0), U8(4),
|
||||
/* 95 S> */ B(Return),
|
||||
B(ForInStep), R(5),
|
||||
B(Star), R(5),
|
||||
|
@ -18,25 +18,25 @@ bytecodes: [
|
||||
B(Star), R(4),
|
||||
B(Mov), R(context), R(10),
|
||||
B(Mov), R(context), R(11),
|
||||
/* 48 S> */ B(CreateArrayLiteral), U8(0), U8(4), U8(37),
|
||||
/* 48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
|
||||
B(Star), R(12),
|
||||
B(LdaNamedProperty), R(12), U8(1), U8(5),
|
||||
B(LdaNamedProperty), R(12), U8(1), U8(1),
|
||||
B(Star), R(13),
|
||||
B(CallProperty0), R(13), R(12), U8(7),
|
||||
B(CallProperty0), R(13), R(12), U8(3),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(2),
|
||||
/* 43 S> */ B(LdaNamedProperty), R(2), U8(2), U8(11),
|
||||
/* 43 S> */ B(LdaNamedProperty), R(2), U8(2), U8(7),
|
||||
B(Star), R(12),
|
||||
B(CallProperty0), R(12), R(2), U8(9),
|
||||
B(CallProperty0), R(12), R(2), U8(5),
|
||||
B(Star), R(3),
|
||||
/* 43 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
|
||||
B(LdaNamedProperty), R(3), U8(3), U8(13),
|
||||
B(LdaNamedProperty), R(3), U8(3), U8(9),
|
||||
B(JumpIfToBooleanTrue), U8(25),
|
||||
B(LdaNamedProperty), R(3), U8(4), U8(15),
|
||||
B(LdaNamedProperty), R(3), U8(4), U8(11),
|
||||
B(Star), R(5),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(4),
|
||||
@ -53,7 +53,7 @@ bytecodes: [
|
||||
B(PushContext), R(12),
|
||||
B(Star), R(11),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(4), U8(17),
|
||||
B(TestEqualStrict), R(4), U8(13),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(4),
|
||||
@ -71,15 +71,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(10),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(4), U8(18),
|
||||
B(TestEqualStrict), R(4), U8(14),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(2), U8(7), U8(19),
|
||||
B(LdaNamedProperty), R(2), U8(7), U8(15),
|
||||
B(Star), R(6),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(4), U8(22),
|
||||
B(TestEqualStrict), R(4), U8(18),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(6),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -158,24 +158,24 @@ bytecodes: [
|
||||
B(Star), R(5),
|
||||
B(Mov), R(context), R(11),
|
||||
B(Mov), R(context), R(12),
|
||||
/* 68 S> */ B(LdaNamedProperty), R(0), U8(1), U8(4),
|
||||
/* 68 S> */ B(LdaNamedProperty), R(0), U8(1), U8(0),
|
||||
B(Star), R(14),
|
||||
B(CallProperty0), R(14), R(0), U8(6),
|
||||
B(CallProperty0), R(14), R(0), U8(2),
|
||||
B(Mov), R(0), R(13),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(3),
|
||||
/* 63 S> */ B(LdaNamedProperty), R(3), U8(2), U8(10),
|
||||
/* 63 S> */ B(LdaNamedProperty), R(3), U8(2), U8(6),
|
||||
B(Star), R(13),
|
||||
B(CallProperty0), R(13), R(3), U8(8),
|
||||
B(CallProperty0), R(13), R(3), U8(4),
|
||||
B(Star), R(4),
|
||||
/* 63 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(4), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(4), U8(1),
|
||||
B(LdaNamedProperty), R(4), U8(3), U8(12),
|
||||
B(LdaNamedProperty), R(4), U8(3), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(27),
|
||||
B(LdaNamedProperty), R(4), U8(4), U8(14),
|
||||
B(LdaNamedProperty), R(4), U8(4), U8(10),
|
||||
B(Star), R(6),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(5),
|
||||
@ -193,7 +193,7 @@ bytecodes: [
|
||||
B(PushContext), R(13),
|
||||
B(Star), R(12),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(5), U8(16),
|
||||
B(TestEqualStrict), R(5), U8(12),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(5),
|
||||
@ -211,15 +211,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(11),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(5), U8(17),
|
||||
B(TestEqualStrict), R(5), U8(13),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(3), U8(7), U8(18),
|
||||
B(LdaNamedProperty), R(3), U8(7), U8(14),
|
||||
B(Star), R(7),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(5), U8(21),
|
||||
B(TestEqualStrict), R(5), U8(17),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(7),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -302,25 +302,25 @@ bytecodes: [
|
||||
B(Star), R(4),
|
||||
B(Mov), R(context), R(10),
|
||||
B(Mov), R(context), R(11),
|
||||
/* 48 S> */ B(CreateArrayLiteral), U8(0), U8(4), U8(37),
|
||||
/* 48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
|
||||
B(Star), R(12),
|
||||
B(LdaNamedProperty), R(12), U8(1), U8(5),
|
||||
B(LdaNamedProperty), R(12), U8(1), U8(1),
|
||||
B(Star), R(13),
|
||||
B(CallProperty0), R(13), R(12), U8(7),
|
||||
B(CallProperty0), R(13), R(12), U8(3),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(2),
|
||||
/* 43 S> */ B(LdaNamedProperty), R(2), U8(2), U8(11),
|
||||
/* 43 S> */ B(LdaNamedProperty), R(2), U8(2), U8(7),
|
||||
B(Star), R(12),
|
||||
B(CallProperty0), R(12), R(2), U8(9),
|
||||
B(CallProperty0), R(12), R(2), U8(5),
|
||||
B(Star), R(3),
|
||||
/* 43 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
|
||||
B(LdaNamedProperty), R(3), U8(3), U8(13),
|
||||
B(LdaNamedProperty), R(3), U8(3), U8(9),
|
||||
B(JumpIfToBooleanTrue), U8(43),
|
||||
B(LdaNamedProperty), R(3), U8(4), U8(15),
|
||||
B(LdaNamedProperty), R(3), U8(4), U8(11),
|
||||
B(Star), R(5),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(4),
|
||||
@ -328,11 +328,11 @@ bytecodes: [
|
||||
/* 34 E> */ B(StackCheck),
|
||||
B(Mov), R(0), R(1),
|
||||
/* 66 S> */ B(LdaSmi), I8(10),
|
||||
/* 72 E> */ B(TestEqual), R(1), U8(17),
|
||||
/* 72 E> */ B(TestEqual), R(1), U8(13),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 79 S> */ B(Jump), U8(14),
|
||||
/* 91 S> */ B(LdaSmi), I8(20),
|
||||
/* 97 E> */ B(TestEqual), R(1), U8(18),
|
||||
/* 97 E> */ B(TestEqual), R(1), U8(14),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 104 S> */ B(Jump), U8(8),
|
||||
B(LdaZero),
|
||||
@ -345,7 +345,7 @@ bytecodes: [
|
||||
B(PushContext), R(12),
|
||||
B(Star), R(11),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(4), U8(19),
|
||||
B(TestEqualStrict), R(4), U8(15),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(4),
|
||||
@ -363,15 +363,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(10),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(4), U8(20),
|
||||
B(TestEqualStrict), R(4), U8(16),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(2), U8(7), U8(21),
|
||||
B(LdaNamedProperty), R(2), U8(7), U8(17),
|
||||
B(Star), R(6),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(4), U8(24),
|
||||
B(TestEqualStrict), R(4), U8(20),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(6),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -444,38 +444,38 @@ parameter count: 1
|
||||
bytecode array length: 280
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(7),
|
||||
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(7),
|
||||
B(Mov), R(7), R(0),
|
||||
B(LdaZero),
|
||||
B(Star), R(3),
|
||||
B(Mov), R(context), R(9),
|
||||
B(Mov), R(context), R(10),
|
||||
/* 77 S> */ B(CreateArrayLiteral), U8(1), U8(5), U8(37),
|
||||
/* 77 S> */ B(CreateArrayLiteral), U8(1), U8(1), U8(37),
|
||||
B(Star), R(11),
|
||||
B(LdaNamedProperty), R(11), U8(2), U8(6),
|
||||
B(LdaNamedProperty), R(11), U8(2), U8(2),
|
||||
B(Star), R(12),
|
||||
B(CallProperty0), R(12), R(11), U8(8),
|
||||
B(CallProperty0), R(12), R(11), U8(4),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(1),
|
||||
/* 68 S> */ B(LdaNamedProperty), R(1), U8(3), U8(12),
|
||||
/* 68 S> */ B(LdaNamedProperty), R(1), U8(3), U8(8),
|
||||
B(Star), R(11),
|
||||
B(CallProperty0), R(11), R(1), U8(10),
|
||||
B(CallProperty0), R(11), R(1), U8(6),
|
||||
B(Star), R(2),
|
||||
/* 68 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(2), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(2), U8(1),
|
||||
B(LdaNamedProperty), R(2), U8(4), U8(14),
|
||||
B(LdaNamedProperty), R(2), U8(4), U8(10),
|
||||
B(JumpIfToBooleanTrue), U8(30),
|
||||
/* 67 E> */ B(LdaNamedProperty), R(2), U8(5), U8(16),
|
||||
/* 67 E> */ B(LdaNamedProperty), R(2), U8(5), U8(12),
|
||||
B(Star), R(4),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(3),
|
||||
B(Ldar), R(4),
|
||||
B(StaNamedPropertySloppy), R(0), U8(6), U8(18),
|
||||
B(StaNamedPropertySloppy), R(0), U8(6), U8(14),
|
||||
/* 62 E> */ B(StackCheck),
|
||||
/* 96 S> */ B(LdaNamedProperty), R(0), U8(6), U8(20),
|
||||
/* 96 S> */ B(LdaNamedProperty), R(0), U8(6), U8(16),
|
||||
B(Star), R(8),
|
||||
B(LdaZero),
|
||||
B(Star), R(7),
|
||||
@ -487,7 +487,7 @@ bytecodes: [
|
||||
B(PushContext), R(11),
|
||||
B(Star), R(10),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(3), U8(22),
|
||||
B(TestEqualStrict), R(3), U8(18),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(3),
|
||||
@ -505,15 +505,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(9),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(3), U8(23),
|
||||
B(TestEqualStrict), R(3), U8(19),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(1), U8(9), U8(24),
|
||||
B(LdaNamedProperty), R(1), U8(9), U8(20),
|
||||
B(Star), R(5),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(3), U8(27),
|
||||
B(TestEqualStrict), R(3), U8(23),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(5),
|
||||
B(TestTypeOf), U8(5),
|
||||
|
@ -24,24 +24,24 @@ bytecodes: [
|
||||
B(Star), R(6),
|
||||
B(Mov), R(context), R(12),
|
||||
B(Mov), R(context), R(13),
|
||||
/* 34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(4),
|
||||
/* 34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
|
||||
B(Star), R(15),
|
||||
B(CallProperty0), R(15), R(arg0), U8(6),
|
||||
B(CallProperty0), R(15), R(arg0), U8(2),
|
||||
B(Mov), R(arg0), R(14),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(4),
|
||||
/* 29 S> */ B(LdaNamedProperty), R(4), U8(1), U8(10),
|
||||
/* 29 S> */ B(LdaNamedProperty), R(4), U8(1), U8(6),
|
||||
B(Star), R(14),
|
||||
B(CallProperty0), R(14), R(4), U8(8),
|
||||
B(CallProperty0), R(14), R(4), U8(4),
|
||||
B(Star), R(5),
|
||||
/* 29 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
|
||||
B(LdaNamedProperty), R(5), U8(2), U8(12),
|
||||
B(LdaNamedProperty), R(5), U8(2), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(28),
|
||||
B(LdaNamedProperty), R(5), U8(3), U8(14),
|
||||
B(LdaNamedProperty), R(5), U8(3), U8(10),
|
||||
B(Star), R(7),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(6),
|
||||
@ -59,7 +59,7 @@ bytecodes: [
|
||||
B(PushContext), R(14),
|
||||
B(Star), R(13),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(6), U8(16),
|
||||
B(TestEqualStrict), R(6), U8(12),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(6),
|
||||
@ -77,15 +77,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(12),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(6), U8(17),
|
||||
B(TestEqualStrict), R(6), U8(13),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(4), U8(6), U8(18),
|
||||
B(LdaNamedProperty), R(4), U8(6), U8(14),
|
||||
B(Star), R(8),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(6), U8(21),
|
||||
B(TestEqualStrict), R(6), U8(17),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(8),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -180,23 +180,23 @@ bytecodes: [
|
||||
B(Mov), R(context), R(12),
|
||||
/* 34 S> */ B(LdaContextSlot), R(8), U8(4), U8(0),
|
||||
B(Star), R(13),
|
||||
B(LdaNamedProperty), R(13), U8(1), U8(4),
|
||||
B(LdaNamedProperty), R(13), U8(1), U8(0),
|
||||
B(Star), R(14),
|
||||
B(CallProperty0), R(14), R(13), U8(6),
|
||||
B(CallProperty0), R(14), R(13), U8(2),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(1),
|
||||
/* 29 S> */ B(LdaNamedProperty), R(1), U8(2), U8(10),
|
||||
/* 29 S> */ B(LdaNamedProperty), R(1), U8(2), U8(6),
|
||||
B(Star), R(13),
|
||||
B(CallProperty0), R(13), R(1), U8(8),
|
||||
B(CallProperty0), R(13), R(1), U8(4),
|
||||
B(Star), R(2),
|
||||
/* 29 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(2), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(2), U8(1),
|
||||
B(LdaNamedProperty), R(2), U8(3), U8(12),
|
||||
B(LdaNamedProperty), R(2), U8(3), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(78),
|
||||
B(LdaNamedProperty), R(2), U8(4), U8(14),
|
||||
B(LdaNamedProperty), R(2), U8(4), U8(10),
|
||||
B(Star), R(4),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(3),
|
||||
@ -209,7 +209,7 @@ bytecodes: [
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
B(Ldar), R(4),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
/* 41 S> */ B(LdaLookupGlobalSlot), U8(6), U8(18), U8(1),
|
||||
/* 41 S> */ B(LdaLookupGlobalSlot), U8(6), U8(14), U8(1),
|
||||
B(Star), R(14),
|
||||
B(LdaConstant), U8(7),
|
||||
B(Star), R(15),
|
||||
@ -224,7 +224,7 @@ bytecodes: [
|
||||
B(Mov), R(closure), R(18),
|
||||
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(16), U8(6),
|
||||
B(Star), R(14),
|
||||
/* 41 E> */ B(CallUndefinedReceiver1), R(14), R(15), U8(16),
|
||||
/* 41 E> */ B(CallUndefinedReceiver1), R(14), R(15), U8(12),
|
||||
B(PopContext), R(13),
|
||||
B(LdaZero),
|
||||
B(Star), R(3),
|
||||
@ -236,7 +236,7 @@ bytecodes: [
|
||||
B(PushContext), R(13),
|
||||
B(Star), R(12),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(3), U8(20),
|
||||
B(TestEqualStrict), R(3), U8(16),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(3),
|
||||
@ -254,15 +254,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(11),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(3), U8(21),
|
||||
B(TestEqualStrict), R(3), U8(17),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(1), U8(10), U8(22),
|
||||
B(LdaNamedProperty), R(1), U8(10), U8(18),
|
||||
B(Star), R(5),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(3), U8(25),
|
||||
B(TestEqualStrict), R(3), U8(21),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(5),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -347,24 +347,24 @@ bytecodes: [
|
||||
B(Star), R(4),
|
||||
B(Mov), R(context), R(10),
|
||||
B(Mov), R(context), R(11),
|
||||
/* 34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(4),
|
||||
/* 34 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
|
||||
B(Star), R(13),
|
||||
B(CallProperty0), R(13), R(arg0), U8(6),
|
||||
B(CallProperty0), R(13), R(arg0), U8(2),
|
||||
B(Mov), R(arg0), R(12),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(2),
|
||||
/* 29 S> */ B(LdaNamedProperty), R(2), U8(1), U8(10),
|
||||
/* 29 S> */ B(LdaNamedProperty), R(2), U8(1), U8(6),
|
||||
B(Star), R(12),
|
||||
B(CallProperty0), R(12), R(2), U8(8),
|
||||
B(CallProperty0), R(12), R(2), U8(4),
|
||||
B(Star), R(3),
|
||||
/* 29 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
|
||||
B(LdaNamedProperty), R(3), U8(2), U8(12),
|
||||
B(LdaNamedProperty), R(3), U8(2), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(46),
|
||||
B(LdaNamedProperty), R(3), U8(3), U8(14),
|
||||
B(LdaNamedProperty), R(3), U8(3), U8(10),
|
||||
B(Star), R(5),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(4),
|
||||
@ -377,9 +377,9 @@ bytecodes: [
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
B(Ldar), R(5),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
/* 41 S> */ B(CreateClosure), U8(5), U8(18), U8(2),
|
||||
/* 41 S> */ B(CreateClosure), U8(5), U8(14), U8(2),
|
||||
B(Star), R(13),
|
||||
/* 67 E> */ B(CallUndefinedReceiver0), R(13), U8(16),
|
||||
/* 67 E> */ B(CallUndefinedReceiver0), R(13), U8(12),
|
||||
B(PopContext), R(12),
|
||||
B(LdaZero),
|
||||
B(Star), R(4),
|
||||
@ -391,7 +391,7 @@ bytecodes: [
|
||||
B(PushContext), R(12),
|
||||
B(Star), R(11),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(4), U8(19),
|
||||
B(TestEqualStrict), R(4), U8(15),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(4),
|
||||
@ -409,15 +409,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(10),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(4), U8(20),
|
||||
B(TestEqualStrict), R(4), U8(16),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(2), U8(8), U8(21),
|
||||
B(LdaNamedProperty), R(2), U8(8), U8(17),
|
||||
B(Star), R(6),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(4), U8(24),
|
||||
B(TestEqualStrict), R(4), U8(20),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(6),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -501,24 +501,24 @@ bytecodes: [
|
||||
B(Star), R(9),
|
||||
B(Mov), R(context), R(15),
|
||||
B(Mov), R(context), R(16),
|
||||
/* 41 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(4),
|
||||
/* 41 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
|
||||
B(Star), R(18),
|
||||
B(CallProperty0), R(18), R(arg0), U8(6),
|
||||
B(CallProperty0), R(18), R(arg0), U8(2),
|
||||
B(Mov), R(arg0), R(17),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(7),
|
||||
/* 36 S> */ B(LdaNamedProperty), R(7), U8(1), U8(10),
|
||||
/* 36 S> */ B(LdaNamedProperty), R(7), U8(1), U8(6),
|
||||
B(Star), R(17),
|
||||
B(CallProperty0), R(17), R(7), U8(8),
|
||||
B(CallProperty0), R(17), R(7), U8(4),
|
||||
B(Star), R(8),
|
||||
/* 36 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(8), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(8), U8(1),
|
||||
B(LdaNamedProperty), R(8), U8(2), U8(12),
|
||||
B(LdaNamedProperty), R(8), U8(2), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(66),
|
||||
B(LdaNamedProperty), R(8), U8(3), U8(14),
|
||||
B(LdaNamedProperty), R(8), U8(3), U8(10),
|
||||
B(Star), R(10),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(9),
|
||||
@ -535,12 +535,12 @@ bytecodes: [
|
||||
B(Star), R(18),
|
||||
B(CallRuntime), U16(Runtime::kNewTypeError), R(17), U8(2),
|
||||
/* 31 E> */ B(Throw),
|
||||
/* 31 S> */ B(LdaNamedProperty), R(6), U8(4), U8(18),
|
||||
/* 31 S> */ B(LdaNamedProperty), R(6), U8(4), U8(14),
|
||||
B(Star), R(1),
|
||||
/* 34 S> */ B(LdaNamedProperty), R(6), U8(5), U8(20),
|
||||
/* 34 S> */ B(LdaNamedProperty), R(6), U8(5), U8(16),
|
||||
B(Star), R(2),
|
||||
/* 56 S> */ B(Ldar), R(2),
|
||||
/* 58 E> */ B(Add), R(1), U8(22),
|
||||
/* 58 E> */ B(Add), R(1), U8(18),
|
||||
B(Star), R(0),
|
||||
B(LdaZero),
|
||||
B(Star), R(9),
|
||||
@ -552,7 +552,7 @@ bytecodes: [
|
||||
B(PushContext), R(17),
|
||||
B(Star), R(16),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(9), U8(23),
|
||||
B(TestEqualStrict), R(9), U8(19),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(9),
|
||||
@ -570,15 +570,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(15),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(9), U8(24),
|
||||
B(TestEqualStrict), R(9), U8(20),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(7), U8(8), U8(25),
|
||||
B(LdaNamedProperty), R(7), U8(8), U8(21),
|
||||
B(Star), R(11),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(9), U8(28),
|
||||
B(TestEqualStrict), R(9), U8(24),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(11),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -697,23 +697,23 @@ bytecodes: [
|
||||
B(Mov), R(context), R(17),
|
||||
/* 35 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
|
||||
B(Star), R(18),
|
||||
B(LdaNamedProperty), R(18), U8(3), U8(4),
|
||||
B(LdaNamedProperty), R(18), U8(3), U8(0),
|
||||
B(Star), R(19),
|
||||
B(CallProperty0), R(19), R(18), U8(6),
|
||||
B(CallProperty0), R(19), R(18), U8(2),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(5),
|
||||
/* 30 S> */ B(LdaNamedProperty), R(5), U8(4), U8(10),
|
||||
/* 30 S> */ B(LdaNamedProperty), R(5), U8(4), U8(6),
|
||||
B(Star), R(18),
|
||||
B(CallProperty0), R(18), R(5), U8(8),
|
||||
B(CallProperty0), R(18), R(5), U8(4),
|
||||
B(Star), R(6),
|
||||
/* 30 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(6), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
|
||||
B(LdaNamedProperty), R(6), U8(5), U8(12),
|
||||
B(LdaNamedProperty), R(6), U8(5), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(28),
|
||||
B(LdaNamedProperty), R(6), U8(6), U8(14),
|
||||
B(LdaNamedProperty), R(6), U8(6), U8(10),
|
||||
B(Star), R(8),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(7),
|
||||
@ -731,7 +731,7 @@ bytecodes: [
|
||||
B(PushContext), R(18),
|
||||
B(Star), R(17),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(7), U8(16),
|
||||
B(TestEqualStrict), R(7), U8(12),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(7),
|
||||
@ -749,15 +749,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(16),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(7), U8(17),
|
||||
B(TestEqualStrict), R(7), U8(13),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(18),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(14),
|
||||
B(Star), R(9),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(7), U8(21),
|
||||
B(TestEqualStrict), R(7), U8(17),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(9),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -877,9 +877,9 @@ bytecodes: [
|
||||
B(Mov), R(context), R(16),
|
||||
/* 35 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
|
||||
B(Star), R(17),
|
||||
B(LdaNamedProperty), R(17), U8(4), U8(4),
|
||||
B(LdaNamedProperty), R(17), U8(4), U8(0),
|
||||
B(Star), R(18),
|
||||
B(CallProperty0), R(18), R(17), U8(6),
|
||||
B(CallProperty0), R(18), R(17), U8(2),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(4),
|
||||
@ -891,17 +891,17 @@ bytecodes: [
|
||||
B(LdaSmi), I8(81),
|
||||
B(Star), R(17),
|
||||
B(CallRuntime), U16(Runtime::kAbort), R(17), U8(1),
|
||||
/* 30 S> */ B(LdaNamedProperty), R(4), U8(6), U8(10),
|
||||
/* 30 S> */ B(LdaNamedProperty), R(4), U8(6), U8(6),
|
||||
B(Star), R(17),
|
||||
B(CallProperty0), R(17), R(4), U8(8),
|
||||
B(CallProperty0), R(17), R(4), U8(4),
|
||||
B(Star), R(5),
|
||||
/* 30 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
|
||||
B(LdaNamedProperty), R(5), U8(7), U8(12),
|
||||
B(LdaNamedProperty), R(5), U8(7), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(74),
|
||||
B(LdaNamedProperty), R(5), U8(8), U8(14),
|
||||
B(LdaNamedProperty), R(5), U8(8), U8(10),
|
||||
B(Star), R(7),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(6),
|
||||
@ -937,7 +937,7 @@ bytecodes: [
|
||||
B(PushContext), R(17),
|
||||
B(Star), R(16),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(6), U8(16),
|
||||
B(TestEqualStrict), R(6), U8(12),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(6),
|
||||
@ -955,15 +955,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(15),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(6), U8(17),
|
||||
B(TestEqualStrict), R(6), U8(13),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(4), U8(13), U8(18),
|
||||
B(LdaNamedProperty), R(4), U8(13), U8(14),
|
||||
B(Star), R(8),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(6), U8(21),
|
||||
B(TestEqualStrict), R(6), U8(17),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(8),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -1066,23 +1066,23 @@ bytecodes: [
|
||||
B(Mov), R(context), R(20),
|
||||
/* 40 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
|
||||
B(Star), R(21),
|
||||
B(LdaNamedProperty), R(21), U8(0), U8(4),
|
||||
B(LdaNamedProperty), R(21), U8(0), U8(0),
|
||||
B(Star), R(22),
|
||||
B(CallProperty0), R(22), R(21), U8(6),
|
||||
B(CallProperty0), R(22), R(21), U8(2),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(5),
|
||||
/* 35 S> */ B(LdaNamedProperty), R(5), U8(1), U8(10),
|
||||
/* 35 S> */ B(LdaNamedProperty), R(5), U8(1), U8(6),
|
||||
B(Star), R(21),
|
||||
B(CallProperty0), R(21), R(5), U8(8),
|
||||
B(CallProperty0), R(21), R(5), U8(4),
|
||||
B(Star), R(6),
|
||||
/* 35 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(6), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(6), U8(1),
|
||||
B(LdaNamedProperty), R(6), U8(2), U8(12),
|
||||
B(LdaNamedProperty), R(6), U8(2), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(28),
|
||||
B(LdaNamedProperty), R(6), U8(3), U8(14),
|
||||
B(LdaNamedProperty), R(6), U8(3), U8(10),
|
||||
B(Star), R(8),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(7),
|
||||
@ -1103,7 +1103,7 @@ bytecodes: [
|
||||
B(Ldar), R(20),
|
||||
B(PushContext), R(21),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(7), U8(16),
|
||||
B(TestEqualStrict), R(7), U8(12),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(7),
|
||||
@ -1121,15 +1121,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(19),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(7), U8(17),
|
||||
B(TestEqualStrict), R(7), U8(13),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(5), U8(6), U8(18),
|
||||
B(LdaNamedProperty), R(5), U8(6), U8(14),
|
||||
B(Star), R(9),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(7), U8(21),
|
||||
B(TestEqualStrict), R(7), U8(17),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(9),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -1298,9 +1298,9 @@ bytecodes: [
|
||||
B(Mov), R(context), R(21),
|
||||
/* 40 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
|
||||
B(Star), R(22),
|
||||
B(LdaNamedProperty), R(22), U8(1), U8(4),
|
||||
B(LdaNamedProperty), R(22), U8(1), U8(0),
|
||||
B(Star), R(23),
|
||||
B(CallProperty0), R(23), R(22), U8(6),
|
||||
B(CallProperty0), R(23), R(22), U8(2),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(4),
|
||||
@ -1312,17 +1312,17 @@ bytecodes: [
|
||||
B(LdaSmi), I8(81),
|
||||
B(Star), R(22),
|
||||
B(CallRuntime), U16(Runtime::kAbort), R(22), U8(1),
|
||||
/* 35 S> */ B(LdaNamedProperty), R(4), U8(3), U8(10),
|
||||
/* 35 S> */ B(LdaNamedProperty), R(4), U8(3), U8(6),
|
||||
B(Star), R(22),
|
||||
B(CallProperty0), R(22), R(4), U8(8),
|
||||
B(CallProperty0), R(22), R(4), U8(4),
|
||||
B(Star), R(5),
|
||||
/* 35 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
|
||||
B(LdaNamedProperty), R(5), U8(4), U8(12),
|
||||
B(LdaNamedProperty), R(5), U8(4), U8(8),
|
||||
B(JumpIfToBooleanTrue), U8(72),
|
||||
B(LdaNamedProperty), R(5), U8(5), U8(14),
|
||||
B(LdaNamedProperty), R(5), U8(5), U8(10),
|
||||
B(Star), R(7),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(6),
|
||||
@ -1360,7 +1360,7 @@ bytecodes: [
|
||||
B(Ldar), R(21),
|
||||
B(PushContext), R(22),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(6), U8(16),
|
||||
B(TestEqualStrict), R(6), U8(12),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(6),
|
||||
@ -1378,15 +1378,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(20),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(6), U8(17),
|
||||
B(TestEqualStrict), R(6), U8(13),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(4), U8(8), U8(18),
|
||||
B(LdaNamedProperty), R(4), U8(8), U8(14),
|
||||
B(Star), R(8),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(6), U8(21),
|
||||
B(TestEqualStrict), R(6), U8(17),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(8),
|
||||
B(TestTypeOf), U8(5),
|
||||
|
@ -14,7 +14,7 @@ parameter count: 1
|
||||
bytecode array length: 6
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 34 S> */ B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
/* 34 S> */ B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
/* 54 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -32,9 +32,9 @@ parameter count: 1
|
||||
bytecode array length: 11
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 34 S> */ B(CreateClosure), U8(0), U8(6), U8(2),
|
||||
/* 34 S> */ B(CreateClosure), U8(0), U8(2), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 56 E> */ B(CallUndefinedReceiver0), R(0), U8(4),
|
||||
/* 56 E> */ B(CallUndefinedReceiver0), R(0), U8(0),
|
||||
/* 58 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -52,11 +52,11 @@ parameter count: 1
|
||||
bytecode array length: 16
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 34 S> */ B(CreateClosure), U8(0), U8(6), U8(2),
|
||||
/* 34 S> */ B(CreateClosure), U8(0), U8(2), U8(2),
|
||||
B(Star), R(0),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(1),
|
||||
/* 67 E> */ B(CallUndefinedReceiver1), R(0), R(1), U8(4),
|
||||
/* 67 E> */ B(CallUndefinedReceiver1), R(0), R(1), U8(0),
|
||||
/* 70 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
@ -17,7 +17,7 @@ parameter count: 1
|
||||
bytecode array length: 25
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(2),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(2),
|
||||
B(Mov), R(2), R(0),
|
||||
/* 63 S> */ B(LdaSmi), I8(10),
|
||||
B(Star), R(1),
|
||||
@ -47,7 +47,7 @@ parameter count: 1
|
||||
bytecode array length: 25
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(2),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(2),
|
||||
B(Mov), R(2), R(0),
|
||||
/* 63 S> */ B(LdaSmi), I8(10),
|
||||
B(Star), R(1),
|
||||
@ -77,7 +77,7 @@ parameter count: 1
|
||||
bytecode array length: 25
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(2),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(2),
|
||||
B(Mov), R(2), R(0),
|
||||
/* 63 S> */ B(LdaSmi), I8(10),
|
||||
B(Star), R(1),
|
||||
@ -107,7 +107,7 @@ parameter count: 1
|
||||
bytecode array length: 25
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(2),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(2),
|
||||
B(Mov), R(2), R(0),
|
||||
/* 63 S> */ B(LdaSmi), I8(10),
|
||||
B(Star), R(1),
|
||||
@ -137,7 +137,7 @@ parameter count: 1
|
||||
bytecode array length: 24
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(2),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(2),
|
||||
B(Mov), R(2), R(0),
|
||||
/* 63 S> */ B(LdaSmi), I8(10),
|
||||
B(Star), R(1),
|
||||
@ -166,7 +166,7 @@ parameter count: 1
|
||||
bytecode array length: 24
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(2),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(2),
|
||||
B(Mov), R(2), R(0),
|
||||
/* 63 S> */ B(LdaSmi), I8(10),
|
||||
B(Star), R(1),
|
||||
@ -195,7 +195,7 @@ parameter count: 1
|
||||
bytecode array length: 24
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(2),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(2),
|
||||
B(Mov), R(2), R(0),
|
||||
/* 63 S> */ B(LdaSmi), I8(10),
|
||||
B(Star), R(1),
|
||||
@ -224,7 +224,7 @@ parameter count: 1
|
||||
bytecode array length: 24
|
||||
bytecodes: [
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(2),
|
||||
/* 46 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(2),
|
||||
B(Mov), R(2), R(0),
|
||||
/* 63 S> */ B(LdaSmi), I8(10),
|
||||
B(Star), R(1),
|
||||
|
@ -178,11 +178,11 @@ bytecodes: [
|
||||
B(Star), R(6),
|
||||
B(Mov), R(context), R(14),
|
||||
B(Mov), R(context), R(15),
|
||||
/* 30 S> */ B(CreateArrayLiteral), U8(4), U8(4), U8(37),
|
||||
/* 30 S> */ B(CreateArrayLiteral), U8(4), U8(0), U8(37),
|
||||
B(Star), R(16),
|
||||
B(LdaNamedProperty), R(16), U8(5), U8(5),
|
||||
B(LdaNamedProperty), R(16), U8(5), U8(1),
|
||||
B(Star), R(17),
|
||||
B(CallProperty0), R(17), R(16), U8(7),
|
||||
B(CallProperty0), R(17), R(16), U8(3),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(4),
|
||||
@ -194,17 +194,17 @@ bytecodes: [
|
||||
B(LdaSmi), I8(81),
|
||||
B(Star), R(16),
|
||||
B(CallRuntime), U16(Runtime::kAbort), R(16), U8(1),
|
||||
/* 25 S> */ B(LdaNamedProperty), R(4), U8(7), U8(11),
|
||||
/* 25 S> */ B(LdaNamedProperty), R(4), U8(7), U8(7),
|
||||
B(Star), R(16),
|
||||
B(CallProperty0), R(16), R(4), U8(9),
|
||||
B(CallProperty0), R(16), R(4), U8(5),
|
||||
B(Star), R(5),
|
||||
/* 25 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
|
||||
B(ToBooleanLogicalNot),
|
||||
B(JumpIfFalse), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
|
||||
B(LdaNamedProperty), R(5), U8(8), U8(13),
|
||||
B(LdaNamedProperty), R(5), U8(8), U8(9),
|
||||
B(JumpIfToBooleanTrue), U8(74),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(15),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(11),
|
||||
B(Star), R(7),
|
||||
B(LdaSmi), I8(2),
|
||||
B(Star), R(6),
|
||||
@ -240,7 +240,7 @@ bytecodes: [
|
||||
B(PushContext), R(16),
|
||||
B(Star), R(15),
|
||||
B(LdaSmi), I8(2),
|
||||
B(TestEqualStrict), R(6), U8(17),
|
||||
B(TestEqualStrict), R(6), U8(13),
|
||||
B(JumpIfFalse), U8(6),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(6),
|
||||
@ -258,15 +258,15 @@ bytecodes: [
|
||||
B(SetPendingMessage),
|
||||
B(Star), R(14),
|
||||
B(LdaZero),
|
||||
B(TestEqualStrict), R(6), U8(18),
|
||||
B(TestEqualStrict), R(6), U8(14),
|
||||
B(JumpIfTrue), U8(104),
|
||||
B(LdaNamedProperty), R(4), U8(14), U8(19),
|
||||
B(LdaNamedProperty), R(4), U8(14), U8(15),
|
||||
B(Star), R(8),
|
||||
B(TestUndetectable),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(Jump), U8(93),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrict), R(6), U8(22),
|
||||
B(TestEqualStrict), R(6), U8(18),
|
||||
B(JumpIfFalse), U8(61),
|
||||
B(Ldar), R(8),
|
||||
B(TestTypeOf), U8(5),
|
||||
@ -382,13 +382,13 @@ bytecodes: [
|
||||
/* 38 E> */ B(Throw),
|
||||
B(Ldar), R(3),
|
||||
/* 54 S> */ B(Return),
|
||||
/* 43 S> */ B(LdaGlobal), U8(4), U8(6),
|
||||
/* 43 S> */ B(LdaGlobal), U8(4), U8(2),
|
||||
B(Star), R(9),
|
||||
/* 50 E> */ B(CallUndefinedReceiver0), R(9), U8(4),
|
||||
/* 50 E> */ B(CallUndefinedReceiver0), R(9), U8(0),
|
||||
B(Star), R(7),
|
||||
B(LdaNamedProperty), R(7), U8(5), U8(8),
|
||||
B(LdaNamedProperty), R(7), U8(5), U8(4),
|
||||
B(Star), R(8),
|
||||
B(CallProperty0), R(8), R(7), U8(20),
|
||||
B(CallProperty0), R(8), R(7), U8(16),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
|
||||
B(Star), R(5),
|
||||
@ -406,36 +406,36 @@ bytecodes: [
|
||||
B(CallRuntime), U16(Runtime::kAbort), R(9), U8(1),
|
||||
B(Ldar), R(4),
|
||||
B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(1),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(12),
|
||||
B(LdaNamedProperty), R(5), U8(9), U8(8),
|
||||
B(Star), R(9),
|
||||
B(CallProperty1), R(9), R(5), R(6), U8(26),
|
||||
B(CallProperty1), R(9), R(5), R(6), U8(22),
|
||||
B(Jump), U8(65),
|
||||
B(LdaNamedProperty), R(5), U8(10), U8(10),
|
||||
B(LdaNamedProperty), R(5), U8(10), U8(6),
|
||||
B(JumpIfUndefined), U8(13),
|
||||
B(JumpIfNull), U8(11),
|
||||
B(Star), R(9),
|
||||
B(CallProperty1), R(9), R(5), R(6), U8(22),
|
||||
B(CallProperty1), R(9), R(5), R(6), U8(18),
|
||||
B(Jump), U8(48),
|
||||
B(Ldar), R(6),
|
||||
/* 54 S> */ B(Return),
|
||||
B(LdaNamedProperty), R(5), U8(11), U8(14),
|
||||
B(LdaNamedProperty), R(5), U8(11), U8(10),
|
||||
B(JumpIfUndefined), U8(13),
|
||||
B(JumpIfNull), U8(11),
|
||||
B(Star), R(9),
|
||||
B(CallProperty1), R(9), R(5), R(6), U8(28),
|
||||
B(CallProperty1), R(9), R(5), R(6), U8(24),
|
||||
B(Jump), U8(28),
|
||||
B(LdaNamedProperty), R(5), U8(10), U8(10),
|
||||
B(LdaNamedProperty), R(5), U8(10), U8(6),
|
||||
B(Star), R(9),
|
||||
B(JumpIfUndefined), U8(15),
|
||||
B(JumpIfNull), U8(13),
|
||||
B(CallProperty0), R(9), R(5), U8(24),
|
||||
B(CallProperty0), R(9), R(5), U8(20),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
|
||||
B(CallRuntime), U16(Runtime::kThrowThrowMethodMissing), R(0), U8(0),
|
||||
B(Star), R(3),
|
||||
B(JumpIfJSReceiver), U8(7),
|
||||
B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
|
||||
B(LdaNamedProperty), R(3), U8(12), U8(16),
|
||||
B(LdaNamedProperty), R(3), U8(12), U8(12),
|
||||
B(JumpIfToBooleanTrue), U8(33),
|
||||
B(Ldar), R(3),
|
||||
B(SuspendGenerator), R(1), R(0), U8(9), U8(1),
|
||||
@ -448,7 +448,7 @@ bytecodes: [
|
||||
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
|
||||
B(Star), R(4),
|
||||
B(JumpLoop), U8(146), I8(0),
|
||||
B(LdaNamedProperty), R(3), U8(13), U8(18),
|
||||
B(LdaNamedProperty), R(3), U8(13), U8(14),
|
||||
B(Star), R(5),
|
||||
B(LdaSmi), I8(1),
|
||||
B(TestEqualStrictNoFeedback), R(4),
|
||||
|
@ -17,9 +17,9 @@ parameter count: 1
|
||||
bytecode array length: 11
|
||||
bytecodes: [
|
||||
/* 26 E> */ B(StackCheck),
|
||||
/* 31 S> */ B(LdaGlobal), U8(0), U8(4),
|
||||
B(BitwiseAndSmi), I8(1), U8(6),
|
||||
/* 45 E> */ B(StaGlobalSloppy), U8(0), U8(7),
|
||||
/* 31 S> */ B(LdaGlobal), U8(0), U8(0),
|
||||
B(BitwiseAndSmi), I8(1), U8(2),
|
||||
/* 45 E> */ B(StaGlobalSloppy), U8(0), U8(3),
|
||||
/* 50 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -39,9 +39,9 @@ parameter count: 1
|
||||
bytecode array length: 11
|
||||
bytecodes: [
|
||||
/* 27 E> */ B(StackCheck),
|
||||
/* 32 S> */ B(LdaGlobal), U8(0), U8(4),
|
||||
B(AddSmi), I8(1), U8(6),
|
||||
/* 51 E> */ B(StaGlobalSloppy), U8(0), U8(7),
|
||||
/* 32 S> */ B(LdaGlobal), U8(0), U8(0),
|
||||
B(AddSmi), I8(1), U8(2),
|
||||
/* 51 E> */ B(StaGlobalSloppy), U8(0), U8(3),
|
||||
/* 56 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
@ -17,9 +17,9 @@ parameter count: 1
|
||||
bytecode array length: 10
|
||||
bytecodes: [
|
||||
/* 26 E> */ B(StackCheck),
|
||||
/* 31 S> */ B(LdaGlobal), U8(0), U8(4),
|
||||
B(Inc), U8(8),
|
||||
/* 40 E> */ B(StaGlobalSloppy), U8(0), U8(6),
|
||||
/* 31 S> */ B(LdaGlobal), U8(0), U8(0),
|
||||
B(Inc), U8(4),
|
||||
/* 40 E> */ B(StaGlobalSloppy), U8(0), U8(2),
|
||||
/* 47 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -39,11 +39,11 @@ parameter count: 1
|
||||
bytecode array length: 17
|
||||
bytecodes: [
|
||||
/* 26 E> */ B(StackCheck),
|
||||
/* 31 S> */ B(LdaGlobal), U8(0), U8(4),
|
||||
B(ToNumber), R(0), U8(8),
|
||||
/* 31 S> */ B(LdaGlobal), U8(0), U8(0),
|
||||
B(ToNumber), R(0), U8(4),
|
||||
B(Ldar), R(0),
|
||||
B(Dec), U8(8),
|
||||
/* 44 E> */ B(StaGlobalSloppy), U8(0), U8(6),
|
||||
B(Dec), U8(4),
|
||||
/* 44 E> */ B(StaGlobalSloppy), U8(0), U8(2),
|
||||
B(Ldar), R(0),
|
||||
/* 47 S> */ B(Return),
|
||||
]
|
||||
@ -64,9 +64,9 @@ parameter count: 1
|
||||
bytecode array length: 10
|
||||
bytecodes: [
|
||||
/* 27 E> */ B(StackCheck),
|
||||
/* 46 S> */ B(LdaGlobal), U8(0), U8(4),
|
||||
B(Dec), U8(8),
|
||||
/* 55 E> */ B(StaGlobalStrict), U8(0), U8(6),
|
||||
/* 46 S> */ B(LdaGlobal), U8(0), U8(0),
|
||||
B(Dec), U8(4),
|
||||
/* 55 E> */ B(StaGlobalStrict), U8(0), U8(2),
|
||||
/* 67 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -86,11 +86,11 @@ parameter count: 1
|
||||
bytecode array length: 17
|
||||
bytecodes: [
|
||||
/* 27 E> */ B(StackCheck),
|
||||
/* 32 S> */ B(LdaGlobal), U8(0), U8(4),
|
||||
B(ToNumber), R(0), U8(8),
|
||||
/* 32 S> */ B(LdaGlobal), U8(0), U8(0),
|
||||
B(ToNumber), R(0), U8(4),
|
||||
B(Ldar), R(0),
|
||||
B(Inc), U8(8),
|
||||
/* 50 E> */ B(StaGlobalSloppy), U8(0), U8(6),
|
||||
B(Inc), U8(4),
|
||||
/* 50 E> */ B(StaGlobalSloppy), U8(0), U8(2),
|
||||
B(Ldar), R(0),
|
||||
/* 53 S> */ B(Return),
|
||||
]
|
||||
|
@ -19,7 +19,7 @@ parameter count: 1
|
||||
bytecode array length: 11
|
||||
bytecodes: [
|
||||
/* 32 E> */ B(StackCheck),
|
||||
/* 39 S> */ B(LdaGlobal), U8(0), U8(4),
|
||||
/* 39 S> */ B(LdaGlobal), U8(0), U8(0),
|
||||
B(Star), R(0),
|
||||
B(LdaConstant), U8(1),
|
||||
B(DeletePropertySloppy), R(0),
|
||||
@ -46,7 +46,7 @@ parameter count: 1
|
||||
bytecode array length: 11
|
||||
bytecodes: [
|
||||
/* 28 E> */ B(StackCheck),
|
||||
/* 51 S> */ B(LdaGlobal), U8(0), U8(4),
|
||||
/* 51 S> */ B(LdaGlobal), U8(0), U8(0),
|
||||
B(Star), R(0),
|
||||
B(LdaSmi), I8(1),
|
||||
B(DeletePropertyStrict), R(0),
|
||||
|
@ -121,7 +121,7 @@ bytecodes: [
|
||||
B(Star), R(0),
|
||||
/* 30 S> */ B(JumpIfToBooleanFalse), U8(11),
|
||||
/* 43 S> */ B(Ldar), R(0),
|
||||
B(AddSmi), I8(1), U8(4),
|
||||
B(AddSmi), I8(1), U8(0),
|
||||
B(Star), R(0),
|
||||
B(Jump), U8(5),
|
||||
/* 66 S> */ B(LdaSmi), I8(2),
|
||||
@ -151,7 +151,7 @@ bytecode array length: 19
|
||||
bytecodes: [
|
||||
/* 10 E> */ B(StackCheck),
|
||||
/* 18 S> */ B(LdaZero),
|
||||
/* 24 E> */ B(TestLessThanOrEqual), R(arg0), U8(4),
|
||||
/* 24 E> */ B(TestLessThanOrEqual), R(arg0), U8(0),
|
||||
B(JumpIfFalse), U8(7),
|
||||
/* 36 S> */ B(Wide), B(LdaSmi), I16(200),
|
||||
/* 47 S> */ B(Return),
|
||||
@ -266,7 +266,7 @@ bytecodes: [
|
||||
/* 35 S> */ B(LdaZero),
|
||||
B(Star), R(1),
|
||||
/* 38 S> */ B(LdaConstant), U8(0),
|
||||
/* 44 E> */ B(TestEqualStrict), R(0), U8(4),
|
||||
/* 44 E> */ B(TestEqualStrict), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(10),
|
||||
/* 58 S> */ B(Mov), R(0), R(1),
|
||||
/* 1081 S> */ B(Wide), B(LdaSmi), I16(200),
|
||||
@ -400,32 +400,32 @@ bytecode array length: 81
|
||||
bytecodes: [
|
||||
/* 10 E> */ B(StackCheck),
|
||||
/* 21 S> */ B(Ldar), R(arg1),
|
||||
/* 27 E> */ B(TestEqual), R(arg0), U8(4),
|
||||
/* 27 E> */ B(TestEqual), R(arg0), U8(0),
|
||||
B(JumpIfFalse), U8(5),
|
||||
/* 35 S> */ B(LdaSmi), I8(1),
|
||||
/* 44 S> */ B(Return),
|
||||
/* 49 S> */ B(Ldar), R(arg1),
|
||||
/* 55 E> */ B(TestEqualStrict), R(arg0), U8(5),
|
||||
/* 55 E> */ B(TestEqualStrict), R(arg0), U8(1),
|
||||
B(JumpIfFalse), U8(5),
|
||||
/* 64 S> */ B(LdaSmi), I8(1),
|
||||
/* 73 S> */ B(Return),
|
||||
/* 78 S> */ B(Ldar), R(arg1),
|
||||
/* 84 E> */ B(TestLessThan), R(arg0), U8(6),
|
||||
/* 84 E> */ B(TestLessThan), R(arg0), U8(2),
|
||||
B(JumpIfFalse), U8(5),
|
||||
/* 91 S> */ B(LdaSmi), I8(1),
|
||||
/* 100 S> */ B(Return),
|
||||
/* 105 S> */ B(Ldar), R(arg1),
|
||||
/* 111 E> */ B(TestGreaterThan), R(arg0), U8(7),
|
||||
/* 111 E> */ B(TestGreaterThan), R(arg0), U8(3),
|
||||
B(JumpIfFalse), U8(5),
|
||||
/* 118 S> */ B(LdaSmi), I8(1),
|
||||
/* 127 S> */ B(Return),
|
||||
/* 132 S> */ B(Ldar), R(arg1),
|
||||
/* 138 E> */ B(TestLessThanOrEqual), R(arg0), U8(8),
|
||||
/* 138 E> */ B(TestLessThanOrEqual), R(arg0), U8(4),
|
||||
B(JumpIfFalse), U8(5),
|
||||
/* 146 S> */ B(LdaSmi), I8(1),
|
||||
/* 155 S> */ B(Return),
|
||||
/* 160 S> */ B(Ldar), R(arg1),
|
||||
/* 166 E> */ B(TestGreaterThanOrEqual), R(arg0), U8(9),
|
||||
/* 166 E> */ B(TestGreaterThanOrEqual), R(arg0), U8(5),
|
||||
B(JumpIfFalse), U8(5),
|
||||
/* 174 S> */ B(LdaSmi), I8(1),
|
||||
/* 183 S> */ B(Return),
|
||||
@ -498,18 +498,18 @@ bytecode array length: 36
|
||||
bytecodes: [
|
||||
/* 10 E> */ B(StackCheck),
|
||||
/* 21 S> */ B(Ldar), R(arg1),
|
||||
/* 27 E> */ B(TestEqual), R(arg0), U8(4),
|
||||
/* 27 E> */ B(TestEqual), R(arg0), U8(0),
|
||||
B(JumpIfTrue), U8(8),
|
||||
B(LdaZero),
|
||||
/* 37 E> */ B(TestLessThan), R(arg0), U8(5),
|
||||
/* 37 E> */ B(TestLessThan), R(arg0), U8(1),
|
||||
B(JumpIfFalse), U8(5),
|
||||
/* 48 S> */ B(LdaSmi), I8(1),
|
||||
/* 57 S> */ B(Return),
|
||||
/* 67 S> */ B(LdaZero),
|
||||
/* 73 E> */ B(TestGreaterThan), R(arg0), U8(6),
|
||||
/* 73 E> */ B(TestGreaterThan), R(arg0), U8(2),
|
||||
B(JumpIfFalse), U8(10),
|
||||
B(LdaZero),
|
||||
/* 82 E> */ B(TestGreaterThan), R(arg1), U8(7),
|
||||
/* 82 E> */ B(TestGreaterThan), R(arg1), U8(3),
|
||||
B(JumpIfFalse), U8(4),
|
||||
/* 93 S> */ B(LdaZero),
|
||||
/* 102 S> */ B(Return),
|
||||
|
@ -957,19 +957,19 @@ bytecodes: [
|
||||
/* 4103 S> */ B(LdaZero),
|
||||
B(Star), R(1),
|
||||
/* 4108 S> */ B(LdaSmi), I8(3),
|
||||
/* 4108 E> */ B(TestLessThan), R(1), U8(4),
|
||||
/* 4108 E> */ B(TestLessThan), R(1), U8(0),
|
||||
B(Wide), B(JumpIfFalse), U16(39),
|
||||
/* 4090 E> */ B(StackCheck),
|
||||
/* 4122 S> */ B(LdaSmi), I8(1),
|
||||
/* 4128 E> */ B(TestEqual), R(1), U8(6),
|
||||
/* 4128 E> */ B(TestEqual), R(1), U8(2),
|
||||
B(Wide), B(JumpIfFalse), U16(7),
|
||||
/* 4134 S> */ B(Wide), B(Jump), U16(16),
|
||||
/* 4146 S> */ B(LdaSmi), I8(2),
|
||||
/* 4152 E> */ B(TestEqual), R(1), U8(7),
|
||||
/* 4152 E> */ B(TestEqual), R(1), U8(3),
|
||||
B(Wide), B(JumpIfFalse), U16(7),
|
||||
/* 4158 S> */ B(Wide), B(Jump), U16(12),
|
||||
/* 4114 S> */ B(Ldar), R(1),
|
||||
B(Inc), U8(5),
|
||||
B(Inc), U8(1),
|
||||
B(Star), R(1),
|
||||
B(JumpLoop), U8(42), I8(0),
|
||||
/* 4167 S> */ B(LdaSmi), I8(3),
|
||||
|
@ -17,7 +17,7 @@ bytecodes: [
|
||||
B(PushContext), R(1),
|
||||
B(LdaTheHole),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(10),
|
||||
@ -43,7 +43,7 @@ bytecodes: [
|
||||
B(PushContext), R(1),
|
||||
B(LdaTheHole),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(10),
|
||||
@ -69,7 +69,7 @@ bytecodes: [
|
||||
B(PushContext), R(1),
|
||||
B(LdaTheHole),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(20),
|
||||
@ -101,7 +101,7 @@ bytecodes: [
|
||||
B(PushContext), R(1),
|
||||
B(LdaTheHole),
|
||||
B(StaCurrentContextSlot), U8(4),
|
||||
B(CreateClosure), U8(0), U8(4), U8(2),
|
||||
B(CreateClosure), U8(0), U8(0), U8(2),
|
||||
B(Star), R(0),
|
||||
/* 30 E> */ B(StackCheck),
|
||||
/* 42 S> */ B(LdaSmi), I8(10),
|
||||
|
@ -17,7 +17,7 @@ parameter count: 1
|
||||
bytecode array length: 5
|
||||
bytecodes: [
|
||||
/* 21 E> */ B(StackCheck),
|
||||
/* 26 S> */ B(LdaGlobal), U8(0), U8(4),
|
||||
/* 26 S> */ B(LdaGlobal), U8(0), U8(0),
|
||||
/* 35 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -37,7 +37,7 @@ parameter count: 1
|
||||
bytecode array length: 5
|
||||
bytecodes: [
|
||||
/* 27 E> */ B(StackCheck),
|
||||
/* 32 S> */ B(LdaGlobal), U8(0), U8(4),
|
||||
/* 32 S> */ B(LdaGlobal), U8(0), U8(0),
|
||||
/* 41 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -57,7 +57,7 @@ parameter count: 1
|
||||
bytecode array length: 5
|
||||
bytecodes: [
|
||||
/* 17 E> */ B(StackCheck),
|
||||
/* 22 S> */ B(LdaGlobal), U8(0), U8(4),
|
||||
/* 22 S> */ B(LdaGlobal), U8(0), U8(0),
|
||||
/* 31 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -204,138 +204,138 @@ snippet: "
|
||||
"
|
||||
frame size: 0
|
||||
parameter count: 2
|
||||
bytecode array length: 528
|
||||
bytecode array length: 520
|
||||
bytecodes: [
|
||||
/* 17 E> */ B(StackCheck),
|
||||
/* 27 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(4),
|
||||
/* 37 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(6),
|
||||
/* 47 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(8),
|
||||
/* 57 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(10),
|
||||
/* 67 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(12),
|
||||
/* 77 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(14),
|
||||
/* 87 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(16),
|
||||
/* 97 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(18),
|
||||
/* 107 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(20),
|
||||
/* 117 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(22),
|
||||
/* 127 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(24),
|
||||
/* 137 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(26),
|
||||
/* 147 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(28),
|
||||
/* 157 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(30),
|
||||
/* 167 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(32),
|
||||
/* 177 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(34),
|
||||
/* 187 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(36),
|
||||
/* 197 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(38),
|
||||
/* 207 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(40),
|
||||
/* 217 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(42),
|
||||
/* 227 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(44),
|
||||
/* 237 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(46),
|
||||
/* 247 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(48),
|
||||
/* 257 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(50),
|
||||
/* 267 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(52),
|
||||
/* 277 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(54),
|
||||
/* 287 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(56),
|
||||
/* 297 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(58),
|
||||
/* 307 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(60),
|
||||
/* 317 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(62),
|
||||
/* 327 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(64),
|
||||
/* 337 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(66),
|
||||
/* 347 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(68),
|
||||
/* 357 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(70),
|
||||
/* 367 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(72),
|
||||
/* 377 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(74),
|
||||
/* 387 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(76),
|
||||
/* 397 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(78),
|
||||
/* 407 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(80),
|
||||
/* 417 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(82),
|
||||
/* 427 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(84),
|
||||
/* 437 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(86),
|
||||
/* 447 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(88),
|
||||
/* 457 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(90),
|
||||
/* 467 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(92),
|
||||
/* 477 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(94),
|
||||
/* 487 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(96),
|
||||
/* 497 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(98),
|
||||
/* 507 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(100),
|
||||
/* 517 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(102),
|
||||
/* 527 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(104),
|
||||
/* 537 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(106),
|
||||
/* 547 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(108),
|
||||
/* 557 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(110),
|
||||
/* 567 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(112),
|
||||
/* 577 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(114),
|
||||
/* 587 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(116),
|
||||
/* 597 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(118),
|
||||
/* 607 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(120),
|
||||
/* 617 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(122),
|
||||
/* 627 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(124),
|
||||
/* 637 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(126),
|
||||
/* 647 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(128),
|
||||
/* 657 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(130),
|
||||
/* 667 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(132),
|
||||
/* 677 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(134),
|
||||
/* 687 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(136),
|
||||
/* 697 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(138),
|
||||
/* 707 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(140),
|
||||
/* 717 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(142),
|
||||
/* 727 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(144),
|
||||
/* 737 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(146),
|
||||
/* 747 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(148),
|
||||
/* 757 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(150),
|
||||
/* 767 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(152),
|
||||
/* 777 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(154),
|
||||
/* 787 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(156),
|
||||
/* 797 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(158),
|
||||
/* 807 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(160),
|
||||
/* 817 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(162),
|
||||
/* 827 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(164),
|
||||
/* 837 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(166),
|
||||
/* 847 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(168),
|
||||
/* 857 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(170),
|
||||
/* 867 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(172),
|
||||
/* 877 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(174),
|
||||
/* 887 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(176),
|
||||
/* 897 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(178),
|
||||
/* 907 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(180),
|
||||
/* 917 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(182),
|
||||
/* 927 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(184),
|
||||
/* 937 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(186),
|
||||
/* 947 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(188),
|
||||
/* 957 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(190),
|
||||
/* 967 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(192),
|
||||
/* 977 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(194),
|
||||
/* 987 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(196),
|
||||
/* 997 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(198),
|
||||
/* 1007 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(200),
|
||||
/* 1017 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(202),
|
||||
/* 1027 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(204),
|
||||
/* 1037 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(206),
|
||||
/* 1047 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(208),
|
||||
/* 1057 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(210),
|
||||
/* 1067 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(212),
|
||||
/* 1077 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(214),
|
||||
/* 1087 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(216),
|
||||
/* 1097 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(218),
|
||||
/* 1107 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(220),
|
||||
/* 1117 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(222),
|
||||
/* 1127 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(224),
|
||||
/* 1137 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(226),
|
||||
/* 1147 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(228),
|
||||
/* 1157 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(230),
|
||||
/* 1167 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(232),
|
||||
/* 1177 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(234),
|
||||
/* 1187 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(236),
|
||||
/* 1197 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(238),
|
||||
/* 1207 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(240),
|
||||
/* 1217 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(242),
|
||||
/* 1227 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(244),
|
||||
/* 1237 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(246),
|
||||
/* 1247 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(248),
|
||||
/* 1257 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(250),
|
||||
/* 1267 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(252),
|
||||
/* 1277 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(254),
|
||||
/* 1287 S> */ B(Wide), B(LdaNamedProperty), R16(arg0), U16(0), U16(256),
|
||||
/* 1297 S> */ B(Wide), B(LdaNamedProperty), R16(arg0), U16(0), U16(258),
|
||||
/* 1305 S> */ B(Wide), B(LdaGlobal), U16(1), U16(260),
|
||||
/* 27 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(0),
|
||||
/* 37 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(2),
|
||||
/* 47 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(4),
|
||||
/* 57 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(6),
|
||||
/* 67 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(8),
|
||||
/* 77 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(10),
|
||||
/* 87 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(12),
|
||||
/* 97 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(14),
|
||||
/* 107 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(16),
|
||||
/* 117 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(18),
|
||||
/* 127 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(20),
|
||||
/* 137 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(22),
|
||||
/* 147 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(24),
|
||||
/* 157 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(26),
|
||||
/* 167 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(28),
|
||||
/* 177 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(30),
|
||||
/* 187 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(32),
|
||||
/* 197 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(34),
|
||||
/* 207 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(36),
|
||||
/* 217 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(38),
|
||||
/* 227 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(40),
|
||||
/* 237 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(42),
|
||||
/* 247 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(44),
|
||||
/* 257 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(46),
|
||||
/* 267 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(48),
|
||||
/* 277 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(50),
|
||||
/* 287 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(52),
|
||||
/* 297 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(54),
|
||||
/* 307 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(56),
|
||||
/* 317 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(58),
|
||||
/* 327 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(60),
|
||||
/* 337 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(62),
|
||||
/* 347 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(64),
|
||||
/* 357 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(66),
|
||||
/* 367 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(68),
|
||||
/* 377 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(70),
|
||||
/* 387 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(72),
|
||||
/* 397 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(74),
|
||||
/* 407 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(76),
|
||||
/* 417 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(78),
|
||||
/* 427 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(80),
|
||||
/* 437 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(82),
|
||||
/* 447 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(84),
|
||||
/* 457 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(86),
|
||||
/* 467 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(88),
|
||||
/* 477 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(90),
|
||||
/* 487 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(92),
|
||||
/* 497 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(94),
|
||||
/* 507 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(96),
|
||||
/* 517 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(98),
|
||||
/* 527 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(100),
|
||||
/* 537 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(102),
|
||||
/* 547 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(104),
|
||||
/* 557 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(106),
|
||||
/* 567 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(108),
|
||||
/* 577 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(110),
|
||||
/* 587 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(112),
|
||||
/* 597 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(114),
|
||||
/* 607 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(116),
|
||||
/* 617 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(118),
|
||||
/* 627 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(120),
|
||||
/* 637 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(122),
|
||||
/* 647 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(124),
|
||||
/* 657 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(126),
|
||||
/* 667 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(128),
|
||||
/* 677 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(130),
|
||||
/* 687 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(132),
|
||||
/* 697 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(134),
|
||||
/* 707 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(136),
|
||||
/* 717 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(138),
|
||||
/* 727 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(140),
|
||||
/* 737 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(142),
|
||||
/* 747 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(144),
|
||||
/* 757 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(146),
|
||||
/* 767 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(148),
|
||||
/* 777 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(150),
|
||||
/* 787 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(152),
|
||||
/* 797 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(154),
|
||||
/* 807 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(156),
|
||||
/* 817 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(158),
|
||||
/* 827 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(160),
|
||||
/* 837 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(162),
|
||||
/* 847 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(164),
|
||||
/* 857 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(166),
|
||||
/* 867 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(168),
|
||||
/* 877 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(170),
|
||||
/* 887 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(172),
|
||||
/* 897 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(174),
|
||||
/* 907 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(176),
|
||||
/* 917 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(178),
|
||||
/* 927 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(180),
|
||||
/* 937 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(182),
|
||||
/* 947 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(184),
|
||||
/* 957 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(186),
|
||||
/* 967 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(188),
|
||||
/* 977 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(190),
|
||||
/* 987 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(192),
|
||||
/* 997 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(194),
|
||||
/* 1007 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(196),
|
||||
/* 1017 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(198),
|
||||
/* 1027 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(200),
|
||||
/* 1037 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(202),
|
||||
/* 1047 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(204),
|
||||
/* 1057 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(206),
|
||||
/* 1067 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(208),
|
||||
/* 1077 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(210),
|
||||
/* 1087 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(212),
|
||||
/* 1097 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(214),
|
||||
/* 1107 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(216),
|
||||
/* 1117 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(218),
|
||||
/* 1127 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(220),
|
||||
/* 1137 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(222),
|
||||
/* 1147 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(224),
|
||||
/* 1157 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(226),
|
||||
/* 1167 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(228),
|
||||
/* 1177 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(230),
|
||||
/* 1187 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(232),
|
||||
/* 1197 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(234),
|
||||
/* 1207 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(236),
|
||||
/* 1217 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(238),
|
||||
/* 1227 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(240),
|
||||
/* 1237 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(242),
|
||||
/* 1247 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(244),
|
||||
/* 1257 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(246),
|
||||
/* 1267 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(248),
|
||||
/* 1277 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(250),
|
||||
/* 1287 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(252),
|
||||
/* 1297 S> */ B(LdaNamedProperty), R(arg0), U8(0), U8(254),
|
||||
/* 1305 S> */ B(Wide), B(LdaGlobal), U16(1), U16(256),
|
||||
/* 1314 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
@ -37,7 +37,7 @@ bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star), R(0),
|
||||
/* 45 S> */ B(LdaSmi), I8(1),
|
||||
/* 55 E> */ B(TestEqual), R(0), U8(4),
|
||||
/* 55 E> */ B(TestEqual), R(0), U8(0),
|
||||
B(JumpIfTrue), U8(4),
|
||||
B(LdaSmi), I8(3),
|
||||
/* 66 S> */ B(Return),
|
||||
@ -79,7 +79,7 @@ bytecodes: [
|
||||
/* 42 S> */ B(LdaZero),
|
||||
B(Star), R(0),
|
||||
/* 45 S> */ B(LdaZero),
|
||||
/* 55 E> */ B(TestEqual), R(0), U8(4),
|
||||
/* 55 E> */ B(TestEqual), R(0), U8(0),
|
||||
B(JumpIfFalse), U8(4),
|
||||
B(LdaSmi), I8(3),
|
||||
/* 66 S> */ B(Return),
|
||||
@ -556,7 +556,7 @@ bytecodes: [
|
||||
/* 60 S> */ B(LdaSmi), I8(3),
|
||||
B(Star), R(2),
|
||||
/* 63 S> */ B(LdaSmi), I8(3),
|
||||
/* 73 E> */ B(TestGreaterThan), R(0), U8(4),
|
||||
/* 73 E> */ B(TestGreaterThan), R(0), U8(0),
|
||||
B(JumpIfTrueConstant), U8(0),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(1),
|
||||
@ -743,7 +743,7 @@ bytecodes: [
|
||||
/* 60 S> */ B(LdaSmi), I8(3),
|
||||
B(Star), R(2),
|
||||
/* 63 S> */ B(LdaSmi), I8(5),
|
||||
/* 73 E> */ B(TestLessThan), R(0), U8(4),
|
||||
/* 73 E> */ B(TestLessThan), R(0), U8(0),
|
||||
B(JumpIfFalseConstant), U8(0),
|
||||
B(LdaSmi), I8(1),
|
||||
B(Star), R(1),
|
||||
|
@ -23,7 +23,7 @@ bytecodes: [
|
||||
B(Ldar), R(new_target),
|
||||
B(StaCurrentContextSlot), U8(5),
|
||||
/* 10 E> */ B(StackCheck),
|
||||
/* 14 S> */ B(LdaLookupGlobalSlot), U8(0), U8(6), U8(1),
|
||||
/* 14 S> */ B(LdaLookupGlobalSlot), U8(0), U8(2), U8(1),
|
||||
B(Star), R(1),
|
||||
B(LdaConstant), U8(1),
|
||||
B(Star), R(2),
|
||||
@ -38,8 +38,8 @@ bytecodes: [
|
||||
B(Mov), R(closure), R(5),
|
||||
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6),
|
||||
B(Star), R(1),
|
||||
/* 14 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(4),
|
||||
/* 35 S> */ B(LdaLookupGlobalSlot), U8(2), U8(8), U8(1),
|
||||
/* 14 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(0),
|
||||
/* 35 S> */ B(LdaLookupGlobalSlot), U8(2), U8(4), U8(1),
|
||||
/* 44 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -67,7 +67,7 @@ bytecodes: [
|
||||
B(Ldar), R(new_target),
|
||||
B(StaCurrentContextSlot), U8(5),
|
||||
/* 10 E> */ B(StackCheck),
|
||||
/* 14 S> */ B(LdaLookupGlobalSlot), U8(0), U8(6), U8(1),
|
||||
/* 14 S> */ B(LdaLookupGlobalSlot), U8(0), U8(2), U8(1),
|
||||
B(Star), R(1),
|
||||
B(LdaConstant), U8(1),
|
||||
B(Star), R(2),
|
||||
@ -82,8 +82,8 @@ bytecodes: [
|
||||
B(Mov), R(closure), R(5),
|
||||
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6),
|
||||
B(Star), R(1),
|
||||
/* 14 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(4),
|
||||
/* 35 S> */ B(LdaLookupGlobalSlotInsideTypeof), U8(2), U8(8), U8(1),
|
||||
/* 14 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(0),
|
||||
/* 35 S> */ B(LdaLookupGlobalSlotInsideTypeof), U8(2), U8(4), U8(1),
|
||||
B(TypeOf),
|
||||
/* 51 S> */ B(Return),
|
||||
]
|
||||
@ -114,7 +114,7 @@ bytecodes: [
|
||||
/* 10 E> */ B(StackCheck),
|
||||
/* 14 S> */ B(LdaSmi), I8(20),
|
||||
/* 16 E> */ B(StaLookupSlot), U8(0), U8(0),
|
||||
/* 22 S> */ B(LdaLookupGlobalSlot), U8(1), U8(6), U8(1),
|
||||
/* 22 S> */ B(LdaLookupGlobalSlot), U8(1), U8(2), U8(1),
|
||||
B(Star), R(1),
|
||||
B(LdaConstant), U8(2),
|
||||
B(Star), R(2),
|
||||
@ -129,7 +129,7 @@ bytecodes: [
|
||||
B(Mov), R(closure), R(5),
|
||||
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6),
|
||||
B(Star), R(1),
|
||||
/* 29 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(4),
|
||||
/* 29 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(0),
|
||||
/* 38 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
@ -162,7 +162,7 @@ bytecodes: [
|
||||
B(Ldar), R(new_target),
|
||||
B(StaCurrentContextSlot), U8(5),
|
||||
/* 38 E> */ B(StackCheck),
|
||||
/* 44 S> */ B(LdaLookupGlobalSlot), U8(0), U8(6), U8(1),
|
||||
/* 44 S> */ B(LdaLookupGlobalSlot), U8(0), U8(2), U8(1),
|
||||
B(Star), R(1),
|
||||
B(LdaConstant), U8(1),
|
||||
B(Star), R(2),
|
||||
@ -177,7 +177,7 @@ bytecodes: [
|
||||
B(Mov), R(closure), R(5),
|
||||
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6),
|
||||
B(Star), R(1),
|
||||
/* 44 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(4),
|
||||
/* 44 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(0),
|
||||
/* 66 S> */ B(LdaLookupContextSlot), U8(2), U8(6), U8(1),
|
||||
/* 75 S> */ B(Return),
|
||||
]
|
||||
@ -211,7 +211,7 @@ bytecodes: [
|
||||
B(Ldar), R(new_target),
|
||||
B(StaCurrentContextSlot), U8(5),
|
||||
/* 34 E> */ B(StackCheck),
|
||||
/* 40 S> */ B(LdaLookupGlobalSlot), U8(0), U8(6), U8(1),
|
||||
/* 40 S> */ B(LdaLookupGlobalSlot), U8(0), U8(2), U8(1),
|
||||
B(Star), R(1),
|
||||
B(LdaConstant), U8(1),
|
||||
B(Star), R(2),
|
||||
@ -226,8 +226,8 @@ bytecodes: [
|
||||
B(Mov), R(closure), R(5),
|
||||
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(3), U8(6),
|
||||
B(Star), R(1),
|
||||
/* 40 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(4),
|
||||
/* 62 S> */ B(LdaLookupGlobalSlot), U8(2), U8(8), U8(1),
|
||||
/* 40 E> */ B(CallUndefinedReceiver1), R(1), R(2), U8(0),
|
||||
/* 62 S> */ B(LdaLookupGlobalSlot), U8(2), U8(4), U8(1),
|
||||
/* 71 S> */ B(Return),
|
||||
]
|
||||
constant pool: [
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user