Commit Graph

26016 Commits

Author SHA1 Message Date
mtrofin
efdcd20267 [turbofan] Splinter into one range.
Before this CL, we created one live range per successive set of
deferred blocks. For scenarios with many such blocks, this creates
an upfront pressure for the register allocator to deal with many ranges.
Linear sorts ranges, which is a super-linear operation.

The change places all deferred intervals into one range, meaning that,
at most, there will be twice as many live ranges as the original set. In
pathological cases (benchmarks/Compile/slow_nbody1.js), this change
halves the compilation time. We see some improvements elsewhere,
notably SQLite at ~4-5%.

We may be able to avoid the subsequent merge. Its cost is the
additional ranges it may need to create. The sole reason for the merge
phase is to provide an unchanged view of the world to the subsequent
phases. With the at-most-one splinter model, we may be able to teach
the other phases about splintering - should we find perf hindrances
due to merging.

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

Cr-Commit-Position: refs/heads/master@{#31224}
2015-10-13 03:58:19 +00:00
v8-autoroll
6327ed0c92 Update V8 DEPS.
Rolling v8/tools/clang to a56c9063d582660d29b32f967ce20875c589fc3e

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

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

Cr-Commit-Position: refs/heads/master@{#31223}
2015-10-13 03:23:09 +00:00
dusan.m.milosavljevic
0c5c479574 MIPS: [turbofan] Improve test and equality compare with zero and constants.
TEST=
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31222}
2015-10-13 00:15:48 +00:00
mbrandy
32f13dfbec PPC: Refine "Test for var declarations in eval which conflict with let".
R=joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, dstence@us.ibm.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31221}
2015-10-12 19:09:35 +00:00
mtrofin
cbbfc0ff87 [turbofan] More efficient splintering.
For live ranges with many use positions, such as those encountered in
some unity asm.js code, this change significantly reduces compile time
(e.g. benchmarks/Compile/slow_nbody1.js: from ~6s to 2s). The
improvement is solely due to regressions (fixed by this CL) due to
splintering.

This CL does not fully address compile time problems for large
functions in Turbofan, but constitutes a step in the right direction.

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

