| 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);
|
| }
|
|
|