Index: src/compiler/typer.cc |
diff --git a/src/compiler/typer.cc b/src/compiler/typer.cc |
index b34b5b1bdecc55a60304bbd1465ad1d277caa4b4..1261f7181f4e3112ebafcdb0daac27f44fb9ca8d 100644 |
--- a/src/compiler/typer.cc |
+++ b/src/compiler/typer.cc |
@@ -52,6 +52,8 @@ Typer::Typer(Zone* zone) : zone_(zone) { |
number_fun2_ = Type::Function(number, number, number, zone); |
weakint_fun1_ = Type::Function(weakint, number, zone); |
imul_fun_ = Type::Function(signed32, integral32, integral32, zone); |
+ clz32_fun_ = Type::Function( |
+ Type::Range(zero, f->NewNumber(32), zone), number, zone); |
random_fun_ = Type::Function(Type::Union( |
Type::UnsignedSmall(), Type::OtherNumber(), zone), zone); |
@@ -1535,39 +1537,47 @@ Type* Typer::Visitor::TypeConstant(Handle<Object> value) { |
if (JSFunction::cast(*value)->shared()->HasBuiltinFunctionId()) { |
switch (JSFunction::cast(*value)->shared()->builtin_function_id()) { |
// TODO(rossberg): can't express overloading |
rossberg
2014/10/15 12:32:08
This comment should stay with MathAbs
|
+ case kMathRandom: |
+ return typer_->random_fun_; |
+ case kMathFloor: |
+ return typer_->weakint_fun1_; |
+ case kMathRound: |
+ return typer_->weakint_fun1_; |
+ case kMathCeil: |
+ return typer_->weakint_fun1_; |
case kMathAbs: |
return typer_->number_fun1_; |
- case kMathAcos: |
+ case kMathLog: |
return typer_->number_fun1_; |
- case kMathAsin: |
+ case kMathExp: |
return typer_->number_fun1_; |
- case kMathAtan: |
+ case kMathSqrt: |
return typer_->number_fun1_; |
- case kMathAtan2: |
+ case kMathPow: |
+ return typer_->number_fun2_; |
+ case kMathMax: |
+ return typer_->number_fun2_; |
+ case kMathMin: |
return typer_->number_fun2_; |
- case kMathCeil: |
- return typer_->weakint_fun1_; |
case kMathCos: |
return typer_->number_fun1_; |
- case kMathExp: |
+ case kMathSin: |
return typer_->number_fun1_; |
- case kMathFloor: |
- return typer_->weakint_fun1_; |
- case kMathImul: |
- return typer_->imul_fun_; |
- case kMathLog: |
+ case kMathTan: |
return typer_->number_fun1_; |
- case kMathPow: |
- return typer_->number_fun2_; |
- case kMathRandom: |
- return typer_->random_fun_; |
- case kMathRound: |
- return typer_->weakint_fun1_; |
- case kMathSin: |
+ case kMathAcos: |
return typer_->number_fun1_; |
- case kMathSqrt: |
+ case kMathAsin: |
return typer_->number_fun1_; |
- case kMathTan: |
+ case kMathAtan: |
+ return typer_->number_fun1_; |
+ case kMathAtan2: |
+ return typer_->number_fun2_; |
+ case kMathImul: |
+ return typer_->imul_fun_; |
+ case kMathClz32: |
+ return typer_->clz32_fun_; |
+ case kMathFround: |
return typer_->number_fun1_; |
default: |
break; |