Commit Graph

19203 Commits

Author SHA1 Message Date
verwaest
fab3508062 Only swap undefined for the global object if necessary in the prologue
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28200}
2015-05-04 13:39:00 +00:00
hpayer
6e9e2c0829 New insertion write barrier.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28199}
2015-05-04 13:12:26 +00:00
mstarzinger
120344ec44 [turbofan] Free TurboFan from the claws of ZoneList.
This removes the last occurence of the hand-written ZoneList from the
compiler directory and uses ZoneVector everywhere instead.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28198}
2015-05-04 12:54:15 +00:00
hpayer
fff4f8e1bf Don't perform marking barrier for weak cell values.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28196}
2015-05-04 12:15:41 +00:00
mstarzinger
d6945db703 [turbofan] Add SimplifiedOperator::Allocate operator.
This introduces a simplified allocation operator which can be used to
model inline allocations in TurboFan. It is currently used for context
allocations, but still disabled because change lowering introduces
floating allocations outside the effect chain that interfere.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28195}
2015-05-04 12:07:12 +00:00
akos.palfi
900bc7937c MIPS: Do not use the 64-bit floor and truncate instructions in fp32 mode.
These instructions have unpredictable result when the processor is in fp32 mode.

BUG=

TEST=mjsunit/math-floor-global,math-floor-local,math-floor-part1

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

Cr-Commit-Position: refs/heads/master@{#28194}
2015-05-04 12:06:03 +00:00
yangguo
72ab421729 Reland "Wrap v8natives.js into a function."
Review URL: https://codereview.chromium.org/1123703002

Cr-Commit-Position: refs/heads/master@{#28193}
2015-05-04 11:17:01 +00:00
titzer
9833844268 [turbofan] Small fixes to PipelineStatistics. Collect statistics in tests.
R=bmeurer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28192}
2015-05-04 11:05:45 +00:00
titzer
acdb5336a9 Extract Signature from src/compiler/machine-type.h to src/signature.h
R=bmeurer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28191}
2015-05-04 10:11:54 +00:00
yangguo
f42544b768 Set inferred name of bound function to empty string.
Otherwise it's whatever the js minifier assigns it to.

R=jkummerow@chromium.org
BUG=chromium:484077
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28190}
2015-05-04 09:55:43 +00:00
chunyang.dai
d09e119bc4 X87: VectorICs: built-in function apply should use an IC.
port 83a0af5500 (r28165).

original commit message:

   VectorICs: built-in function apply should use an IC.

   Handled a TODO that sent builtin function apply to the runtime on property get.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28189}
2015-05-04 03:40:28 +00:00
chunyang.dai
906152b85a X87: Use a stub in crankshaft for grow store arrays.
port fb8e613638 (r28163).

