Commit Graph

20359 Commits

Author SHA1 Message Date
arv
44149ae751 Make template scan related function take a template<bool> parameter
This is for performance. Having to do the test in every Advance was too
expensive.

BUG=438991, v8:3230
LOG=N
R=dslomov@chromium.org, marja

Review URL: https://codereview.chromium.org/766193003

Cr-Commit-Position: refs/heads/master@{#25667}
2014-12-04 19:24:34 +00:00
vogelheim
b27431d52f Cleanup: Remove NativesCollection<.>::*Raw* methods.
These methods for used for compressed libraries, where GetSource* functions
contained the compressed sources and [GS]etRawSource* the uncompressed
sources. This is dead code since the API no longer supports compression.

(If you need/want compressed sources, use the external startup data and
 compress/uncompress on the Embedder's side.)

BUG=

Review URL: https://codereview.chromium.org/772853003

Cr-Commit-Position: refs/heads/master@{#25666}
2014-12-04 18:51:22 +00:00
adamk
6230641b83 Optimize testing for an index's existence in packed Arrays
This patch introduces a new inline runtime function,
%_HasFastPackedElements(), and uses it both in the implementation
of the 'in' operator and in the array builtins to speed
up testing for the existence of an index in an array.

In testing with the microbenchmark on the attached bug,
for example, the runtime goes from 326ms to 66ms.

A reviewer might ask whether the HAS_INDEX macro is worthwhile,
and I tried the same example without it, which pushed the
microbenchmark up to 157ms. So it seems it's worth it to
avoid the function call to IN() if we know we're dealing
with arrays and numbers.

BUG=v8:3701
LOG=n

Review URL: https://codereview.chromium.org/754863002

Cr-Commit-Position: refs/heads/master@{#25665}
2014-12-04 18:46:46 +00:00
Dusan Milosavljevic
f62ab8d061 MIPS; Improve checked load/store operators for constant offset and length.
TEST=
BUG=
R=balazs.kilvady@imgtec.com, paul.lind@imgtec.com

Review URL: https://codereview.chromium.org/782493002

Cr-Commit-Position: refs/heads/master@{#25664}
2014-12-04 17:28:08 +00:00
jochen
0197a15f3c Explicitly track whether incremental marking was activated
In the gc-tracer, we check whether we're marking to figure out which
part of the mark compact we're in. If we aborted incremental marking for
whatever reason, the check fails and we might later run into trouble

BUG=none
R=hpayer@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/783453003

Cr-Commit-Position: refs/heads/master@{#25663}
2014-12-04 16:44:33 +00:00
balazs.kilvady
a25003cfa6 MIPS: Change CmpWeakValue to a more MIPS like GetWeakValue.
This approach saves one instruction by eliminating the use of Subu as a
pseudo-comparison.

BUG=

Review URL: https://codereview.chromium.org/779793004

Cr-Commit-Position: refs/heads/master@{#25662}
2014-12-04 16:29:16 +00:00
arv
edf3dab466 ES6 template literals: Fix issue with template after rbrace
If we hade }` the right brace was always treated as part of the
template literal. We should only treat the right brace as part of
the literal when we continue to parse the template literal after a
placeholder.

BUG=v8:3734
LOG=Y

Review URL: https://codereview.chromium.org/778813003

Cr-Commit-Position: refs/heads/master@{#25661}
2014-12-04 14:50:17 +00:00
jochen
f5a027dc70 Check whether the marking deque overflowed in ProcessEphemeralMarking
Otherwise, we might exit to early when we call ProcessEphemeralMarking
with an empty, overflown deque

BUG=none
R=hpayer@chromium.org,erik.corry@gmail.com
LOG=n

Review URL: https://codereview.chromium.org/777643002

Cr-Commit-Position: refs/heads/master@{#25660}
2014-12-04 14:09:35 +00:00
arv
eb5049b14d Stage ES6 template literals
BUG=v8:3230
LOG=Y
R=dslomov@chromium.org, rossberg@chromium.org

Review URL: https://codereview.chromium.org/780603003

Cr-Commit-Position: refs/heads/master@{#25659}
2014-12-04 12:25:01 +00:00
Benedikt Meurer
73b4af7aa6 [turbofan] Narrow upper bounds during typed lowering.
This is a temporary solution, which optionally narrows upper bounds of
nodes when changing the operator of a node.

R=jarin@chromium.org

Review URL: https://codereview.chromium.org/741503006

Cr-Commit-Position: refs/heads/master@{#25658}
2014-12-04 11:19:40 +00:00
ulan
b98a37113d Do not embed function in DirectLoadGlobalFunctionPrototype.
BUG=v8:3629
LOG=N

Review URL: https://codereview.chromium.org/778673002

Cr-Commit-Position: refs/heads/master@{#25657}
2014-12-04 10:52:49 +00:00
Benedikt Meurer
2bf048f46c [turbofan] Reduce context accesses during typed lowering.
TEST=unittests
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/776243002

Cr-Commit-Position: refs/heads/master@{#25656}
2014-12-04 10:50:58 +00:00
machenbach
1364ea7c77 Make JSTests ready for Android measurements.
This adds a common perf configuration for JSTests including
Classes, Collections, Iterators and Strings. This allows
the android test runner to handle subdirectories correctly
and to share the base.js resource in the parent directory.

The new json config has added resources configs for the
Android runner.

The perf runner's relative paths on the device are fixed as
well. Resources are only pushed on the configuration node
where they are specified. They are pushed to a dir on the
device that follows the same directory structure as on the
host. The binary is executed in the benchmark folder on the
device like on the host to allow relative path file
loading.

BUG=chromium:374740
LOG=n
TEST=python -m unittest run_perf_test
TBR=ulan@chromium.org
NOTRY=true

Review URL: https://codereview.chromium.org/779923002

Cr-Commit-Position: refs/heads/master@{#25655}
2014-12-04 10:37:42 +00:00
machenbach
ccf68a7b92 Revert of Encode reservation meta data in the snapshot blob. (patchset #3 id:40001 of https://codereview.chromium.org/781443002/)
Reason for revert:
[sheriff] Breaks http://build.chromium.org/p/client.v8/builders/V8-Blink%20Linux%2064/builds/1540

Original issue's description:
> Encode reservation meta data in the snapshot blob.
>
> This also makes reserving multiple chunks per object space possible.
>
> R=vogelheim@chromium.org

TBR=vogelheim@chromium.org,baixo@chromium.org,yangguo@chromium.org
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/780833002

Cr-Commit-Position: refs/heads/master@{#25654}
2014-12-04 10:31:33 +00:00
weiliang.lin
a8fbf3ac24 [x64] check sahf correctly
BUG=

Review URL: https://codereview.chromium.org/777173002

Cr-Commit-Position: refs/heads/master@{#25653}
2014-12-04 10:13:20 +00:00
yangguo
aa3ceb8b71 Encode reservation meta data in the snapshot blob.
This also makes reserving multiple chunks per object space possible.

R=vogelheim@chromium.org

Review URL: https://codereview.chromium.org/781443002

Cr-Commit-Position: refs/heads/master@{#25652}
2014-12-04 09:50:39 +00:00
machenbach
b991ece9ac Fix path construction in perf runner.
BUG=chromium:374740
LOG=n
TEST=python -m unittest run_perf_test
TBR=ulan@chromium.org
NOTRY=true

Review URL: https://codereview.chromium.org/776873005

Cr-Commit-Position: refs/heads/master@{#25651}
2014-12-04 08:58:09 +00:00
aandrey
a0ac642bc3 Fix Promise.resolve/Promise.reject unnecessarily scheduling a microtask.
R=rossberg@chromium.org, yangguo@chromium.org, adamk@chromium.org
LOG=N

Review URL: https://codereview.chromium.org/777703002

Cr-Commit-Position: refs/heads/master@{#25650}
2014-12-04 08:53:32 +00:00
cdai2
ed95aaaba4 X87: Use weak cells to embed maps in store handler.
port 3fc9c9b665

original commit message:

  Use weak cells to embed maps in store handler.
  BUG=v8:3629
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/779843002

Cr-Commit-Position: refs/heads/master@{#25649}
2014-12-04 04:32:07 +00:00
chunyang.dai
3881b64532 X87: CheckPrototypes uses weak cells to embed maps.
port 062a032f50

original commit message:

  CheckPrototypes uses weak cells to embed maps.

BUG=

Review URL: https://codereview.chromium.org/761093004

Cr-Commit-Position: refs/heads/master@{#25648}
2014-12-04 02:59:59 +00:00
balazs.kilvady
ddcb9b6d1a MIPS: Use weak cells to embed maps in store handler.
Port 3fc9c9b665

BUG=v8:3629
LOG=N

Review URL: https://codereview.chromium.org/762483004

Cr-Commit-Position: refs/heads/master@{#25647}
2014-12-03 18:33:13 +00:00
titzer
9143a224db Reland "[turbofan] Reuse forward fixpoint algorithm in Typer by making it a Reducer."
This reverts commit 918ef9d712.

R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/780623002

Cr-Commit-Position: refs/heads/master@{#25646}
2014-12-03 17:53:43 +00:00
balazs.kilvady
e7efc885d4 MIPS: CheckPrototypes uses weak cells to embed maps.
Port 062a032f50

BUG=v8:3629
LOG=N

Review URL: https://codereview.chromium.org/777673002

Cr-Commit-Position: refs/heads/master@{#25645}
2014-12-03 17:37:15 +00:00
machenbach
e86a933a40 Optimize pushing files in android perf test runner.
BUG=chromium:374740
LOG=n
TEST=python -m unittest run_perf_test
NOTRY=true

Review URL: https://codereview.chromium.org/754463005

Cr-Commit-Position: refs/heads/master@{#25644}
2014-12-03 15:34:56 +00:00
Ben L. Titzer
918ef9d712 Revert "[turbofan] Reuse forward fixpoint algorithm in Typer by making it a Reducer."
This reverts commit a48ad24a7c.

BUG=

Review URL: https://codereview.chromium.org/763773004

Cr-Commit-Position: refs/heads/master@{#25643}
2014-12-03 15:03:27 +00:00
wingo
21b23e6966 Move more don't-crankshaft computation to numbering pass
The "do I inline?" decision needs many of the same inputs as the "should
I even try to crankshaft?" decision.  This change consolidates these
checks in the numbering pass.  It also removes the is_generator() check,
as that's already handled when visiting the initial Yield expression.

R=svenpanne@chromium.org
BUG=

Review URL: https://codereview.chromium.org/775693003

Cr-Commit-Position: refs/heads/master@{#25642}
2014-12-03 14:52:42 +00:00
balazs.kilvady
68c800ef9d MIPS64: [turbofan] Add checked load/store operators.
Port c516d4f094

BUG=

Review URL: https://codereview.chromium.org/773113005

Cr-Commit-Position: refs/heads/master@{#25641}
2014-12-03 14:18:34 +00:00
arv
d67e573dbe Simplify template literal raw string creation
BUG=v8:3710
LOG=Y
R=dslomov@chromium.org, marja@chromium.org

Review URL: https://codereview.chromium.org/768203002

Cr-Commit-Position: refs/heads/master@{#25640}
2014-12-03 14:17:23 +00:00
ulan
3fc9c9b665 Use weak cells to embed maps in store handler.
BUG=v8:3629
LOG=N

Review URL: https://codereview.chromium.org/774473004

Cr-Commit-Position: refs/heads/master@{#25639}
2014-12-03 13:36:59 +00:00
mstarzinger
740d0a987a Prevent redundant node revisit in ControlEquivalence.
R=jarin@chromium.org

Review URL: https://codereview.chromium.org/773133003

Cr-Commit-Position: refs/heads/master@{#25638}
2014-12-03 13:24:55 +00:00
hpayer
74321d5558 Restart idle round on context disposal.
BUG=

Review URL: https://codereview.chromium.org/754363008

Cr-Commit-Position: refs/heads/master@{#25637}
2014-12-03 13:14:00 +00:00
Dusan Milosavljevic
8138bb5b85 MIPS: Improve pushing arguments on stack.
TEST=
BUG=
R=paul.lind@imgtec.com

Review URL: https://codereview.chromium.org/769283002

Cr-Commit-Position: refs/heads/master@{#25636}
2014-12-03 13:10:09 +00:00
Dusan Milosavljevic
57957b480c MIPS: Fix ambiguous double constant loading after adding checked load/store operators.
The V8_INFINITY macro expands to constant expression of type float.

TEST=mjsunit/constant-folding-2
BUG=
R=balazs.kilvady@imgtec.com

Review URL: https://codereview.chromium.org/779433003

Cr-Commit-Position: refs/heads/master@{#25635}
2014-12-03 12:51:14 +00:00
ulan
062a032f50 CheckPrototypes uses weak cells to embed maps.
BUG=v8:3629
LOG=N

Review URL: https://codereview.chromium.org/770373002

Cr-Commit-Position: refs/heads/master@{#25634}
2014-12-03 12:34:32 +00:00
titzer
a48ad24a7c [turbofan] Reuse forward fixpoint algorithm in Typer by making it a Reducer.
R=jarin@chromium.org
BUG=

Review URL: https://codereview.chromium.org/769303002

Cr-Commit-Position: refs/heads/master@{#25633}
2014-12-03 11:52:03 +00:00
bmeurer
e564b3fe06 [turbofan] Initial work on cleaning up the Node class.
- Remove use_count_, only used for debug builds and tests.
- Use BitField instead of the unreliable C++ bit fields.
- Improve memory layout.

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/780503002

Cr-Commit-Position: refs/heads/master@{#25632}
2014-12-03 10:33:52 +00:00
hpayer
708610e965 Print finalize incremental marking event in idle notification.
BUG=

Review URL: https://codereview.chromium.org/775013002

Cr-Commit-Position: refs/heads/master@{#25631}
2014-12-03 10:03:30 +00:00
hpayer
7ec1c3616e Slow down incremental marking on main thread when idle notification is active.
BUG=

Review URL: https://codereview.chromium.org/771703004

Cr-Commit-Position: refs/heads/master@{#25630}
2014-12-03 09:37:07 +00:00
yangguo
07584119ca Serializer: cache recent back references for shorter encoding.
And some refactorings.

R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/766893002

Cr-Commit-Position: refs/heads/master@{#25629}
2014-12-03 09:12:37 +00:00
marja
02cb54e3cc Make test-parsing faster: don't run parsing tests with all experimental flag combinations.
Instead, make it possible for indifidual tests to pass "always true flags" which
are not part of the varying flag set.

The downside is that if an experimental flag changes parsing of some of the
unrelated code snippets, it's noticed later (only after the flag is turned on by
default). But this is a reasonable trade off for faster tests.

Additional fix: Some tests (ErrorsFutureStrictReservedWords) were using
always_flags incorrectly (running two different tests with different
always_flags basically iterates over every flag combination anyway - most of
them twice).

BUG=v8:3707
LOG=N

Review URL: https://codereview.chromium.org/772823002

Cr-Commit-Position: refs/heads/master@{#25628}
2014-12-03 08:23:48 +00:00
Benedikt Meurer
2983d84e5c [turbofan] Combine additional Word32And with Int32Add and negative power of two.
- (y << L + x) & (-1 << L) => (x & (-1 << L)) + y << L
- (x + y << L) & (-1 << L) => (x & (-1 << L)) + y << L

TEST=unittests
R=jarin@chromium.org

Review URL: https://codereview.chromium.org/758603003

Cr-Commit-Position: refs/heads/master@{#25627}
2014-12-03 07:35:03 +00:00
paul.lind
a07045af54 MIPS: [turbofan] Add checked load/store operators.
Port c516d4f094

Partial port to un-break the build. There are a few failing
tests, and the code is suboptimal for smaller offsets.

Fixes and mips64 port will come in another CL.

BUG=

Review URL: https://codereview.chromium.org/762853004

Cr-Commit-Position: refs/heads/master@{#25626}
2014-12-03 00:28:24 +00:00
adamk
34d9be2e58 Optimize non-mutation Map and Set operations for String keys
Review URL: https://codereview.chromium.org/757143002

Cr-Commit-Position: refs/heads/master@{#25625}
2014-12-02 23:06:55 +00:00
vogelheim
881a921bb2 Fix NativesCollection<.>::GetScriptName in natives-external.cc
As there's no associated bug, here's the issue:
- Some ES6 functionality in Chrome is presently broken; this fixes it.
- The natives (built-in libraries) can be accessed by their 'name'.
  This is used to active ES6 flags.
- Strangely enough, there's an id and a name, where the name is derived
  from the id as "native %s.js", with %s for the id.
- NativesCollection<.>::GetScriptName uses the name.
- NativesCollection<.>::GetIndex uses the id.
- Example:
  NativesCollection<EXPERIMENTAL>::GetIndex("harmony-string") -> 3
  NativesCollection<EXPERIMENTAL>::GetScriptName(3) -> "native harmony-string.js"
- Nobody knows why; it's quite mysterious.
- When introducing the "external startup data", I didn't fully understand this
  and used the id in both places.
- When the "external startup data" was turned on in Chrome, ES6 features broke
  in Chrome since the libraries could no longer be found.
- This CL fixes this and makes the external startup data behave just like the
  built-in version.

R=dslomov
BUG=

Review URL: https://codereview.chromium.org/774613003

Cr-Commit-Position: refs/heads/master@{#25624}
2014-12-02 18:53:34 +00:00
baptiste.afsa
80012d0b96 [turbofan] Enable DivIsSafe flag for arm64.
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/773803003

Cr-Commit-Position: refs/heads/master@{#25623}
2014-12-02 18:45:38 +00:00
mstarzinger
5db82a57b6 Switch CFGBuilder to use NodeMarker.
R=titzer@chromium.org

Review URL: https://codereview.chromium.org/753063004

Cr-Commit-Position: refs/heads/master@{#25622}
2014-12-02 16:51:55 +00:00
mstarzinger
f9e4527f32 Restrict floating control to minimal control-connected component.
R=jarin@chromium.org
TEST=cctest/test-scheduler/NestedFloatingDiamondWithChain

Review URL: https://codereview.chromium.org/738613005

Cr-Commit-Position: refs/heads/master@{#25621}
2014-12-02 15:56:30 +00:00
mstarzinger
0672b64d1c Make generic algorithm a little less generic.
R=titzer@chromium.org

Review URL: https://codereview.chromium.org/760493003

Cr-Commit-Position: refs/heads/master@{#25620}
2014-12-02 15:38:00 +00:00
weiliang.lin
4f3d27e64f [ia32] Introduce FMA3 instructions on scalar data elements.
port 83a635e0d7

BUG=

Review URL: https://codereview.chromium.org/773783002

Cr-Commit-Position: refs/heads/master@{#25619}
2014-12-02 15:30:09 +00:00
jochen
4fcc2dca7e Trace how long it takes to compute the weak closure during mark-compact
BUG=none
R=hpayer@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/769253002

Cr-Commit-Position: refs/heads/master@{#25618}
2014-12-02 15:09:27 +00:00