Index: src/type-info.cc |
diff --git a/src/type-info.cc b/src/type-info.cc |
index 3cdcf8e436a69765c942db553a257b85dd61e22e..7f1d3b5ea304a21c0b892b3056a9e4be623d8659 100644 |
--- a/src/type-info.cc |
+++ b/src/type-info.cc |
@@ -283,6 +283,7 @@ void TypeFeedbackOracle::BinaryType(TypeFeedbackId id, |
Handle<Type>* right, |
Handle<Type>* result, |
Maybe<int>* fixed_right_arg, |
+ Handle<AllocationSite>* allocation_site, |
Token::Value op) { |
Handle<Object> object = GetInfo(id); |
if (!object->IsCode()) { |
@@ -292,6 +293,7 @@ void TypeFeedbackOracle::BinaryType(TypeFeedbackId id, |
op > BinaryOpIC::State::LAST_TOKEN); |
*left = *right = *result = handle(Type::None(), isolate_); |
*fixed_right_arg = Maybe<int>(); |
+ *allocation_site = Handle<AllocationSite>::null(); |
return; |
} |
Handle<Code> code = Handle<Code>::cast(object); |
@@ -303,6 +305,13 @@ void TypeFeedbackOracle::BinaryType(TypeFeedbackId id, |
*right = state.GetRightType(isolate()); |
*result = state.GetResultType(isolate()); |
*fixed_right_arg = state.fixed_right_arg(); |
+ |
+ AllocationSite* first_allocation_site = code->FindFirstAllocationSite(); |
+ if (first_allocation_site != NULL) { |
+ *allocation_site = handle(first_allocation_site); |
+ } else { |
+ *allocation_site = Handle<AllocationSite>::null(); |
+ } |
} |