platform/upstream/v8.git
9 years agoParse arrow functions at proper precedence level
wingo [Wed, 26 Aug 2015 09:36:39 +0000 (02:36 -0700)]
Parse arrow functions at proper precedence level

BUG=v8:4211
LOG=Y
R=rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30373}

9 years ago[heap] Prevent direct access to ExternalStringTable.
mstarzinger [Wed, 26 Aug 2015 09:35:30 +0000 (02:35 -0700)]
[heap] Prevent direct access to ExternalStringTable.

R=mlippautz@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30372}

9 years agoDon't explicitly tear down code range in cctest/test-alloc/CodeRange to avoid double...
Hannes Payer [Wed, 26 Aug 2015 09:28:18 +0000 (11:28 +0200)]
Don't explicitly tear down code range in cctest/test-alloc/CodeRange to avoid double-free.

BUG=v8:4141
LOG=n
R=mlippautz@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30371}

9 years ago[turbofan] Separate LiveRange and TopLevelLiveRange concepts
mtrofin [Wed, 26 Aug 2015 05:22:22 +0000 (22:22 -0700)]
[turbofan] Separate LiveRange and TopLevelLiveRange concepts

A TopLevelLiveRange is the live range of a virtual register. Through
register allocation, it may end up being split in a succession of child
live ranges, where data flow is handled through moves from
predecessor to successor child.

Today, the concepts of "top level" and "child" live ranges are conflated
under the LiveRange class. However, a good few APIs pertain solely
to TopLevelLiveRanges. This was communicated through comments or
DCHECKs - but this makes for poor code comprehensibility and maintainability.

For example, the worklist of the register allocator (live_ranges()) needs
to only contain TopLevelLiveRanges; spill range concerns are associated
only with the top range; phi-ness; certain phases in the allocation pipeline;
APIs on LiveRange used for initial construction - before splitting;
splintering - these are all responsibilities associated to TopLevelLiveRanges,
and not child live ranges.

This change separates the concepts.

An effect of this change is that child live range allocation need not involve
RegisterAllocationData. That's "a good thing" (lower coupling), but it has
the side-effect of not having a good way to construct unique identifiers for
child live ranges, relative to a given InstructionSequence.

LiveRange Id are used primarily for tracing/output-ing, and debugging.

I propose a 2-component identifier: a virtual register (vreg) number,
uniquely identifying TopLevelLiveRanges; and a relative identifier, which
uniquely identifies children of a given TopLevelLiveRange. "0" is reserved
for the TopLevel range. The relative identifier does not necessarily
indicate order in the child chain, which is no worse than the current state
of affairs.

I believe this change should make it easier to understand a trace output
(because the virtual register number is readily available). I plan to formalize
with a small structure the notion of live range id, and consolidate tracing
around that, as part of a separate CL. (there are seemingly disparate ways
to trace - printf or stream-based APIs - so this seems like an opportune
change to consolidate that)

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

Cr-Commit-Position: refs/heads/master@{#30370}

9 years agoUpdate V8 DEPS.
v8-autoroll [Wed, 26 Aug 2015 03:24:52 +0000 (20:24 -0700)]
Update V8 DEPS.

Rolling v8/third_party/icu to 6b3ce817f8e828c3b7a577d2395f0882eb56ef18

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30369}

9 years agoX87: [Interpreter] Pass context to interpreter bytecode handlers and add LoadConstextSlot
chunyang.dai [Wed, 26 Aug 2015 01:17:11 +0000 (18:17 -0700)]
X87: [Interpreter] Pass context to interpreter bytecode handlers and add LoadConstextSlot

   For X87 platform, it has the same general register as ia32 and it will spill the
   context to the stack too.

port bfdc22d7fc1bc046a38770a676619eee613222f3 (r29325).

original commit message:

    Passes the current context to bytecode interpreter handlers. This is held in the
    context register on all architectures except for ia32 where there are too few
    registers and it is instead spilled to the stack.

    Also changes Load/StoreRegister to use kMachAnyTagged representation since they
    should only ever hold tagged values.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30368}

9 years agoVisit additional AST nodes as expressions in AstExpressionVisitor .
bradnelson [Wed, 26 Aug 2015 01:16:04 +0000 (18:16 -0700)]
Visit additional AST nodes as expressions in AstExpressionVisitor .

Visit AST Property nodes as expressions in AstExpressionVisitor.
Visit Yield and Throw as they are expressions too.

BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=test-ast-expression-visitor, test-typing-reset
R=rossberg@chromium.org,titzer@chromium.org
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30367}

9 years ago[simd.js] Clean up bad merge in messages.js
bbudge [Wed, 26 Aug 2015 01:14:58 +0000 (18:14 -0700)]
[simd.js] Clean up bad merge in messages.js
Eliminates duplicate var's and assignments.

LOG=N
BUG=v8:4124

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

