Commit Graph

23759 Commits

Author SHA1 Message Date
chunyang.dai
b471651e96 X87: [es6] Support super.property in eval and arrow functions
port 44e9810345 (r28644)

original commit message:

    When we enter a method that needs access to the [[HomeObject]]
    we allocate a local variable `.home_object` and assign it the
    value from the [[HomeObject]] private symbol. Something along
    the lines of:

      method() {
        var .home_object = %ThisFunction()[home_object_symbol];
        ...
      }

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28717}
2015-06-01 08:55:27 +00:00
chunyang.dai
5211fa0c59 X87: Move hash code from hidden string to a private symbol
port eca5b5d7ab (r28622).

original commit message:

   * Hash code is now just done with a private own symbol instead of the hidden string, which predates symbols.
    * In the long run we should do all hidden properties this way and get rid of the
    hidden magic 0-length string with the zero hash code.  The advantages include
    less complexity and being able to do things from JS in a natural way.
    * Initially, the performance of weak set regressed, because it's a little harder
    to do the lookup in C++.  Instead of heroics in C++ to make things faster I
    moved some functionality into JS and got the performance back. JS is supposed to be good at looking up named properties on objects.
    * This also changes hash codes of Smis so that they are always Smis.

    Performance figures are in the comments to the code review.  Summary: Most of js-perf-test/Collections is neutral.  Set and Map with object keys are 40-50% better.  WeakMap is -5% and WeakSet is +9%.

    In the code review comments is a patch with an example of the heroics we could do in C++ to make lookup faster (I hope we don't have to do this.  Instead of checking for the property, then doing a new

    In a similar vein we could give the magic zero hash code to the hash code
    symbol.  Then when we look up the hash code we would sometimes see the table
    with all the hidden properties.  This dual use of the field for either the hash
    code or the table with all hidden properties and the hash code is rather ugly,
    and this CL gets rid of it.  I'd be loath to bring it back.  On the benchmarks quoted above it's slightly slower than moving the hash code lookup to JS like in this CL.

    One worry is that the benchmark results above are more monomorphic than real
    world code, so may be overstating the performance benefits of moving to JS.  I
    think this is part of a general issue we have with handling polymorphic code in
    JS and any solutions there will benefit this solution, which boils down to
    regular property access. Any improvement there will lift all boats.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28716}
2015-06-01 08:53:19 +00:00
chunyang.dai
6b93438d51 X87: Move work to omit unnecessary ObjectLiteral stores to the numbering pass.
port 32de677805 (r29615)

original commit message:

    The reason is that this information will be needed to compute the number of
    vector ic slots done at numbering time.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28715}
2015-06-01 08:45:34 +00:00
hablich
f62d5ce912 For Micro-benchmarks for 'with'
R=arv@chromium.org, mstarzinger@chromium.org
BUG=v8:4131
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28714}
2015-06-01 07:40:11 +00:00
mstarzinger
861c427420 [turbofan] New operator for loads of DYNAMIC_[GLOBAL,LOCAL].
This introduces two new operators for loads of variables bound to
Variable::LOOKUP locations. Currently they all still lower to runtime
calls, but will allow optimization during typed lowering.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28713}
2015-06-01 07:35:11 +00:00
jochen
4b548dd15a Also expose DefineOwnProperty
In contrast to CreateDataProperty, this will always call out to JS

BUG=475206
R=adamk@chromium.org,verwaest@chromium.org
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#28712}
2015-06-01 07:26:46 +00:00
bmeurer
e2e47f30be [turbofan] First step towards sanitizing for-in and making it optimizable.
In a nutshell: The FILTER_KEY builtin is gone, and was replaced by a
simple runtime call to ForInFilter, which does everything and is even
cheaper (because FILTER_KEY used to call into the runtime anyway).
And ForInFilter returns either the name or undefined, which makes it
possible to remove the control flow construction from the AstGraphBuilder,
and thereby make both the initialization and the per-loop code of for-in
optimizable later (in typed lowering).

