Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 069642ae8c75210d638024126c784db225cbb6b4..e460cd2296a74dbef45b8b003ee0d04479fc019c 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -103,6 +103,7 @@ class LChunkBuilder; |
V(Div) \ |
V(ElementsKind) \ |
V(EnterInlined) \ |
+ V(FastLiteral) \ |
V(FixedArrayBaseLength) \ |
V(ForceRepresentation) \ |
V(FunctionLiteral) \ |
@@ -140,8 +141,7 @@ class LChunkBuilder; |
V(LoadNamedGeneric) \ |
V(Mod) \ |
V(Mul) \ |
- V(ObjectLiteralFast) \ |
- V(ObjectLiteralGeneric) \ |
+ V(ObjectLiteral) \ |
V(OsrEntry) \ |
V(OuterContext) \ |
V(Parameter) \ |
@@ -4357,6 +4357,41 @@ class HMaterializedLiteral: public HTemplateInstruction<V> { |
}; |
+class HFastLiteral: public HMaterializedLiteral<1> { |
+ public: |
+ HFastLiteral(HValue* context, |
+ Handle<JSObject> boilerplate, |
+ int total_size, |
+ int literal_index, |
+ int depth) |
+ : HMaterializedLiteral<1>(literal_index, depth), |
+ boilerplate_(boilerplate), |
+ total_size_(total_size) { |
+ SetOperandAt(0, context); |
+ } |
+ |
+ // Maximum depth and total number of elements and properties for literal |
+ // graphs to be considered for fast deep-copying. |
+ static const int kMaxLiteralDepth = 3; |
+ static const int kMaxLiteralProperties = 8; |
+ |
+ HValue* context() { return OperandAt(0); } |
+ Handle<JSObject> boilerplate() const { return boilerplate_; } |
+ int total_size() const { return total_size_; } |
+ |
+ virtual Representation RequiredInputRepresentation(int index) { |
+ return Representation::Tagged(); |
+ } |
+ virtual HType CalculateInferredType(); |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(FastLiteral) |
+ |
+ private: |
+ Handle<JSObject> boilerplate_; |
+ int total_size_; |
+}; |
+ |
+ |
class HArrayLiteral: public HMaterializedLiteral<1> { |
public: |
HArrayLiteral(HValue* context, |
@@ -4395,49 +4430,14 @@ class HArrayLiteral: public HMaterializedLiteral<1> { |
}; |
-class HObjectLiteralFast: public HMaterializedLiteral<1> { |
- public: |
- HObjectLiteralFast(HValue* context, |
- Handle<JSObject> boilerplate, |
- int total_size, |
- int literal_index, |
- int depth) |
- : HMaterializedLiteral<1>(literal_index, depth), |
- boilerplate_(boilerplate), |
- total_size_(total_size) { |
- SetOperandAt(0, context); |
- } |
- |
- // Maximum depth and total number of properties for object literal |
- // graphs to be considered for fast deep-copying. |
- static const int kMaxObjectLiteralDepth = 3; |
- static const int kMaxObjectLiteralProperties = 8; |
- |
- HValue* context() { return OperandAt(0); } |
- Handle<JSObject> boilerplate() const { return boilerplate_; } |
- int total_size() const { return total_size_; } |
- |
- virtual Representation RequiredInputRepresentation(int index) { |
- return Representation::Tagged(); |
- } |
- virtual HType CalculateInferredType(); |
- |
- DECLARE_CONCRETE_INSTRUCTION(ObjectLiteralFast) |
- |
- private: |
- Handle<JSObject> boilerplate_; |
- int total_size_; |
-}; |
- |
- |
-class HObjectLiteralGeneric: public HMaterializedLiteral<1> { |
+class HObjectLiteral: public HMaterializedLiteral<1> { |
public: |
- HObjectLiteralGeneric(HValue* context, |
- Handle<FixedArray> constant_properties, |
- bool fast_elements, |
- int literal_index, |
- int depth, |
- bool has_function) |
+ HObjectLiteral(HValue* context, |
+ Handle<FixedArray> constant_properties, |
+ bool fast_elements, |
+ int literal_index, |
+ int depth, |
+ bool has_function) |
: HMaterializedLiteral<1>(literal_index, depth), |
constant_properties_(constant_properties), |
fast_elements_(fast_elements), |
@@ -4457,7 +4457,7 @@ class HObjectLiteralGeneric: public HMaterializedLiteral<1> { |
} |
virtual HType CalculateInferredType(); |
- DECLARE_CONCRETE_INSTRUCTION(ObjectLiteralGeneric) |
+ DECLARE_CONCRETE_INSTRUCTION(ObjectLiteral) |
private: |
Handle<FixedArray> constant_properties_; |
@@ -4552,7 +4552,7 @@ class HToFastProperties: public HUnaryOperation { |
// This instruction is not marked as having side effects, but |
// changes the map of the input operand. Use it only when creating |
// object literals. |
- ASSERT(value->IsObjectLiteralGeneric() || value->IsObjectLiteralFast()); |
+ ASSERT(value->IsObjectLiteral() || value->IsFastLiteral()); |
set_representation(Representation::Tagged()); |
} |