| Index: src/crankshaft/typing.cc
|
| diff --git a/src/crankshaft/typing.cc b/src/crankshaft/typing.cc
|
| index bf2c8037ea5ed2e7521caf051da3540122989a62..d2b56e255b1fff19906e6899d929db9753a41fe5 100644
|
| --- a/src/crankshaft/typing.cc
|
| +++ b/src/crankshaft/typing.cc
|
| @@ -211,7 +211,8 @@ void AstTyper::VisitSwitchStatement(SwitchStatement* stmt) {
|
| AstType* label_type;
|
| AstType* combined_type;
|
| oracle()->CompareType(clause->CompareId(),
|
| - &tag_type, &label_type, &combined_type);
|
| + clause->CompareOperationFeedbackSlot(), &tag_type,
|
| + &label_type, &combined_type);
|
| NarrowLowerType(stmt->tag(), tag_type);
|
| NarrowLowerType(label, label_type);
|
| clause->set_compare_type(combined_type);
|
| @@ -614,7 +615,8 @@ void AstTyper::VisitCountOperation(CountOperation* expr) {
|
| oracle()->CountReceiverTypes(slot, expr->GetReceiverTypes());
|
| expr->set_store_mode(store_mode);
|
| expr->set_key_type(key_type);
|
| - expr->set_type(oracle()->CountType(expr->CountBinOpFeedbackId()));
|
| + expr->set_type(oracle()->CountType(expr->CountBinOpFeedbackId(),
|
| + expr->CountBinaryOpFeedbackSlot()));
|
| // TODO(rossberg): merge the count type with the generic expression type.
|
|
|
| RECURSE(Visit(expr->expression()));
|
| @@ -627,7 +629,6 @@ void AstTyper::VisitCountOperation(CountOperation* expr) {
|
| }
|
| }
|
|
|
| -
|
| void AstTyper::VisitBinaryOperation(BinaryOperation* expr) {
|
| // Collect type feedback.
|
| AstType* type;
|
| @@ -636,8 +637,10 @@ void AstTyper::VisitBinaryOperation(BinaryOperation* expr) {
|
| Maybe<int> fixed_right_arg = Nothing<int>();
|
| Handle<AllocationSite> allocation_site;
|
| oracle()->BinaryType(expr->BinaryOperationFeedbackId(),
|
| - &left_type, &right_type, &type, &fixed_right_arg,
|
| - &allocation_site, expr->op());
|
| + expr->BinaryOperationFeedbackSlot(), &left_type,
|
| + &right_type, &type, &fixed_right_arg, &allocation_site,
|
| + expr->op());
|
| +
|
| NarrowLowerType(expr, type);
|
| NarrowLowerType(expr->left(), left_type);
|
| NarrowLowerType(expr->right(), right_type);
|
| @@ -739,7 +742,8 @@ void AstTyper::VisitCompareOperation(CompareOperation* expr) {
|
| AstType* right_type;
|
| AstType* combined_type;
|
| oracle()->CompareType(expr->CompareOperationFeedbackId(),
|
| - &left_type, &right_type, &combined_type);
|
| + expr->CompareOperationFeedbackSlot(), &left_type,
|
| + &right_type, &combined_type);
|
| NarrowLowerType(expr->left(), left_type);
|
| NarrowLowerType(expr->right(), right_type);
|
| expr->set_combined_type(combined_type);
|
|
|