Commit Graph

30310 Commits

Author SHA1 Message Date
bmeurer
ff19726d80 [turbofan] Enable concurrent (re)compilation.
Refactor the TurboFan pipeline to allow for concurrent recompilation in
the same way that Crankshaft does it. For now we limit the concurrent
phases to scheduling, instruction selection, register allocation and
jump threading.

R=mstarzinger@chromium.org, ahaas@chromium.org, jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35818}
2016-04-27 12:40:00 +00:00
machenbach
7f3954c57b [build] Move gyp folder
Uses now the same location chromium uses and which some tools
expect.

BUG=chromium:474921
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#35817}
2016-04-27 12:37:35 +00:00
ssanfilippo
905becd13b [Interpreter] Add Ignition statistics JavaScript extension.
This commit introduces IgnitionStatisticsExtension, which provides
methods for accessing Ignition statistics and counters from JavaScript.

The extension is registered when FLAG_ignition and
FLAG_trace_ignition_dispatches are both enabled.

For the moment, the only exposed function is
getIgnitionDispatchCounters(), which allows to retrieve Ignition
dispatch counters as a JavaScript object.

BUG=v8:4899
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35816}
2016-04-27 11:11:44 +00:00
yangguo
612985b298 Revert of [debugger] unskip mjsunit/debug-stepin-builtin-callback-opt. (patchset #1 id:1 of https://codereview.chromium.org/1927543002/ )
Reason for revert:
Now we do have a repro!

https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20gc%20stress/builds/3187/steps/Mjsunit%20-%20ignition%20-%20turbofan/logs/debug-stepin-builtin-..

Original issue's description:
> [debugger] unskip mjsunit/debug-stepin-builtin-callback-opt.
>
> This test does not seem to fail any longer.
>
> R=machenbach@chromium.org
> BUG=v8:4690
> LOG=N
>
> Committed: https://crrev.com/f8e44fb5aaaa80cf2d39bc3164f2c962a6b57f5e
> Cr-Commit-Position: refs/heads/master@{#35814}

TBR=machenbach@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4690

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

Cr-Commit-Position: refs/heads/master@{#35815}
2016-04-27 10:54:53 +00:00
yangguo
f8e44fb5aa [debugger] unskip mjsunit/debug-stepin-builtin-callback-opt.
This test does not seem to fail any longer.

R=machenbach@chromium.org
BUG=v8:4690
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35814}
2016-04-27 10:20:33 +00:00
ishell
813f2778f3 [es6] Don't eliminate tail calls from for-in and for-of bodies.
BUG=v8:4698
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35813}
2016-04-27 09:34:10 +00:00
machenbach
7752614f35 [build] Remove deprecated gyp file.
This has moved to src/v8.gyp in:
https://codereview.chromium.org/1920793002/

BUG=chromium:474921
LOG=n
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#35812}
2016-04-27 09:25:33 +00:00
verwaest
f1cc6e646f Check the state of the current binary op IC before patching smi code
Between the miss and patching, we run user code. That may already patch the same code. IC refactoring broke this (again), so including a regression test this time around.

BUG=chromium:601392
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#35811}
2016-04-27 09:19:15 +00:00
ishell
2fb88d617c [js-perf-test] Shorten output of JSTests/PropertyQueries microbenchmark.
Review URL: https://codereview.chromium.org/1922413002

Cr-Commit-Position: refs/heads/master@{#35810}
2016-04-27 09:14:14 +00:00
hlopko
0e1e3c83b2 Use both object grouping and wrapper tracing.
To land and test wrapper tracing incrementally, we will use both, and parts
which are expected to work with the tracing will be removed from
V8GCController's handle visiting.

LOG=no
BUG=468240

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

Cr-Commit-Position: refs/heads/master@{#35809}
2016-04-27 08:11:14 +00:00
zhengxing.li
52e946ea90 X87: Get rid of AllocationFlags::TAG_OBJECT.
port ef49c6b11a (r35792)

  original commit message:
  Default (and only way) is now to retrieve a tagged object.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#35808}
2016-04-27 07:31:12 +00:00
ahaas
97c357aac1 [x64] Regression test for https://codereview.chromium.org/1877133004
R=jkummerow@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35807}
2016-04-27 07:01:45 +00:00
yangguo
c47066585a [debugger] use object with null proto to materialize scopes.
Otherwise property lookups would also travel up the prototype chain, which makes no sense for the debugger use case.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35806}
2016-04-27 06:09:23 +00:00
yangguo
d1e08e7a72 [debugger] do not expose temporary variables introduced by the parser.
R=bmeurer@chromium.org, kozyatinskiy@chromium.org
BUG=chromium:582048
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35805}
2016-04-27 04:49:46 +00:00
jarin
101260d304 Ship try-finally optimization in Turbofan.
Review URL: https://codereview.chromium.org/1920883003

