Index: src/compiler/code-assembler.cc |
diff --git a/src/compiler/code-assembler.cc b/src/compiler/code-assembler.cc |
index 285259ffcd8e52b252e11d8cc1ab458473c7f1fb..043ea895ce4ec0257f84a5050b60ea635313f3ca 100644 |
--- a/src/compiler/code-assembler.cc |
+++ b/src/compiler/code-assembler.cc |
@@ -148,6 +148,20 @@ bool CodeAssembler::ToInt64Constant(Node* node, int64_t& out_value) { |
return m.HasValue(); |
} |
+bool CodeAssembler::ToSmiConstant(Node* node, Smi*& out_value) { |
+ if (node->opcode() == IrOpcode::kBitcastWordToTaggedSigned) { |
+ node = node->InputAt(0); |
+ } else { |
+ return false; |
+ } |
+ IntPtrMatcher m(node); |
+ if (m.HasValue()) { |
+ out_value = Smi::cast(bit_cast<Object*>(m.Value())); |
+ return true; |
+ } |
+ return false; |
+} |
+ |
bool CodeAssembler::ToIntPtrConstant(Node* node, intptr_t& out_value) { |
IntPtrMatcher m(node); |
if (m.HasValue()) out_value = m.Value(); |