Reviewers: rossberg,

Description:
Give simple types to Math.Min, Math.Max, Math.Fround, Math.Clz32.

[email protected]
BUG=

Please review this at https://codereview.chromium.org/657793002/

Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+32, -21 lines):
  M src/compiler/typer.h
  M src/compiler/typer.cc


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
+        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;
Index: src/compiler/typer.h
diff --git a/src/compiler/typer.h b/src/compiler/typer.h
index 3b37a922341703885a6794c30bffa18be1f9854b..09e13d0cdebf844dd2d77b694aa7b7f567ef6137 100644
--- a/src/compiler/typer.h
+++ b/src/compiler/typer.h
@@ -52,6 +52,7 @@ class Typer {
   Type* number_fun2_;
   Type* weakint_fun1_;
   Type* imul_fun_;
+  Type* clz32_fun_;
   Type* random_fun_;
   Type* array_buffer_fun_;
   Type* int8_array_fun_;


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to