Index: src/compiler/js-builtin-reducer.cc |
diff --git a/src/compiler/js-builtin-reducer.cc b/src/compiler/js-builtin-reducer.cc |
index 42becb30786f88087c119e04ebee7b084fe5fe4a..17ce5785f191001c7c2e830dd9cb4d389b97bbdb 100644 |
--- a/src/compiler/js-builtin-reducer.cc |
+++ b/src/compiler/js-builtin-reducer.cc |
@@ -34,15 +34,18 @@ class JSCallReduction { |
// constant callee being a well-known builtin with a BuiltinFunctionId. |
bool HasBuiltinFunctionId() { |
if (node_->opcode() != IrOpcode::kJSCallFunction) return false; |
- HeapObjectMatcher<JSFunction> m(NodeProperties::GetValueInput(node_, 0)); |
- return m.HasValue() && m.Value().handle()->shared()->HasBuiltinFunctionId(); |
+ HeapObjectMatcher<Object> m(NodeProperties::GetValueInput(node_, 0)); |
+ if (!m.HasValue() || !m.Value().handle()->IsJSFunction()) return false; |
+ Handle<JSFunction> function = Handle<JSFunction>::cast(m.Value().handle()); |
+ return function->shared()->HasBuiltinFunctionId(); |
} |
// Retrieves the BuiltinFunctionId as described above. |
BuiltinFunctionId GetBuiltinFunctionId() { |
DCHECK_EQ(IrOpcode::kJSCallFunction, node_->opcode()); |
- HeapObjectMatcher<JSFunction> m(NodeProperties::GetValueInput(node_, 0)); |
- return m.Value().handle()->shared()->builtin_function_id(); |
+ HeapObjectMatcher<Object> m(NodeProperties::GetValueInput(node_, 0)); |
+ Handle<JSFunction> function = Handle<JSFunction>::cast(m.Value().handle()); |
+ return function->shared()->builtin_function_id(); |
} |
// Determines whether the call takes one input of the given type. |