Cr-Commit-Position: refs/heads/master@{#35804}
2016-04-27 04:29:07 +00:00
jyan
f356efcf62 S390: [Interpreter] Use FastNewSloppyArguments when possible.
Port c005029aa4

Original commit message:

    Use the FastNewSloppyArgumentsStub in the interpreter when function doesn't have
    duplicate parameters.

R=rmcilroy@chromium.org, joransiu@ca.ibm.com, bjaideep@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35803}
2016-04-27 03:43:20 +00:00
jyan
1decc266ba S390: [turbofan] Introduce TruncateTaggedToWord32 simplified operator.
Port 0231a7efa2

Original commit message:

    This allows us to get rid of the "push TruncateFloat64ToInt32 into Phi"
    trick that was used in the MachineOperatorReducer to combine the
    ChangeTaggedToFloat64 and TruncateFloat64ToInt32 operations. Instead of
    doing that later, we can just introduce the proper operator during the
    representation selection directly.

    Also separate the TruncateFloat64ToInt32 machine operator, which had two
    different meanings depending on a flag (either JavaScript truncation or
    C++ style round to zero). Now there's a TruncateFloat64ToWord32 which
    represents the JavaScript truncation (implemented via TruncateDoubleToI
    macro + code stub) and the RoundFloat64ToInt32, which implements the C++
    round towards zero operation (in the same style as the other WebAssembly
    driven Round* machine operators).

R=bmeurer@chromium.org, joransiu@ca.ibm.com, bjaideep@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35802}
2016-04-26 21:38:27 +00:00
bbudge
5e28bf7ba0 Turbofan: Rename register allocator double phase.
The double register phase will eventually handle single, double, and
SIMD registers. Change enum and class names to reflect this.

LOG=N
BUG=v8:4124

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

Cr-Commit-Position: refs/heads/master@{#35801}
2016-04-26 20:04:14 +00:00
littledan
b1ec4cb67b Do not penalize performance when --harmony-species is off
This patch ensures that the species protector does not cause
any slow paths to be taken when --harmony-species is off by
refraining from writing to and reading from the protector
when the flag is off.

BUG=chromium:606207
R=adamk
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#35800}
2016-04-26 19:12:31 +00:00
ishell
ea2fbb7620 [es8] Initial set of changes to support syntactic tail calls.
The syntax is "return continue expr;".

BUG=v8:4915
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#35799}
2016-04-26 17:31:23 +00:00
adamk
967a04634d Forward accept_IN to ParseYieldExpression
This allows "yield 'x' in o" as an expression in a generator.

R=ishell@chromium.org
BUG=v8:4945
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#35798}
2016-04-26 17:24:49 +00:00
mlippautz
2158df8711 [heap] Uncommit pooled pages concurrently
- Move the concurrent unmapping to MemoryAllocator
- Hide (private) members where possible
- MemoryAllocator:Free is now the bottleneck for freeing
- Pooled pages are either allocated from a set of pooled pages are obtained
  through work stealing from the concurrent unmapper

BUG=chromium:605866, chromium:581412
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35797}
2016-04-26 16:45:40 +00:00
clemensh
af9e4c33ab [wasm] Replace WasmName by Vector<const char>
R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35796}
2016-04-26 14:47:29 +00:00
clemensh
c32b202014 Pass debug name as Vector instead of const char*
This allows to also pass non-null-terminated values, and values containing null
characters. Both might happen in wasm.

R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35795}
2016-04-26 14:37:05 +00:00
yangguo
eee6ddb2ac [debugger] add test case for debug-evaluate for values in TDZ.
R=jkummerow@chromium.org
BUG=chromium:605581
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35794}
2016-04-26 14:11:21 +00:00
clemensh
91386f0bc0 [wasm] Generate source position information
Annotate call nodes in the TF graph with source code information in the form
of byte offset relative to the wasm function start. The backend finally outputs those positions as RelocInfo.