Cr-Commit-Position: refs/heads/master@{#30366}

9 years agoTest262 roll to the 2015-8-25 version
littledan [Wed, 26 Aug 2015 01:13:51 +0000 (18:13 -0700)]
Test262 roll to the 2015-8-25 version

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

Cr-Commit-Position: refs/heads/master@{#30365}

9 years ago--harmony-sloppy-function depends on --harmony-sloppy
littledan [Wed, 26 Aug 2015 01:12:44 +0000 (18:12 -0700)]
--harmony-sloppy-function depends on --harmony-sloppy

The lack of marking this dependency led to a ClusterFuzz crash when
sloppy-function was on but not sloppy. This case does not make sense.

R=adamk
LOG=N
BUG=chromium:520891

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

Cr-Commit-Position: refs/heads/master@{#30364}

9 years ago[es6] Remaining cases of parameter scopes for sloppy eval
rossberg [Tue, 25 Aug 2015 22:24:17 +0000 (15:24 -0700)]
[es6] Remaining cases of parameter scopes for sloppy eval

R=littledan@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#30363}

9 years ago[es6] Fix computed property names in nested literals
adamk [Tue, 25 Aug 2015 21:10:34 +0000 (14:10 -0700)]
[es6] Fix computed property names in nested literals

Make ObjectLiteral::is_simple() false for literals containing computed
property names, which causes IsCompileTimeValue() to return false and
thus force code to be generated for setting up such properties. This
mirrors the handling of '__proto__' in literals.

BUG=v8:4387
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#30362}

9 years ago[es6] Correct length for functions with default parameters
rossberg [Tue, 25 Aug 2015 18:51:57 +0000 (11:51 -0700)]
[es6] Correct length for functions with default parameters

R=adamk@chromium.org
BUG=v8:2160
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30361}

9 years agoFix AstExpressionVisitor to correctly handle switch + for.
bradnelson [Tue, 25 Aug 2015 16:07:13 +0000 (09:07 -0700)]
Fix AstExpressionVisitor to correctly handle switch + for.

These were missed by the previous tests,
uncovered in another context.

BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=test-ast-expression-visitor
R=rossberg@chromium.org,titzer@chromium.org
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30360}

9 years agoAdd basic support for parallel compaction and flag.
hpayer [Tue, 25 Aug 2015 15:26:45 +0000 (08:26 -0700)]
Add basic support for parallel compaction and flag.

BUG=524425
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#30359}

9 years ago[heap] Enforce coding style decl order in {Heap} round #3.
mstarzinger [Tue, 25 Aug 2015 15:16:37 +0000 (08:16 -0700)]
[heap] Enforce coding style decl order in {Heap} round #3.

R=mlippautz@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30358}

9 years ago[turbofan] Deferred blocks splintering.
mtrofin [Tue, 25 Aug 2015 14:47:26 +0000 (07:47 -0700)]
[turbofan] Deferred blocks splintering.

This change encompasses what is necessary to enable stack checks in loops without suffering large regressions.

Primarily, it consists of a new mechanism for dealing with deferred blocks by "splintering", rather than splitting, inside deferred blocks.

My initial change was splitting along deferred block boundaries, but the regression introduced by stackchecks wasn't resolved conclusively. After investigation, it appears that just splitting ranges along cold block boundaries leads to a greater opportunity for moves on the hot path, hence the suboptimal outcome.

The alternative "splinters" ranges rather than splitting them. While splitting creates 2 ranges and links them (parent-child), in contrast, splintering creates a new independent range with no parent-child relation to the original. The original range appears as if it has a liveness hole in the place of the splintered one. All thus obtained ranges are then register allocated with no change to the register allocator.

The splinters (cold blocks) do not conflict with the hot path ranges, by construction. The hot path ones have less pressure to split, because we remove a source of conflicts. After allocation, we merge the splinters back to their original ranges and continue the pipeline. We leverage the previous changes made for deferred blocks (determining where to spill, for example).

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

Cr-Commit-Position: refs/heads/master@{#30357}

9 years agoAllow more scavenges during idle times by pushing down the idle new space limit.
hpayer [Tue, 25 Aug 2015 13:49:06 +0000 (06:49 -0700)]
Allow more scavenges during idle times by pushing down the idle new space limit.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30356}

9 years ago[heap] Prevent direct access to StoreBuffer.
mstarzinger [Tue, 25 Aug 2015 13:38:45 +0000 (06:38 -0700)]
[heap] Prevent direct access to StoreBuffer.

R=mlippautz@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30355}

9 years ago[interpreter] Allow verification and trace-turbo for bytecode handlers.
rmcilroy [Tue, 25 Aug 2015 12:56:50 +0000 (05:56 -0700)]
[interpreter] Allow verification and trace-turbo for bytecode handlers.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30354}

9 years ago[simd.js] Update to spec version 0.8.2.
bbudge [Tue, 25 Aug 2015 12:35:06 +0000 (05:35 -0700)]
[simd.js] Update to spec version 0.8.2.

Adds Uint32x4, Uint16x8, and Uint8x16 types.
Adds all functions in the current spec, except for loads and stores.

LOG=Y
BUG=v8:4124

