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.