Commit Graph

33644 Commits

Author SHA1 Message Date
bmeurer
7e95e2064a [turbofan] Nuke class types.
There are no users of class types left inside TurboFan, so we can nuke
them and thereby simplify the type system quite a bit.

R=mvstanton@chromium.org
BUG=v8:5267,v8:5270

Review-Url: https://codereview.chromium.org/2309753002
Cr-Commit-Position: refs/heads/master@{#39152}
2016-09-05 09:19:16 +00:00
bmeurer
776a5c1008 [turbofan] Improve graph for JumpIfTrue/False and JumpIfToBooleanTrue/False.
Avoid the useless strict equality comparisons with true/false being
generated for the JumpIfTrue, JumpIfFalse, JumpIfToBooleanTrue and
JumpIfToBooleanFalse bytecodes. Instead feed the accumulator (or the
outcome of ToBoolean) directly to the Branch node and do the negation
as part of the control flow.

The previous subraphs would render the loop variable analysis useless,
and would cause a lot of unnecessary bit materialization, because many
of our optimizations don't kick in.

Note: This is only part of the problem, there are more subtle differences
in the bytecode pipeline that prevent several important optimizations to
kick in.

R=mstarzinger@chromium.org
BUG=v8:5267,v8:5348

Review-Url: https://codereview.chromium.org/2309733002
Cr-Commit-Position: refs/heads/master@{#39151}
2016-09-05 08:43:38 +00:00
jgruber
c79e163ba8 [regexp] Port RegExpExec
BUG=v8:5339

Review-Url: https://codereview.chromium.org/2307853002
Cr-Commit-Position: refs/heads/master@{#39150}
2016-09-05 07:17:48 +00:00
bmeurer
99e91aaeac [turbofan] Fold "boolean not"-like Selects into branches.
Fold a Select that negates a boolean value, i.e. returning true in the
false case and vice versa, into Branch users, similar to what we already
do for Branch nodes with BooleanNot inputs.

BUG=v8:5267

Review-Url: https://codereview.chromium.org/2308303003
Cr-Commit-Position: refs/heads/master@{#39149}
2016-09-05 07:02:36 +00:00
ofrobots
cf3a4a7087 [turbofan] BytecodeGraphBuilder was incorrectly tenuring most CreateClosure allocations
R=bmeurer@chromium.org, rmcilroy@chromium.org

Review-Url: https://codereview.chromium.org/2309203002
Cr-Commit-Position: refs/heads/master@{#39148}
2016-09-05 06:22:49 +00:00
mtrofin
f1a6e5e79b [turbofan] Readjust has_slot_use after splintering
has_slot_use is computed early, and we need it to determine if we need
to generate SpillRanges. After splintering, however, the information may
be incorrect - e.g. just the splinter may have slot uses, and not the
original.

BUG=

Review-Url: https://codereview.chromium.org/2312523002
Cr-Commit-Position: refs/heads/master@{#39147}
2016-09-05 04:06:57 +00:00
v8-autoroll
aa4c328198 Update V8 DEPS.
Rolling v8/build to 1d4c40819ec61e059e2ca6893cd1d21b5bda6c75

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

Review-Url: https://codereview.chromium.org/2305303002
Cr-Commit-Position: refs/heads/master@{#39146}
2016-09-05 03:28:46 +00:00
zhengxing.li
6d7ba10137 X87: [Interpreter] Collect type feedback for 'new' in the bytecode handler.
port 7e5b8feed3 (r39120)

  original commit message:
  Collect type feedback in the bytecode handler for 'new' bytecode. The
  earlier cl (https://codereview.chromium.org/2153433002/) was reverted
  because that implementation did not collect allocation site feedback.
  This regressed delta blue by an order of magnitude. This implementation
  includes collection of allocation site feedback.

  Reland of https://codereview.chromium.org/2190293003/ with a bug fix.

BUG=

Review-Url: https://codereview.chromium.org/2293253007
Cr-Commit-Position: refs/heads/master@{#39145}
2016-09-04 13:54:14 +00:00
v8-autoroll
e09e08eb55 Update V8 DEPS.
Rolling v8/build to a767a79305018c5ec5affd7d96cff474aa3b03a1

Rolling v8/tools/clang to 052b1cffaca49a038f27168ef9d897db6df04e5a

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

Review-Url: https://codereview.chromium.org/2311503003
Cr-Commit-Position: refs/heads/master@{#39144}
2016-09-03 03:28:43 +00:00
bmeurer
97f6266f56 [turbofan] Migrate remaining DataView builtins to C++.
R=franzih@chromium.org
BUG=v8:3533

Review-Url: https://codereview.chromium.org/2306033002
Cr-Commit-Position: refs/heads/master@{#39143}
2016-09-02 18:32:16 +00:00
gdeepti
eed164b304 [wasm] Fix wasm decoder tracing for prefix opcodes.
Using --trace-wasm-decoder prints unknowns for prefix opcodes, example:

  @3      #01:Block               |  env = 0x5547c10, state = R, reason = block:start, control = #0:Start

  @4      #14:GetLocal            | i@4:GetLocal[0]
  @6      #e5:Unknown             | s@6:Unknown
  @8      #15:SetLocal            | s@8:SetLocal[1]
  @10     #14:GetLocal            | s@8:SetLocal[1] i@10:GetLocal[0]
  @12     #14:GetLocal            | s@8:SetLocal[1] i@10:GetLocal[0] s@12:GetLocal[1]
  @14     #cb:I8Const             | s@8:SetLocal[1] i@10:GetLocal[0] s@12:GetLocal[1] i@14:I8Const
  @16     #e5:Unknown             | s@8:SetLocal[1] i@10:GetLocal[0] i@16:Unknown

Fixed to print:

  @3        #01:Block               |  env = 0x45cac10, state = R, reason = block:start, control = #0:Start

  @4        #14:GetLocal            | i@4:GetLocal[0]
  @6    #e5 #1b:I32x4Splat          | s@6:I32x4Splat
  @8        #15:SetLocal            | s@8:SetLocal[1]
  @10       #14:GetLocal            | s@8:SetLocal[1] i@10:GetLocal[0]
  @12       #14:GetLocal            | s@8:SetLocal[1] i@10:GetLocal[0] s@12:GetLocal[1]
  @14       #cb:I8Const             | s@8:SetLocal[1] i@10:GetLocal[0] s@12:GetLocal[1] i@14:I8Const
  @16   #e5 #1c:I32x4ExtractLane    | s@8:SetLocal[1] i@10:GetLocal[0] i@16:I32x4ExtractLane

R=ahaas@chromium.org, bbudge@chromium.org

Review-Url: https://codereview.chromium.org/2307733002
Cr-Commit-Position: refs/heads/master@{#39142}
2016-09-02 17:52:19 +00:00
adamk
6dd2bc20b4 Remove unnessary includes of parser.h
This makes for slightly faster rebuilds when touching parser-base.h
(which changes frequently!). Also takes care of an old TODO,
moving CompileTimeValue into its own file under ast/, where it
properly belongs.

BUG=v8:5294

Review-Url: https://codereview.chromium.org/2305883002
Cr-Commit-Position: refs/heads/master@{#39141}
2016-09-02 17:48:46 +00:00
jbroman
f72351f540 Throw exceptions for errors in v8::ValueSerializer.
BUG=chromium:148757,chromium:641964

Review-Url: https://codereview.chromium.org/2307603002
Cr-Commit-Position: refs/heads/master@{#39140}
2016-09-02 15:17:07 +00:00
jgruber
300f4413eb Do not call into JS from WasmDebugInfo::GetFunctionScript
This disables notification of wasm script 'compilation' since
OnAfterCompile actually triggers a JS call (which is disallowed during
stack trace collection).

BUG=641065

Review-Url: https://codereview.chromium.org/2304943002
Cr-Commit-Position: refs/heads/master@{#39139}
2016-09-02 14:56:56 +00:00
bjaideep
1d2ab6e0bd PPC/s390: [Interpreter] Collect type feedback for 'new' in the bytecode handler
Port 7e5b8feed3

Original commit message:

    Collect type feedback in the bytecode handler for 'new' bytecode. The
    earlier cl (https://codereview.chromium.org/2153433002/) was reverted
    because that implementation did not collect allocation site feedback.
    This regressed delta blue by an order of magnitude. This implementation
    includes collection of allocation site feedback.

    Reland of https://codereview.chromium.org/2190293003/ with a bug fix.

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

BUG=v8:4280, v8:4780
LOG=N

Review-Url: https://codereview.chromium.org/2302343002
Cr-Commit-Position: refs/heads/master@{#39138}
2016-09-02 14:55:26 +00:00
franzih
d9a026e628 [api] Minor improvement to documentation for kNonMasking.
BUG=

Review-Url: https://codereview.chromium.org/2302133003
Cr-Commit-Position: refs/heads/master@{#39137}
2016-09-02 13:16:10 +00:00
machenbach
6c51c7d3a1 [gn] Add generic subcommands and provide list command
This prepares using mb as a library and not as a sub
process. It is used like that in the new list command that
shows available configurations.

Also added more robust checks of user inputs, better hints
and better docu.

BUG=chromium:625791
NOTRY=true

Review-Url: https://codereview.chromium.org/2300333002
Cr-Commit-Position: refs/heads/master@{#39136}
2016-09-02 13:07:30 +00:00
mvstanton
17e9e2f4c8 Forking the type system between Crankshaft & Turbofan.
Our Type class has a semantic and representational dimension.
Much code in src/ast, Crankshaft and Turbofan is based on it.
Going forward in Turbofan we'd like to remove representational information
entirely. To that end, new type AstType has been created to preserve
existing behavior for the benefit of Crankshaft and the AST.

BUG=

Review-Url: https://codereview.chromium.org/2302283002
Cr-Commit-Position: refs/heads/master@{#39135}
2016-09-02 13:04:39 +00:00
neis
6ef6d90265 Improve the explanation of a context's extension slot.
R=jochen
BUG=
NOTRY=true
NOTREECHECKS=true

Review-Url: https://codereview.chromium.org/2303113004
Cr-Commit-Position: refs/heads/master@{#39134}
2016-09-02 12:43:07 +00:00
mlippautz
ce66eec800 [heap] Introduce hard limit for external memory
We introduce, similar to regular heap, a hard and a soft limit for external memory.
- Upon reaching the hard limit we do a full GC. The hard limit is a a delta from
  the size of external memory at last GC.
- Upon reaching the soft limit we start incremental marking. Each further
  AdjustAmountOfExternalMemory will trigger a marking step. The step size depends
  on how far we are away from the hard limit. Further away means we have still
  some wiggle room and the step will be small. Being closer to the hard limit
  makes it more likely to trigger a full GC, so we increase the step size.

BUG=chromium:621829

Review-Url: https://codereview.chromium.org/2256853003
Cr-Commit-Position: refs/heads/master@{#39133}
2016-09-02 12:13:14 +00:00
hlopko
883e0e7036 Turn off incremental wrapper tracing by default
With the flag on the blink tests fail because blink is not prepared for v8
behaving incrementally.

In order to land and enable incremental wrapper tracing both in v8 smoothly and
blink we need to:

1. Land ScriptWrappableVisitorTest (http://crrev.com/2301213003)
2. Land write barriers implementation with more tests
3. Land write barriers installations
4. Enable incremental wrapper tracing on v8 side
5. Canary the heck out of this :)

This way the tests should be passing and chrome shouldn't crash at any given
moment.

LOG=no
BUG=468240
NOTRY=true

Review-Url: https://codereview.chromium.org/2299193003
Cr-Commit-Position: refs/heads/master@{#39132}
2016-09-02 12:06:33 +00:00
ahaas
6a892bb451 [wasm] Validate the alignment of load and store instructions.
According to the WebAssembly specification the alignment of load and
store instructions has to be less or equal to natural alignment.

R=titzer@chromium.org

Review-Url: https://codereview.chromium.org/2285643002
Cr-Commit-Position: refs/heads/master@{#39131}
2016-09-02 11:59:49 +00:00
marja
a804e9b018 ParserBase: Simplify FuncNameInferrer handling.
BUG=

Review-Url: https://codereview.chromium.org/2301923002
Cr-Commit-Position: refs/heads/master@{#39130}
2016-09-02 11:45:24 +00:00
neis
19039efa2e [interpreter] Clarify some names and comments.
Also remove an unused declaration.

R=bmeurer@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2302163003
Cr-Commit-Position: refs/heads/master@{#39129}
2016-09-02 11:33:01 +00:00
machenbach
25603e0b26 [gn] Switch windows to gn
BUG=chromium:474921

Review-Url: https://codereview.chromium.org/2303233002
Cr-Commit-Position: refs/heads/master@{#39128}
2016-09-02 11:02:25 +00:00
bmeurer
20bc88dc4f [turbofan] Make field indices explicit for LoadElimination.
This makes it easier to read and maintain this code.

R=epertoso@chromium.org

Review-Url: https://codereview.chromium.org/2304093002
Cr-Commit-Position: refs/heads/master@{#39127}
2016-09-02 10:56:57 +00:00
ahaas
e809937eb3 [wasm] Refactor BuildWasmToJSWrapper to clearly separate direct calls from Call-codestub calls
Looking at the code with Toon showed me that the code is not really
readable at the moment. This refactoring should make the different kinds
of calls and their parameters more apparent.

R=titzer@chromium.org

Review-Url: https://codereview.chromium.org/2295743002
Cr-Commit-Position: refs/heads/master@{#39126}
2016-09-02 10:55:29 +00:00
machenbach
9521a5d609 [swarming] Remove unnecessary dynamic libraries from isolate
The isolate driver finds dlls automatically. Hardcoding them
blocks gn as the locations change.

Prepares for https://codereview.chromium.org/2303233002/

BUG=chromium:474921
NOTRY=true
TBR=jochen,vogelheim

Review-Url: https://codereview.chromium.org/2304723003
Cr-Commit-Position: refs/heads/master@{#39125}
2016-09-02 10:35:09 +00:00
jgruber
64c518d06d Do not include Error.captureStackTrace in the trace
BUG=v8:5342

Review-Url: https://codereview.chromium.org/2307783002
Cr-Commit-Position: refs/heads/master@{#39124}
2016-09-02 09:51:42 +00:00
mvstanton
3d617c1661 [Turbofan] Remove more Type representation dimension data.
Happily, we can/should include semantic information such as Internal(), NonInternal() even as we remove representation data.

BUG=

Review-Url: https://codereview.chromium.org/2305573003
Cr-Commit-Position: refs/heads/master@{#39123}
2016-09-02 09:32:41 +00:00
franzih
7c401bd84c [api] Add interceptor for defineProperty().
With the Indexed/GenericNamedPropertyDefinerCallback it is possible to intercept Object.defineProperty() calls.

Requests that call JSReceiver::OrdinaryDefineOwnProperty() internally, also trigger the interceptor. This includes Object.freeze(), Object.preventExtensions(), and Object.seal().

As without this patch, the query interceptor triggers on
defineProperty, unless the definer callback
intercepts the request.

As without this patch, the query interceptor triggers on defineProperty, unless the definer callback intercepts the request.

BUG=

Committed: https://crrev.com/b9d985975cf3bab0ded0cec9fafd3799f9bde29a
Review-Url: https://codereview.chromium.org/2272383002
Cr-Original-Commit-Position: refs/heads/master@{#39094}
Cr-Commit-Position: refs/heads/master@{#39122}
2016-09-02 09:09:08 +00:00
jgruber
1cb2a70cb5 [regexp] Remove dead code
Remove dead code, and drop the legacy RegExp.prototype.exec implementation (the
only differences are TO_BOOLEAN on global and sticky).

BUG=v8:5339

Review-Url: https://codereview.chromium.org/2301803003
Cr-Commit-Position: refs/heads/master@{#39121}
2016-09-02 08:37:22 +00:00
mythria
7e5b8feed3 [Interpreter] Collect type feedback for 'new' in the bytecode handler
Collect type feedback in the bytecode handler for 'new' bytecode. The
earlier cl (https://codereview.chromium.org/2153433002/) was reverted
because that implementation did not collect allocation site feedback.
This regressed delta blue by an order of magnitude. This implementation
includes collection of allocation site feedback.

Reland of https://codereview.chromium.org/2190293003/ with a bug fix.

BUG=v8:4280, v8:4780
LOG=N

Review-Url: https://codereview.chromium.org/2225923003
Cr-Commit-Position: refs/heads/master@{#39120}
2016-09-02 08:26:57 +00:00
jgruber
836299aa9c [regexp] Port RegExpCompile and RegExpToString
BUG=v8:5339

Review-Url: https://codereview.chromium.org/2295273003
Cr-Commit-Position: refs/heads/master@{#39119}
2016-09-02 08:10:43 +00:00
nikolaos
628e9e3eb8 Fix bug with nested spreads as patterns
R=adamk@chromium.org, littledan@chromium.org
BUG=v8:5337
LOG=N

Review-Url: https://codereview.chromium.org/2297303003
Cr-Commit-Position: refs/heads/master@{#39118}
2016-09-02 07:53:00 +00:00
bmeurer
86af343749 [test] Add regression test for http://crbug.com/642056.
The bug itself was already fixed in ToT as part of
http://crrev.com/2263273003.

R=machenbach@chromium.org
BUG=chromium:642056

Review-Url: https://codereview.chromium.org/2306913002
Cr-Commit-Position: refs/heads/master@{#39117}
2016-09-02 07:08:29 +00:00
bmeurer
699ba63cc0 [turbofan] Check index type for potential element aliasing.
When deciding whether to nuke an element entry from the state table,
base the decision for the index only on the type information, and
don't even try to run it through the alias analyzer.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2301943002
Cr-Commit-Position: refs/heads/master@{#39116}
2016-09-02 07:06:26 +00:00
machenbach
d67fedb12c Revert of Allow lexically declared "arguments" in function scope in sloppy mode. (patchset #5 id:100001 of https://codereview.chromium.org/2290753003/ )
Reason for revert:
Breaks layout tests:
https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/9470

Original issue's description:
> Allow lexically declared "arguments" in function scope in sloppy mode.
>
> Lexically declared "arguments" in sloppy mode will throw redeclaration error
> currently, this patch fixes it by delaying the declaration of arguments until we
> fully parse parameter list and function body.
>
> BUG=v8:4577
> LOG=N
>
> Committed: https://crrev.com/70a613dd0a5f5d205b46559b55702764464851fa
> Cr-Commit-Position: refs/heads/master@{#39109}

TBR=adamk@chromium.org,mythria@chromium.org,lpy@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4577

Review-Url: https://codereview.chromium.org/2304853002
Cr-Commit-Position: refs/heads/master@{#39115}
2016-09-02 06:23:57 +00:00
bmeurer
f1c891c071 [turbofan] Fix typing rule for CheckBounds.
So far we used the minimum of the length instead of the maximum to
compute the output type of the CheckBounds, but at the same time
we never really used the output type yet.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2306443003
Cr-Commit-Position: refs/heads/master@{#39114}
2016-09-02 06:05:01 +00:00
v8-autoroll
4849a20380 Update V8 DEPS.
Rolling v8/build to 407cc11c28aef092dc961ff15e5530f50d235000

Rolling v8/tools/swarming_client to 380e32662312eb107f06fcba6409b0409f8fef72

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

Review-Url: https://codereview.chromium.org/2304793002
Cr-Commit-Position: refs/heads/master@{#39113}
2016-09-02 03:24:19 +00:00
gdeepti
53cb7e5ffc Populate relocation information correctly for RelocatableInt32Constants.
BUG=v8:5304
R=ahaas@chromium.org, titzer@chromium.org

Review-Url: https://codereview.chromium.org/2277443009
Cr-Commit-Position: refs/heads/master@{#39112}
2016-09-02 01:39:21 +00:00
ofrobots
ce8fab7649 trace-turbo should respect --redirect-code-traces
On larger workloads, lots of output on stdout becomes unwieldy.

R=bmeurer@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2293413004
Cr-Commit-Position: refs/heads/master@{#39111}
2016-09-01 23:28:12 +00:00
jbroman
bcbbfa7dda Add another LookupIterator constructor, and switch to delegating constructors.
This allows the constructors which simply fill in a missing parameter to do
so without duplicating the constructor body.

Review-Url: https://codereview.chromium.org/2294093008
Cr-Commit-Position: refs/heads/master@{#39110}
2016-09-01 22:24:16 +00:00
lpy
70a613dd0a Allow lexically declared "arguments" in function scope in sloppy mode.
Lexically declared "arguments" in sloppy mode will throw redeclaration error
currently, this patch fixes it by delaying the declaration of arguments until we
fully parse parameter list and function body.

BUG=v8:4577
LOG=N

Review-Url: https://codereview.chromium.org/2290753003
Cr-Commit-Position: refs/heads/master@{#39109}
2016-09-01 22:10:34 +00:00
Adam Klein
50b7a9ca24 Mark one more failing test262 test on the noi18n build
TBR=littledan@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#39108}
2016-09-01 20:59:02 +00:00
dgozman
130d0486c0 [inspector] Initial import of v8_inspector.
Attempt #2, formatted and disabled lint for src/inspector.

BUG=chromium:635948
NOPRESUBMIT=true (for grammar check in license code)

Review-Url: https://codereview.chromium.org/2292573002
Cr-Commit-Position: refs/heads/master@{#39107}
2016-09-01 20:28:33 +00:00
mlippautz
3b8ad45e0f [heap] Change LO space limit to 512k - page header
BUG=chromium:636331
R=ulan@chromium.org

Review-Url: https://codereview.chromium.org/2289683002
Cr-Commit-Position: refs/heads/master@{#39106}
2016-09-01 20:10:57 +00:00
mvstanton
d27f7f7ceb CallInterfaceDescriptor should use MachineType.
We really just need representation information from the CallInterfaceDescriptor. This change allows us to keep that, get away from Type, and it's Zone-based allocation as well.

BUG=

Review-Url: https://codereview.chromium.org/2301883002
Cr-Commit-Position: refs/heads/master@{#39105}
2016-09-01 20:09:46 +00:00
lpy
7a7c0ec5af [Tracing] Re-add trace-events used by metrics accidentally removed.
We removed some TRACE_EVENT0 instrumentation when we landed runtime call stats
tracing, however some of them are used in metrics, this patch adds these
TRACE_EVENT0 back.

BUG=642373
LOG=N

Review-Url: https://codereview.chromium.org/2301743002
Cr-Commit-Position: refs/heads/master@{#39104}
2016-09-01 20:08:38 +00:00
jarin
25504a220f [turbofan] Fix typing rule for Math.sign.
Review-Url: https://codereview.chromium.org/2306583002
Cr-Commit-Position: refs/heads/master@{#39103}
2016-09-01 20:06:27 +00:00