Committed: https://crrev.com/4be6d37fd1ad0a6e0ea37da8863ae5169c2b89ba
Cr-Commit-Position: refs/heads/master@{#30322}

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

Cr-Commit-Position: refs/heads/master@{#30353}

9 years ago[Interpreter] Add implementations of arithmetic binary op bytecodes.
rmcilroy [Tue, 25 Aug 2015 11:31:09 +0000 (04:31 -0700)]
[Interpreter] Add implementations of arithmetic binary op bytecodes.

Adds implementations and tests for the following bytecodes:
  - Add
  - Sub
  - Mul
  - Div
  - Mod

Also adds the Mod bytecode and adds support to BytecodeGenerator and
BytecodeArrayBuilder to enable it's use.

The current bytecodes always call through to the JS builtins. This also adds
LoadObjectField and CallJSBuiltin operators to the InterpreterAssembler.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30352}

9 years agoRevert of Moving ArraySplice Builtin to ElementsAccessor (patchset #8 id:140001 of...
hablich [Tue, 25 Aug 2015 11:18:29 +0000 (04:18 -0700)]
Revert of Moving ArraySplice Builtin to ElementsAccessor (patchset #8 id:140001 of https://codereview.chromium.org/1293683005/ )

Reason for revert:
Fails layout tests: http://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2032/builds/1450

Original issue's description:
> - remove the Backing-Store specific code from builtins.cc and put it in elements.cc.
> - adding tests to improve coverage of the splice method
>
> BUG=
>
> Committed: https://crrev.com/8533d4b5433d3a9e9fb1015f206997bd6d869fe3
> Cr-Commit-Position: refs/heads/master@{#30269}
>
> Committed: https://crrev.com/07a4a6cb8e2ab940b28a7151a925c796da023524
> Cr-Commit-Position: refs/heads/master@{#30326}

TBR=mvstanton@chromium.org,cbruni@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#30351}

9 years agoRevert of Array.prototype.unshift builtin improvements (patchset #3 id:40001 of https...
cbruni [Tue, 25 Aug 2015 11:11:18 +0000 (04:11 -0700)]
Revert of Array.prototype.unshift builtin improvements (patchset #3 id:40001 of https://codereview.chromium.org/1311343002/ )

Reason for revert:
https://codereview.chromium.org/1315823004/

Original issue's description:
> Array.prototype.unshift builtin improvements
>
> Moving unshift to ElementAccessor and increasing the range of arguments
> handled directly in C++, namely directly supporting FastDoubleElementsKind.
> This should yield a factor 19 speedup for unshift on fast double arrays.
>
> BUG=
>
> Committed: https://crrev.com/bf6764e6c1197e50ae148755488307a423b1d9b4
> Cr-Commit-Position: refs/heads/master@{#30347}

TBR=yangguo@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#30350}

9 years ago[heap] Make the current GCCallbackFlags are part of {Heap}.
mlippautz [Tue, 25 Aug 2015 10:59:40 +0000 (03:59 -0700)]
[heap] Make the current GCCallbackFlags are part of {Heap}.

Moves the GCCallbackflags where they belong, i.e., {Heap}, and gets rid of
IncrementalMarking::Start() callsites.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30349}

9 years agoAdd a PLACEHOLDER code kind.
titzer [Tue, 25 Aug 2015 10:17:26 +0000 (03:17 -0700)]
Add a PLACEHOLDER code kind.

The PLACEHOLDER code kind is used when compiling a code object that has
direct calls to other code objects, but those other code objects do not
yet exist because they have not yet been compiled. It serves as a
placeholder to break the cycle, e.g. in WASM.

R=yangguo@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#30348}

9 years agoArray.prototype.unshift builtin improvements
cbruni [Tue, 25 Aug 2015 09:45:24 +0000 (02:45 -0700)]
Array.prototype.unshift builtin improvements

Moving unshift to ElementAccessor and increasing the range of arguments
handled directly in C++, namely directly supporting FastDoubleElementsKind.
This should yield a factor 19 speedup for unshift on fast double arrays.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30347}

9 years agoReship arrow functions
rossberg [Tue, 25 Aug 2015 09:23:00 +0000 (02:23 -0700)]
Reship arrow functions

...in canary.

This reverts commit c75af23299ec948cf2d809e8aa86b2c43184cde3.

R=hablich@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#30346}

9 years ago[heap] Report proper GC type in prologue/eplilogue callbacks.
mlippautz [Tue, 25 Aug 2015 09:21:51 +0000 (02:21 -0700)]
[heap] Report proper GC type in prologue/eplilogue callbacks.

Followup to https://codereview.chromium.org/1288683005

BUG=chromium:521946
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30345}

9 years ago[heap] Enforce coding style decl order in {Heap} round #2.
mlippautz [Tue, 25 Aug 2015 08:24:04 +0000 (01:24 -0700)]
[heap] Enforce coding style decl order in {Heap} round #2.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30344}

9 years ago[crankshaft] DCE must not eliminate (observable) math operations.
bmeurer [Tue, 25 Aug 2015 06:24:40 +0000 (23:24 -0700)]
[crankshaft] DCE must not eliminate (observable) math operations.

The HUnaryMathOperation cannot be eliminated in general, because the
spec requires a ToNumber conversion on the input, which is observable
of course.

BUG=v8:4389
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#30343}

9 years agoCorrectify instanceof and make it optimizable.
bmeurer [Tue, 25 Aug 2015 04:48:36 +0000 (21:48 -0700)]
Correctify instanceof and make it optimizable.

The previous hack with HInstanceOfKnownGlobal was not only slower,
but also very brittle and required a lot of weird hacks to support it. And
what's even more important it wasn't even correct (because a map check
on the lhs is never enough for instanceof).

The new implementation provides a sane runtime implementation
for InstanceOf plus a fast case in the InstanceOfStub, combined with
a proper specialization in the case of a known global in CrankShaft,
which does only the prototype chain walk (coupled with a code
dependency on the known global).

As a drive-by-fix: Also fix the incorrect Object.prototype.isPrototypeOf
implementation.

BUG=v8:4376
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#30342}

9 years ago[simd.js] Set --harmony-simd flag in test config.
bbudge [Mon, 24 Aug 2015 21:18:54 +0000 (14:18 -0700)]
[simd.js] Set --harmony-simd flag in test config.
Adds the flag to the test configuration so we aren't just testing the
polyfill.
Fixes some number conversion in native fromFloat32x4 function that now
fails.

LOG=N
BUG=v8:4124

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

Cr-Commit-Position: refs/heads/master@{#30341}

9 years agoAdd a separate scope for switch
littledan [Mon, 24 Aug 2015 18:57:08 +0000 (11:57 -0700)]
Add a separate scope for switch

The ES2015 specification for switch statements 13.12.11 specifies that
they get their own lexical scope. This patch introduces such a scope
through a complex desugaring in terms of blocks, done so that Crankshaft
does not have to be updated to support multiple constructs providing
scopes.

Recommitting this patch after a bug fix in Crankshaft to allow a
desugaring with certain elements missing a source location:
https://codereview.chromium.org/1313443002

BUG=v8:4377
LOG=Y
R=adamk

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

Cr-Commit-Position: refs/heads/master@{#30340}

9 years agoShip --harmony_array_includes
domenic [Mon, 24 Aug 2015 18:15:56 +0000 (11:15 -0700)]
Ship --harmony_array_includes

Intent to ship: https://groups.google.com/d/msg/v8-users/-a8_8cb6FRI/trjyB5bACQAJ

BUG=v8:3575
R=adamk@chromium.org, rossberg@chromium.org
LOG=Y
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel

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

Cr-Commit-Position: refs/heads/master@{#30339}

9 years ago[es6] Fix default parameters in arrow functions
rossberg [Mon, 24 Aug 2015 18:00:59 +0000 (11:00 -0700)]
[es6] Fix default parameters in arrow functions

R=adamk@chromium.org, wingo@igalia.com
BUG=v8:811
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30338}

9 years agoTranslate AST to Hydrogen missing position
littledan [Mon, 24 Aug 2015 17:18:41 +0000 (10:18 -0700)]
Translate AST to Hydrogen missing position

This patch translates RelocInfo::kNoPosition to SourcePosition::Unknown()
in constructing the Hydrogen graph from the parser's output. The translation
is done to increase the flexibility of the parser to desugar more things
that don't have natural locations.

R=bmeurer@chromium.org
BUG=v8:4377
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30337}

9 years agoAdding visitors to regurgitate expression types or reset them.
bradnelson [Mon, 24 Aug 2015 17:16:38 +0000 (10:16 -0700)]
Adding visitors to regurgitate expression types or reset them.

Adding an AstExpressionVisitor to touch each expression node in
an AST.

Adding TypingReseter to clear the slate after a failed asm.js
validation that has set partial typing information.

Adding a ExpressionTypeCollector to walk the expressions
in an AST and emit them as a string for testing.

Adding tests of the above.

LOG=N
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=test-typing-reset,test-ast-expression-visitor
R=rossberg@chromium.org,titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30336}

9 years agoRe-land "Concurrently unmap free pages."
hpayer [Mon, 24 Aug 2015 16:27:46 +0000 (09:27 -0700)]
Re-land "Concurrently unmap free pages."

BUG=chromium:507211
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#30335}

9 years agoMake Simulator respect C stack limits as well.
mstarzinger [Mon, 24 Aug 2015 15:55:30 +0000 (08:55 -0700)]
Make Simulator respect C stack limits as well.

The simulator uses a separate JS stack, exhaustion of the C stack
however is not caught by JS limit checks. This change now lowers the
limit of the JS stack accordingly on function calls.

R=mvstanton@chromium.org
BUG=chromium:522380
TEST=mjsunit/regress/regress-crbug-522380
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#30334}

9 years agoMove StackGuard::InterruptRequested into StackLimitCheck.
mstarzinger [Mon, 24 Aug 2015 15:24:41 +0000 (08:24 -0700)]
Move StackGuard::InterruptRequested into StackLimitCheck.

R=yangguo@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30333}

9 years agoUnship arrow functions
rossberg [Mon, 24 Aug 2015 14:58:16 +0000 (07:58 -0700)]
Unship arrow functions

...until the hotfix has baked.

R=hablich@chromium.org
BUG=v8:4211
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#30332}

9 years agoDeserializer: flush code cache while code pointers are still valid.
yangguo [Mon, 24 Aug 2015 14:49:22 +0000 (07:49 -0700)]
Deserializer: flush code cache while code pointers are still valid.

Omitting test case because it would be brittle and become useless soon.

R=mlippautz@chromium.org
BUG=chromium:523453
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30331}

9 years agoMessage formatting: handle unexpected case of failing property lookup.
yangguo [Mon, 24 Aug 2015 13:40:21 +0000 (06:40 -0700)]
Message formatting: handle unexpected case of failing property lookup.

R=cbruni@chromium.org
BUG=chromium:523308
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30330}

9 years agoRevert "Make sure that memory reducer makes progress in incremental marking"
mlippautz [Mon, 24 Aug 2015 13:29:32 +0000 (06:29 -0700)]
Revert "Make sure that memory reducer makes progress in incremental marking"

This reverts commit 1345f811bf6a3ab9376cfbed6f08084662b32a4d.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30329}

9 years agoDebugger: use correct position for for-next expression statement.
yangguo [Mon, 24 Aug 2015 13:08:05 +0000 (06:08 -0700)]
Debugger: use correct position for for-next expression statement.

R=rossberg@chromium.org
BUG=chromium:523543
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30328}

