Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index dfffe41fca745672ace8ec5ec05774e91de132ed..57fa4363b512341800daa91f27bb2abd711f2d3b 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -153,6 +153,7 @@ class LChunkBuilder; |
V(Random) \ |
V(RegExpLiteral) \ |
V(Return) \ |
+ V(Ror) \ |
V(Sar) \ |
V(Shl) \ |
V(Shr) \ |
@@ -897,6 +898,11 @@ class HInstruction: public HValue { |
virtual bool IsCall() { return false; } |
+ bool UnusedAndSafeToDelete() const { |
+ bool deleteable_operation = IsBitwiseBinaryOperation(); |
ulan
2012/10/01 18:15:19
danno, michael: any suggestions for other instruct
|
+ return HasNoUses() && !HasObservableSideEffects() && deleteable_operation; |
+ } |
+ |
DECLARE_ABSTRACT_INSTRUCTION(Instruction) |
protected: |
@@ -3649,6 +3655,29 @@ class HSar: public HBitwiseBinaryOperation { |
}; |
+class HRor: public HBitwiseBinaryOperation { |
+ public: |
+ HRor(HValue* context, HValue* left, HValue* right) |
+ : HBitwiseBinaryOperation(context, left, right) { |
+ ChangeRepresentation(Representation::Integer32()); |
+ } |
+ |
+ virtual Representation RequiredInputRepresentation(int index) { |
+ return Representation::Integer32(); |
+ } |
+ |
+ static HInstruction* NewHRor(Zone* zone, |
+ HValue* context, |
+ HValue* left, |
+ HValue* right); |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(Ror) |
+ |
+ protected: |
+ virtual bool DataEquals(HValue* other) { return true; } |
+}; |
+ |
+ |
class HOsrEntry: public HTemplateInstruction<0> { |
public: |
explicit HOsrEntry(BailoutId ast_id) : ast_id_(ast_id) { |