Index: src/compiler/code-stub-assembler.h |
diff --git a/src/compiler/code-stub-assembler.h b/src/compiler/code-stub-assembler.h |
index 6d55f910e46ae3ffd3c7db51477a3c993c7794b2..6f0924030337c330103fd3d85be6913308c491ef 100644 |
--- a/src/compiler/code-stub-assembler.h |
+++ b/src/compiler/code-stub-assembler.h |
@@ -35,56 +35,59 @@ class RawMachineAssembler; |
class RawMachineLabel; |
class Schedule; |
-#define CODE_STUB_ASSEMBLER_BINARY_OP_LIST(V) \ |
- V(Float32Equal) \ |
- V(Float32LessThan) \ |
- V(Float32LessThanOrEqual) \ |
- V(Float32GreaterThan) \ |
- V(Float32GreaterThanOrEqual) \ |
- V(Float64Equal) \ |
- V(Float64LessThan) \ |
- V(Float64LessThanOrEqual) \ |
- V(Float64GreaterThan) \ |
- V(Float64GreaterThanOrEqual) \ |
- V(IntPtrAdd) \ |
- V(IntPtrSub) \ |
- V(Int32Add) \ |
- V(Int32Sub) \ |
- V(Int32Mul) \ |
- V(Int32GreaterThan) \ |
- V(Int32GreaterThanOrEqual) \ |
- V(Int32LessThan) \ |
- V(Int32LessThanOrEqual) \ |
- V(Uint32LessThan) \ |
- V(WordEqual) \ |
- V(WordNotEqual) \ |
- V(WordOr) \ |
- V(WordAnd) \ |
- V(WordXor) \ |
- V(WordShl) \ |
- V(WordShr) \ |
- V(WordSar) \ |
- V(WordRor) \ |
- V(Word32Equal) \ |
- V(Word32NotEqual) \ |
- V(Word32Or) \ |
- V(Word32And) \ |
- V(Word32Xor) \ |
- V(Word32Shl) \ |
- V(Word32Shr) \ |
- V(Word32Sar) \ |
- V(Word32Ror) \ |
- V(Word64Equal) \ |
- V(Word64NotEqual) \ |
- V(Word64Or) \ |
- V(Word64And) \ |
- V(Word64Xor) \ |
- V(Word64Shr) \ |
- V(Word64Sar) \ |
- V(Word64Ror) \ |
- V(IntPtrLessThan) \ |
- V(IntPtrLessThanOrEqual) \ |
- V(UintPtrGreaterThanOrEqual) |
+#define CODE_STUB_ASSEMBLER_COMPARE_BINARY_OP_LIST(V) \ |
+ V(Float32Equal) \ |
+ V(Float32LessThan) \ |
+ V(Float32LessThanOrEqual) \ |
+ V(Float32GreaterThan) \ |
+ V(Float32GreaterThanOrEqual) \ |
+ V(Float64Equal) \ |
+ V(Float64LessThan) \ |
+ V(Float64LessThanOrEqual) \ |
+ V(Float64GreaterThan) \ |
+ V(Float64GreaterThanOrEqual) \ |
+ V(Int32GreaterThan) \ |
+ V(Int32GreaterThanOrEqual) \ |
+ V(Int32LessThan) \ |
+ V(Int32LessThanOrEqual) \ |
+ V(IntPtrLessThan) \ |
+ V(IntPtrLessThanOrEqual) \ |
+ V(Uint32LessThan) \ |
+ V(UintPtrGreaterThanOrEqual) \ |
+ V(WordEqual) \ |
+ V(WordNotEqual) \ |
+ V(Word32Equal) \ |
+ V(Word32NotEqual) \ |
+ V(Word64Equal) \ |
+ V(Word64NotEqual) |
+ |
+#define CODE_STUB_ASSEMBLER_BINARY_OP_LIST(V) \ |
+ CODE_STUB_ASSEMBLER_COMPARE_BINARY_OP_LIST(V) \ |
+ V(IntPtrAdd) \ |
+ V(IntPtrSub) \ |
+ V(Int32Add) \ |
+ V(Int32Sub) \ |
+ V(Int32Mul) \ |
+ V(WordOr) \ |
+ V(WordAnd) \ |
+ V(WordXor) \ |
+ V(WordShl) \ |
+ V(WordShr) \ |
+ V(WordSar) \ |
+ V(WordRor) \ |
+ V(Word32Or) \ |
+ V(Word32And) \ |
+ V(Word32Xor) \ |
+ V(Word32Shl) \ |
+ V(Word32Shr) \ |
+ V(Word32Sar) \ |
+ V(Word32Ror) \ |
+ V(Word64Or) \ |
+ V(Word64And) \ |
+ V(Word64Xor) \ |
+ V(Word64Shr) \ |
+ V(Word64Sar) \ |
+ V(Word64Ror) |
#define CODE_STUB_ASSEMBLER_UNARY_OP_LIST(V) \ |
V(ChangeFloat64ToUint32) \ |
@@ -310,23 +313,26 @@ class CodeStubAssembler { |
// Branching helpers. |
// TODO(danno): Can we be more cleverish wrt. edge-split? |
void BranchIf(Node* condition, Label* if_true, Label* if_false); |
- void BranchIfInt32LessThan(Node* a, Node* b, Label* if_true, Label* if_false); |
- void BranchIfSmiLessThan(Node* a, Node* b, Label* if_true, Label* if_false); |
+ |
+#define BRANCH_HELPER(name) \ |
+ void BranchIf##name(Node* a, Node* b, Label* if_true, Label* if_false) { \ |
+ BranchIf(name(a, b), if_true, if_false); \ |
+ } |
+ CODE_STUB_ASSEMBLER_COMPARE_BINARY_OP_LIST(BRANCH_HELPER) |
+#undef BRANCH_HELPER |
+ |
+ void BranchIfSmiLessThan(Node* a, Node* b, Label* if_true, Label* if_false) { |
+ BranchIf(SmiLessThan(a, b), if_true, if_false); |
+ } |
+ |
void BranchIfSmiLessThanOrEqual(Node* a, Node* b, Label* if_true, |
- Label* if_false); |
- void BranchIfFloat64Equal(Node* a, Node* b, Label* if_true, Label* if_false); |
- void BranchIfFloat64LessThan(Node* a, Node* b, Label* if_true, |
- Label* if_false); |
- void BranchIfFloat64LessThanOrEqual(Node* a, Node* b, Label* if_true, |
- Label* if_false); |
- void BranchIfFloat64GreaterThan(Node* a, Node* b, Label* if_true, |
- Label* if_false); |
- void BranchIfFloat64GreaterThanOrEqual(Node* a, Node* b, Label* if_true, |
- Label* if_false); |
+ Label* if_false) { |
+ BranchIf(SmiLessThanOrEqual(a, b), if_true, if_false); |
+ } |
+ |
void BranchIfFloat64IsNaN(Node* value, Label* if_true, Label* if_false) { |
BranchIfFloat64Equal(value, value, if_false, if_true); |
} |
- void BranchIfWord32Equal(Node* a, Node* b, Label* if_true, Label* if_false); |
// Helpers which delegate to RawMachineAssembler. |
Factory* factory() const; |