This reduces the storage per-Node storage from 7 words to 6 and per-edge
storage from 6 words to 4.
On average this is about 10%-15% space savings over the whole graph.
Remove the use of std::deque as the out-of-line storage for inputs.
Reduce size of Use links and use pointer arithmetic to find Node
from Use.
R=mstarzinger@chromium.org,jarin@chromium.org
BUG=
Review URL: https://codereview.chromium.org/1150923003
Cr-Commit-Position: refs/heads/master@{#28583}
First steps only, the TurboFan compilation is still triggered from C++ land.
Includes some simplifications/cleanups, too.
Review URL: https://codereview.chromium.org/1150263002
Cr-Commit-Position: refs/heads/master@{#28581}
This just delegates to SharedFunctionInfo::optimization_disabled and
was primarily used for assertions. Removing it due to misleading name
because already optimized functions reported being "non-optimizable".
This relands commit 181d7b8597.
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/1146423002
Cr-Commit-Position: refs/heads/master@{#28577}
This follows the logic of the load ics, in that the base extra ic state is
better encapsulated.
Introduce flag vector_stores to aid development of vector-based store ics.
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/1151253004
Cr-Commit-Position: refs/heads/master@{#28576}
Reason for revert:
[Sheriff] Speculative revert because chromebook is really misbehaving:
http://build.chromium.org/p/client.v8/builders/V8%20Arm/builds/2109
I also triggered a retry with the failing build to be sure. If the revert doesn't help or the bot had a scary hiccup, this can reland.
Original issue's description:
> Pass GC flags to incremental marker and start incremental marking with
> reduce memory footprint in idle notification.
>
> BUG=
>
> Committed: https://crrev.com/4656308147b12405037678b1ab192fb4f2437bbc
> Cr-Commit-Position: refs/heads/master@{#28567}
TBR=hpayer@chromium.org,ulan@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=
Review URL: https://codereview.chromium.org/1151143002
Cr-Commit-Position: refs/heads/master@{#28568}
The Heap::Available method adds up the available size from only 4 of
the spaces. This CL fixes the method to return total of all spaces.
BUG=481504
LOG=N
Review URL: https://codereview.chromium.org/1141693003
Cr-Commit-Position: refs/heads/master@{#28566}
Also support patterns in ``for (var p in/of ...)``
This CL extends the rewriting we used to do for ``for (let p in/of...)`` to
``for (var p in/of ...)``. For all for..in/of loop declaring variable,
we rewrite
for (var/let/const pattern in/of e) b
into
for (x' in/of e) { var/let/const pattern = e; b }
This adds a small complication for debugger: for a statement
for (var v in/of e) ...
we used to have
var v;
for (v in/of e) ...
and there was a separate breakpoint on ``var v`` line.
This breakpoint is actually useless since it is immediately followed by
a breakpoint on evaluation of ``e``, so this CL removes that breakpoint
location.
Similiraly, for let, it used to be that
for (let v in/of e) ...
became
for (x' in/of e) { let v; v = x'; ... }
``let v``generetaed a useless breakpoint (with the location at the
loop's head. This CL removes that breakpoint as well.
R=arv@chromium.org,rossberg@chromium.org
BUG=v8:811
LOG=N
Review URL: https://codereview.chromium.org/1149043005
Cr-Commit-Position: refs/heads/master@{#28565}
This macro is used for defining static data members with
STATIC_CONST_MEMBER_DEFINITION. Clang-cl mimics MSVC's
behaviour here, so it also needs __declspec(selectany).
This change was prompted by Clang r237787 which changed
a bug where Clang would previously not emit symbols for
some static data members.
BUG=82385
LOG=N
Review URL: https://codereview.chromium.org/1145213004
Cr-Commit-Position: refs/heads/master@{#28563}
Original issue's description:
> Avoid excessive GCs in small heaps.
>
> Small heaps and small heap growing factor can lead to excessive GCs in corner cases.
>
> Consider function F(old_gen_size, factor) that returns the number of bytes that
> have to be allocated in the old generation to start incremental marking.
>
> F(4MB, 1.1) = 4MB (because of kMinimumOldGenerationAllocationLimit)
> F(6MB, 1.1) = 2MB (because of kMinimumOldGenerationAllocationLimit)
> F(8MB, 1.1) = 800KB
>
> Funtion F should be monotonic in old_gen_size, but it currently has a minimum
> at kMinimumOldGenerationAllocationLimit.
>
> This CL makes F monotonic.
>
> BUG=
>
> Committed: https://crrev.com/22b1da99732b4db0754bf267ec470a2831216fb2
> Cr-Commit-Position: refs/heads/master@{#28549}
TBR=hpayer@chromium.org
Review URL: https://codereview.chromium.org/1148953005
Cr-Commit-Position: refs/heads/master@{#28562}
Port 9502e91adb
Original commit message:
This allows you to put iterables into your array literals
and the will get spread into the array.
let x = [0, ...range(1, 3)]; // [0, 1, 2]
This is done by treating the array literal up to the first
spread element as usual, including using a boiler plate
array, and then appending the remaining expressions and rest
expressions.
R=arv@chromium.org, dstence@us.ibm.com, michael_dawson@ca.ibm.com
BUG=
Review URL: https://codereview.chromium.org/1149873005
Cr-Commit-Position: refs/heads/master@{#28560}
Reason for revert:
Regressed Sunspider.
Original issue's description:
> Avoid excessive GCs in small heaps.
>
> Small heaps and small heap growing factor can lead to excessive GCs in corner cases.
>
> Consider function F(old_gen_size, factor) that returns the number of bytes that
> have to be allocated in the old generation to start incremental marking.
>
> F(4MB, 1.1) = 4MB (because of kMinimumOldGenerationAllocationLimit)
> F(6MB, 1.1) = 2MB (because of kMinimumOldGenerationAllocationLimit)
> F(8MB, 1.1) = 800KB
>
> Funtion F should be monotonic in old_gen_size, but it currently has a minimum
> at kMinimumOldGenerationAllocationLimit.
>
> This CL makes F monotonic.
>
> BUG=
>
> Committed: https://crrev.com/22b1da99732b4db0754bf267ec470a2831216fb2
> Cr-Commit-Position: refs/heads/master@{#28549}
TBR=hpayer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=
Review URL: https://codereview.chromium.org/1152533002
Cr-Commit-Position: refs/heads/master@{#28558}
Currently the stub simply calls out to the runtime, this will be
improved in a later CLs. The current state at least avoids bit-rot and
later merging horror.
Fixes frame construction logic for stubs, too, and contains quite a few
tiny cleanups in stub-land.
Review URL: https://codereview.chromium.org/1150673002
Cr-Commit-Position: refs/heads/master@{#28555}
Reason for revert:
Causes assertions to fire when serializing optimized code.
Original issue's description:
> Remove obsolete JSFunction::IsOptimizable predicate.
>
> This just delegates to SharedFunctionInfo::optimization_disabled and
> was primarily used for assertions. Removing it due to misleading name
> because already optimized functions reported being "non-optimizable".
>
> R=titzer@chromium.org
>
> Committed: https://crrev.com/181d7b85977eb752b19e1de902093783e31330ef
> Cr-Commit-Position: refs/heads/master@{#28551}
TBR=titzer@chromium.org,bmeurer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/1148973005
Cr-Commit-Position: refs/heads/master@{#28554}
This just delegates to SharedFunctionInfo::optimization_disabled and
was primarily used for assertions. Removing it due to misleading name
because already optimized functions reported being "non-optimizable".
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/1150683002
Cr-Commit-Position: refs/heads/master@{#28551}
The inliner previously assumed that there will only be returns reaching
the end node, but that's not true. This refactoring will make it
possible to also hook up Deoptimize, Throw and Terminate nodes reaching
end properly.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/1146393002
Cr-Commit-Position: refs/heads/master@{#28550}
Small heaps and small heap growing factor can lead to excessive GCs in corner cases.
Consider function F(old_gen_size, factor) that returns the number of bytes that
have to be allocated in the old generation to start incremental marking.
F(4MB, 1.1) = 4MB (because of kMinimumOldGenerationAllocationLimit)
F(6MB, 1.1) = 2MB (because of kMinimumOldGenerationAllocationLimit)
F(8MB, 1.1) = 800KB
Funtion F should be monotonic in old_gen_size, but it currently has a minimum
at kMinimumOldGenerationAllocationLimit.
This CL makes F monotonic.
BUG=
Review URL: https://codereview.chromium.org/1144223002
Cr-Commit-Position: refs/heads/master@{#28549}
This allows enabling TurboFan on a certain subset of language features
in the AstNumberingVisitor. The heuristics of when to optimize remain
unchanged, only the choice of which optimizing compiler to use changes.
R=bmeurer@chromium.org
BUG=v8:4131
LOG=N
Review URL: https://codereview.chromium.org/1155503002
Cr-Commit-Position: refs/heads/master@{#28544}
Replace the --turbo-deoptimization flag with --turbo-asm-deoptimization
and enable deoptimization for non-asm.js TurboFan code unconditionally.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/1153483002
Cr-Commit-Position: refs/heads/master@{#28543}
This should help to keep syntax errors from creeping into v8.h
Also, I'll remove usages of to-be-deprecated APIs and turn this flag on
for standalone builds
BUG=4134
R=vogelheim@chromium.org
LOG=n
Review URL: https://codereview.chromium.org/1149633003
Cr-Commit-Position: refs/heads/master@{#28538}
Sample new space allocation throughput at scavenge and at idle notificatioon.
This will allow better estimation of mutator idleness for switching between
latency and memory modes in idle notification handler.
BUG=chromium:486005
LOG=NO
TEST=cctest/test-heap/NewSpaceAllocationThroughput
Review URL: https://codereview.chromium.org/1125193005
Cr-Commit-Position: refs/heads/master@{#28537}