R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28711}
2015-06-01 07:20:58 +00:00
michael_dawson
212f4537cf Fix compile failure for AIX
Fix another may be uninitialized compile failure on AIX
in src/heap/heap.cc

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

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28710}
2015-06-01 06:51:51 +00:00
jacob.bramley
84b9afe466 [arm] Fix detection of architecture versions.
Use __ARM_ARCH_6ZK__ instead of __ARM_ARCH_6KZ__. The architecture is
technically called ARMv6KZ, but GCC has always called it 6ZK.

Clang defines __ARM_ARCH_6K__ for this target, and is unaffected.

BUG=v8:3978
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28709}
2015-06-01 04:26:34 +00:00
v8-autoroll
df7a8adf74 Update V8 DEPS.
Rolling v8/tools/clang to ed19e3a88ba8dccc757b6f2e76d06c5d1355cfa3

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28708}
2015-06-01 03:36:03 +00:00
erikcorry
adf42dd007 Remove spurious prints from GC logging
R=hpayer@chromium.org, szager@chromium.org
TBR=hpayer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28707}
2015-05-31 10:02:09 +00:00
v8-autoroll
748013b653 Update V8 DEPS.
Rolling v8/tools/clang to 4a73eedb03ade4ca209eadcf768737ca01bf7b4a

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28706}
2015-05-31 03:23:28 +00:00
v8-autoroll
11f4161c48 Update V8 DEPS.
Rolling v8/buildtools to fa660d47fa1a6c649d5c29e001348447c55709e6

Rolling v8/tools/clang to fbd2e50b735151d7745bca153f7f17ea896dcfb7

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28705}
2015-05-30 03:25:58 +00:00
erikcorry
af7e07358a Even without --trace-gc dump the last few GC messages on OOM
If we crash V8 due to out-of-memory then we print the last 3 GCs on
stdout as we crash. Also records the last 3 GCs on the stack so that
it will be part of the minidump.
R=hpayer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28704}
2015-05-29 16:24:52 +00:00
titzer
30ef6b7a69 [turbofan] Clean up cctest "framework" for dealing with native calls.
R=mstarzinger@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28703}
2015-05-29 14:05:49 +00:00
bbudge
43638cd4e8 Clean up aligned allocation code in preparation for SIMD alignments.
Moves alignment fill calculations into two static Heap methods.
Adds a Heap method to handle the complex case where filler is potentially needed before and after a heap object.
Makes DoubleAlignForDeserialization explicitly fill after an already
aligned object.

LOG=N
BUG=v8:4124

Committed: https://crrev.com/fcfb080eb9a637f0ae066bed4c45095e60df8a84
Cr-Commit-Position: refs/heads/master@{#28687}

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

Cr-Commit-Position: refs/heads/master@{#28702}
2015-05-29 13:18:23 +00:00
yangguo
3f223ee69b Debugger: PreservePositionScope should clear positions inside the scope.
The point of this change is so that when emitting code for a call in
FullCodegen::VisitCall, the statement position is not associated to
any code that loads the function, but to the actual CallIC.

R=mvstanton@chromium.org
BUG=chromium:481896
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28701}
2015-05-29 12:56:40 +00:00
vogelheim
c7d3e64bc3 Fix free-after-free bug in ExternalStreamingStream::ResetToBookmark.
R=jochen@chromium.org
BUG=chromium:470930
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28700}
2015-05-29 12:19:51 +00:00
ishell
c984efe6e3 Reland "Fixed a couple of failing DCHECK(has_pending_exception()). (patchset #1 id:1 of https://codereview.chromium.org/1151373002/ )"
BUG=chromium:491062
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28699}
2015-05-29 11:37:23 +00:00
conradw
6edc3e3179 [strong] Implement per-object restrictions behaviour of property freezing
Implements the strong mode proposal's restrictions on changing a strong object's
writable, non-configurable property to non-writable.

Setting the strong bit is still wip, so this change will only affect those
objects that have the bit correctly set. The tests reflect this, and will be
expanded as more objects can be marked as strong.

