Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Unified Diff: src/code-stubs-hydrogen.cc

Issue 1987183002: [stubs] Convert Internal/ArraySingleArgumentsConstructor to a TurboFan stub (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Review feedback Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/code-stubs.cc ('k') | src/compiler/schedule.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/code-stubs-hydrogen.cc
diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc
index 6680e66dc3d5fcbe897f7d8aea415b6889edb9d6..bebe27f8373499e8951c2ea5f37e2667ee0966fe 100644
--- a/src/code-stubs-hydrogen.cc
+++ b/src/code-stubs-hydrogen.cc
@@ -81,21 +81,13 @@ class CodeStubGraphBuilderBase : public HGraphBuilder {
HValue* BuildPushElement(HValue* object, HValue* argc,
HValue* argument_elements, ElementsKind kind);
- enum ArgumentClass {
- NONE,
- SINGLE,
- MULTIPLE
- };
-
HValue* UnmappedCase(HValue* elements, HValue* key, HValue* value);
HValue* EmitKeyedSloppyArguments(HValue* receiver, HValue* key,
HValue* value);
HValue* BuildArrayConstructor(ElementsKind kind,
- AllocationSiteOverrideMode override_mode,
- ArgumentClass argument_class);
- HValue* BuildInternalArrayConstructor(ElementsKind kind,
- ArgumentClass argument_class);
+ AllocationSiteOverrideMode override_mode);
+ HValue* BuildInternalArrayConstructor(ElementsKind kind);
HValue* BuildToString(HValue* input, bool convert);
HValue* BuildToPrimitive(HValue* input, HValue* input_map);
@@ -1292,55 +1284,20 @@ Handle<Code> TransitionElementsKindStub::GenerateCode() {
}
HValue* CodeStubGraphBuilderBase::BuildArrayConstructor(
- ElementsKind kind,
- AllocationSiteOverrideMode override_mode,
- ArgumentClass argument_class) {
+ ElementsKind kind, AllocationSiteOverrideMode override_mode) {
HValue* constructor = GetParameter(ArrayConstructorStubBase::kConstructor);
HValue* alloc_site = GetParameter(ArrayConstructorStubBase::kAllocationSite);
JSArrayBuilder array_builder(this, kind, alloc_site, constructor,
override_mode);
- HValue* result = NULL;
- switch (argument_class) {
- case NONE:
- // This stub is very performance sensitive, the generated code must be
- // tuned so that it doesn't build and eager frame.
- info()->MarkMustNotHaveEagerFrame();
- result = array_builder.AllocateEmptyArray();
- break;
- case SINGLE:
- result = BuildArraySingleArgumentConstructor(&array_builder);
- break;
- case MULTIPLE:
- result = BuildArrayNArgumentsConstructor(&array_builder, kind);
- break;
- }
-
- return result;
+ return BuildArrayNArgumentsConstructor(&array_builder, kind);
}
-
HValue* CodeStubGraphBuilderBase::BuildInternalArrayConstructor(
- ElementsKind kind, ArgumentClass argument_class) {
+ ElementsKind kind) {
HValue* constructor = GetParameter(
InternalArrayConstructorStubBase::kConstructor);
JSArrayBuilder array_builder(this, kind, constructor);
-
- HValue* result = NULL;
- switch (argument_class) {
- case NONE:
- // This stub is very performance sensitive, the generated code must be
- // tuned so that it doesn't build and eager frame.
- info()->MarkMustNotHaveEagerFrame();
- result = array_builder.AllocateEmptyArray();
- break;
- case SINGLE:
- result = BuildArraySingleArgumentConstructor(&array_builder);
- break;
- case MULTIPLE:
- result = BuildArrayNArgumentsConstructor(&array_builder, kind);
- break;
- }
- return result;
+ return BuildArrayNArgumentsConstructor(&array_builder, kind);
}
@@ -1403,31 +1360,10 @@ HValue* CodeStubGraphBuilderBase::BuildArrayNArgumentsConstructor(
template <>
-HValue* CodeStubGraphBuilder<ArrayNoArgumentConstructorStub>::BuildCodeStub() {
- ElementsKind kind = casted_stub()->elements_kind();
- AllocationSiteOverrideMode override_mode = casted_stub()->override_mode();
- return BuildArrayConstructor(kind, override_mode, NONE);
-}
-
-template <>
-HValue* CodeStubGraphBuilder<ArraySingleArgumentConstructorStub>::
- BuildCodeStub() {
- ElementsKind kind = casted_stub()->elements_kind();
- AllocationSiteOverrideMode override_mode = casted_stub()->override_mode();
- return BuildArrayConstructor(kind, override_mode, SINGLE);
-}
-
-
-Handle<Code> ArraySingleArgumentConstructorStub::GenerateCode() {
- return DoGenerateCode(this);
-}
-
-
-template <>
HValue* CodeStubGraphBuilder<ArrayNArgumentsConstructorStub>::BuildCodeStub() {
ElementsKind kind = casted_stub()->elements_kind();
AllocationSiteOverrideMode override_mode = casted_stub()->override_mode();
- return BuildArrayConstructor(kind, override_mode, MULTIPLE);
+ return BuildArrayConstructor(kind, override_mode);
}
@@ -1437,31 +1373,10 @@ Handle<Code> ArrayNArgumentsConstructorStub::GenerateCode() {
template <>
-HValue* CodeStubGraphBuilder<InternalArrayNoArgumentConstructorStub>::
- BuildCodeStub() {
- ElementsKind kind = casted_stub()->elements_kind();
- return BuildInternalArrayConstructor(kind, NONE);
-}
-
-
-template <>
-HValue* CodeStubGraphBuilder<InternalArraySingleArgumentConstructorStub>::
- BuildCodeStub() {
- ElementsKind kind = casted_stub()->elements_kind();
- return BuildInternalArrayConstructor(kind, SINGLE);
-}
-
-
-Handle<Code> InternalArraySingleArgumentConstructorStub::GenerateCode() {
- return DoGenerateCode(this);
-}
-
-
-template <>
HValue* CodeStubGraphBuilder<InternalArrayNArgumentsConstructorStub>::
BuildCodeStub() {
ElementsKind kind = casted_stub()->elements_kind();
- return BuildInternalArrayConstructor(kind, MULTIPLE);
+ return BuildInternalArrayConstructor(kind);
}
« no previous file with comments | « src/code-stubs.cc ('k') | src/compiler/schedule.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698