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

Unified Diff: src/compiler/js-builtin-reducer.cc

Issue 2636493003: Revert of [compiler] Support Object.create(null) inlining in TF (Closed)
Patch Set: Created 3 years, 11 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/compiler/js-builtin-reducer.h ('k') | src/lookup.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/js-builtin-reducer.cc
diff --git a/src/compiler/js-builtin-reducer.cc b/src/compiler/js-builtin-reducer.cc
index 5e0e01bfcb0c8b76c9138c53def75f46aebf76cb..6698408f94b5778e49a0decd4688215e788e8c07 100644
--- a/src/compiler/js-builtin-reducer.cc
+++ b/src/compiler/js-builtin-reducer.cc
@@ -4,7 +4,6 @@
#include "src/compiler/js-builtin-reducer.h"
-#include "src/base/bits.h"
#include "src/compilation-dependencies.h"
#include "src/compiler/access-builder.h"
#include "src/compiler/js-graph.h"
@@ -1484,99 +1483,6 @@
return Replace(value);
}
return NoChange();
-}
-
-// ES6 section #sec-object.create Object.create(proto, properties)
-Reduction JSBuiltinReducer::ReduceObjectCreate(Node* node) {
- // We need exactly target, receiver and value parameters.
- int arg_count = node->op()->ValueInputCount();
- if (arg_count != 3) return NoChange();
- Node* effect = NodeProperties::GetEffectInput(node);
- Node* control = NodeProperties::GetControlInput(node);
- Node* prototype = NodeProperties::GetValueInput(node, 2);
- Type* prototype_type = NodeProperties::GetType(prototype);
- Handle<Map> instance_map;
- if (!prototype_type->IsHeapConstant()) return NoChange();
- Handle<HeapObject> prototype_const =
- prototype_type->AsHeapConstant()->Value();
- if (!prototype_const->IsNull(isolate()) && !prototype_const->IsJSReceiver()) {
- return NoChange();
- }
- instance_map = Map::GetObjectCreateMap(prototype_const);
- Node* properties = jsgraph()->EmptyFixedArrayConstant();
- if (instance_map->is_dictionary_map()) {
- // Allocated an empty NameDictionary as backing store for the properties.
- Handle<Map> map(isolate()->heap()->hash_table_map(), isolate());
- int capacity =
- NameDictionary::ComputeCapacity(NameDictionary::kInitialCapacity);
- DCHECK(base::bits::IsPowerOfTwo32(capacity));
- int length = NameDictionary::EntryToIndex(capacity);
- int size = NameDictionary::SizeFor(length);
-
- effect = graph()->NewNode(
- common()->BeginRegion(RegionObservability::kNotObservable), effect);
-
- Node* value = effect =
- graph()->NewNode(simplified()->Allocate(NOT_TENURED),
- jsgraph()->Constant(size), effect, control);
- effect =
- graph()->NewNode(simplified()->StoreField(AccessBuilder::ForMap()),
- value, jsgraph()->HeapConstant(map), effect, control);
-
- // Initialize FixedArray fields.
- effect = graph()->NewNode(
- simplified()->StoreField(AccessBuilder::ForFixedArrayLength()), value,
- jsgraph()->SmiConstant(length), effect, control);
- // Initialize HashTable fields.
- effect =
- graph()->NewNode(simplified()->StoreField(
- AccessBuilder::ForHashTableBaseNumberOfElements()),
- value, jsgraph()->SmiConstant(0), effect, control);
- effect = graph()->NewNode(
- simplified()->StoreField(
- AccessBuilder::ForHashTableBaseNumberOfDeletedElement()),
- value, jsgraph()->SmiConstant(0), effect, control);
- effect = graph()->NewNode(
- simplified()->StoreField(AccessBuilder::ForHashTableBaseCapacity()),
- value, jsgraph()->SmiConstant(capacity), effect, control);
- // Initialize Dictionary fields.
- effect = graph()->NewNode(
- simplified()->StoreField(AccessBuilder::ForDictionaryMaxNumberKey()),
- value, jsgraph()->UndefinedConstant(), effect, control);
- effect = graph()->NewNode(
- simplified()->StoreField(AccessBuilder::ForNextEnumerationIndex()),
- value, jsgraph()->SmiConstant(PropertyDetails::kInitialIndex), effect,
- control);
-
- properties = effect =
- graph()->NewNode(common()->FinishRegion(), value, effect);
- }
-
- int const instance_size = instance_map->instance_size();
- dependencies()->AssumeInitialMapCantChange(instance_map);
-
- // Emit code to allocate the JSObject instance for the given
- // {instance_map}.
- effect = graph()->NewNode(
- common()->BeginRegion(RegionObservability::kNotObservable), effect);
- Node* value = effect =
- graph()->NewNode(simplified()->Allocate(NOT_TENURED),
- jsgraph()->Constant(instance_size), effect, control);
- effect =
- graph()->NewNode(simplified()->StoreField(AccessBuilder::ForMap()), value,
- jsgraph()->HeapConstant(instance_map), effect, control);
- effect = graph()->NewNode(
- simplified()->StoreField(AccessBuilder::ForJSObjectProperties()), value,
- properties, effect, control);
- effect = graph()->NewNode(
- simplified()->StoreField(AccessBuilder::ForJSObjectElements()), value,
- jsgraph()->EmptyFixedArrayConstant(), effect, control);
-
- value = effect = graph()->NewNode(common()->FinishRegion(), value, effect);
-
- // replace it
- ReplaceWithValue(node, value, effect, control);
- return Replace(value);
}
// ES6 section 21.1.2.1 String.fromCharCode ( ...codeUnits )
@@ -2084,9 +1990,6 @@
case kNumberParseInt:
reduction = ReduceNumberParseInt(node);
break;
- case kObjectCreate:
- reduction = ReduceObjectCreate(node);
- break;
case kStringFromCharCode:
reduction = ReduceStringFromCharCode(node);
break;
« no previous file with comments | « src/compiler/js-builtin-reducer.h ('k') | src/lookup.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698