original commit message:

 We were deopting without learning anything.

 This is a rebase/reland of https://codereview.chromium.org/368263003

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28188}
2015-05-04 03:39:19 +00:00
machenbach
8e3d776dcb Revert of [V8] Use previous token location as EOS token location (patchset #2 id:20001 of https://codereview.chromium.org/1100993003/)
Reason for revert:
[Sheriff] Speculative revert. This seems to block the current roll:
https://codereview.chromium.org/1124463003/

This bisect also points at this CL:
https://codereview.chromium.org/1124523002/

Please prepare the chromium side tests before a reland.

Original issue's description:
> [V8] Use previous token location as EOS token location
>
> EOS token location is useless for users and messages.js are not ready for its location.
> With this CL we use location of token before EOS for it.
>
> LOG=Y
> BUG=chromium:480652
> R=yurys@chromium.org,yangguo@chromium.org
>
> Committed: https://crrev.com/81afc9313ce84350bcba9f84b255a77e97cd3726
> Cr-Commit-Position: refs/heads/master@{#28164}

TBR=yangguo@chromium.org,yurys@chromium.org,kozyatinskiy@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:480652

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

Cr-Commit-Position: refs/heads/master@{#28187}
2015-05-03 12:47:51 +00:00
mtrofin
cd481a7dfd Most of the issues so far encountered with the greedy allocator rest with the splitting mechanism. This change has:
- all RegisterAllocatorTest unit tests passing, when unittest has the flags: --turbo-filter=* --always-opt --turbo-deoptimization --turbo-verify-allocation --turbo_greedy_regalloc

./tools/run-tests.py passing when providing --turbo_greedy_regalloc, but still having some failing (more than the "normal" 43) when passing all the flags. I realize just passing --turbo_greedy_regalloc does not provide full coverage, but it did uncover some bugs, still

The CL centralizes the computing of split points (for "losing" intervals) with the determination of whether an interval is irreducible, and, therefore, of infinite spill weight (if an interval can't be split or spilled, it can't lose in weight comparison because there's nothing we can do to it and make progress).

There are allocator efficiency opportunities I haven't yet taken (this refers to the code itself, not the generated code). For example, the above split/spill computation can be cached. My plan is to defer this to at least after we see numbers showing the value of the algorithm, and potentially do at the same time we remove the linear algorithm, if that is still the plan. At that time, we can look where some APIs best belong (e.g. weight computation may fully live and cache itself on LiveRange)

In addition, the CL adds a few debug-time-only Print APIs I found very useful:  on demand (while in GDB) dump of the code, live range info (use positions & operand description, and intervals), etc.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28185}
2015-05-01 15:31:44 +00:00
balazs.kilvady
a384c143f3 MIPS: Fix 'Detect simple tail calls'.
4b122b7504

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28183}
2015-04-30 18:52:49 +00:00
machenbach
b0b82fa89d Revert of Wrap v8natives.js into a function. (patchset #2 id:20001 of https://codereview.chromium.org/1109343004/)
Reason for revert:
[Sheriff] Speculative revert for breaking layout tests, e.g.:
http://build.chromium.org/p/client.v8/builders/V8-Blink%20Linux%2064%20%28dbg%29/builds/2682

See. e.g.:
https://storage.googleapis.com/chromium-layout-test-archives/V8-Blink_Win/3130/layout-test-results/http/tests/websocket/workers/worker-reload-diff.txt

Original issue's description:
> Wrap v8natives.js into a function.
>
> R=jkummerow@chromium.org
>
> Committed: https://crrev.com/ee1b39b4303829e6c6805fe8b2f2602b13f6463a
> Cr-Commit-Position: refs/heads/master@{#28174}

TBR=jkummerow@chromium.org,yangguo@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#28182}
2015-04-30 17:33:19 +00:00
dusan.milosavljevic
76ddd58cff MIPS: Add min/max suffixed variants.
TEST=
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28181}
2015-04-30 16:43:09 +00:00
yangguo
ac50edfee0 Migrate error messages, part 6. (string.js and date.js)
R=mvstanton@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28180}
2015-04-30 16:22:05 +00:00
adamk
d18dd375ac Remove unused Module-related AST nodes and associated codegen
BUG=v8:1569
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28179}
2015-04-30 16:20:56 +00:00
mbrandy
543ae601de PPC: VectorICs: built-in function apply should use an IC.
Port 83a0af5500

Original commit message:
Handled a TODO that sent builtin function apply to the runtime on property get.

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

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

Cr-Commit-Position: refs/heads/master@{#28178}
2015-04-30 16:18:16 +00:00
mbrandy
2cc2ee0c1b PPC: Use a stub in crankshaft for grow store arrays.
Port fb8e613638

Original commit message:
We were deopting without learning anything.

This is a rebase/reland of https://codereview.chromium.org/368263003

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

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

Cr-Commit-Position: refs/heads/master@{#28177}
2015-04-30 15:43:03 +00:00
yangguo
3ba71e1bbd Cache experimental natives sources as external strings.
R=ulan@chromium.org
BUG=v8:4054
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28176}
2015-04-30 15:10:45 +00:00
yangguo
0327f8de2e Disable stack trace preprocessing.
This has to wait until issue 4065 has been fixed.

R=ulan@chromium.org
BUG=v8:2340, v8:4065, chromium:482312
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28175}
2015-04-30 15:04:25 +00:00
yangguo
ee1b39b430 Wrap v8natives.js into a function.
R=jkummerow@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28174}
2015-04-30 14:59:09 +00:00
titzer
b0dcf6abf2 Allow TurboFan to compile more methods.
Reorganize some bailout conditions to be after the decision to use TurboFan.