BUG=v8:3956
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28698}
2015-05-29 11:33:29 +00:00
jarin
9058ac3be1 Remove the experimental perf jit support until the license is clarified.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28697}
2015-05-29 10:39:52 +00:00
yangguo
945154a270 Debugger: consider try-finally scopes not catching wrt debug events.
R=mstarzinger@chromium.org
BUG=chromium:492522
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#28696}
2015-05-29 10:05:33 +00:00
mstarzinger
74f1dba845 [turbofan] Enforce stricter constraints on Throw nodes.
R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28695}
2015-05-29 09:17:29 +00:00
erikcorry
2cb3920688 grokdump.py - some support for on-stack HeapStats
R=ulan@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28694}
2015-05-29 09:05:06 +00:00
hpayer
3e2fec75d2 Treat links that organize weak objects weakly.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28693}
2015-05-29 08:06:30 +00:00
bmeurer
b749a19570 [x64] Fix useless deopt in for-in.
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28692}
2015-05-29 06:37:31 +00:00
rodolph.perfetta
81703350bb [arm] Fix vmov immediate for ARMv6.
vmov immediate was always emitting movt for some immediates wether or
not the CPU supported ARMv7.

BUG=v8:4019
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28691}
2015-05-29 05:31:38 +00:00
v8-autoroll
ba227db023 Update V8 DEPS.
Rolling v8/tools/clang to 5413f2a11e1b56c30e28769b9ff1086797c11b28

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28690}
2015-05-29 03:33:53 +00:00
arv
ab0577b29c Cleanup ast numbering for super.prop in arrows
Follow up to https://codereview.chromium.org/1135243004

For now we need to call set_base_id in AstNumberingVisitor because
TurboFan needs a bailout id for super.prop in a lot of cases.

BUG=None
LOG=N
R=adamk@chromium.org, mstarzinger@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28689}
2015-05-28 18:50:52 +00:00
bbudge
3ee926e2a6 Revert of Clean up aligned allocation code in preparation for SIMD alignments. (patchset #14 id:300001 of https://codereview.chromium.org/1150593003/)
Reason for revert:
Breaks mjsunit, webkit, mozilla, benchmarks.

TBR=hpayer@chromium.org

Original issue's description:
> Clean up aligned allocation code in preparation for SIMD alignments.
>
> Moves alignment fill calculations into two static Heap methods.
> Adds a Heap method to handle the complex case where filler is potentially needed before and after a heap object.
> Makes DoubleAlignForDeserialization explicitly fill after an already
> aligned object.
>
> LOG=N
> BUG=v8:4124
>
> Committed: https://crrev.com/fcfb080eb9a637f0ae066bed4c45095e60df8a84
> Cr-Commit-Position: refs/heads/master@{#28687}

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

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

Cr-Commit-Position: refs/heads/master@{#28688}
2015-05-28 18:17:54 +00:00
bbudge
fcfb080eb9 Clean up aligned allocation code in preparation for SIMD alignments.
Moves alignment fill calculations into two static Heap methods.
Adds a Heap method to handle the complex case where filler is potentially needed before and after a heap object.
Makes DoubleAlignForDeserialization explicitly fill after an already
aligned object.

LOG=N
BUG=v8:4124

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

Cr-Commit-Position: refs/heads/master@{#28687}
2015-05-28 17:19:51 +00:00
mbrandy
62b61129f2 PPC: Make KeyedStores from a sloppy arguments array use a handler.
Port 3a1d7335cf

Original commit message:
This finishes up work begun by CL (https://codereview.chromium.org/546683003/) some months ago.

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

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

Cr-Commit-Position: refs/heads/master@{#28686}
2015-05-28 15:58:15 +00:00
mbrandy
99996b4bbe PPC: Fix '[crankshaft] Record inlined shared function infos instead of closures.'
R=bmeurer@chromium.org, dstence@us.ibm.com, michael_dawson@ca.ibm.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28685}
2015-05-28 15:57:16 +00:00
sergiyb
9088719ee5 Converted V8 CQ config to proto-format
This will land with https://chromereviews.googleplex.com/202967013

R=akuegel@chromium.org, machenbach@chromium.org
BUG=471767
NOTRY=true
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28684}
2015-05-28 15:02:53 +00:00
mvstanton
3a1d7335cf Make KeyedStores from a sloppy arguments array use a handler.
This finishes up work begun by CL (https://codereview.chromium.org/546683003/) some months ago.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28683}
2015-05-28 14:56:15 +00:00
bmeurer
dd430071e2 [turbofan] Simplify graph construction for for-in.
This is an initial step towards a faster and less incorrect
implementation of for-in in TurboFan.

R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28682}
2015-05-28 14:01:31 +00:00
mstarzinger
d8b94f34cc [turbofan] Introduce prediction for exception handlers.
This introduces a conservative prediction for each exception handler
whether it will locally catch an exception or re-throw it to outside
the code bondaries. It will allow for a more intuitive prediction of
whether an exception is considered "caught" or "uncaught".

R=bmeurer@chromium.org,yangguo@chromium.org
BUG=chromium:492522
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28681}
2015-05-28 13:23:03 +00:00
erikcorry
9079b99ad4 grokdump.py: work around int size limits on xrange
R=hpayer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28680}
2015-05-28 13:12:17 +00:00
machenbach
5effc7131a [test] Fix assert for predictable mode in test runner.
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#28679}
2015-05-28 13:06:49 +00:00
jochen
5df3b4ab5c Update all callsites of the TryCatch ctor to pass an Isolate
BUG=4134
R=vogelheim@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28678}
2015-05-28 12:49:41 +00:00
bmeurer
ce2b39f2f2 [turbofan] Record SharedFunctionInfo of inlined functions.
We need the shared function info of inlined functions to prevent code
flushing for their unoptimized code, and also to make sure that liveedit
can find the proper functions to deoptimize.

R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28677}
2015-05-28 12:12:52 +00:00
machenbach
77b7b39b4e [test] Use instrumented libc++ for asan and tsan builds.
BUG=chromium:489254
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28676}
2015-05-28 11:50:55 +00:00
bmeurer
b1e2d1e4c7 [deoptimizer] Materialize double values as smis whenever possible.
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28675}
2015-05-28 10:31:03 +00:00
bmeurer
b77df02713 [turbofan] Remove the JSGraph dependency from the ControlFlowOptimizer.
The control flow optimization should work independent of the JSGraph. We
used the JSGraph there because it was convinient, not because it was
necessary.

