Commit Graph

24535 Commits

Author SHA1 Message Date
v8-autoroll
a345295605 Update V8 DEPS.
Rolling v8/tools/clang to 4943801a353f2f58e7268e17803d87cf78f2f732

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29793}
2015-07-23 05:49:39 +00:00
mstarzinger
1c43c3ae73 [turbofan] Get rid of overly abstract SimplifiedGraphBuilder.
R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29792}
2015-07-22 18:28:37 +00:00
danno
d1a6dfaf4d [turbofan]: Fix tail calls edge cases and add tests
Review URL: https://codereview.chromium.org/1245523002

Cr-Commit-Position: refs/heads/master@{#29791}
2015-07-22 18:27:35 +00:00
mstarzinger
2c07b0d045 [turbofan] Preserve cached code across GCs.
This preserves the context-independent entry in an optimized code map
across GCs when the code is considered young (i.e. less than 3 ages).
Note that any context-dependent entry for the same code will still be
flushed immediately when the respective context dies, hence context
lifetime is not increased.

R=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29790}
2015-07-22 14:04:08 +00:00
mvstanton
26ffee2c71 Eliminate redundant descriptor ElementTransitionAndStoreDescriptor.
It's just the same as StoreTransitionDescriptor.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#29789}
2015-07-22 12:37:27 +00:00
mstarzinger
1c85735710 Allow for optimized code map to have zero entries.
This allows the optimized code map to contain no context-dependent
entries, but still hold one context-independent entry. This is a
precursor to extending the lifetime of the context-independent entry.

R=mvstanton@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29788}
2015-07-22 11:46:56 +00:00
mstarzinger
1f295980b7 Fix pushing of register in CallConstructStub outside frame.
This fixes a recent regression where the register holding the original
receiver was pushed onto the stack before the internal frame within the
CallStubInRecordCallTarget helper was created. That in turn confused
the stack walker when allocations in these stubs failed.

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

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

Cr-Commit-Position: refs/heads/master@{#29787}
2015-07-22 11:11:09 +00:00
jochen
4da289c55a Store offset between fixed typed array base and data start in object
The layout of fixed typed array base is then capable of handling
external typed arrays as well. In a follow-up CL, I'll delete external
typed arrays, and use fixed typed array base instead

BUG=v8:3996
R=jarin@chromium.org,mstarzinger@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#29786}
2015-07-22 10:32:25 +00:00
mstarzinger
85d3b16386 [arm] Fix pushing of stale register in CallConstructStub.
This fixes a recent regression where the register usually holding the
original receiver was pushed onto the stack even when the stub was not
compiled for super calls (i.e. IsSuperConstructorCall). This led to
untagged values being present in the stack frame.

R=jacob.bramley@arm.com
BUG=chromium:512573
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#29785}
2015-07-22 08:49:59 +00:00
yangguo
e8752eb9ce Debugger: fix crash when debugger is enabled between parsing and compiling.
The background parser checks for debugger state in its constructor. This
is not good enough, since the debugger state may change afterwards, but
before compiling takes place. As the background parser can only parse
lazily, this could mean that due to debugging, we try to eagerly compile
an inner function we have not eagerly parsed.

R=jochen@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29784}
2015-07-22 07:37:38 +00:00
mtrofin
3e3608cdd5 Unit tests for the live range conflict detection mechanism (CoalescedLiveRanges) in the Greedy Allocator.
Consolidated conflict detection and traversal logic in CoalescedLiveRanges to avoid duplication in both code and testing. In addition, this change achieves better separation between CoalescedLiveRanges and other register allocator components, improving testability and maintainability.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#29783}
2015-07-22 04:50:22 +00:00
v8-autoroll
9ec20f9c36 Update V8 DEPS.
Rolling v8/third_party/android_tools to 6a7921fdbc510e30de5bb38c5dcf9e524713ca6b

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29782}
2015-07-22 03:26:50 +00:00
bbudge
5d8c105428 SIMD.js: Update Float32x4 and tests to current spec.
LOG=N
BUG=v8:4124

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

Cr-Commit-Position: refs/heads/master@{#29781}
2015-07-22 03:14:06 +00:00
bradnelson
0c53c66938 Make simdjs tests redownload on a revision change.
LOG=N
BUG=None
TEST=manual,local
R=bbudge@chromium.org,machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29780}
2015-07-21 19:02:32 +00:00
adamk
4b8200078a Remove unnecessary coupling between Promise tests and Object.observe
Many mjsunit tests (as well as the promises-aplus adapter scripts) were
using Object.observe simply for microtask-enqueueing purposes. Replaced
such uses with %EnqueueMicrotask.

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

