| Index: src/hydrogen.h
|
| diff --git a/src/hydrogen.h b/src/hydrogen.h
|
| index e951b19b03252770623453745bc90d965b52e8cb..6c1aba5db66d709231b996207965af7146b758e9 100644
|
| --- a/src/hydrogen.h
|
| +++ b/src/hydrogen.h
|
| @@ -1151,13 +1151,6 @@ class HGraphBuilder {
|
| if (!finished_) End();
|
| }
|
|
|
| - HInstruction* IfCompare(
|
| - HValue* left,
|
| - HValue* right,
|
| - Token::Value token);
|
| -
|
| - HInstruction* IfCompareMap(HValue* left, Handle<Map> map);
|
| -
|
| template<class Condition>
|
| HInstruction* If(HValue *p) {
|
| HControlInstruction* compare = new(zone()) Condition(p);
|
| @@ -1172,6 +1165,13 @@ class HGraphBuilder {
|
| return compare;
|
| }
|
|
|
| + template<class Condition, class P2, class P3>
|
| + HInstruction* If(HValue* p1, P2 p2, P3 p3) {
|
| + HControlInstruction* compare = new(zone()) Condition(p1, p2, p3);
|
| + AddCompare(compare);
|
| + return compare;
|
| + }
|
| +
|
| template<class Condition, class P2>
|
| HInstruction* IfNot(HValue* p1, P2 p2) {
|
| HControlInstruction* compare = new(zone()) Condition(p1, p2);
|
| @@ -1183,17 +1183,15 @@ class HGraphBuilder {
|
| return compare;
|
| }
|
|
|
| - HInstruction* OrIfCompare(
|
| - HValue* p1,
|
| - HValue* p2,
|
| - Token::Value token) {
|
| - Or();
|
| - return IfCompare(p1, p2, token);
|
| - }
|
| -
|
| - HInstruction* OrIfCompareMap(HValue* left, Handle<Map> map) {
|
| - Or();
|
| - return IfCompareMap(left, map);
|
| + template<class Condition, class P2, class P3>
|
| + HInstruction* IfNot(HValue* p1, P2 p2, P3 p3) {
|
| + HControlInstruction* compare = new(zone()) Condition(p1, p2, p3);
|
| + AddCompare(compare);
|
| + HBasicBlock* block0 = compare->SuccessorAt(0);
|
| + HBasicBlock* block1 = compare->SuccessorAt(1);
|
| + compare->SetSuccessorAt(0, block1);
|
| + compare->SetSuccessorAt(1, block0);
|
| + return compare;
|
| }
|
|
|
| template<class Condition>
|
| @@ -1208,17 +1206,10 @@ class HGraphBuilder {
|
| return If<Condition>(p1, p2);
|
| }
|
|
|
| - HInstruction* AndIfCompare(
|
| - HValue* p1,
|
| - HValue* p2,
|
| - Token::Value token) {
|
| - And();
|
| - return IfCompare(p1, p2, token);
|
| - }
|
| -
|
| - HInstruction* AndIfCompareMap(HValue* left, Handle<Map> map) {
|
| - And();
|
| - return IfCompareMap(left, map);
|
| + template<class Condition, class P2, class P3>
|
| + HInstruction* OrIf(HValue* p1, P2 p2, P3 p3) {
|
| + Or();
|
| + return If<Condition>(p1, p2, p3);
|
| }
|
|
|
| template<class Condition>
|
| @@ -1233,6 +1224,12 @@ class HGraphBuilder {
|
| return If<Condition>(p1, p2);
|
| }
|
|
|
| + template<class Condition, class P2, class P3>
|
| + HInstruction* AndIf(HValue* p1, P2 p2, P3 p3) {
|
| + And();
|
| + return If<Condition>(p1, p2, p3);
|
| + }
|
| +
|
| void Or();
|
| void And();
|
|
|
|
|