Revision: 24640
Author: [email protected]
Date: Wed Oct 15 14:12:20 2014 UTC
Log: Give simple types to Math.Min, Math.Max, Math.Fround, Math.Clz32.
[email protected]
BUG=
Review URL: https://codereview.chromium.org/657793002
https://code.google.com/p/v8/source/detail?r=24640
Modified:
/branches/bleeding_edge/src/compiler/typer.cc
/branches/bleeding_edge/src/compiler/typer.h
=======================================
--- /branches/bleeding_edge/src/compiler/typer.cc Wed Oct 15 11:38:04 2014
UTC
+++ /branches/bleeding_edge/src/compiler/typer.cc Wed Oct 15 14:12:20 2014
UTC
@@ -65,6 +65,8 @@
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);
@@ -1554,40 +1556,48 @@
if (value->IsJSFunction()) {
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:
+ // TODO(rossberg): can't express overloading
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 kMathAsin:
return typer_->number_fun1_;
- case kMathSqrt:
+ case kMathAtan:
return typer_->number_fun1_;
- case kMathTan:
+ 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;
=======================================
--- /branches/bleeding_edge/src/compiler/typer.h Wed Oct 15 11:38:04 2014
UTC
+++ /branches/bleeding_edge/src/compiler/typer.h Wed Oct 15 14:12:20 2014
UTC
@@ -56,6 +56,7 @@
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.