diff options
Diffstat (limited to 'deps/v8/src/typing.cc')
-rw-r--r-- | deps/v8/src/typing.cc | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/deps/v8/src/typing.cc b/deps/v8/src/typing.cc index c7bea40ac..2a581e293 100644 --- a/deps/v8/src/typing.cc +++ b/deps/v8/src/typing.cc @@ -323,7 +323,7 @@ void AstTyper::VisitForStatement(ForStatement* stmt) { void AstTyper::VisitForInStatement(ForInStatement* stmt) { // Collect type feedback. stmt->set_for_in_type(static_cast<ForInStatement::ForInType>( - oracle()->ForInType(stmt->ForInFeedbackId()))); + oracle()->ForInType(stmt->ForInFeedbackSlot()))); RECURSE(Visit(stmt->enumerable())); store_.Forget(); // Control may transfer here via looping or 'continue'. @@ -530,8 +530,9 @@ void AstTyper::VisitCall(Call* expr) { // Collect type feedback. RECURSE(Visit(expr->expression())); if (!expr->expression()->IsProperty() && - oracle()->CallIsMonomorphic(expr->CallFeedbackId())) { - expr->set_target(oracle()->GetCallTarget(expr->CallFeedbackId())); + expr->HasCallFeedbackSlot() && + oracle()->CallIsMonomorphic(expr->CallFeedbackSlot())) { + expr->set_target(oracle()->GetCallTarget(expr->CallFeedbackSlot())); } ZoneList<Expression*>* args = expr->arguments(); @@ -560,7 +561,7 @@ void AstTyper::VisitCallNew(CallNew* expr) { RECURSE(Visit(arg)); } - // We don't know anything about the result type. + NarrowType(expr, Bounds(Type::None(zone()), Type::Receiver(zone()))); } @@ -611,7 +612,7 @@ void AstTyper::VisitCountOperation(CountOperation* expr) { RECURSE(Visit(expr->expression())); - NarrowType(expr, Bounds(Type::Smi(zone()), Type::Number(zone()))); + NarrowType(expr, Bounds(Type::SignedSmall(zone()), Type::Number(zone()))); VariableProxy* proxy = expr->expression()->AsVariableProxy(); if (proxy != NULL && proxy->var()->IsStackAllocated()) { @@ -667,7 +668,7 @@ void AstTyper::VisitBinaryOperation(BinaryOperation* expr) { Type* upper = Type::Union( expr->left()->bounds().upper, expr->right()->bounds().upper, zone()); if (!upper->Is(Type::Signed32())) upper = Type::Signed32(zone()); - Type* lower = Type::Intersect(Type::Smi(zone()), upper, zone()); + Type* lower = Type::Intersect(Type::SignedSmall(zone()), upper, zone()); NarrowType(expr, Bounds(lower, upper)); break; } @@ -676,7 +677,8 @@ void AstTyper::VisitBinaryOperation(BinaryOperation* expr) { case Token::SAR: RECURSE(Visit(expr->left())); RECURSE(Visit(expr->right())); - NarrowType(expr, Bounds(Type::Smi(zone()), Type::Signed32(zone()))); + NarrowType(expr, + Bounds(Type::SignedSmall(zone()), Type::Signed32(zone()))); break; case Token::SHR: RECURSE(Visit(expr->left())); @@ -684,7 +686,7 @@ void AstTyper::VisitBinaryOperation(BinaryOperation* expr) { // TODO(rossberg): The upper bound would be Unsigned32, but since there // is no 'positive Smi' type for the lower bound, we use the smallest // union of Smi and Unsigned32 as upper bound instead. - NarrowType(expr, Bounds(Type::Smi(zone()), Type::Number(zone()))); + NarrowType(expr, Bounds(Type::SignedSmall(zone()), Type::Number(zone()))); break; case Token::ADD: { RECURSE(Visit(expr->left())); @@ -697,7 +699,7 @@ void AstTyper::VisitBinaryOperation(BinaryOperation* expr) { l.lower->Is(Type::String()) || r.lower->Is(Type::String()) ? Type::String(zone()) : l.lower->Is(Type::Number()) && r.lower->Is(Type::Number()) ? - Type::Smi(zone()) : Type::None(zone()); + Type::SignedSmall(zone()) : Type::None(zone()); Type* upper = l.upper->Is(Type::String()) || r.upper->Is(Type::String()) ? Type::String(zone()) : @@ -712,7 +714,7 @@ void AstTyper::VisitBinaryOperation(BinaryOperation* expr) { case Token::MOD: RECURSE(Visit(expr->left())); RECURSE(Visit(expr->right())); - NarrowType(expr, Bounds(Type::Smi(zone()), Type::Number(zone()))); + NarrowType(expr, Bounds(Type::SignedSmall(zone()), Type::Number(zone()))); break; default: UNREACHABLE(); |