Cr-Commit-Position: refs/heads/master@{#31220}
2015-10-12 18:34:40 +00:00
hpayer
9790e494a4 Revert of [heap] Decrease large object limit for regular heap objects. (patchset #3 id:40001 of https://codereview.chromium.org/1392823003/ )
Reason for revert:
broken tests

Original issue's description:
> [heap] Decrease large object limit for regular heap objects.
>
> Committed: https://crrev.com/e887d42342b3449f64fb6078f84f6c55bae3978d
> Cr-Commit-Position: refs/heads/master@{#31217}

TBR=mlippautz@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#31219}
2015-10-12 17:11:24 +00:00
adamk
18534dffc9 Don't throw on assignment to function name binding in harmony sloppy mode
BUG=v8:4482
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#31218}
2015-10-12 16:55:35 +00:00
hpayer
e887d42342 [heap] Decrease large object limit for regular heap objects.
Review URL: https://codereview.chromium.org/1392823003

Cr-Commit-Position: refs/heads/master@{#31217}
2015-10-12 16:39:33 +00:00
mvstanton
76bee80672 Remove FLAG_cache_optimized_code because we always have it on.
The data structure that holds the optimized code is becoming essential for
additional functionality, too.

R=mstarzinger@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31216}
2015-10-12 16:10:59 +00:00
mstarzinger
c84c96caa2 Remove cycle breaking include from mksnapshot.cc file.
R=mvstanton@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#31215}
2015-10-12 15:21:26 +00:00
mstarzinger
e494bcca7e Reland "[heap] No leakage of mark-compact.h outside of heap."
The revert of the original change in question did not recover
regressions, which allows us to reland this cleanup after all.

This reverts commit 871529b4d8.

R=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#31214}
2015-10-12 15:20:31 +00:00
mbrandy
f7a35b9a6e PPC: Vector ICs: Get rid of stack arguments on ia32 transitioning stores.
Port 2d4aeaad2f

Original commit message:
    The stack manipulation was expensive. Two virtual registers are better.

R=mvstanton@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, dstence@us.ibm.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31213}
2015-10-12 15:18:32 +00:00
machenbach
fe6ff6523e Revert of Don't compile functions in a context the caller doesn't have access to (patchset #1 id:1 of https://codereview.chromium.org/1393713006/ )
Reason for revert:
[Sheriff] Breaks layout tests. Please add needsmanualrebaseline upstream first if intended. E.g.:
http://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/2263

(one of them is a timeout that only happens with this commit)

Original issue's description:
> Don't compile functions in a context the caller doesn't have access to
>
> Instead, just return undefined.
>
> A side effect of this is that it's no longer possible to compile
> functions in a detached context.
>
> Based on https://codereview.chromium.org/294073002 but taking access
> check callbacks into account
>
> BUG=chromium:541703
> R=verwaest@chromium.org
> LOG=y
>
> Committed: https://crrev.com/9a5e2f512c4aa90563eb575605c2a8c2a92ac9f4
> Cr-Commit-Position: refs/heads/master@{#31208}

TBR=verwaest@chromium.org,jochen@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:541703

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

Cr-Commit-Position: refs/heads/master@{#31212}
2015-10-12 14:36:00 +00:00
littledan
d515e5138d Test for var declarations in eval which conflict with let
Previously, name conflicts between var and let declarations were only
made into exceptions if they were visible at parse-time. This patch adds
runtime checks so that sloppy-mode direct eval can't introduce conflicting
var declarations. The change is implemented by traversing the scope chain
when a direct eval introduces a var declaration to look for conflicting
let declarations, up to the function boundary.

BUG=v8:4454
R=adamk
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#31211}
2015-10-12 14:31:01 +00:00
mythria
9feb530594 Adds support for following operators
-Bitwise Or
  -Bitwise Xor
  -Bitwise And

Adds the above bytecodes, support to BytecodeGenerator and BytecodeArrayBuilder to enable it's use, it's implementation and tests.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31210}
2015-10-12 13:36:07 +00:00
neis
f113f3c384 [es6] Stage --harmony-completion.
R=rossberg
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31209}
2015-10-12 12:36:47 +00:00
jochen
9a5e2f512c Don't compile functions in a context the caller doesn't have access to
Instead, just return undefined.

A side effect of this is that it's no longer possible to compile
functions in a detached context.

Based on https://codereview.chromium.org/294073002 but taking access
check callbacks into account

BUG=chromium:541703
R=verwaest@chromium.org
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#31208}
2015-10-12 12:23:18 +00:00
machenbach
35833b7139 [swarming] Let v8 test driver use gtest environment variables for shards.
BUG=chromium:535160
LOG=n
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#31207}
2015-10-12 12:08:37 +00:00
littledan
0c2dff2936 Revert of Stage --harmony_sloppy_function (patchset #2 id:20001 of https://codereview.chromium.org/1393423002/ )
Reason for revert:
This still breaks Inbox.

Original issue's description:
> Stage --harmony_sloppy_function
>
> This patch turns on ES2015-style function hoisting semantics in
> staging. --harmony_sloppy_function was previously staged, leading
> to a number of bugs being filed and the staging being reversed;
> important bugs have been fixed, so it is time to try again.
>
> R=adamk
> LOG=Y
> BUG=v8:4285
>
> Committed: https://crrev.com/333e27fd99f8187c97e62b9538529900f0a30668
> Cr-Commit-Position: refs/heads/master@{#31190}

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

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

Cr-Commit-Position: refs/heads/master@{#31206}
2015-10-12 11:07:15 +00:00
mythria
aacc18f053 [Interpreter] Adds shift operators to interpreter
Adds support for following operators
 -Shift left
 -Shift right
 -Shift right logical

Adds the above bytecodes, support to BytecodeGenerator and BytecodeArrayBuilder
to enable it's use, it's implementation and tests.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31205}
2015-10-12 10:45:29 +00:00
mvstanton
2d4aeaad2f Vector ICs: Get rid of stack arguments on ia32 transitioning stores.
The stack manipulation was expensive. Two virtual registers are better.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#31204}
2015-10-12 07:34:32 +00:00
ahaas
f7e9094fe2 Give the SupportedMachineOperatorFlags to GraphAndBuilders to allow the use of optional operators in tests.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31203}
2015-10-11 19:59:34 +00:00
adamk
bef2fbcc69 [cleanup] Use NewVariableProxy() instead of NewUnresolved where possible
Review URL: https://codereview.chromium.org/1386383003

Cr-Commit-Position: refs/heads/master@{#31202}
2015-10-09 21:47:51 +00:00
adamk
a0d119c766 [cleanup] Make Scope implementation private, remove dead friend declaration
Scope has no subclasses, so "protected" should just be "private". And
there is no ParserFactory class, so making it a friend doesn't buy us
anything.

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

Cr-Commit-Position: refs/heads/master@{#31201}
2015-10-09 21:42:00 +00:00
karl
60f831749f Emit better error message if array buffer allocation fails
Now emits `Array buffer allocation failed` instead of
`Invalid array buffer length`.

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

Cr-Commit-Position: refs/heads/master@{#31200}
2015-10-09 20:44:50 +00:00
paul.lind
9d66c8813a Fix another gcc 4.9.2 signed-compare error.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31199}
2015-10-09 20:04:09 +00:00
ofrobots
30b57dcd42 Revert of improve perf_basic_prof filename reporting (patchset #4 id:60001 of https://codereview.chromium.org/1396843004/ )
Reason for revert:
The test-case has issues on windows. http://build.chromium.org/p/client.v8/builders/V8%20Win32%20-%20debug%20-%203/builds/5011/steps/Check/logs/stdio

Original issue's description:
> improve perf_basic_prof filename reporting
>
> Re-implement https://codereview.chromium.org/1388543002 after fixing the issue
> with SNPrintF crashing on windows when a zero-length buffer is passed in.
>
> R=jkummerow@chromium.org,yangguo@chromium.org,yurys@chromium.org
> BUG=chromium:539892
> LOG=N
>
> Committed: https://crrev.com/701ba0b255f9c34f4b8c43584ef1e35040474e7d
> Cr-Commit-Position: refs/heads/master@{#31197}

TBR=jkummerow@chromium.org,yangguo@chromium.org,yurys@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:539892

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

Cr-Commit-Position: refs/heads/master@{#31198}
2015-10-09 18:28:21 +00:00
ofrobots
701ba0b255 improve perf_basic_prof filename reporting
Re-implement https://codereview.chromium.org/1388543002 after fixing the issue
with SNPrintF crashing on windows when a zero-length buffer is passed in.

R=jkummerow@chromium.org,yangguo@chromium.org,yurys@chromium.org
BUG=chromium:539892
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31197}
2015-10-09 17:17:40 +00:00
jochen
5e47350645 Pass the context from which a given receiver is accessed explicitly
This will allow for probing access from any context to any receiver in a
future CL.

BUG=none
R=jkummerow@chromium.org,verwaest@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#31196}
2015-10-09 13:25:56 +00:00
jochen
2e8181acd5 When converting an mjsunit exception to a string, include the stack
Makes debugging failures a bit easier

BUG=none
R=ulan@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#31195}
2015-10-09 13:12:10 +00:00
karl
2daea448d9 [win32] Make sure OS::Abort doesn't return
Fixes clang on windows warning:
..\..\v8\src\base\platform\platform-win32.cc(836,1) :
  error: function declared 'noreturn' should not return
   [-Werror,-Winvalid-noreturn]

CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_clang_rel,win_clang_x64_rel

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

Cr-Commit-Position: refs/heads/master@{#31194}
2015-10-09 12:52:30 +00:00
jarin
4f64af2fa6 [turbofan] Fix scheduler test for Loop/Terminate nodes.
The test had an effect phi with one effect input connected to a loop with two control inputs. Also, the Terminate node was used by the effect phi.

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

Cr-Commit-Position: refs/heads/master@{#31193}
2015-10-09 10:52:59 +00:00
cbruni
3ac2973b29 Improving error messages when adding properties to non JSObject receiver in
strict mode.

LOG=N
BUG=chromium:423739

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

Cr-Commit-Position: refs/heads/master@{#31192}
2015-10-09 09:12:47 +00:00
Michael Achenbach
391ac4682a Whitespace change to test adding test262 on windodws.
Cr-Commit-Position: refs/heads/master@{#31191}
2015-10-09 06:55:59 +00:00
littledan
333e27fd99 Stage --harmony_sloppy_function
This patch turns on ES2015-style function hoisting semantics in
staging. --harmony_sloppy_function was previously staged, leading
to a number of bugs being filed and the staging being reversed;
important bugs have been fixed, so it is time to try again.

R=adamk
LOG=Y
BUG=v8:4285

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

Cr-Commit-Position: refs/heads/master@{#31190}
2015-10-09 02:27:45 +00:00
caitpotter88
e2be5ce542 [parser] fix token end position for regexp literals
Make the end position of a regexp literal the first character following the regexp. This matches the behaviour of number literals and string literals, as well as single-character tokens.

This change corrects the lazy-parsing of arrow functions with concise bodies, whose last token is a regular expression literal.

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

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

Cr-Commit-Position: refs/heads/master@{#31189}
2015-10-09 01:02:02 +00:00
bradnelson
5bbccc3ea3 Using RegisterConfiguration in test-multiple-return.
Not all register codes are safe for use on all architectures.
Using RegisterConfiguration when picking a calling convention
in test-multiple-return.

BUG=None
TEST=test-multiple-return
R=titzer@chromium.org
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31188}
2015-10-08 23:13:02 +00:00
littledan
a01ab93f4c Revert of Use simple/fast macro version of MinMax in JS (patchset #2 id:20001 of https://codereview.chromium.org/1390023003/ )
Reason for revert:
This contains bugs, as found by mstarzinger. Reverting until we can find a clean fix (maybe it should be an inline function instead of a macro).

Original issue's description:
> Use simple/fast macro version of MinMax in JS
>
> Use the simple macro version of {Min, Max} where possible to
> improve performance
>
> Follow-up to CR: https://codereview.chromium.org/1331993004
>
> BUG=
>
> Committed: https://crrev.com/27c96c26212a10bb7f19f7bf3ff793b31bbad354
> Cr-Commit-Position: refs/heads/master@{#31162}

TBR=jkummerow@chromium.org,mstarzinger@chromium.org,karl@skomski.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31187}
2015-10-08 20:37:59 +00:00
akos.palfi
29ba2e04fd Fix gcc 4.9.2 sign-compare error.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31186}
2015-10-08 19:34:21 +00:00
karl
9a6c8b2455 Reland: Introduce a V8_NORETURN macro and use it to make GCC 4.9.2 happy again.
Without that, it has a few false positives about out-of-bounds array accesses.
Also makes the clang static-analyzer happy.

Original code review from Sven Panne:
https://codereview.chromium.org/790723002/

CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_arm_dbg,v8_linux_arm64_dbg,v8_mac64_dbg,v8_win_compile_dbg,v8_linux_gcc_rel

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

Cr-Commit-Position: refs/heads/master@{#31185}
2015-10-08 19:03:24 +00:00
bradnelson
2e3c36fb1c Adding support for multiple returns in compiled functions.
This will allow exploration of possibilities like passing around buffer base and length.

BUG=None
TEST=test-multiple-return
LOG=N
R=mtrofin@chromium.org,titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#31184}
2015-10-08 18:27:46 +00:00
mlippautz
deccbde161 [heap] Free list refactoring of finding nodes.
R=ulan@chromium.org
BUG=chromium:524425
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31183}
2015-10-08 15:17:22 +00:00
machenbach
2b87016aba [test] Pull test262 as a dependency.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31182}
2015-10-08 14:40:52 +00:00
neis
cfe7c9c5ce [es6] Support optional "receiver" argument in Reflect.get.
Also add some more tests.

R=rossberg
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31181}
2015-10-08 14:23:12 +00:00
neis
7a0a682083 [es6] Implement completion value reform (--harmony-completion).
This CL depends on #1362363002.

R=rossberg
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31180}
2015-10-08 13:57:04 +00:00
mlippautz
3feba64470 [heap] Fix mark bits for partially compacted pages.
See bug report.

R=ulan@chromium.org
BUG=chromium:538567
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31179}
2015-10-08 13:49:30 +00:00
bmeurer
9d2e21775c [turbofan] Optimize stores to global properties.
This adds support to also lower stores to global property cells in state
kConstant or kConstantType, where we need to deoptimize eagerly in case
we have a value/type mismatch.

Also fixes bugs in the construction of the frame states in the
AstGraphBuilder.

R=jarin@chromium.org
BUG=v8:4470
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#31178}
2015-10-08 13:30:00 +00:00
machenbach
9b25041b24 [test] Add intel atom to perf try category.
BUG=chromium:468025
LOG=n
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#31177}
2015-10-08 13:04:37 +00:00
jacob.bramley
29f73ad104 [arm64] Fix some signed/unsigned type inconsistencies.
This fixes several warnings when cross-building using GCC (since r31087,
5cf1c0b).

In particular, CPURegister::code() now returns 'int', matching the other
platforms (and the coding style guide). The rest of the patch consists
of similar changes to make this work.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#31176}
2015-10-08 11:32:48 +00:00
mlippautz
93e939837d [heap] Remove unswept bytes counter
This change removes the unswept free bytes counter.

The new approach
- directly decrements allocated memory and capacity before sweeping (using live
  bytes from the marker), and
- adds back capacity during refilling a free list.

This is another pre-work for moving around free lists while keeping the counters
in a sane state.

The previous approach allowed us to nail down how much memory is to-be-swept.
However, there were no users of this as we only used it do decrement it from
allocated memory (which still accounted for dead objects).  If we want to keep
track of unswept free bytes in a space during compaction we can introduce a
separate new concurrent counter for this purpose.

BUG=chromium:524425
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31175}
2015-10-08 10:28:11 +00:00