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

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

Issue 2313093002: [stubs] Port StoreTransitionStub and ElementsTransitionAndStoreStub to TurboFan. (Closed)
Patch Set: Addressing comments Created 4 years, 3 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/crankshaft/hydrogen.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 1cfa12997f77311f1759b78e9d628caab0bcedc6..3514beed0669a2fdfa01ebe7571d4e407a050cff 100644
--- a/src/code-stubs-hydrogen.cc
+++ b/src/code-stubs-hydrogen.cc
@@ -913,70 +913,6 @@ void CodeStubGraphBuilderBase::BuildStoreNamedField(
template <>
-HValue* CodeStubGraphBuilder<StoreTransitionStub>::BuildCodeStub() {
- HValue* object = GetParameter(StoreTransitionHelper::ReceiverIndex());
- HValue* value = GetParameter(StoreTransitionHelper::ValueIndex());
- StoreTransitionStub::StoreMode store_mode = casted_stub()->store_mode();
-
- if (store_mode != StoreTransitionStub::StoreMapOnly) {
- value = GetParameter(StoreTransitionHelper::ValueIndex());
- Representation representation = casted_stub()->representation();
- if (representation.IsDouble()) {
- // In case we are storing a double, assure that the value is a double
- // before manipulating the properties backing store. Otherwise the actual
- // store may deopt, leaving the backing store in an overallocated state.
- value = AddUncasted<HForceRepresentation>(value, representation);
- }
- }
-
- switch (store_mode) {
- case StoreTransitionStub::ExtendStorageAndStoreMapAndValue: {
- HValue* properties = Add<HLoadNamedField>(
- object, nullptr, HObjectAccess::ForPropertiesPointer());
- HValue* length = AddLoadFixedArrayLength(properties);
- HValue* delta =
- Add<HConstant>(static_cast<int32_t>(JSObject::kFieldsAdded));
- HValue* new_capacity = AddUncasted<HAdd>(length, delta);
-
- // Grow properties array.
- ElementsKind kind = FAST_ELEMENTS;
- Add<HBoundsCheck>(new_capacity,
- Add<HConstant>((kMaxRegularHeapObjectSize -
- FixedArray::kHeaderSize) >>
- ElementsKindToShiftSize(kind)));
-
- // Reuse this code for properties backing store allocation.
- HValue* new_properties =
- BuildAllocateAndInitializeArray(kind, new_capacity);
-
- BuildCopyProperties(properties, new_properties, length, new_capacity);
-
- Add<HStoreNamedField>(object, HObjectAccess::ForPropertiesPointer(),
- new_properties);
- }
- // Fall through.
- case StoreTransitionStub::StoreMapAndValue:
- // Store the new value into the "extended" object.
- BuildStoreNamedField(object, value, casted_stub()->index(),
- casted_stub()->representation(), true);
- // Fall through.
-
- case StoreTransitionStub::StoreMapOnly:
- // And finally update the map.
- Add<HStoreNamedField>(object, HObjectAccess::ForMap(),
- GetParameter(StoreTransitionHelper::MapIndex()));
- break;
- }
- return value;
-}
-
-
-Handle<Code> StoreTransitionStub::GenerateCode() {
- return DoGenerateCode(this);
-}
-
-
-template <>
HValue* CodeStubGraphBuilder<TransitionElementsKindStub>::BuildCodeStub() {
ElementsKind const from_kind = casted_stub()->from_kind();
ElementsKind const to_kind = casted_stub()->to_kind();
@@ -1316,41 +1252,6 @@ HValue* CodeStubGraphBuilder<ToBooleanICStub>::BuildCodeInitializedStub() {
Handle<Code> ToBooleanICStub::GenerateCode() { return DoGenerateCode(this); }
template <>
-HValue* CodeStubGraphBuilder<ElementsTransitionAndStoreStub>::BuildCodeStub() {
- HValue* object = GetParameter(StoreTransitionHelper::ReceiverIndex());
- HValue* key = GetParameter(StoreTransitionHelper::NameIndex());
- HValue* value = GetParameter(StoreTransitionHelper::ValueIndex());
- HValue* map = GetParameter(StoreTransitionHelper::MapIndex());
-
- if (FLAG_trace_elements_transitions) {
- // Tracing elements transitions is the job of the runtime.
- Add<HDeoptimize>(DeoptimizeReason::kTracingElementsTransitions,
- Deoptimizer::EAGER);
- } else {
- info()->MarkAsSavesCallerDoubles();
-
- BuildTransitionElementsKind(object, map,
- casted_stub()->from_kind(),
- casted_stub()->to_kind(),
- casted_stub()->is_jsarray());
-
- BuildUncheckedMonomorphicElementAccess(object, key, value,
- casted_stub()->is_jsarray(),
- casted_stub()->to_kind(),
- STORE, ALLOW_RETURN_HOLE,
- casted_stub()->store_mode());
- }
-
- return value;
-}
-
-
-Handle<Code> ElementsTransitionAndStoreStub::GenerateCode() {
- return DoGenerateCode(this);
-}
-
-
-template <>
HValue* CodeStubGraphBuilder<LoadDictionaryElementStub>::BuildCodeStub() {
HValue* receiver = GetParameter(Descriptor::kReceiver);
HValue* key = GetParameter(Descriptor::kName);
« no previous file with comments | « src/code-stubs.cc ('k') | src/crankshaft/hydrogen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698