Index: src/typing.cc |
diff --git a/src/typing.cc b/src/typing.cc |
index cbd40f37159e3fea52c107e04c9e0d2fd74d418a..9b84c4f8ca3fe5fc4879ce4396b66294f29297c6 100644 |
--- a/src/typing.cc |
+++ b/src/typing.cc |
@@ -540,11 +540,15 @@ void AstTyper::VisitCall(Call* expr) { |
if (expr->IsUsingCallFeedbackICSlot(isolate())) { |
FeedbackVectorICSlot slot = expr->CallFeedbackICSlot(); |
is_uninitialized = oracle()->CallIsUninitialized(slot); |
- if (!expr->expression()->IsProperty() && |
- oracle()->CallIsMonomorphic(slot)) { |
- expr->set_target(oracle()->GetCallTarget(slot)); |
- Handle<AllocationSite> site = oracle()->GetCallAllocationSite(slot); |
- expr->set_allocation_site(site); |
+ if (oracle()->CallIsMonomorphic(slot)) { |
+ if (oracle()->CallIsBuiltinWithMinusZeroResult(slot)) { |
+ expr->MarkShouldHandleMinusZeroResult(); |
+ } |
+ if (!expr->expression()->IsProperty()) { |
+ expr->set_target(oracle()->GetCallTarget(slot)); |
+ Handle<AllocationSite> site = oracle()->GetCallAllocationSite(slot); |
+ expr->set_allocation_site(site); |
+ } |
} |
} |