9 years ago[heap] Enforce coding style decl order in {Heap} round #1.
mlippautz [Mon, 24 Aug 2015 12:50:36 +0000 (05:50 -0700)]
[heap] Enforce coding style decl order in {Heap} round #1.

Order is now:
 - forward declarations
 - enums
 - nested classes
 - static consts
 - constructors
 - static methods
 - regular methods
 - members fields

Bonus:
 - Allocate*() methods are grouped together
 - Sections

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30327}

9 years ago- remove the Backing-Store specific code from builtins.cc and put it in elements.cc.
cbruni [Mon, 24 Aug 2015 10:55:08 +0000 (03:55 -0700)]
- remove the Backing-Store specific code from builtins.cc and put it in elements.cc.
- adding tests to improve coverage of the splice method

BUG=

Committed: https://crrev.com/8533d4b5433d3a9e9fb1015f206997bd6d869fe3
Cr-Commit-Position: refs/heads/master@{#30269}

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

Cr-Commit-Position: refs/heads/master@{#30326}

9 years ago[Interpreter] Pass context to interpreter bytecode handlers and add LoadConstextSlot
rmcilroy [Mon, 24 Aug 2015 10:25:34 +0000 (03:25 -0700)]
[Interpreter] Pass context to interpreter bytecode handlers and add LoadConstextSlot

Passes the current context to bytecode interpreter handlers. This is held in the
context register on all architectures except for ia32 where there are too few
registers and it is instead spilled to the stack.

Also changes Load/StoreRegister to use kMachAnyTagged representation since they
should only ever hold tagged values.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30325}

9 years agoAdd CompileInfo::GetDebugName()
rmcilroy [Mon, 24 Aug 2015 10:23:39 +0000 (03:23 -0700)]
Add CompileInfo::GetDebugName()

Replaces all instances of the code which computed the debug
name of a stub or function with calls to CompileInfo::GetDebugName instead.

Also:
  - Removes useless parameter on CodeStub::GetMajorName
  - Removes FakeStubForTesting since it is no longer required
  - Adds CompileInfo::ShouldEnsureSpaceForLazyDeopt() to replace unclear calls to IsStub().

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

Cr-Commit-Position: refs/heads/master@{#30324}

9 years agoRevert of [simd.js] Update to spec version 0.8.2. (patchset #11 id:200001 of https...
hablich [Mon, 24 Aug 2015 10:06:30 +0000 (03:06 -0700)]
Revert of [simd.js] Update to spec version 0.8.2. (patchset #11 id:200001 of https://codereview.chromium.org/1294513004/ )

Reason for revert:
Fails tests:
http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20deadcode/builds/5073/steps/steps/logs/stdio

Original issue's description:
> [simd.js] Update to spec version 0.8.2.
>
> Adds Uint32x4, Uint16x8, and Uint8x16 types.
> Adds all functions in the current spec, except for loads and stores.
>
> LOG=Y
> BUG=v8:4124
>
> Committed: https://crrev.com/4be6d37fd1ad0a6e0ea37da8863ae5169c2b89ba
> Cr-Commit-Position: refs/heads/master@{#30322}

TBR=littledan@chromium.org,bbudge@google.com,bmeurer@chromium.org,hpayer@chromium.org,bbudge@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4124

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

Cr-Commit-Position: refs/heads/master@{#30323}

9 years ago[simd.js] Update to spec version 0.8.2.
bbudge [Mon, 24 Aug 2015 09:13:00 +0000 (02:13 -0700)]
[simd.js] Update to spec version 0.8.2.

Adds Uint32x4, Uint16x8, and Uint8x16 types.
Adds all functions in the current spec, except for loads and stores.

LOG=Y
BUG=v8:4124

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

Cr-Commit-Position: refs/heads/master@{#30322}

9 years agoX87: Disable test case for X87 because of double register number restriction.
chunyang.dai [Mon, 24 Aug 2015 08:43:49 +0000 (01:43 -0700)]
X87: Disable test case for X87 because of double register number restriction.

These two test cases introduced by 8525136b require that the double register is >=2.
But currently on x87 turbofan implementation only 1 double register is supported.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30321}

9 years agoSimplify macro-assembler.h include dance.
mstarzinger [Mon, 24 Aug 2015 07:52:05 +0000 (00:52 -0700)]
Simplify macro-assembler.h include dance.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30320}

9 years agoNative context: alpha sort slots and remove boilerplate.
yangguo [Mon, 24 Aug 2015 07:15:01 +0000 (00:15 -0700)]
Native context: alpha sort slots and remove boilerplate.

R=mstarzinger@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30319}

9 years agoRevert of Parse arrow functions at proper precedence level (patchset #2 id:60001...
yangguo [Mon, 24 Aug 2015 06:56:56 +0000 (23:56 -0700)]
Revert of Parse arrow functions at proper precedence level (patchset #2 id:60001 of https://codereview.chromium.org/1286383005/ )

Reason for revert:
Breaks layout test. Please change test expectation on blink first.

--- /mnt/data/b/build/slave/V8-Blink_Linux_64/build/layout-test-results/inspector/sources/debugger-pause/debugger-pause-in-internal-expected.txt
+++ /mnt/data/b/build/slave/V8-Blink_Linux_64/build/layout-test-results/inspector/sources/debugger-pause/debugger-pause-in-internal-actual.txt
@@ -1,4 +1,4 @@
-CONSOLE ERROR: line 9: Uncaught SyntaxError: Expected () to start arrow function, but got '}' instead of '=>'
+CONSOLE ERROR: line 9: Uncaught SyntaxError: Unexpected token )
 Tests that pause on exception in internal script does not crash.

 Script source was shown.

Original issue's description:
> Parse arrow functions at proper precedence level
>
> BUG=v8:4211
> LOG=Y
> R=rossberg@chromium.org
>
> Committed: https://crrev.com/9271b0ccf9ddb217deb1f0b9ef9b59b64dc40214
> Cr-Commit-Position: refs/heads/master@{#30298}

TBR=rossberg@chromium.org,mstarzinger@chromium.org,fennyfanny655@gmail.com,machenbach@chromium.org,wingo@igalia.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4211

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

Cr-Commit-Position: refs/heads/master@{#30318}

9 years agoGet rid of CompilationInfo::GenerateCodeStub method.
mstarzinger [Mon, 24 Aug 2015 06:52:46 +0000 (23:52 -0700)]
Get rid of CompilationInfo::GenerateCodeStub method.

R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30317}

9 years agoRevert of Add a separate scope for switch (patchset #7 id:120001 of https://coderevie...
littledan [Sat, 22 Aug 2015 01:24:18 +0000 (18:24 -0700)]
Revert of Add a separate scope for switch (patchset #7 id:120001 of https://codereview.chromium.org/1293283002/ )

Reason for revert:
Breaks cctest/test-cpu-profiler/SourceLocation on nosnap

Original issue's description:
> Add a separate scope for switch
>
> The ES2015 specification for switch statements 13.12.11 specifies that
> they get their own lexical scope. This patch introduces such a scope
> through a complex desugaring in terms of blocks, done so that Crankshaft
> does not have to be updated to support multiple constructs providing
> scopes.
>
> BUG=v8:4377
> LOG=Y
> R=adamk
>
> Committed: https://crrev.com/9edbc1f21eb1050cabbe3b8bc9aebf89ada7ebd7
> Cr-Commit-Position: refs/heads/master@{#30314}

TBR=adamk@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4377

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

Cr-Commit-Position: refs/heads/master@{#30316}

9 years agoFix function scoping issue
littledan [Sat, 22 Aug 2015 00:18:12 +0000 (17:18 -0700)]
Fix function scoping issue

The parser has special behavior with respect to the bindings
of inner functions in sloppy mode which are not at the top
level of scopes. This behavior should be turned off when the
--harmony-sloppy-function flag is set, as lexical scoping
rules are used instead. Previously, the incorrect flag
--harmony-sloppy was used, resulting in a crashing bug.

BUG=chromium:520029
LOG=Y
R=adamk

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

Cr-Commit-Position: refs/heads/master@{#30315}

9 years agoAdd a separate scope for switch
littledan [Fri, 21 Aug 2015 23:54:21 +0000 (16:54 -0700)]
Add a separate scope for switch

The ES2015 specification for switch statements 13.12.11 specifies that
they get their own lexical scope. This patch introduces such a scope
through a complex desugaring in terms of blocks, done so that Crankshaft
does not have to be updated to support multiple constructs providing
scopes.

BUG=v8:4377
LOG=Y
R=adamk

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

Cr-Commit-Position: refs/heads/master@{#30314}

9 years agoDon't allocate AstTyper with the zone allocator.
bradnelson [Fri, 21 Aug 2015 18:15:33 +0000 (11:15 -0700)]
Don't allocate AstTyper with the zone allocator.

While the class Type objects the AstTyper generates should be
allocated to zone memory, there's no particular reason
the typer object itself needs to be.

BUG=None
TEST=None
R=rossberg@chromium.org,titzer@chromium.org
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30313}

9 years agoRename FullCodeGenerator::function to literal.
mstarzinger [Fri, 21 Aug 2015 16:42:54 +0000 (09:42 -0700)]
Rename FullCodeGenerator::function to literal.

R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30312}

9 years agoSignal a blocked futex if the isolate is interrupted; don't busy-wait
binji [Fri, 21 Aug 2015 16:41:43 +0000 (09:41 -0700)]
Signal a blocked futex if the isolate is interrupted; don't busy-wait

FutexEmulation::Wait can potentially block forever on a condition variable. We
want to allow this to be interrupted (for a debugger, or to terminate the
thread, for example).

The previous implementation would periodically wake up the waiter to check for
interrupts. This CL modifies the StackGuard so it wakes the blocked futex if
the thread should be interrupted.

BUG=chromium:497295
R=jarin@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#30311}

9 years agoRevert of Concurrently unmap free pages. (patchset #4 id:60001 of https://codereview...
vogelheim [Fri, 21 Aug 2015 16:20:50 +0000 (09:20 -0700)]
Revert of Concurrently unmap free pages. (patchset #4 id:60001 of https://codereview.chromium.org/1303263002/ )

Reason for revert:
Several tests on V8 Linux64 TSAN bot are broken, due to data races between allocation & GC.

A bisect points to this CL, and the CL description sounds pertinent to the observed breakage.

Original issue's description:
> Concurrently unmap free pages.
>
> BUG=
>
> Committed: https://crrev.com/d1aeb45d96123d47023066b244c0f450fbe57d2d
> Cr-Commit-Position: refs/heads/master@{#30306}

TBR=mlippautz@chromium.org,hpayer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#30310}

9 years agoDeprecate useless CompilationInfo::IsOptimizable predicate.
mstarzinger [Fri, 21 Aug 2015 15:21:08 +0000 (08:21 -0700)]
Deprecate useless CompilationInfo::IsOptimizable predicate.

R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30309}

9 years agoDeprecate semi-correct CompilationInfo::flags predicate.
mstarzinger [Fri, 21 Aug 2015 15:10:38 +0000 (08:10 -0700)]
Deprecate semi-correct CompilationInfo::flags predicate.

R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30308}

9 years ago[turbofan] Add control and effect inputs to RawMachineAssembler calls.
rmcilroy [Fri, 21 Aug 2015 13:52:31 +0000 (06:52 -0700)]
[turbofan] Add control and effect inputs to RawMachineAssembler calls.

Calls should have control and effect inputs, which were previously missing
for RawMachineAssembler call operations. Add control and effect edges to
graph()->start().

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30307}

9 years agoConcurrently unmap free pages.
hpayer [Fri, 21 Aug 2015 13:25:01 +0000 (06:25 -0700)]
Concurrently unmap free pages.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30306}

9 years agoSmall MessageLocation related refactoring.
yangguo [Fri, 21 Aug 2015 13:18:54 +0000 (06:18 -0700)]
Small MessageLocation related refactoring.

R=cbruni@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30305}

9 years ago[heap] Move StoreBufferRebuilder into the correct header.
mstarzinger [Fri, 21 Aug 2015 13:00:50 +0000 (06:00 -0700)]
[heap] Move StoreBufferRebuilder into the correct header.

R=mlippautz@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30304}

9 years ago[heap] Disable moving object starts aka left trimming
mlippautz [Fri, 21 Aug 2015 12:59:22 +0000 (05:59 -0700)]
[heap] Disable moving object starts aka left trimming

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30303}

9 years agoUpdate version to 4.7
Michael Hablich [Fri, 21 Aug 2015 12:40:27 +0000 (14:40 +0200)]
Update version to 4.7

BUG=
TBR=vogelheim@chromium.org,yangguo@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#30302}

9 years ago[heap,cctest] Get rid of protected-for-sake-of-testing scope.
mlippautz [Fri, 21 Aug 2015 12:40:22 +0000 (05:40 -0700)]
[heap,cctest] Get rid of protected-for-sake-of-testing scope.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30301}

9 years ago[heap] Move RegExpResultCache out of the heap.
mstarzinger [Fri, 21 Aug 2015 12:34:17 +0000 (05:34 -0700)]
[heap] Move RegExpResultCache out of the heap.

R=yangguo@chromium.org,hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30300}

9 years agoRecord slots in large objects.
hpayer [Fri, 21 Aug 2015 11:41:46 +0000 (04:41 -0700)]
Record slots in large objects.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30299}

9 years agoParse arrow functions at proper precedence level
wingo [Fri, 21 Aug 2015 11:33:28 +0000 (04:33 -0700)]
Parse arrow functions at proper precedence level

BUG=v8:4211
LOG=Y
R=rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30298}

9 years agoX87: VectorICs: New interface descriptor for vector transitioning stores.
chunyang.dai [Fri, 21 Aug 2015 11:15:01 +0000 (04:15 -0700)]
X87: VectorICs: New interface descriptor for vector transitioning stores.

port cd35155918f8f1a081a208721a878deba00a252b (r30284).

original commit message:

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30297}

9 years agoX87: Cleanup: Remove unncessary leave_frame parameter from stub cache.
chunyang.dai [Fri, 21 Aug 2015 11:02:39 +0000 (04:02 -0700)]
X87: Cleanup: Remove unncessary leave_frame parameter from stub cache.

port fe432e1ace48c345c659c0bcb6a84798bca0b15e (r30250).

original commit message:

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30296}

