Index: src/hydrogen.h |
diff --git a/src/hydrogen.h b/src/hydrogen.h |
index 6a49e5708de953eb5cb74e88906afe9526c18b79..3c87e2ed3d7e230af9aceb59ca123152cfd3646f 100644 |
--- a/src/hydrogen.h |
+++ b/src/hydrogen.h |
@@ -992,9 +992,27 @@ class HGraphBuilder { |
// Adding instructions. |
HInstruction* AddInstruction(HInstruction* instr); |
+ |
+ template<class I> |
+ I* Add() { return static_cast<I*>(AddInstruction(new(zone()) I())); } |
+ |
+ template<class I, class P1> |
+ I* Add(P1 p1) { |
+ return static_cast<I*>(AddInstruction(new(zone()) I(p1))); |
+ } |
+ |
+ template<class I, class P1, class P2> |
+ I* Add(P1 p1, P2 p2) { |
+ return static_cast<I*>(AddInstruction(new(zone()) I(p1, p2))); |
+ } |
+ |
+ template<class I, class P1, class P2, class P3> |
+ I* Add(P1 p1, P2 p2, P3 p3) { |
+ return static_cast<I*>(AddInstruction(new(zone()) I(p1, p2, p3))); |
+ } |
+ |
void AddSimulate(BailoutId id, |
RemovableSimulate removable = FIXED_SIMULATE); |
- HBoundsCheck* AddBoundsCheck(HValue* index, HValue* length); |
HReturn* AddReturn(HValue* value); |
@@ -1447,7 +1465,12 @@ class HOptimizedGraphBuilder: public HGraphBuilder, public AstVisitor { |
bool inline_bailout() { return inline_bailout_; } |
- void AddSoftDeoptimize(); |
+ enum SoftDeoptimizeMode { |
+ MUST_EMIT_SOFT_DEOPT, |
+ CAN_OMIT_SOFT_DEOPT |
+ }; |
+ |
+ void AddSoftDeoptimize(SoftDeoptimizeMode mode = CAN_OMIT_SOFT_DEOPT); |
void Bailout(const char* reason); |