Index: src/compiler/code-assembler.cc |
diff --git a/src/compiler/code-assembler.cc b/src/compiler/code-assembler.cc |
index 0a90b9e9251130c1b5fe1d872aa9d3d24f73ef8d..c47d3de6aaab82f9012e1c6d43d4b965c0bc73e7 100644 |
--- a/src/compiler/code-assembler.cc |
+++ b/src/compiler/code-assembler.cc |
@@ -10,6 +10,7 @@ |
#include "src/compiler/graph.h" |
#include "src/compiler/instruction-selector.h" |
#include "src/compiler/linkage.h" |
+#include "src/compiler/node-matchers.h" |
#include "src/compiler/pipeline.h" |
#include "src/compiler/raw-machine-assembler.h" |
#include "src/compiler/schedule.h" |
@@ -87,10 +88,14 @@ bool CodeAssembler::IsFloat64RoundTruncateSupported() const { |
return raw_assembler_->machine()->Float64RoundTruncate().IsSupported(); |
} |
-Node* CodeAssembler::Int32Constant(int value) { |
+Node* CodeAssembler::Int32Constant(int32_t value) { |
return raw_assembler_->Int32Constant(value); |
} |
+Node* CodeAssembler::Int64Constant(int64_t value) { |
+ return raw_assembler_->Int64Constant(value); |
+} |
+ |
Node* CodeAssembler::IntPtrConstant(intptr_t value) { |
return raw_assembler_->IntPtrConstant(value); |
} |
@@ -123,6 +128,36 @@ Node* CodeAssembler::NaNConstant() { |
return LoadRoot(Heap::kNanValueRootIndex); |
} |
+bool CodeAssembler::ToInt32Constant(Node* node, int32_t& out_value) { |
+ Int32Matcher m32(node); |
+ if (m32.HasValue()) { |
+ out_value = m32.Value(); |
+ return true; |
+ } |
+ |
+ Int64Matcher m64(node); |
+ if (m64.HasValue() && |
+ m64.IsInRange(std::numeric_limits<int32_t>::min(), |
+ std::numeric_limits<int32_t>::max())) { |
+ out_value = static_cast<int32_t>(m64.Value()); |
+ return true; |
+ } |
+ |
+ return false; |
+} |
+ |
+bool CodeAssembler::ToInt64Constant(Node* node, int64_t& out_value) { |
+ Int64Matcher m(node); |
+ if (m.HasValue()) out_value = m.Value(); |
+ return m.HasValue(); |
+} |
+ |
+bool CodeAssembler::ToIntPtrConstant(Node* node, intptr_t& out_value) { |
+ IntPtrMatcher m(node); |
+ if (m.HasValue()) out_value = m.Value(); |
+ return m.HasValue(); |
+} |
+ |
Node* CodeAssembler::Parameter(int value) { |
return raw_assembler_->Parameter(value); |
} |