R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28674}
2015-05-28 09:13:05 +00:00
bmeurer
19482d29e5 [turbofan] Remove the useless SimplifiedOperatorReducer.
The SimplifiedOperatorReducer is (mostly) unused, except for the very
rough store elimination, and just eats compilation time.

R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28673}
2015-05-28 08:38:13 +00:00
bmeurer
388e791df9 [crankshaft] Record inlined shared function infos instead of closures.
The list of inlined functions is used in exactly two places - for live
edit and to prevent code flushing for inlined functions - and those are
fine with SharedFunctionInfo and don't require a closure.

This is one additional step towards inlining based on SharedFunctionInfo
instead of JSFunction.

R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28672}
2015-05-28 07:12:04 +00:00
yangguo
dc9f0d4642 Throw illegal exception when formatting with invalid template index.
R=arv@chromium.org
BUG=chromium:492526
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28671}
2015-05-28 07:05:12 +00:00
yangguo
36d8363c1c Do not eagerly convert exception to string when creating a message object
R=mstarzinger@chromium.org
BUG=chromium:490680
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#28670}
2015-05-28 06:30:14 +00:00
bmeurer
a06631e9eb [turbofan] Remove frame state TODOs from VisitForInBody.
Neither the increment nor the comparison can deoptimize, so we don't
need proper frame states there.

R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28669}
2015-05-28 04:10:52 +00:00
v8-autoroll
3503d1ef07 Update V8 DEPS.
Rolling v8/build/gyp to 29e94a3285ee899d14d5e56a6001682620d3778f

Rolling v8/tools/clang to dc8f173e7fe10badbd9e29cd6eadc32ec552e691

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28668}
2015-05-28 03:28:41 +00:00