R=mstarzinger@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28172}
2015-04-30 14:50:45 +00:00
svenpanne
f17a297e1d Mark instruction blocks with spills (for frame elision).
Review URL: https://codereview.chromium.org/1119683002

Cr-Commit-Position: refs/heads/master@{#28171}
2015-04-30 14:49:36 +00:00
yangguo
dfe01818fe Initialize typed array content for rempio2result during bootstrapping.
This is to pacify MSAN.

R=mvstanton@chromium.org
BUG=465759
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28170}
2015-04-30 14:32:32 +00:00
vogelheim
7ce30d027f Fix typo in builtins-x87, introduced in crrev.com/1107233004.
BUG=470930
LOG=N
R=jochen@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28169}
2015-04-30 14:24:41 +00:00
jochen
98140318fa Unify internal and external typed arrays a bit
Just give internal ones an ArrayBuffer with a NULL backing store. This
simplifies the access checks a lot.

BUG=v8:3996
R=hpayer@chromium.org,verwaest@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28168}
2015-04-30 13:46:34 +00:00
mvstanton
83a0af5500 VectorICs: built-in function apply should use an IC.
Handled a TODO that sent builtin function apply to the runtime on property get.

R=yangguo@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28165}
2015-04-30 13:08:47 +00:00
kozyatinskiy
81afc9313c [V8] Use previous token location as EOS token location
EOS token location is useless for users and messages.js are not ready for its location.
With this CL we use location of token before EOS for it.

LOG=Y
BUG=chromium:480652
R=yurys@chromium.org,yangguo@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28164}
2015-04-30 12:44:54 +00:00
mvstanton
fb8e613638 Use a stub in crankshaft for grow store arrays.
We were deopting without learning anything.

This is a rebase/reland of https://codereview.chromium.org/368263003

BUG=v8:3417
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28163}
2015-04-30 12:34:10 +00:00
vogelheim
6b905c3a16 Implement kToBeExecutedOnceCodeAge.
An initial 'code age' state that will turn into a 'pre-aging' code age only after it was executed the first time.

BUG=470930
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#28162}
2015-04-30 12:31:46 +00:00
ulan
1dd93d965d Add flag to print stack-trace after n allocations.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28161}
2015-04-30 12:14:41 +00:00
conradw
dea0d9b59e [strong] Disallow implicit conversions for add
Implements the strong mode proposal's restrictions on implicit conversions
for the binary + operator. Test suite is also cleaned up/refactored to allow
easier testing of the comparison operators in the future.

BUG=v8:3956
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28159}
2015-04-30 11:46:08 +00:00
dcarney
c5c8eb3fd1 [turbofan] resolve all references before populating reference maps
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28157}
2015-04-30 11:08:01 +00:00
jochen
ac1c88a9b2 Reland "Remove the weak list of array buffers"
Original issue's description:
> Remove the weak list of array buffers
>
> Instead, collect live array buffers during marking and free pointers we
> no longer found.
>
> BUG=v8:3996
> R=hpayer@chromium.org
> LOG=n

BUG=v8:3996
TBR=hpayer@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28156}
2015-04-30 10:57:51 +00:00
dcarney
a338f2738a drop interalization of strings entering global constant slots
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28155}
2015-04-30 10:50:49 +00:00
yangguo
7681432dbf JSON serializer should fail gracefully for special value wrappers.
R=mstarzinger@chromium.org
BUG=chromium:471702
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28154}
2015-04-30 10:02:21 +00:00
bmeurer
b9d583d581 [turbofan] Don't spread global flag checks all over the compiler code.
Better encapsulate the source position handling in TurboFan.

R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28153}
2015-04-30 09:56:31 +00:00
domenic
a34bbef314 Show function <name>() { [native code] } for built-in classes
The existing logic would show the full source for all classes, even
built-in ones.

R=arv@chromium.org,dslomov@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28151}
2015-04-30 09:29:39 +00:00
svenpanne
4b122b7504 Detect simple tail calls
This CL contains the first steps towards tail call optimization:

  * Structurally detect tail calls during instruction selection,
    looking for special return/call combinations.

  * Added new architecture-specific instructions for tail calls which
    jump instead of call and take care of frame adjustment.

  * Moved some code around.