R=bmeurer@chromium.org, mstarzinger@chromium.org, titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35793}
2016-04-26 12:47:09 +00:00
mlippautz
ef49c6b11a Get rid of AllocationFlags::TAG_OBJECT
Default (and only way) is now to retrieve a tagged object.

BUG=chromium:606711
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35792}
2016-04-26 12:03:58 +00:00
balazs.kilvady
b77953b0a8 MIPS: Improve 'Always include js-getter as separate field in AccessorInfo'.
Port 89606003af

Improve stack handling (optimize push() calls) on MIPS.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#35791}
2016-04-26 11:59:53 +00:00
machenbach
4ffdce65dd [Interpreter] Prepare switching to new ignition testing variant.
This adds a new ignition_turbofan testing variant that'll
allow switching turbofan off in the other ignition variant.

The switch will happen in a follow up after reconfiguring
the bots.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35790}
2016-04-26 11:24:34 +00:00
ishell
5796ae9de4 [js-perf-test] Add microbenchmarks for in operator and Object.prototype.hasOwnProperty().
BUG=v8:2472, v8:2743
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35789}
2016-04-26 10:24:24 +00:00
martyn.capewell
c514cf1f88 [turbofan] Elide mask for CheckedStore
Apply the mask elision code for Store to CheckedStore in the machine operator
reducer.

This is the arch independent part of https://codereview.chromium.org/1883133002

BUG=

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

Cr-Commit-Position: refs/heads/master@{#35788}
2016-04-26 09:57:54 +00:00
ahaas
7498f49fcb [wasm] Introduce ExecuteWasmCompilation and FinalizeWasmCompilation in pipeline.cc
With these two functions we can split the compilation pipeline for wasm
functions just before the code generation.

R=titzer@chromium.org, clemensh@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35787}
2016-04-26 09:44:59 +00:00
ishell
086fe2199b [es6] Fix tail call elimination in single-expression arrow functions.
BUG=v8:4698
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#35786}
2016-04-26 09:07:51 +00:00
mstarzinger
f38932c794 [compiler] Prevent unnecessary regeneration of baseline code.
This avoids regenerating baseline code for a closure when such code
already exists for the shared function info. This is also important
because the baseline code might contain deoptimization support.

R=rmcilroy@chromium.org
BUG=chromium:606376
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#35785}
2016-04-26 08:53:29 +00:00
ahaas
a0f8869378 [wasm] First step to separate graph construction from graph compilation.
This is the first step to implement parallel compilation. The next steps
will be to split the pipeline to separate instruction selection from
code generation, and then to call all that from within a CancelableTask.

R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35784}
2016-04-26 08:39:00 +00:00
v8-autoroll
c9d9016d4b Update V8 DEPS.
Rolling v8/build/gyp to 4cf07e8d616739f6484e46c9359b2a35196b2585

Rolling v8/buildtools to 2a9a29fbdc2170c25e5cc0f642213eb7b3e7bc98

TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35783}
2016-04-26 08:38:59 +00:00
machenbach
4377c2f583 [build] Update V8 DEPS
Rolling v8/tools/clang to
b6f620b311665e2d96d0921833f54295b9bbf925

Porting parts of https://codereview.chromium.org/1917853002

BUG=604993
LOG=n
TBR=thakis@chromium.org, jochen@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35782}
2016-04-26 07:51:34 +00:00
zhengxing.li
d7de8f27d9 X87: [Interpreter] Use FastNewSloppyArguments when possible.
port c005029aa4 (r35754)

  original commit message:
  Use the FastNewSloppyArgumentsStub in the interpreter when function doesn't have
  duplicate parameters.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#35781}
2016-04-26 02:49:01 +00:00
adamk
739947880c Widen --harmony-for-in flag to throw errors in PreParser
The first version of --harmony-for-in avoided throwing PreParser
errors in order to retain use counting. This patch threads
use_counts_ through to the PreParser to allow use counting in
the PreParser while also throwing errors for this case.

Also slightly refactored the Parser code to do a little less
code duplication.

