Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 367d2b32fb037369b1ae58db8d41e22c8cee2b66..aa513e707b235c8a20a63a55acacfa78b6189e82 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -770,6 +770,14 @@ class HValue: public ZoneObject { |
const char* Mnemonic() const; |
+ // Type information helpers. |
+ bool HasMonomorphicJSObjectType(); |
+ |
+ // TODO(mstarzinger): For now instructions can override this function to |
+ // specify statically known types, once HType can convey more information |
+ // it should be based on the HType. |
+ virtual Handle<Map> GetMonomorphicJSObjectMap() { return Handle<Map>(); } |
+ |
// Updated the inferred type of this instruction and returns true if |
// it has changed. |
bool UpdateInferredType(); |
@@ -5019,6 +5027,10 @@ class HAllocateObject: public HTemplateInstruction<1> { |
virtual Representation RequiredInputRepresentation(int index) { |
return Representation::Tagged(); |
} |
+ virtual Handle<Map> GetMonomorphicJSObjectMap() { |
+ ASSERT(constructor()->has_initial_map()); |
+ return Handle<Map>(constructor()->initial_map()); |
+ } |
virtual HType CalculateInferredType(); |
DECLARE_CONCRETE_INSTRUCTION(AllocateObject) |
@@ -5086,6 +5098,9 @@ class HFastLiteral: public HMaterializedLiteral<1> { |
virtual Representation RequiredInputRepresentation(int index) { |
return Representation::Tagged(); |
} |
+ virtual Handle<Map> GetMonomorphicJSObjectMap() { |
+ return Handle<Map>(boilerplate()->map()); |
+ } |
virtual HType CalculateInferredType(); |
DECLARE_CONCRETE_INSTRUCTION(FastLiteral) |