Reason for revert:
Caused test failures in mjsunit/es6/collections with --deopt-every-n-times=1
Original issue's description:
> Optimize add/set/delete operations for string keys in Maps and Sets
TBR=dslomov@chromium.org,arv@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/777233003
Cr-Commit-Position: refs/heads/master@{#25670}
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}
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}
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}
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}
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}
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}
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}
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}
- 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}
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}
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}
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}