Index: src/crankshaft/typing.cc |
diff --git a/src/crankshaft/typing.cc b/src/crankshaft/typing.cc |
index 77171a637ff7e9db76da0fddd2b609c9f55b6ac9..957347177c6705f29e13d02b36efeb3d97c350ac 100644 |
--- a/src/crankshaft/typing.cc |
+++ b/src/crankshaft/typing.cc |
@@ -45,7 +45,7 @@ AstTyper::AstTyper(Isolate* isolate, Zone* zone, Handle<JSFunction> closure, |
Effect AstTyper::ObservedOnStack(Object* value) { |
Type* lower = Type::NowOf(value, zone()); |
- return Effect(Bounds(lower, Type::Any(zone()))); |
+ return Effect(Bounds(lower, Type::Any())); |
} |
@@ -393,7 +393,7 @@ void AstTyper::VisitLiteral(Literal* expr) { |
void AstTyper::VisitRegExpLiteral(RegExpLiteral* expr) { |
// TODO(rossberg): Reintroduce RegExp type. |
- NarrowType(expr, Bounds(Type::Object(zone()))); |
+ NarrowType(expr, Bounds(Type::Object())); |
} |
@@ -421,7 +421,7 @@ void AstTyper::VisitObjectLiteral(ObjectLiteral* expr) { |
RECURSE(Visit(prop->value())); |
} |
- NarrowType(expr, Bounds(Type::Object(zone()))); |
+ NarrowType(expr, Bounds(Type::Object())); |
} |
@@ -432,7 +432,7 @@ void AstTyper::VisitArrayLiteral(ArrayLiteral* expr) { |
RECURSE(Visit(value)); |
} |
- NarrowType(expr, Bounds(Type::Object(zone()))); |
+ NarrowType(expr, Bounds(Type::Object())); |
} |
@@ -485,7 +485,7 @@ void AstTyper::VisitThrow(Throw* expr) { |
RECURSE(Visit(expr->exception())); |
// TODO(rossberg): is it worth having a non-termination effect? |
- NarrowType(expr, Bounds(Type::None(zone()))); |
+ NarrowType(expr, Bounds(Type::None())); |
} |
@@ -569,7 +569,7 @@ void AstTyper::VisitCallNew(CallNew* expr) { |
RECURSE(Visit(arg)); |
} |
- NarrowType(expr, Bounds(Type::None(zone()), Type::Receiver(zone()))); |
+ NarrowType(expr, Bounds(Type::None(), Type::Receiver())); |
} |
@@ -596,13 +596,13 @@ void AstTyper::VisitUnaryOperation(UnaryOperation* expr) { |
switch (expr->op()) { |
case Token::NOT: |
case Token::DELETE: |
- NarrowType(expr, Bounds(Type::Boolean(zone()))); |
+ NarrowType(expr, Bounds(Type::Boolean())); |
break; |
case Token::VOID: |
- NarrowType(expr, Bounds(Type::Undefined(zone()))); |
+ NarrowType(expr, Bounds(Type::Undefined())); |
break; |
case Token::TYPEOF: |
- NarrowType(expr, Bounds(Type::InternalizedString(zone()))); |
+ NarrowType(expr, Bounds(Type::InternalizedString())); |
break; |
default: |
UNREACHABLE(); |
@@ -624,7 +624,7 @@ void AstTyper::VisitCountOperation(CountOperation* expr) { |
RECURSE(Visit(expr->expression())); |
- NarrowType(expr, Bounds(Type::SignedSmall(zone()), Type::Number(zone()))); |
+ NarrowType(expr, Bounds(Type::SignedSmall(), Type::Number())); |
VariableProxy* proxy = expr->expression()->AsVariableProxy(); |
if (proxy != NULL && proxy->var()->IsStackAllocated()) { |
@@ -679,8 +679,8 @@ void AstTyper::VisitBinaryOperation(BinaryOperation* expr) { |
RECURSE(Visit(expr->right())); |
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::SignedSmall(zone()), upper, zone()); |
+ if (!upper->Is(Type::Signed32())) upper = Type::Signed32(); |
+ Type* lower = Type::Intersect(Type::SignedSmall(), upper, zone()); |
NarrowType(expr, Bounds(lower, upper)); |
break; |
} |
@@ -689,8 +689,7 @@ void AstTyper::VisitBinaryOperation(BinaryOperation* expr) { |
case Token::SAR: |
RECURSE(Visit(expr->left())); |
RECURSE(Visit(expr->right())); |
- NarrowType(expr, |
- Bounds(Type::SignedSmall(zone()), Type::Signed32(zone()))); |
+ NarrowType(expr, Bounds(Type::SignedSmall(), Type::Signed32())); |
break; |
case Token::SHR: |
RECURSE(Visit(expr->left())); |
@@ -698,7 +697,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::SignedSmall(zone()), Type::Number(zone()))); |
+ NarrowType(expr, Bounds(Type::SignedSmall(), Type::Number())); |
break; |
case Token::ADD: { |
RECURSE(Visit(expr->left())); |
@@ -706,17 +705,19 @@ void AstTyper::VisitBinaryOperation(BinaryOperation* expr) { |
Bounds l = expr->left()->bounds(); |
Bounds r = expr->right()->bounds(); |
Type* lower = |
- !l.lower->IsInhabited() || !r.lower->IsInhabited() ? |
- Type::None(zone()) : |
- l.lower->Is(Type::String()) || r.lower->Is(Type::String()) ? |
- Type::String(zone()) : |
- l.lower->Is(Type::Number()) && r.lower->Is(Type::Number()) ? |
- Type::SignedSmall(zone()) : Type::None(zone()); |
+ !l.lower->IsInhabited() || !r.lower->IsInhabited() |
+ ? Type::None() |
+ : l.lower->Is(Type::String()) || r.lower->Is(Type::String()) |
+ ? Type::String() |
+ : l.lower->Is(Type::Number()) && r.lower->Is(Type::Number()) |
+ ? Type::SignedSmall() |
+ : Type::None(); |
Type* upper = |
- l.upper->Is(Type::String()) || r.upper->Is(Type::String()) ? |
- Type::String(zone()) : |
- l.upper->Is(Type::Number()) && r.upper->Is(Type::Number()) ? |
- Type::Number(zone()) : Type::NumberOrString(zone()); |
+ l.upper->Is(Type::String()) || r.upper->Is(Type::String()) |
+ ? Type::String() |
+ : l.upper->Is(Type::Number()) && r.upper->Is(Type::Number()) |
+ ? Type::Number() |
+ : Type::NumberOrString(); |
NarrowType(expr, Bounds(lower, upper)); |
break; |
} |
@@ -726,7 +727,7 @@ void AstTyper::VisitBinaryOperation(BinaryOperation* expr) { |
case Token::MOD: |
RECURSE(Visit(expr->left())); |
RECURSE(Visit(expr->right())); |
- NarrowType(expr, Bounds(Type::SignedSmall(zone()), Type::Number(zone()))); |
+ NarrowType(expr, Bounds(Type::SignedSmall(), Type::Number())); |
break; |
default: |
UNREACHABLE(); |
@@ -748,7 +749,7 @@ void AstTyper::VisitCompareOperation(CompareOperation* expr) { |
RECURSE(Visit(expr->left())); |
RECURSE(Visit(expr->right())); |
- NarrowType(expr, Bounds(Type::Boolean(zone()))); |
+ NarrowType(expr, Bounds(Type::Boolean())); |
} |