BUG=v8:4942
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#35780}
2016-04-26 00:29:50 +00:00
jyan
6382a61059 S390X: [turbofan] Word32 loads should be unsigned.
TEST=cctest/test-run-load-store/*
R=joransiu@ca.ibm.com, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com, bjaideep@ca.ibm.com
BUG=

S390: [interpreter] Heal closures when bytecode array is gone.

Port 5c8609de9d

Original commit message:

    This ensures the InterpreterEntryTrampoline heals code entry fields
    inside closures when being called without a valid bytecode array. This
    is preparatory work to allow removal of bytecode when switching some
    functions to other types of code.

R=mstarzinger@chromium.org, joransiu@ca.ibm.com, bjaideep@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35779}
2016-04-25 22:29:52 +00:00
mbrandy
c07f022565 PPC64: [turbofan] Fix checked loads/stores.
This refines e7d521fb5f -- as we still
require clean up of the uint index register.

TEST=mjsunit/asm/float32array-negative-offset
R=joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, bjaideep@ca.ibm.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#35778}
2016-04-25 21:45:27 +00:00
bbudge
d565ba8ff3 RegisterAllocator: Clean up before adding aliasing.
Remove some unused fields in RegisterAllocationData.
Move some DCHECKS about configuration constraints.
Rename kMaxDoubleRegisters -> kMaxFPRegisters

LOG=N
BUG=v8:4124

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

Cr-Commit-Position: refs/heads/master@{#35777}
2016-04-25 20:11:40 +00:00
jyan
612368b86e S390: [interpreter] Heal closures when bytecode array is gone.
Port 5c8609de9d

Original commit message:

    This ensures the InterpreterEntryTrampoline heals code entry fields
    inside closures when being called without a valid bytecode array. This
    is preparatory work to allow removal of bytecode when switching some
    functions to other types of code.

R=mstarzinger@chromium.org, joransiu@ca.ibm.com, bjaideep@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35776}
2016-04-25 20:07:11 +00:00
mbrandy
2e4280f25a [es7] Fix "implement exponentiation operator proposal" for AIX.
Prefer Pow() as it works around certain cases that are different in AIX's
std::pow().

TEST=mjsunit/harmony/exponentiation-operator
R=caitpotter88@gmail.com, littledan@chromium.org, adamk@chromium.org, rossberg@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#35775}
2016-04-25 19:35:22 +00:00
mlippautz
01ca769c58 [heap] Remove dead code from PagedSpace
BUG=

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

Cr-Commit-Position: refs/heads/master@{#35774}
2016-04-25 18:18:45 +00:00
ulan
67f3103a26 Reland "Check for semaphore alignment on posix platforms. (patchset #1 id:1 of https://codereview.chromium.org/1912923003/ )"
This patch also fixed three misaligned semaphores.

This reverts commit 80c73e2cde.

BUG=chromium:605349
LOG=NO

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

Cr-Commit-Position: refs/heads/master@{#35773}
2016-04-25 18:12:18 +00:00
bjaideep
431ea9a0aa PPC: [Interpreter] Use FastNewSloppyArguments when possible.
Port c005029aa4

Original commit message:

    Use the FastNewSloppyArgumentsStub in the interpreter when function doesn't have
    duplicate parameters.

R=rmcilroy@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35772}
2016-04-25 16:45:30 +00:00
bjaideep
ff243a9579 PPC: [turbofan] Introduce TruncateTaggedToWord32 simplified operator.
Port 0231a7efa2

Original commit message:

    This allows us to get rid of the "push TruncateFloat64ToInt32 into Phi"
    trick that was used in the MachineOperatorReducer to combine the
    ChangeTaggedToFloat64 and TruncateFloat64ToInt32 operations. Instead of
    doing that later, we can just introduce the proper operator during the
    representation selection directly.

    Also separate the TruncateFloat64ToInt32 machine operator, which had two
    different meanings depending on a flag (either JavaScript truncation or
    C++ style round to zero). Now there's a TruncateFloat64ToWord32 which
    represents the JavaScript truncation (implemented via TruncateDoubleToI
    macro + code stub) and the RoundFloat64ToInt32, which implements the C++
    round towards zero operation (in the same style as the other WebAssembly
    driven Round* machine operators).

R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35771}
2016-04-25 16:29:05 +00:00
verwaest
1678bb557c MigrateInstance(target) before Object.assign(target, ...)
If the target is deprecated, the object will be updated on first store. If the source for that store equals the target, this will invalidate the cached representation of the source. Preventively upgrade the target.

BUG=chromium:604300
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#35770}
2016-04-25 15:41:21 +00:00
jochen
7895b396f8 [api] Introduce MicrotasksScope::IsRunningMicrotasks
Returns true while V8 executes microtasks

BUG=
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35769}
2016-04-25 15:22:32 +00:00