9 years ago[es6] Parameter scopes for sloppy eval
rossberg [Fri, 21 Aug 2015 10:58:35 +0000 (03:58 -0700)]
[es6] Parameter scopes for sloppy eval

This CL is a nightmare! For the utterly irrelevant edge case of a sloppy function with non-simple parameters and a call to direct eval, like here,

  let x = 1;
  function f(g = () => x) {
    var y
    eval("var x = 2")
    return g() + x  // f() = 3
  }

we have to do all of the following, on top of the declaration block ("varblock") contexts we already introduce around the body:

- Introduce the ability for varblock contexts to have both a ScopeInfo and an extension object (e.g., the body varblock in the example will contain both a static var y and a dynamic var x). No other scope needs that. Since there are no context slots left, a special new struct is introduced that pairs up scope info and extension object.

- When declaring lookup slots in the runtime, this new struct is allocated in the case where an extension object has to be added to a block scope (at which point the block's extension slot still contains a plain ScopeInfo).

- While at it, introduce some abstraction to access context extension slots in a more controlled manner, in order to keep special-casing to a minimum.

- Make sure that even empty varblock contexts do not get optimised away when they contain a sloppy eval, so that they can host the potential extension object.

- Extend dynamic search for declaration contexts (used by sloppy direct eval) to recognize varblock contexts.

- In the parser, if a function has a sloppy direct eval, introduce an additional varblock scope around each non-simple (desugared) parameter, as required by the spec to contain possible dynamic var bindings.

- In the pattern rewriter, add the ability to hoist the named variables the pattern declares to an outer scope. That is required because the actual destructuring has to be evaluated inside the protecting varblock scope, but the bindings that the desugaring introduces are in the outer scope.

- ScopeInfos need to save the information whether a block is a varblock, to make sloppy eval calls work correctly that deserialise them as part of the scope chain.

- Add the ability to materialize block scopes with extension objects in the debugger. Likewise, enable setting extension variables in block scopes via the debugger interface.

- While at it, refactor and unify some respective code in the debugger.

Sorry, this CL is large. I could try to split it up, but everything is rather entangled.

@mstarzinger: Please review the changes to contexts.
@yangguo: Please have a look at the debugger stuff.

R=littledan@chromium.org, mstarzinger@chromium.org, yangguo@chromium.org
BUG=v8:811,v8:2160
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30295}

