Index: src/hydrogen-instructions.h |
=================================================================== |
--- src/hydrogen-instructions.h (revision 5948) |
+++ src/hydrogen-instructions.h (working copy) |
@@ -77,6 +77,7 @@ |
// HLoadKeyedFastElement |
// HLoadKeyedGeneric |
// HLoadNamedGeneric |
+// HPower |
// HStoreNamed |
// HStoreNamedField |
// HStoreNamedGeneric |
@@ -223,6 +224,7 @@ |
V(ObjectLiteral) \ |
V(OsrEntry) \ |
V(Parameter) \ |
+ V(Power) \ |
V(PushArgument) \ |
V(RegExpLiteral) \ |
V(Return) \ |
@@ -1377,6 +1379,7 @@ |
SetFlag(kFlexibleRepresentation); |
break; |
case kMathSqrt: |
+ case kMathPowHalf: |
default: |
set_representation(Representation::Double()); |
} |
@@ -1395,6 +1398,7 @@ |
case kMathRound: |
case kMathCeil: |
case kMathSqrt: |
+ case kMathPowHalf: |
return Representation::Double(); |
break; |
case kMathAbs: |
@@ -2184,6 +2188,22 @@ |
}; |
+class HPower: public HBinaryOperation { |
+ public: |
+ HPower(HValue* left, HValue* right) |
+ : HBinaryOperation(left, right) { |
+ set_representation(Representation::Double()); |
+ SetFlag(kUseGVN); |
+ } |
+ |
+ virtual Representation RequiredInputRepresentation(int index) const { |
+ return (index == 1) ? Representation::None() : Representation::Double(); |
+ } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(Power, "power") |
+}; |
+ |
+ |
class HAdd: public HArithmeticBinaryOperation { |
public: |
HAdd(HValue* left, HValue* right) : HArithmeticBinaryOperation(left, right) { |