| 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) {
|
|
|