9 years ago[simd] Introduce SIMD types (as classes)
rossberg [Fri, 21 Aug 2015 10:49:31 +0000 (03:49 -0700)]
[simd] Introduce SIMD types (as classes)

- Introduce a proper bit for SIMD primitive values.
- Introduce constructors for individual SIMD types. These are currently just classes, which seems good enough for now, given that we always have exactly one global map per SIMD type.

The only problem with using class types for SIMD is that a SIMD constant won't be a subtype of its specific type, only of the general SIMD type. But until we actually introduce SIMD constants into the compiler that shouldn't matter.

R=jarin@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#30294}

9 years agoX87: [turbofan] Fix stack->stack double moves for pushing on ia32 and x64.
chunyang.dai [Fri, 21 Aug 2015 10:42:18 +0000 (03:42 -0700)]
X87: [turbofan] Fix stack->stack double moves for pushing on ia32 and x64.

port d0bacc61e6930d97888bf747a76bcfa329995847 (r30235).

original commit message:

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30293}

9 years agoX87: [turbofan] Unify referencing of stack slots
chunyang.dai [Fri, 21 Aug 2015 10:26:17 +0000 (03:26 -0700)]
X87: [turbofan] Unify referencing of stack slots

port cbbaf9ea6abbc0417ee5765a4c58f1dda939ead0 (r30224).