Cr-Commit-Position: refs/heads/master@{#29779}
2015-07-21 17:17:07 +00:00
hpayer
4829bbc5d1 Revert "Directly remove slot buffer entries in deoptimized code objects."
This reverts commit 80b3f16951.

Revert "Record code slots that may point to evacuation candidate objects after deoptimizing them."

This reverts commit 4621210cfe.

BUG=chromium:507840
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#29778}
2015-07-21 16:14:44 +00:00
rmcilroy
fbe085fd75 [turbofan] Change RawMachineAssembler to take a CallDescriptor instead of a MachineSignature.
The InterpreterAssembler needs to specify a specific CallDescriptor type
instead of using the SimplifiedCDescriptor type. This CL makes it possible
to specify the CallDescriptor used by the RawMachineAssembler instead of
specifying a MachineSignature.

Also removes instruction-selector-tester.h which was erroneously resurrected
at some point.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#29777}
2015-07-21 15:54:27 +00:00
ulan
7f6012c093 Declare deleted copy constructor and assignment operator of v8::Global to take const parameters.
This is required in order for Globals to be stored in STL containers.

Patch from Aaron Link <aaronlink@google.com>

BUG=

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

Cr-Commit-Position: refs/heads/master@{#29776}
2015-07-21 15:53:25 +00:00
dstence
bb3bb6b773 PPC: perf enhancement: Use larger heap page size on PPC.
Revisit of https://codereview.chromium.org/910333004.

Use 4MB heap page size over the default of 1MB.

This change provides an improvement of 1.86% on the composite octane
benchmark score on PPC. This is 0.56% more than if --min_semi_space_size=4
was used to specify a 4MB heap page size.

Additionally, two more tests required modification to account for
configurable heap page size.

R=svenpanne@chromium.org, hpayer@chromium.org, danno@chromium.org, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#29775}
2015-07-21 15:52:13 +00:00
mstarzinger
1b616a682f [arm] Address TODO in CallConstructStub::Generate.
R=jacob.bramley@arm.com

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

Cr-Commit-Position: refs/heads/master@{#29774}
2015-07-21 14:13:34 +00:00
mstarzinger
0c4be22cec [arm64] Address TODO in CallConstructStub::Generate.
R=jacob.bramley@arm.com

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

Cr-Commit-Position: refs/heads/master@{#29773}
2015-07-21 13:24:39 +00:00
ulan
5a556dfe31 ARM: make sure that the expected code size is computed in predictable scope.
BUG=v8:4277
LOG=NO

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

Cr-Commit-Position: refs/heads/master@{#29772}
2015-07-21 11:18:33 +00:00
epertoso
143f5ad893 Always run the second pass of the phantom callbacks synchronously if --predictable or --optimize_for_size are set.
R=jochen@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29771}
2015-07-21 10:53:00 +00:00
aperez
abcab811b4 Fix missing "re" module import in GDB support script
The gdb-v8-support.py script uses the "re" module to match regular expression,
but it does not import it, resulting in an error when loading the script from
GDB. This patch adds the missing import.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#29770}
2015-07-21 09:28:50 +00:00
machenbach
816f53358b [test] Fix timeouts for simdjs perf tests.
Also remove deprecated android_arm configs.

TBR=bradnelson@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#29769}
2015-07-21 08:52:03 +00:00
mlippautz
e40d453d4e Add scavenger events to GC tracer
BUG=

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

Cr-Commit-Position: refs/heads/master@{#29768}
2015-07-21 07:31:39 +00:00
binji
5e5fadb71c [d8] Remove deprecated calls from d8-readline
R=jochen@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#29767}
2015-07-21 03:28:43 +00:00
v8-autoroll
1eb8fa785b Update V8 DEPS.
Rolling v8/tools/clang to 33c2e4149926da7262361323a111605877add859

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29766}
2015-07-21 03:26:40 +00:00
chunyang.dai
65f18c9d6c X87: Debugger: prepare code for debugging on a per-function basis.
port 35c28ce0a7 (r29758).

original commit message:

    Prior to this patch, we enter a global debug mode whenever a break point
    is set. By entering this mode, all code is deoptimized and activated
    frames are recompiled and redirected to newly compiled debug code.

    After this patch, we only deoptimize/redirect for functions we want to
    debug. Trigger for this is Debug::EnsureDebugInfo, and having DebugInfo
    object attached to the SFI prevents optimization/inlining.

    The result is that we can have optimized code for functions without break
    points alongside functions that do have break points, which are not
    optimized.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#29765}
2015-07-21 02:52:35 +00:00
mbrandy
9c26942427 PPC: Debugger: prepare code for debugging on a per-function basis.
Port 35c28ce0a7

Original commit message:
    Prior to this patch, we enter a global debug mode whenever a break point
    is set. By entering this mode, all code is deoptimized and activated
    frames are recompiled and redirected to newly compiled debug code.

    After this patch, we only deoptimize/redirect for functions we want to
    debug. Trigger for this is Debug::EnsureDebugInfo, and having DebugInfo
    object attached to the SFI prevents optimization/inlining.

    The result is that we can have optimized code for functions without break
    points alongside functions that do have break points, which are not
    optimized.

R=yangguo@chromium.org, dstence@us.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:4132
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#29764}
2015-07-20 17:21:03 +00:00
danno
cca5e74a58 [turbofan]: Add a context relaxation Reducer
In many cases, the context that TurboFan's ASTGraphBuilder or subsequent
reduction operations attaches to nodes does not need to be that exact
context, but rather only needs to be one with the same native context,
because it is used internally only to fetch the native context, e.g. for
creating and throwing exceptions.

This reducer recognizes common cases where the context that is specified
for a node can be relaxed to a canonical, less specific one. This
relaxed context can either be the enclosing function's context or a specific
Module or Script context that is explicitly created within the function.

This optimization is especially important for TurboFan-generated code stubs
which use context specialization and inlining to generate optimal code.
Without context relaxation, many extraneous moves are generated to pass
exactly the right context to internal functions like ToNumber and
AllocateHeapNumber, which only need the native context. By turning context
relaxation on, these moves disappear because all these common internal
context uses are unified to the context passed into the stub function, which
is typically already in the correct context register and remains there for
short stubs. It also eliminates the explicit use of a specialized context
constant in the code stub in these cases, which could cause memory leaks.

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

Cr-Commit-Position: refs/heads/master@{#29763}
2015-07-20 17:16:14 +00:00
mstarzinger
d67e07f397 [turbofan] Move workaround with TDZ of 'this' variable.
Note that this just narrows the existing workaround for any 'this' in
derived constructors (having a temporal dead zone) so that we can still
recognize static cases correctly (i.e. when 'this' is provably outside
or inside the temporal dead zone).

R=rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29762}
2015-07-20 16:02:17 +00:00
epertoso
6a5285108b Takes the script offset into account when obtaining the column of the message.
R=jochen@chromium.org,yangguo@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29761}
2015-07-20 15:56:27 +00:00
jochen
4e263bc581 Add support for adding an external and a tagged pointer
This will be used to compute the base pointer of the new unified
representation for both on-heap and external typed arrays. The idea is
that either the external or the tagged pointer is 0 (although in
practice, if the tagged pointer is non-0, the external pointer will
contain the offset from the start of the on-heap typed array to the data
in the on-heap typed array).

The HAdd is marked as depending on new-space promotion, as the tagged
pointer might move during GC, and so the result of the addition needs to
be recomputed.

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

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

Cr-Commit-Position: refs/heads/master@{#29760}
2015-07-20 15:18:00 +00:00
epertoso
df2d1ef979 Don't run the second pass of the pending phantom callbacks if the heap has been torn down.
R=jochen@chromium.org
BUG=511204
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#29759}
2015-07-20 15:04:08 +00:00
yangguo
35c28ce0a7 Debugger: prepare code for debugging on a per-function basis.
Prior to this patch, we enter a global debug mode whenever a break point
is set. By entering this mode, all code is deoptimized and activated
frames are recompiled and redirected to newly compiled debug code.

After this patch, we only deoptimize/redirect for functions we want to
debug. Trigger for this is Debug::EnsureDebugInfo, and having DebugInfo
object attached to the SFI prevents optimization/inlining.

The result is that we can have optimized code for functions without break
points alongside functions that do have break points, which are not
optimized.

R=mstarzinger@chromium.org, ulan@chromium.org
BUG=v8:4132
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#29758}
2015-07-20 14:53:37 +00:00
jochen
8019833da7 Fix stack trace printing in d8
R=yangguo@chromium.org
BUG=chromium:511988
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#29757}
2015-07-20 14:49:38 +00:00
rossberg
2e040f54e9 [strong] Keep language mode consistent
R=mstarzinger@chromium.org
BUG=v8:4312
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#29756}
2015-07-20 14:31:36 +00:00
mstarzinger
1a8776db25 Activate preserving of optimized code map accross GCs.
This enables --noflush-optimized-code-cache which allows preserving
entries in the optimized code map accross GCs. This only applies to
values being reachable through other paths.

R=hpayer@chromium.org,hablich@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29755}
2015-07-20 14:18:52 +00:00
mstarzinger
ce6d2241bc Add function literal variable to declaration list.
This adds the implicit function variable for a function literal to the
declarations list in scope analysis, instead of specially handling it
throughout all back-ends.

R=rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29754}
2015-07-20 14:15:14 +00:00
mstarzinger
37c2094e8c [turbofan] Support handling of default super calls.
This implements the missing %DefaultConstructorCallSuper runtime
functionality, thereby allowing all compilers to fall-back to that
implementation when the appropriate intrinsic is missing.

R=rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29753}
2015-07-20 13:50:26 +00:00
rossberg
fa94ca3ea4 [es6] Check declaration conflicts between non-simple parameters and the function body
Also, more tests for parameters containing functions or eval or both.

R=adamk@chromium.org, caitpotter88@gmail.com, littledan@chromium.org
BUG=v8:811
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#29752}
2015-07-20 13:49:13 +00:00
hpayer
23ca3ec88f Revert of Reland concurrent sweeping of code space. (patchset #5 id:80001 of https://codereview.chromium.org/1225733002/)
Reason for revert:
Tests became flaky.

Original issue's description:
> Reland concurrent sweeping of code space.
>
> BUG=chromium:506778,chromium:506957,chromium:507211
> LOG=n
>
> Committed: https://crrev.com/806b81f11e3bfaef0d4330c7669e6934074be9cb
> Cr-Commit-Position: refs/heads/master@{#29748}

TBR=jochen@chromium.org,mvstanton@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:506778,chromium:506957,chromium:507211

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

Cr-Commit-Position: refs/heads/master@{#29751}
2015-07-20 12:07:25 +00:00
yangguo
d508345123 Do not expect verbatim JPY symbol in test.
The choice for the symbol seems to be locale-dependent.

R=jochen@chromium.org
BUG=v8:4314
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#29750}
2015-07-20 10:52:51 +00:00
mstarzinger
d4cd3f5ef3 Fix installing of SIMD object on global object.
We should not install the SIMD object on the global object unless
support for SIMD is actually turned on by the flag. Otherwise calling
SIMD.Float32x4() will hit unreachable code. We accidentally SIMD.

R=rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29749}
2015-07-20 10:37:58 +00:00
hpayer
806b81f11e Reland concurrent sweeping of code space.
BUG=chromium:506778,chromium:506957,chromium:507211
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#29748}
2015-07-20 10:36:47 +00:00
ishell
9e6647c216 Speedup some slow running stack-overflow tests.
BUG=chromium:505007
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#29747}
2015-07-20 09:50:53 +00:00
jacob.bramley
bfe700b8ed Use a label-branch in CheckConstPool.
This removes a dependency on the size of the pool. Whilst the size is
checked in debug mode, it is still more robust to use a label.

This should also be cherry-picked to fix 4.4.63.20. (At that time, the
size of the pool was _not_ checked, and was sometimes wrong.)

This partially reverts 879550c, "[arm] Don't call branch_offset within
CheckConstPool." However, branch_offset now only blocks the constant
pool if it is not already blocked.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#29746}
2015-07-20 09:03:21 +00:00
adamk
e6cb6bb6b7 Fix element enumeration on String wrappers with dictionary elements
BUG=chromium:510426
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#29745}
2015-07-20 09:01:06 +00:00
yangguo
01902e4eab Debugger: use FrameInspector in ScopeIterator to find context.
In optimized code, it's not guaranteed that the current context
is stored in its frame slot.

R=bmeurer@chromium.org
BUG=v8:4309
LOG=N

Committed: https://crrev.com/3a0ee39cbde6a9778cfc4e2a6a0a8ff68933ff38
Cr-Commit-Position: refs/heads/master@{#29697}

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

Cr-Commit-Position: refs/heads/master@{#29744}
2015-07-20 08:53:39 +00:00