bmeurer
3072ac5349
[turbofan] More inlinable Math builtins.
...
Turn Math.acos, Math.asin, Math.atan, Math.atan2, Math.sign and Math.trunc
into inlinable builtins.
R=yangguo@chromium.org
BUG=v8:3952
LOG=n
Review URL: https://codereview.chromium.org/1027713002
Cr-Commit-Position: refs/heads/master@{#27336}
2015-03-20 10:23:47 +00:00
Benedikt Meurer
3aa206b865
[turbofan] Turn Math.clz32 into an inlinable builtin.
...
R=dcarney@chromium.org , yangguo@chromium.org
BUG=v8:3952
LOG=n
Review URL: https://codereview.chromium.org/1021183002
Cr-Commit-Position: refs/heads/master@{#27329}
2015-03-20 08:37:34 +00:00
svenpanne
cf1c4911b9
Remove BLACKLIST from check-name-clashes.py, it's wrong nowadays.
...
Fix the resulting warnings by renaming things apart.
BUG=v8:3947
LOG=n
Review URL: https://codereview.chromium.org/1009373002
Cr-Commit-Position: refs/heads/master@{#27219}
2015-03-16 13:08:49 +00:00
bmeurer
83f157bc18
[turbofan] Use builtin inlining mechanism for Math.abs and Math.sqrt.
...
Reduces the amount of custom support code for Math functions in TurboFan
and allows for more general inlining (i.e. independent of parameter
types).
BUG=v8:3952
LOG=n
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/1004083002
Cr-Commit-Position: refs/heads/master@{#27172}
2015-03-13 07:06:15 +00:00
yangguo
4e9daf4e3d
Hide RegExp and String initialization in a closure.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/1000063002
Cr-Commit-Position: refs/heads/master@{#27161}
2015-03-12 14:47:49 +00:00
yangguo
9333e7e135
Hide native Date implementation in function context.
...
This further reduces the context size.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/996213003
Cr-Commit-Position: refs/heads/master@{#27138}
2015-03-11 15:53:37 +00:00
bmeurer
1982186b6f
[turbofan] Use builtin inlining mechanism for Math.floor.
...
BUG=v8:3952
LOG=n
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/997513002
Cr-Commit-Position: refs/heads/master@{#27098}
2015-03-10 11:59:31 +00:00
bmeurer
022ea7e057
[turbofan] Unify Math.floor / Math.ceil optimization.
...
Provide an intrinsic %MathFloor / %_MathFloor that is used to optimize
both Math.ceil and Math.floor, and use the JS inlining mechanism to
inline Math.ceil into TurboFan code. Although we need to touch code
outside of TurboFan to make this work, this does not affect the way we
handle Math.ceil and/or Math.floor in CrankShaft, because for CrankShaft
the old-style builtin function id based inlining still kicks in first.
Once this solution is stabilized, we can use it for Math.floor as well.
And once that is settled, we can establish it as the unified way to
inline builtins, and get rid of the specialized builtin function id
based inlining at some point.
Note that "builtin" applies to basically every piece of internal
JavaScript/intrinsics based code, so this also applies to the yet to be
defined JavaScript based code stubs and handlers.
BUG=v8:3953
LOG=n
R=yangguo@chromium.org ,svenpanne@chromium.org
Review URL: https://codereview.chromium.org/990963003
Cr-Commit-Position: refs/heads/master@{#27086}
2015-03-10 08:42:53 +00:00
yangguo
67bc45c278
Hide Math function implementations in a closure.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/990883002
Cr-Commit-Position: refs/heads/master@{#27072}
2015-03-09 13:25:44 +00:00
yangguo
dae6dfe08b
Implement Math.log2 via ported extract from fdlibm.
...
Adapted from Raymond Toy's (rtoy@chromium.org ) port, extracted from fdlibm's pow implementation.
R=rtoy@chromium.org
BUG=v8:3579
LOG=N
Review URL: https://codereview.chromium.org/786823003
Cr-Commit-Position: refs/heads/master@{#25768}
2014-12-11 11:23:37 +00:00
yangguo
529ff0cfbf
Implement log10 via fdlibm port.
...
R=rtoy@chromium.org
BUG=v8:3579
LOG=N
Review URL: https://codereview.chromium.org/739913003
Cr-Commit-Position: refs/heads/master@{#25433}
2014-11-20 09:37:27 +00:00
dslomov@chromium.org
08ee4d3a5c
Add remaining @@toStringTag symbols to builtins
...
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/664333003
Patch from Caitlin Potter <caitpotter88@gmail.com>.
Cr-Commit-Position: refs/heads/master@{#24885}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24885 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 19:29:10 +00:00
svenpanne@chromium.org
8325bfbfbf
Avoid the Marsaglia effect in 3D
...
For a longer discussion, see the associated Chromium issue.
BUG=chromium:423311
LOG=y
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/662513004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24721 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 08:40:46 +00:00
yangguo@chromium.org
fa1bf00e6a
Port fdlibm implementation for Math.cosh.
...
R=rtoy@chromium.org
BUG=v8:3494
LOG=N
Review URL: https://codereview.chromium.org/522723002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23548 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 09:36:00 +00:00
yangguo@chromium.org
8938126d1b
Port fdlibm implementation for Math.sinh.
...
R=rtoy@chromium.org
BUG=v8:3493
LOG=N
Review URL: https://codereview.chromium.org/488003005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-29 09:32:51 +00:00
yangguo@chromium.org
c49aa16fdf
Slightly simplify Math.sign and Math.trunc.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/504343005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23440 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-27 09:49:38 +00:00
yangguo@chromium.org
930e5ccc3e
Implement Math.expm1 using port from fdlibm.
...
R=rtoy@chromium.org
BUG=v8:3479
LOG=N
Review URL: https://codereview.chromium.org/465353002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23238 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-20 14:24:07 +00:00
yangguo@chromium.org
0f81d7698a
Implement Math.log1p using port from fdlibm.
...
Port contributed by Raymond Toy <rtoy@google.com>.
R=rtoy@chromium.org
LOG=N
BUG=v8:3481
Review URL: https://codereview.chromium.org/457643002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23082 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-12 13:36:33 +00:00
verwaest@chromium.org
d094d0fb44
Tag all prototypes as proto, except those set using __proto__
...
BUG=
R=ishell@chromium.org , yangguo@chromium.org
Review URL: https://codereview.chromium.org/450303003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23042 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-11 14:00:58 +00:00
yangguo@chromium.org
71857295b4
Reland "Implement trigonometric functions using a fdlibm port."
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/448643002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22923 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 11:39:39 +00:00
yangguo@chromium.org
ff7975aa8d
Revert "Implement trigonometric functions using a fdlibm port."
...
This reverts r22918 and r22920.
TBR=hpayer@chromium.org
Review URL: https://codereview.chromium.org/448633002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22921 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 11:04:47 +00:00
yangguo@chromium.org
3c4d23b917
Implement trigonometric functions using a fdlibm port.
...
R=jochen@chromium.org , rtoy@chromium.org , svenpanne@chromium.org
BUG=v8:3006
LOG=N
Review URL: https://codereview.chromium.org/411263004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22918 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 10:33:17 +00:00
yangguo@chromium.org
d1333142e2
Ship ES6 Math functions.
...
R=rossberg@chromium.org
BUG=v8:2938
LOG=Y
Review URL: https://codereview.chromium.org/394833002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22434 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-16 14:00:15 +00:00
verwaest@chromium.org
1d55a634a9
Replace AddProperty by AddNamedProperty to speed up the common case
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/384003003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22381 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-14 14:05:30 +00:00
verwaest@chromium.org
63431b23d1
Split SetProperty(...attributes, strictmode) into DefineProperty(...attributes) and SetProperty(...strictmode)
...
BUG=
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/351853005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22064 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-27 13:48:37 +00:00
jkummerow@chromium.org
628bdf69df
Fix builtin/runtime name clashes generated by macros
...
Specifically: DataView{S,G}et* and a few more Math functions.
Also change indentation in typedarray.js for easier future builtins parsing.
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/286073004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21332 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-15 13:03:14 +00:00
jkummerow@chromium.org
f5631f7378
Avoid name clashes of builtins and runtime functions.
...
This makes it possible to use %Percent() notation to call any given builtin or runtime function in tests.
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/280243002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21298 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-14 08:51:10 +00:00
mstarzinger@chromium.org
38754b4e12
Move more builtin files to strict mode.
...
R=rossberg@chromium.org
BUG=v8:1955
LOG=N
Review URL: https://codereview.chromium.org/279543002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21254 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-12 08:43:01 +00:00
bmeurer@chromium.org
d4b533d41b
Bulk update of Google copyright headers in source files.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/259183002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21035 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-29 06:42:26 +00:00
yangguo@chromium.org
dae7ecbfdf
Reland "Clean up runtime functions for Maths."
...
BUG=
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/216643002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-28 10:07:23 +00:00
yangguo@chromium.org
e8d5e6377e
Revert "Clean up runtime functions for Maths."
...
This reverts r20307.
TBR=jarin@chromium.org
Review URL: https://codereview.chromium.org/214593005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20311 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-27 16:30:03 +00:00
yangguo@chromium.org
1110f4fcbb
Clean up runtime functions for Maths.
...
R=dslomov@google.com , dslomov@chromium.org
Review URL: https://codereview.chromium.org/212763008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20307 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-27 14:45:56 +00:00
mstarzinger@chromium.org
cf542bd171
Cleanup SetUpMath to use InstallConstants helper.
...
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/127863002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18492 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-08 11:55:53 +00:00
svenpanne@chromium.org
afdf615683
Implement Math.ceil via Math.floor.
...
This way we get all the Crankshaft goodness and avoid always going
through the runtime: Less code + even some small speedup in Kraken.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/88053002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18072 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-26 12:29:47 +00:00
yangguo@chromium.org
82021a832a
Force inline Math.random.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/85483002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18047 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-25 12:50:52 +00:00
svenpanne@chromium.org
b6b84c02b2
Reland "Implement Math.random() purely in JavaScript" plus fixes.
...
The main change is that a bit has been added to array buffers to
signal that the backing store has to be freed when the buffer dies.
BUG=316359
LOG=Y
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/82763005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18003 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-22 11:35:39 +00:00
yangguo@chromium.org
a7d38f7a41
Reland: Embed trigonometric lookup table.
...
R=danno@chromium.org
Review URL: https://codereview.chromium.org/78263005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17988 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-22 08:25:50 +00:00
danno@chromium.org
8e266c2244
Revert 17963, 17962 and 17955: Random number generator in JS changes
...
Revert 17966, 17965 also as collateral damage: Embed trigonometric lookup table.
Due to Heapcheck and valgrind failures that are not yet fixed.
TBR=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/80513004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17981 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-21 17:21:00 +00:00
yangguo@chromium.org
7c67e74b48
Embed trigonometric lookup table.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/78873006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17965 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-21 12:57:23 +00:00
svenpanne@chromium.org
8a89306785
Use Marsaglia's original random number generator.
...
BUG=316359
LOG=Y
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/80743002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17963 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-21 12:34:34 +00:00
svenpanne@chromium.org
2b1da67263
Implement Math.random() purely in JavaScript.
...
This removes tons of architecture-specific code and makes it easy to
experiment with other pseudo-RNG algorithms. The crankshafted code is
extremely good, keeping all things unboxed and doing only minimal
checks, so it is basically equivalent to the handwritten code.
When benchmarks are run without parallel recompilation, we get a few
percent regression on SunSpider's string-validate-input and
string-base64, but these benchmarks run so fast that the overall
SunSpider score is hardly affected and within the usual jitter. Note
that these benchmarks actually run even faster when we don't
crankshaft at all on the main thread (the regression is not caused by
bad code, it is caused by Crankshaft needing a few hundred microsecond
for compilation of a trivial function). Luckily, when parallel
recompilation is enabled, i.e. in the browser, we see no regression at
all!
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/68723002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17955 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-21 09:55:15 +00:00
yangguo@chromium.org
2c7ebfa7f0
Increase precision when finding the remainder after division by pi/2.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/66703005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17933 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-20 15:04:37 +00:00
yangguo@chromium.org
b1fd56dd7c
Magic fix for Math.sin/cos.
...
It turns out that Sunspider 1.0's 3d-morph verifies that the floating
point error must start with 6.
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/61593008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17725 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-14 10:11:06 +00:00
yangguo@chromium.org
8769c92bc9
Slight change to Math.sin approximation.
...
This is again to make sunspider's weird result verification happy.
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/61753011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17703 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-13 16:10:03 +00:00
yangguo@chromium.org
7206330260
Change table size for trigonometric functions.
...
Sunspider verifies floating point results to the last bit, so this is to
make sure that we return the expected result.
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/71123003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17685 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-13 10:44:28 +00:00
yangguo@chromium.org
e83fd01ce6
Reland "Implement Math.sin, cos and tan using table lookup and spline interpolation."
...
This relands r17594 with necessary fixes.
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/70003004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17654 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-12 14:43:18 +00:00
yangguo@chromium.org
b2df9bca3f
Use %_IsMinusZero where applicable to replace hackery.
...
R=jarin@chromium.org
BUG=
Review URL: https://codereview.chromium.org/68453005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17649 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-12 14:20:53 +00:00
yangguo@chromium.org
9f104a1a3e
Revert "Implement Math.sin, cos and tan using table lookup and spline interpolation."
...
This reverts commit r17594.
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/59153007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17596 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-08 13:44:27 +00:00
yangguo@chromium.org
063b7c4ebb
Implement Math.sin, cos and tan using table lookup and spline interpolation.
...
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/50563003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17594 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-08 13:10:39 +00:00
yangguo@chromium.org
2d6dab1f2e
Harmony: implement Math.trunc.
...
BUG=v8:2938
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/28793002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17286 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 11:15:11 +00:00