original commit message:

    [turbofan] Unify referencing of stack slots

    Previously, it was not possible to specify StackSlotOperands for all
    slots in both the caller and callee stacks. Specifically, the region
    of the callee's stack including the saved return address, frame
    pointer, function pointer and context pointer could not be addressed
    by the register allocator/gap resolver.

    In preparation for better tail call support, which will use the gap
    resolver to reconcile outgoing parameters, this change makes it
    possible to address all slots on the stack, because slots in the
    previously inaccessible dead zone may become parameter slots for
    outgoing tail calls. All caller stack slots are accessible as they
    were before, with slot -1 corresponding to the last stack
    parameter. Stack slot indices >= 0 access the callee stack, with slot
    0 corresponding to the callee's saved return address, 1 corresponding
    to the saved frame pointer, 2 corresponding to the current function
    context, 3 corresponding to the frame marker/JSFunction, and slots 4
    and above corresponding to spill slots.

    The following changes were specifically     needed:

    * Frame     has been changed to explicitly manage three areas of the
      callee frame, the fixed header, the spill slot area, and the
      callee-saved register area.
    * Conversions from stack slot indices to fp offsets all now go through
      a common bottleneck: OptimizedFrame::StackSlotOffsetRelativeToFp
    * The generation of deoptimization translation tables has been changed
      to support the new stack slot indexing scheme. Crankshaft, which
      doesn't support the new slot numbering in its register allocator,
      must adapt the indexes when creating translation tables.
    * Callee-saved parameters are now kept below spill slots, not above,
      to support saving only the optimal set of used registers, which is
      only known after register allocation is finished and spill slots
      have been allocated.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30292}

9 years agoRemove code.h header and move ParameterCount class.
mstarzinger [Fri, 21 Aug 2015 10:25:10 +0000 (03:25 -0700)]
Remove code.h header and move ParameterCount class.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30291}

9 years agoX87: [turbofan] Support unboxed float and double stack parameters and add tests.
chunyang.dai [Fri, 21 Aug 2015 10:20:13 +0000 (03:20 -0700)]
X87: [turbofan] Support unboxed float and double stack parameters and add tests.

port 0492bb3291c838d7e11261abc32af58bed58bcf0 (r30203).

original commit message:

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30290}

9 years agoX87: [interpreter]: Changes to interpreter builtins for accumulator and register...
chunyang.dai [Fri, 21 Aug 2015 10:14:51 +0000 (03:14 -0700)]
X87: [interpreter]: Changes to interpreter builtins for accumulator and register file registers.

port 00df60d1c6943a10fb5ca84fce2c017dcd2001f5 (r30219).

original commit message:

    Makes the following modifications to the interpreter builtins and
    InterpreterAssembler:
     - Adds an accumulator register and initializes it to undefined()
     - Adds a register file pointer register and use it instead of FramePointer to
       access registers
     - Modifies builtin to support functions with 0 regiters in the register file
     - Modifies builtin to Call rather than TailCall to first bytecode handler.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30289}

