| Index: src/code-stubs.cc
|
| diff --git a/src/code-stubs.cc b/src/code-stubs.cc
|
| index 0fb866e9491049d7e165d43da0f7c7923845a657..f6d0a4db2d2856dd22052c8f2ff3a7e5a18256e4 100644
|
| --- a/src/code-stubs.cc
|
| +++ b/src/code-stubs.cc
|
| @@ -421,10 +421,10 @@ void LoadICTrampolineTFStub::GenerateAssembly(
|
| CodeStubAssembler* assembler) const {
|
| typedef compiler::Node Node;
|
|
|
| - Node* receiver = assembler->Parameter(0);
|
| - Node* name = assembler->Parameter(1);
|
| - Node* slot = assembler->Parameter(2);
|
| - Node* context = assembler->Parameter(3);
|
| + Node* receiver = assembler->Parameter(Descriptor::kReceiver);
|
| + Node* name = assembler->Parameter(Descriptor::kName);
|
| + Node* slot = assembler->Parameter(Descriptor::kSlot);
|
| + Node* context = assembler->Parameter(Descriptor::kContext);
|
| Node* vector = assembler->LoadTypeFeedbackVectorForStub();
|
|
|
| CodeStubAssembler::LoadICParameters p(context, receiver, name, slot, vector);
|
| @@ -434,11 +434,11 @@ void LoadICTrampolineTFStub::GenerateAssembly(
|
| void LoadICTFStub::GenerateAssembly(CodeStubAssembler* assembler) const {
|
| typedef compiler::Node Node;
|
|
|
| - Node* receiver = assembler->Parameter(0);
|
| - Node* name = assembler->Parameter(1);
|
| - Node* slot = assembler->Parameter(2);
|
| - Node* vector = assembler->Parameter(3);
|
| - Node* context = assembler->Parameter(4);
|
| + Node* receiver = assembler->Parameter(Descriptor::kReceiver);
|
| + Node* name = assembler->Parameter(Descriptor::kName);
|
| + Node* slot = assembler->Parameter(Descriptor::kSlot);
|
| + Node* vector = assembler->Parameter(Descriptor::kVector);
|
| + Node* context = assembler->Parameter(Descriptor::kContext);
|
|
|
| CodeStubAssembler::LoadICParameters p(context, receiver, name, slot, vector);
|
| assembler->LoadIC(&p);
|
| @@ -448,8 +448,8 @@ void LoadGlobalICTrampolineStub::GenerateAssembly(
|
| CodeStubAssembler* assembler) const {
|
| typedef compiler::Node Node;
|
|
|
| - Node* slot = assembler->Parameter(0);
|
| - Node* context = assembler->Parameter(1);
|
| + Node* slot = assembler->Parameter(Descriptor::kSlot);
|
| + Node* context = assembler->Parameter(Descriptor::kContext);
|
| Node* vector = assembler->LoadTypeFeedbackVectorForStub();
|
|
|
| CodeStubAssembler::LoadICParameters p(context, nullptr, nullptr, slot,
|
| @@ -460,9 +460,9 @@ void LoadGlobalICTrampolineStub::GenerateAssembly(
|
| void LoadGlobalICStub::GenerateAssembly(CodeStubAssembler* assembler) const {
|
| typedef compiler::Node Node;
|
|
|
| - Node* slot = assembler->Parameter(0);
|
| - Node* vector = assembler->Parameter(1);
|
| - Node* context = assembler->Parameter(2);
|
| + Node* slot = assembler->Parameter(Descriptor::kSlot);
|
| + Node* vector = assembler->Parameter(Descriptor::kVector);
|
| + Node* context = assembler->Parameter(Descriptor::kContext);
|
|
|
| CodeStubAssembler::LoadICParameters p(context, nullptr, nullptr, slot,
|
| vector);
|
| @@ -3559,8 +3559,8 @@ void GenerateStringEqual(CodeStubAssembler* assembler, ResultMode mode) {
|
|
|
| void LoadApiGetterStub::GenerateAssembly(CodeStubAssembler* assembler) const {
|
| typedef compiler::Node Node;
|
| - Node* context = assembler->Parameter(3);
|
| - Node* receiver = assembler->Parameter(0);
|
| + Node* context = assembler->Parameter(Descriptor::kContext);
|
| + Node* receiver = assembler->Parameter(Descriptor::kReceiver);
|
| // For now we only support receiver_is_holder.
|
| DCHECK(receiver_is_holder());
|
| Node* holder = receiver;
|
| @@ -3805,12 +3805,11 @@ void ToIntegerStub::GenerateAssembly(CodeStubAssembler* assembler) const {
|
| void StoreInterceptorStub::GenerateAssembly(
|
| CodeStubAssembler* assembler) const {
|
| typedef compiler::Node Node;
|
| - Node* receiver = assembler->Parameter(0);
|
| - Node* name = assembler->Parameter(1);
|
| - Node* value = assembler->Parameter(2);
|
| - // Node* slot = assembler->Parameter(3);
|
| - // Node* vector = assembler->Parameter(4);
|
| - Node* context = assembler->Parameter(5);
|
| +
|
| + Node* receiver = assembler->Parameter(Descriptor::kReceiver);
|
| + Node* name = assembler->Parameter(Descriptor::kName);
|
| + Node* value = assembler->Parameter(Descriptor::kValue);
|
| + Node* context = assembler->Parameter(Descriptor::kContext);
|
| assembler->TailCallRuntime(Runtime::kStorePropertyWithInterceptor, context,
|
| receiver, name, value);
|
| }
|
| @@ -3819,11 +3818,12 @@ void LoadIndexedInterceptorStub::GenerateAssembly(
|
| CodeStubAssembler* assembler) const {
|
| typedef compiler::Node Node;
|
| typedef CodeStubAssembler::Label Label;
|
| - Node* receiver = assembler->Parameter(0);
|
| - Node* key = assembler->Parameter(1);
|
| - Node* slot = assembler->Parameter(2);
|
| - Node* vector = assembler->Parameter(3);
|
| - Node* context = assembler->Parameter(4);
|
| +
|
| + Node* receiver = assembler->Parameter(Descriptor::kReceiver);
|
| + Node* key = assembler->Parameter(Descriptor::kName);
|
| + Node* slot = assembler->Parameter(Descriptor::kSlot);
|
| + Node* vector = assembler->Parameter(Descriptor::kVector);
|
| + Node* context = assembler->Parameter(Descriptor::kContext);
|
|
|
| Label if_keyispositivesmi(assembler), if_keyisinvalid(assembler);
|
| assembler->Branch(assembler->WordIsPositiveSmi(key), &if_keyispositivesmi,
|
| @@ -4065,16 +4065,9 @@ void ToObjectStub::InitializeDescriptor(CodeStubDescriptor* descriptor) {
|
| descriptor->Initialize(Runtime::FunctionForId(Runtime::kToObject)->entry);
|
| }
|
|
|
| -
|
| -CallInterfaceDescriptor StoreTransitionStub::GetCallInterfaceDescriptor()
|
| - const {
|
| - return VectorStoreTransitionDescriptor(isolate());
|
| -}
|
| -
|
| -
|
| -CallInterfaceDescriptor
|
| -ElementsTransitionAndStoreStub::GetCallInterfaceDescriptor() const {
|
| - return VectorStoreTransitionDescriptor(isolate());
|
| +void StoreTransitionStub::InitializeDescriptor(CodeStubDescriptor* descriptor) {
|
| + descriptor->Initialize(
|
| + FUNCTION_ADDR(Runtime_TransitionStoreIC_MissFromStubFailure));
|
| }
|
|
|
| void TypeofStub::InitializeDescriptor(CodeStubDescriptor* descriptor) {}
|
| @@ -4499,10 +4492,8 @@ void FastNewFunctionContextStub::GenerateAssembly(
|
| int size = length * kPointerSize + FixedArray::kHeaderSize;
|
|
|
| // Get the function
|
| - Node* function =
|
| - assembler->Parameter(FastNewFunctionContextDescriptor::kFunctionIndex);
|
| - Node* context =
|
| - assembler->Parameter(FastNewFunctionContextDescriptor::kContextIndex);
|
| + Node* function = assembler->Parameter(Descriptor::kFunction);
|
| + Node* context = assembler->Parameter(Descriptor::kContext);
|
|
|
| // Create a new closure from the given function info in new space
|
| Node* function_context = assembler->Allocate(size);
|
| @@ -4692,17 +4683,13 @@ void ArrayNoArgumentConstructorStub::GenerateAssembly(
|
| CodeStubAssembler* assembler) const {
|
| typedef compiler::Node Node;
|
| Node* native_context = assembler->LoadObjectField(
|
| - assembler->Parameter(
|
| - ArrayNoArgumentConstructorDescriptor::kFunctionIndex),
|
| - JSFunction::kContextOffset);
|
| + assembler->Parameter(Descriptor::kFunction), JSFunction::kContextOffset);
|
| bool track_allocation_site =
|
| AllocationSite::GetMode(elements_kind()) == TRACK_ALLOCATION_SITE &&
|
| override_mode() != DISABLE_ALLOCATION_SITES;
|
| Node* allocation_site =
|
| - track_allocation_site
|
| - ? assembler->Parameter(
|
| - ArrayNoArgumentConstructorDescriptor::kAllocationSiteIndex)
|
| - : nullptr;
|
| + track_allocation_site ? assembler->Parameter(Descriptor::kAllocationSite)
|
| + : nullptr;
|
| Node* array_map =
|
| assembler->LoadJSArrayElementsMap(elements_kind(), native_context);
|
| Node* array = assembler->AllocateJSArray(
|
| @@ -4715,10 +4702,9 @@ void ArrayNoArgumentConstructorStub::GenerateAssembly(
|
| void InternalArrayNoArgumentConstructorStub::GenerateAssembly(
|
| CodeStubAssembler* assembler) const {
|
| typedef compiler::Node Node;
|
| - Node* array_map = assembler->LoadObjectField(
|
| - assembler->Parameter(
|
| - ArrayNoArgumentConstructorDescriptor::kFunctionIndex),
|
| - JSFunction::kPrototypeOrInitialMapOffset);
|
| + Node* array_map =
|
| + assembler->LoadObjectField(assembler->Parameter(Descriptor::kFunction),
|
| + JSFunction::kPrototypeOrInitialMapOffset);
|
| Node* array = assembler->AllocateJSArray(
|
| elements_kind(), array_map,
|
| assembler->IntPtrConstant(JSArray::kPreallocatedArrayElements),
|
| @@ -4728,6 +4714,7 @@ void InternalArrayNoArgumentConstructorStub::GenerateAssembly(
|
|
|
| namespace {
|
|
|
| +template <typename Descriptor>
|
| void SingleArgumentConstructorCommon(CodeStubAssembler* assembler,
|
| ElementsKind elements_kind,
|
| compiler::Node* array_map,
|
| @@ -4741,8 +4728,7 @@ void SingleArgumentConstructorCommon(CodeStubAssembler* assembler,
|
| Label small_smi_size(assembler);
|
| Label call_runtime(assembler, Label::kDeferred);
|
|
|
| - Node* size = assembler->Parameter(
|
| - ArraySingleArgumentConstructorDescriptor::kArraySizeSmiParameterIndex);
|
| + Node* size = assembler->Parameter(Descriptor::kArraySizeSmiParameter);
|
| assembler->Branch(assembler->WordIsSmi(size), &smi_size, &call_runtime);
|
|
|
| assembler->Bind(&smi_size);
|
| @@ -4756,8 +4742,7 @@ void SingleArgumentConstructorCommon(CodeStubAssembler* assembler,
|
| assembler->Bind(&abort);
|
| Node* reason =
|
| assembler->SmiConstant(Smi::FromInt(kAllocatingNonEmptyPackedArray));
|
| - Node* context = assembler->Parameter(
|
| - ArraySingleArgumentConstructorDescriptor::kContextIndex);
|
| + Node* context = assembler->Parameter(Descriptor::kContext);
|
| assembler->TailCallRuntime(Runtime::kAbort, context, reason);
|
| } else {
|
| int element_size =
|
| @@ -4783,14 +4768,10 @@ void SingleArgumentConstructorCommon(CodeStubAssembler* assembler,
|
|
|
| assembler->Bind(&call_runtime);
|
| {
|
| - Node* context = assembler->Parameter(
|
| - ArraySingleArgumentConstructorDescriptor::kContextIndex);
|
| - Node* function = assembler->Parameter(
|
| - ArraySingleArgumentConstructorDescriptor::kFunctionIndex);
|
| - Node* array_size = assembler->Parameter(
|
| - ArraySingleArgumentConstructorDescriptor::kArraySizeSmiParameterIndex);
|
| - Node* allocation_site = assembler->Parameter(
|
| - ArraySingleArgumentConstructorDescriptor::kAllocationSiteIndex);
|
| + Node* context = assembler->Parameter(Descriptor::kContext);
|
| + Node* function = assembler->Parameter(Descriptor::kFunction);
|
| + Node* array_size = assembler->Parameter(Descriptor::kArraySizeSmiParameter);
|
| + Node* allocation_site = assembler->Parameter(Descriptor::kAllocationSite);
|
| assembler->TailCallRuntime(Runtime::kNewArray, context, function,
|
| array_size, function, allocation_site);
|
| }
|
| @@ -4800,8 +4781,7 @@ void SingleArgumentConstructorCommon(CodeStubAssembler* assembler,
|
| void ArraySingleArgumentConstructorStub::GenerateAssembly(
|
| CodeStubAssembler* assembler) const {
|
| typedef compiler::Node Node;
|
| - Node* function = assembler->Parameter(
|
| - ArraySingleArgumentConstructorDescriptor::kFunctionIndex);
|
| + Node* function = assembler->Parameter(Descriptor::kFunction);
|
| Node* native_context =
|
| assembler->LoadObjectField(function, JSFunction::kContextOffset);
|
| Node* array_map =
|
| @@ -4809,22 +4789,20 @@ void ArraySingleArgumentConstructorStub::GenerateAssembly(
|
| AllocationSiteMode mode = override_mode() == DISABLE_ALLOCATION_SITES
|
| ? DONT_TRACK_ALLOCATION_SITE
|
| : AllocationSite::GetMode(elements_kind());
|
| - Node* allocation_site = assembler->Parameter(
|
| - ArrayNoArgumentConstructorDescriptor::kAllocationSiteIndex);
|
| - SingleArgumentConstructorCommon(assembler, elements_kind(), array_map,
|
| - allocation_site, mode);
|
| + Node* allocation_site = assembler->Parameter(Descriptor::kAllocationSite);
|
| + SingleArgumentConstructorCommon<Descriptor>(assembler, elements_kind(),
|
| + array_map, allocation_site, mode);
|
| }
|
|
|
| void InternalArraySingleArgumentConstructorStub::GenerateAssembly(
|
| CodeStubAssembler* assembler) const {
|
| typedef compiler::Node Node;
|
| - Node* function = assembler->Parameter(
|
| - ArraySingleArgumentConstructorDescriptor::kFunctionIndex);
|
| + Node* function = assembler->Parameter(Descriptor::kFunction);
|
| Node* array_map = assembler->LoadObjectField(
|
| function, JSFunction::kPrototypeOrInitialMapOffset);
|
| - SingleArgumentConstructorCommon(assembler, elements_kind(), array_map,
|
| - assembler->UndefinedConstant(),
|
| - DONT_TRACK_ALLOCATION_SITE);
|
| + SingleArgumentConstructorCommon<Descriptor>(
|
| + assembler, elements_kind(), array_map, assembler->UndefinedConstant(),
|
| + DONT_TRACK_ALLOCATION_SITE);
|
| }
|
|
|
| ArrayConstructorStub::ArrayConstructorStub(Isolate* isolate)
|
|
|