Index: src/hydrogen-instructions.h |
=================================================================== |
--- src/hydrogen-instructions.h (revision 7299) |
+++ src/hydrogen-instructions.h (working copy) |
@@ -127,6 +127,7 @@ |
V(LoadKeyedGeneric) \ |
V(LoadNamedField) \ |
V(LoadNamedGeneric) \ |
+ V(LoadNamedFieldPolymorphic) \ |
V(LoadPixelArrayElement) \ |
V(Mod) \ |
V(Mul) \ |
@@ -2971,6 +2972,37 @@ |
}; |
+class HLoadNamedFieldPolymorphic: public HUnaryOperation { |
+ public: |
+ HLoadNamedFieldPolymorphic(HValue* object, |
+ ZoneMapList* types, |
+ Handle<String> name); |
+ |
+ HValue* object() { return OperandAt(0); } |
+ ZoneMapList* types() { return &types_; } |
+ Handle<String> name() { return name_; } |
+ bool need_generic() { return need_generic_; } |
+ |
+ virtual Representation RequiredInputRepresentation(int index) const { |
+ return Representation::Tagged(); |
+ } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(LoadNamedFieldPolymorphic, |
+ "load_named_field_polymorphic") |
+ |
+ static const int kMaxLoadPolymorphism = 4; |
+ |
+ protected: |
+ virtual bool DataEquals(HValue* value); |
+ |
+ private: |
+ ZoneMapList types_; |
+ Handle<String> name_; |
+ bool need_generic_; |
+}; |
+ |
+ |
+ |
class HLoadNamedGeneric: public HBinaryOperation { |
public: |
HLoadNamedGeneric(HValue* context, HValue* object, Handle<Object> name) |