Currently we restrict tail calls to callees which only use registers
for arguments/return value and to call sites which are explicitly
marked as being OK for tail calls. This excludes, among other things,
call sites in sloppy JS functions and our IC machinery (both need in
general to be able to access the caller's frame).

All this is behind a flag --turbo-tail-calls, which is currently off
by default, so it can easily be toggled.

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

Cr-Commit-Position: refs/heads/master@{#28150}
2015-04-30 09:10:28 +00:00
machenbach
3e25666c79 Revert of Remove the weak list of array buffers (patchset #8 id:140001 of https://codereview.chromium.org/1114563002/)
Reason for revert:
[Sheriff] Crashes in layout tests:
https://chromegw.corp.google.com/i/client.v8/builders/V8-Blink%20Linux%2064%20%28dbg%29/builds/2668

Original issue's description:
> Remove the weak list of array buffers
>
> Instead, collect live array buffers during marking and free pointers we
> no longer found.
>
> BUG=v8:3996
> R=hpayer@chromium.org
> LOG=n
>
> Committed: https://crrev.com/2d39709cf5ee17637f6f2d75380a9e61ae0b342b
> Cr-Commit-Position: refs/heads/master@{#28132}

TBR=dslomov@chromium.org,hpayer@chromium.org,jochen@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:3996

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

Cr-Commit-Position: refs/heads/master@{#28148}
2015-04-30 08:38:24 +00:00
bmeurer
cf420ec337 [base] Drop obsolete Thread::YieldCPU.
The method is not used anywhere, and it is a bad idea in general anyway.
If you see a need to call YieldCPU, then you're code is probably in need
of a redesign!

R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28147}
2015-04-30 08:08:54 +00:00
domenic
f47f88ad0e Add shift to InternalArray and InternalPackedArray
It's useful for queue-like data structures.

R=yangguo@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28146}
2015-04-30 08:07:21 +00:00
michael_dawson
3fa1b606fd Fix AIX compiler warning
Fix AIX compiler warning indicating that variable may not be
initialized

	modified:   src/heap/heap.cc

R=danno@chromium.org, svenpanne@chromium.org, mbrandy@us.ibm.com

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28145}
2015-04-30 08:01:58 +00:00
Djordje.Pesic
9da34c56a1 MIPS: Add rounding support in simulator and RINT instruction.
Added rounding according to fcsr, CVT_W_D and RINT.D instruction in assembler, dissasembler and simulator and wrote appropiate tests.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28143}
2015-04-30 06:29:16 +00:00
dcarney
81345f1a2c Reland: [turbofan] add MachineType to AllocatedOperand
- allows the optimization of emitted gap move code since the representation of the value in the register is known
- necessary preparation for vector register allocation
- prepare for slot sharing for any value of the same byte width

TBR=jarin@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28140}
2015-04-29 19:36:25 +00:00
machenbach
7eccb18148 Revert of [turbofan] add MachineType to AllocatedOperand (patchset #17 id:310001 of https://codereview.chromium.org/1087793002/)
Reason for revert:
[Sheriff] Breaks compile on chromium asan and v8 msan:
http://build.chromium.org/p/client.v8/builders/Linux%20ASAN%20Builder/builds/3446
http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/builds/2085

Original issue's description:
> [turbofan] add MachineType to AllocatedOperand
>
> - allows the optimization of emitted gap move code since the representation of the value in the register is known
> - necessary preparation for vector register allocation
> - prepare for slot sharing for any value of the same byte width
>
> BUG=
>
> Committed: https://crrev.com/3a025d1ab6437559f86a464767aa03d2d9789f6f
> Cr-Commit-Position: refs/heads/master@{#28137}

TBR=jarin@chromium.org,dcarney@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28139}
2015-04-29 18:28:47 +00:00
dcarney
3a025d1ab6 [turbofan] add MachineType to AllocatedOperand
- allows the optimization of emitted gap move code since the representation of the value in the register is known
- necessary preparation for vector register allocation
- prepare for slot sharing for any value of the same byte width

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28137}
2015-04-29 14:46:19 +00:00