9 years agoX87: [simd.js] Single SIMD128_VALUE_TYPE for all Simd128Values.
chunyang.dai [Fri, 21 Aug 2015 10:10:35 +0000 (03:10 -0700)]
X87: [simd.js] Single SIMD128_VALUE_TYPE for all Simd128Values.

port f4c079d450a5990639b295d40a3d1663d70412d6 (r30107).

This is the appendix of 458dfe3b943edb3238917edfe9e2dde326cd1adb which misses
one modified file.

original commit message:

    There's no need to have one InstanceType per SIMD primitive type (this
    will not scale long-term).  Also reduce the amount of code duplication
    and make it more robust wrt adding new SIMD types.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30288}

9 years ago[heap] Thread through GC flags in memory reducer and incremental marking.
mlippautz [Fri, 21 Aug 2015 10:05:18 +0000 (03:05 -0700)]
[heap] Thread through GC flags in memory reducer and incremental marking.

BUG=chromium:520607
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30287}

9 years agoFix parsing of arrow function formal parameters
wingo [Fri, 21 Aug 2015 09:28:54 +0000 (02:28 -0700)]
Fix parsing of arrow function formal parameters

Not all parenthesized AssignmentExpressions whose components are valid
binding patterns are valid arrow function formal parameters.  In
particular (a,b,c)() is not valid, and in general the existing code
wasn't catching the tail productions of ConditionalExpression,
BinaryExpression, PostfixExpression, LeftHandSideExpression,
and MemberExpression.

Thanks to Adrian Perez for the test case.

BUG=v8:4211
LOG=Y
R=rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30286}

9 years agoDo not use js builtins object to determine whether a function is a builtin.
yangguo [Fri, 21 Aug 2015 09:12:57 +0000 (02:12 -0700)]
Do not use js builtins object to determine whether a function is a builtin.

We can use the script type to determine that instead. Script of type
TYPE_NATIVE are considered builtins, TYPE_NORMAL are not. The only exception
to this rule is the empty function, for which the script is TYPE_NATIVE
(observable by the debugger), but should be stringified to "function () {}"
instead of "function () { [native code] }". For this, I introduce a
hide_source flag on the script object.

We also use IsBuiltin and IsSubjectToDebugging interchangeably. For debugger,
we now use the latter, hiding the detail that only non-builtins are debuggable.

R=mstarzinger@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30285}

9 years agoVectorICs: New interface descriptor for vector transitioning stores.
mvstanton [Fri, 21 Aug 2015 09:04:43 +0000 (02:04 -0700)]
VectorICs: New interface descriptor for vector transitioning stores.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30284}

9 years agoIntroduce SharedFunctionInfo::Iterator and Script::Iterator.
yangguo [Fri, 21 Aug 2015 08:12:11 +0000 (01:12 -0700)]
Introduce SharedFunctionInfo::Iterator and Script::Iterator.

R=mvstanton@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30283}

9 years agoRemove obsolete static methods from V8 class.
mstarzinger [Fri, 21 Aug 2015 07:41:24 +0000 (00:41 -0700)]
Remove obsolete static methods from V8 class.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30282}

9 years ago[heap] Cleanup and fix GC flags
mlippautz [Fri, 21 Aug 2015 07:09:08 +0000 (00:09 -0700)]
[heap] Cleanup and fix GC flags

GC flags are now part of the {Heap} and should be respected by all
sub-components.

Also add a infrastructure to write tests accessing private methods.

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

Cr-Commit-Position: refs/heads/master@{#30281}

9 years agoUnify symbols sharing across native scripts and runtime.
yangguo [Fri, 21 Aug 2015 06:44:17 +0000 (23:44 -0700)]
Unify symbols sharing across native scripts and runtime.

We currently have several ways to share symbols that are used in
both native scripts and the runtime. This change unifies this.
We do not use the symbols registry since we don't need the
registry any longer after bootstrapping, but the registry stays
alive afterwards.

R=mlippautz@chromium.org, rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30280}

9 years agoUpdate V8 DEPS.
v8-autoroll [Fri, 21 Aug 2015 03:30:58 +0000 (20:30 -0700)]
Update V8 DEPS.

Rolling v8/tools/clang to 5439585778385813bc7711f3d6b7035b9eb78572

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30279}

9 years agoFix bug in Code::VerifyRecompiledCode.
yangguo [Thu, 20 Aug 2015 17:19:44 +0000 (10:19 -0700)]
Fix bug in Code::VerifyRecompiledCode.

The code should do what the comment says :)

R=mstarzinger@chromium.org
BUG=chromium:522895
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#30278}

9 years ago[heap] Hide MemoryReducer inside the heap component.
mstarzinger [Thu, 20 Aug 2015 16:48:37 +0000 (09:48 -0700)]
[heap] Hide MemoryReducer inside the heap component.

This prevents leakage of the memory-reducer.h declarations inside of the
heap and prevents it from being exposed to the world. Protects private
state from being inadvertently mocked with.

R=mlippautz@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30277}

9 years ago[heap] Hide GCTracer inside the heap component.
mstarzinger [Thu, 20 Aug 2015 15:47:59 +0000 (08:47 -0700)]
[heap] Hide GCTracer inside the heap component.

This prevents leakage of the gc-tracer.h declarations inside of the
heap and prevents it from being exposed to the world. Protects private
state from being inadvertently mocked with.

R=mlippautz@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#30276}

9 years agoDon't filter store buffer after sweeping.
hpayer [Thu, 20 Aug 2015 15:33:06 +0000 (08:33 -0700)]
Don't filter store buffer after sweeping.

Additionally, this CL moves a bit of code around to free up more memory before compaction starts.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30275}

9 years agoSimplify KeyedAccessStoreMode.
mvstanton [Thu, 20 Aug 2015 14:40:11 +0000 (07:40 -0700)]
Simplify KeyedAccessStoreMode.

The map tells us the source elements kind, and holeyness.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#30274}