bmeurer
acd9c46ca7
[turbofan] Optimize certain chains of Branch into a Switch.
...
This adds a new ControlFlowOptimizer that - for now - recognizes chains
of Branches generated by the SwitchBuilder for a subset of javascript
switches into Switch nodes. Those Switch nodes are then lowered to
either table or lookup switches.
Also rename Case to IfValue (and introduce IfDefault) for consistency.
BUG=v8:3872
LOG=n
Review URL: https://codereview.chromium.org/931623002
Cr-Commit-Position: refs/heads/master@{#26691}
2015-02-17 13:29:46 +00:00
jarin
8bd0bd522e
[turbofan] Make the representation type component independent of the semantic component.
...
R=rossberg@chromium.org
BUG=
Review URL: https://codereview.chromium.org/904863002
Cr-Commit-Position: refs/heads/master@{#26621}
2015-02-12 15:21:33 +00:00
bmeurer
4465836c8a
Fix invalid use of int in Zone.
...
Review URL: https://codereview.chromium.org/924453002
Cr-Commit-Position: refs/heads/master@{#26609}
2015-02-12 12:47:18 +00:00
mstarzinger
ec4305e48b
Mark some common operator with Property::kNoThrow.
...
R=bmeurer@chromium.org
TEST=unittests/CommonOperatorTest
Review URL: https://codereview.chromium.org/912393002
Cr-Commit-Position: refs/heads/master@{#26584}
2015-02-11 15:02:41 +00:00
svenpanne
d1b5aa0716
Removed most of the bogus CompilationInfo constructor calls.
...
A CompilationInfo constructed from just an Isolate* and a Zone* is in
weird an inconsistent state (calling e.g. flags() on it will crash),
so we need to avoid them. This CL removes almost all of them, the
remaining 2 call sites in (for testing only) will be handled in a
separate CL. Things which have been changed:
* Linkage is basically a decorator for CallDescriptor now.
* ChangeLowering doesn't need Linkage at all.
* JSGenericLowering doesn't need a full CompilationInfo*, just a
single flag.
* JSContextSpecializer doesn't need the full CompilationInfo, just a
Context.
* Removed unused CompilationInfo from SimplifiedLoweringTester.
This nicely decouples things already a bit more, but there's still
work to do...
Review URL: https://codereview.chromium.org/899803003
Cr-Commit-Position: refs/heads/master@{#26580}
2015-02-11 14:12:15 +00:00
vogelheim
2ea8df76ba
Fix cctest + unittest to work with an external snapshot.
...
To do so, extract startup_data_util from d8 and use it those executables.
BUG=
Review URL: https://codereview.chromium.org/913703002
Cr-Commit-Position: refs/heads/master@{#26547}
2015-02-10 15:38:09 +00:00
dcarney
4045b72ce3
[turbofan] remove one level of indirection in phi inputs
...
BUG=
Review URL: https://codereview.chromium.org/910753002
Cr-Commit-Position: refs/heads/master@{#26524}
2015-02-09 13:02:53 +00:00
bmeurer
feb2890711
[turbofan] Initial support for Switch.
...
Adds Switch and Case operators to TurboFan and handles them
appropriately in instruction selection and code generation.
BUG=v8:3872
LOG=n
Review URL: https://codereview.chromium.org/892513003
Cr-Commit-Position: refs/heads/master@{#26515}
2015-02-09 08:56:12 +00:00
dcarney
996fa7d36e
[turbofan] Remove global InstructionOperand caches.
...
Review URL: https://codereview.chromium.org/904693002
Cr-Commit-Position: refs/heads/master@{#26479}
2015-02-06 09:00:50 +00:00
michael_dawson
308d913a92
Contribution of PowerPC port (continuation of 422063005) - PPC dir update
...
Contribution of PowerPC port (continuation of 422063005, 817143002 and 866843003)
This patch brings the ppc directories up to date with our repo. We have
removed 5 individual optimizations which require changes in both the ppc and common
directories so they can be more easily reviewed on their own in subsequent patches.
Subsequent patches will cover:
- individual optimizations for PPC (5)
- remaining AIX changes not resolved by 4.8 compiler (4.8 is only recently available
for AIX)
- incremental updates required to ppc directories due to platform specific changes
made in google repos while we complete the above steps.
With the update there are still some timeouts seen when run in simulated mode which
may be a result of the missing optimizations. Once we have the optimizations in
we will review the simulation results and address/exclude tests as necessary so that
the simulated runs are clean.
new file: src/compiler/ppc/code-generator-ppc.cc
new file: src/compiler/ppc/instruction-codes-ppc.h
new file: src/compiler/ppc/instruction-selector-ppc.cc
new file: src/compiler/ppc/linkage-ppc.cc
modified: src/ic/ppc/handler-compiler-ppc.cc
modified: src/ic/ppc/ic-compiler-ppc.cc
modified: src/ic/ppc/ic-ppc.cc
modified: src/ic/ppc/stub-cache-ppc.cc
modified: src/ppc/assembler-ppc.cc
modified: src/ppc/assembler-ppc.h
modified: src/ppc/builtins-ppc.cc
modified: src/ppc/code-stubs-ppc.cc
modified: src/ppc/code-stubs-ppc.h
modified: src/ppc/codegen-ppc.cc
modified: src/ppc/constants-ppc.h
modified: src/ppc/deoptimizer-ppc.cc
modified: src/ppc/disasm-ppc.cc
modified: src/ppc/full-codegen-ppc.cc
modified: src/ppc/interface-descriptors-ppc.cc
modified: src/ppc/lithium-codegen-ppc.cc
modified: src/ppc/lithium-codegen-ppc.h
modified: src/ppc/lithium-ppc.cc
modified: src/ppc/lithium-ppc.h
modified: src/ppc/macro-assembler-ppc.cc
modified: src/ppc/macro-assembler-ppc.h
modified: src/ppc/regexp-macro-assembler-ppc.cc
modified: src/ppc/regexp-macro-assembler-ppc.h
modified: src/ppc/simulator-ppc.cc
modified: src/ppc/simulator-ppc.h
new file: test/unittests/compiler/ppc/instruction-selector-ppc-unittest.cc
R=danno@chromium.org , svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/901083004
Cr-Commit-Position: refs/heads/master@{#26471}
2015-02-05 19:02:07 +00:00
marja
d21b9a1422
Add strong mode.
...
It doesn't do anything for now, but it implies strict mode. Added tests to
test-parsing.cc to test that.
BUG=
Review URL: https://codereview.chromium.org/898983002
Cr-Commit-Position: refs/heads/master@{#26460}
2015-02-05 14:11:47 +00:00
Benedikt Meurer
9dff8185dd
Revert "[turbofan] Make Factory::NewNumber() always return the minus_zero_value."
...
This reverts commit f578d35ba8
because
(immutable) heap numbers are surprisingly mutable in V8. Someone else
might want to cleanup the mess, otherwise we'll just keep it this way.
TBR=jkummerow@chromium.org
BUG=chromium:454894
LOG=y
Review URL: https://codereview.chromium.org/898973003
Cr-Commit-Position: refs/heads/master@{#26447}
2015-02-05 04:58:49 +00:00
dcarney
4116900d8f
[turbofan] Don't allocate UnallocatedOperands in Zone memory during instruction selection
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/889843003
Cr-Commit-Position: refs/heads/master@{#26424}
2015-02-04 12:39:07 +00:00
marja
c7851da4ae
Introduce LanguageMode, drop StrictMode.
...
This enables adding more language modes in the future.
For maximum flexibility, LanguageMode is a bitmask, so we're not restricted to
use a sequence of language modes which are progressively stricter, but we can
express the language mode as combination of features.
For now, LanguageMode can only be "sloppy" or "strict", and there are
STATIC_ASSERTS in places which need to change when more modes are added.
LanguageMode is a bit like the old LanguageMode when "extended" mode was still
around (see https://codereview.chromium.org/8417035 and
https://codereview.chromium.org/181543002 ) except that it's transmitted through
all the layers (there's no StrictModeFlag).
BUG=
Review URL: https://codereview.chromium.org/894683003
Cr-Commit-Position: refs/heads/master@{#26419}
2015-02-04 09:34:26 +00:00
Benedikt Meurer
d8cfbc633d
[turbofan] Split pure nodes in the scheduler if beneficial.
...
If a (pure) node has two or more uses, but there exists a path from the
common dominator of these uses to end, which does not contain a use,
then we split the node such that no unnecessary computation takes place.
Note however, that this only applies if the node cannot be hoisted out
of a loop.
BUG=v8:3864
LOG=n
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/899433005
Cr-Commit-Position: refs/heads/master@{#26404}
2015-02-03 14:51:08 +00:00
dcarney
81091e62b9
[turbofan] push virtual register field down to InstructionOperand
...
BUG=
Review URL: https://codereview.chromium.org/893913004
Cr-Commit-Position: refs/heads/master@{#26377}
2015-02-02 11:38:46 +00:00
bmeurer
c65ae4f10c
Reland "Initial switch to Chromium-style CHECK_* and DCHECK_* macros.".
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/877753007
Cr-Commit-Position: refs/heads/master@{#26346}
2015-01-30 09:29:41 +00:00
Benedikt Meurer
883852293a
Revert "Make GCC happy again." and "Initial switch to Chromium-style CHECK_* and DCHECK_* macros.".
...
This reverts commit 6a4c0a3bae
and commit
0deaa4b629
for breaking GCC bots.
TBR=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/893533003
Cr-Commit-Position: refs/heads/master@{#26342}
2015-01-30 07:19:57 +00:00
bmeurer
0deaa4b629
Initial switch to Chromium-style CHECK_* and DCHECK_* macros.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/888613002
Cr-Commit-Position: refs/heads/master@{#26340}
2015-01-30 06:25:36 +00:00
bmeurer
1df5fed50a
[turbofan] Cleanup the NodeProperties.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/883613006
Cr-Commit-Position: refs/heads/master@{#26316}
2015-01-29 09:18:09 +00:00
jarin
3c9f98516c
[turbofan] Use unboxed doubles in range types.
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/882063002
Cr-Commit-Position: refs/heads/master@{#26307}
2015-01-28 13:55:45 +00:00
mstarzinger
c5833e8596
Add missing FrameState to JSToName nodes.
...
R=jarin@chromium.org
TEST=mjsunit/regress/regress-crbug-451770
BUG=chromium:451770
LOG=N
Review URL: https://codereview.chromium.org/880963002
Cr-Commit-Position: refs/heads/master@{#26305}
2015-01-28 11:40:02 +00:00
jarin
5bd8407f8c
Reland of "Steps towards unification of number bitset and range types."
...
This reverts commit 7619374979
.
BUG=
Review URL: https://codereview.chromium.org/877643002
Cr-Commit-Position: refs/heads/master@{#26301}
2015-01-28 08:42:32 +00:00
bmeurer
59a02ebdbe
[turbofan] Ensure that NTLs are always properly connected to the end.
...
Up until now we used a special Terminate node to artifically connect non
terminating loops to the End node, but this was kind of adhoc and didn't
work for the CFG. So without all kinds of weird hacks, the end block in
the CFG will not be connected to NTLs, which makes it impossible to
compute post dominance / control dependence in the current setting.
So instead of Terminate, we add a special Branch to NTLs, whose
condition is the special Always node, which corresponds to True, except
that it cannot be folded away. This way we don't need any special
machinery in the scheduler, since it's just a regular Branch.
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/875263004
Cr-Commit-Position: refs/heads/master@{#26294}
2015-01-27 14:02:28 +00:00
bmeurer
d93c4d19f1
[x86] Disable AVX unless the operating system explicitly claims to support it.
...
BUG=chromium:452033, v8:3846
LOG=y
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/878063002
Cr-Commit-Position: refs/heads/master@{#26288}
2015-01-27 09:59:24 +00:00
bmeurer
44f1b9d148
[turbofan] Some cleanup for scheduler unittests.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/877033002
Cr-Commit-Position: refs/heads/master@{#26283}
2015-01-27 07:48:10 +00:00
danno
c6ae373335
Convert compiler cctest to unittests: SchedulerTest
...
R=mstarzinger@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/863213003
Cr-Commit-Position: refs/heads/master@{#26267}
2015-01-26 11:21:24 +00:00
bmeurer
4f1597a92d
[turbofan] Add new JSIntrinsicsLowering reducer.
...
The lowering of intrinsics is therefore now decoupled from the general
inlining logic.
TEST=cctest,unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/872363002
Cr-Commit-Position: refs/heads/master@{#26263}
2015-01-26 09:06:03 +00:00
danno
d1e45d9b00
Distinquish TestWithIsolateAndZone from TestWithZone
...
Allows unit tests that just need a zone and no isolate to avoid the overhead of
creating one.
R=mstarzinger@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/871843004
Cr-Commit-Position: refs/heads/master@{#26256}
2015-01-23 16:29:57 +00:00
danno
c7b09aac31
Remove the dependency of Zone on Isolate
...
Along the way:
- Thread isolate parameter explicitly through code that used to
rely on getting it from the zone.
- Canonicalize the parameter position of isolate and zone for
affected code
- Change Hydrogen New<> instruction templates to automatically
pass isolate
R=mstarzinger@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/868883002
Cr-Commit-Position: refs/heads/master@{#26252}
2015-01-23 15:20:00 +00:00
bmeurer
cd2bc96808
[turbofan] Move GetCommonDominator to BasicBlock.
...
Also add some unittests for the dominator stuff.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/865393004
Cr-Commit-Position: refs/heads/master@{#26241}
2015-01-23 09:55:48 +00:00
danno
87e1426ce5
Convert compiler cctest to unit tests, part 1
...
R=bmeurer@chromium.org
LOG=n
Review URL: https://codereview.chromium.org/867583002
Cr-Commit-Position: refs/heads/master@{#26222}
2015-01-22 14:16:55 +00:00
bmeurer
c9283148d1
[turbofan] Cleanup Schedule and related classes.
...
- Move unit tests to schedule-unittests.cc.
- Remove pre-C++11 cruft.
- Fix some include weirdness.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/864293002
Cr-Commit-Position: refs/heads/master@{#26220}
2015-01-22 13:01:13 +00:00
mstarzinger
558efe21f0
Add missing BailoutId and FrameState to with statements.
...
R=bmeurer@chromium.org
TEST=mjsunit/regress/regress-crbug-450642
BUG=chromium:450642
LOG=N
Review URL: https://codereview.chromium.org/865833002
Cr-Commit-Position: refs/heads/master@{#26218}
2015-01-22 10:57:42 +00:00
svenpanne
8fb593047a
Removed bogus threading test to make TSAN happy.
...
TSAN hits an internal assertion on a self-join, and the test is not
really that useful, so let's just remove it.
BUG=https://code.google.com/p/thread-sanitizer/issues/detail?id=88
LOG=n
Review URL: https://codereview.chromium.org/824243007
Cr-Commit-Position: refs/heads/master@{#26217}
2015-01-22 10:23:58 +00:00
bmeurer
7619374979
Revert of Steps towards unification of number bitset and range types. (patchset #4 id:60001 of https://codereview.chromium.org/837723006/ )
...
Reason for revert:
Breaks test-types/Maybe, i.e.
out/Release/cctest --random-seed=-707413401 test-types/Maybe
started failing afterwards
Original issue's description:
> Steps towards unification of number bitset and range types.
>
> - New invariant on union types: if the union has a range then the number
> bits in the bitset must be cleared.
>
> - Various tweaks in intersection and union to satisfy the invariant.
>
> - Exposed and used representation bits in range types (and the Limits
> helper class).
>
> - Implemented Glb for ranges so that the Is predicate handles
> ranges correctly.
>
> - Change typer weakening so that it does not rely on GetRange.
> However, the code still seems to be a bit fragile.
>
> - Removed the Smi types from the type system core, instead introduced
> Signed31, Unsigned30 and created constructors for Small(Un)Signed
> that point to the right type for the architecture.
>
> - Punched a hole in the config to be able to get to the isolate so
> that it is possible to allocate heap numbers for newly created
> ranges.
>
> Patch by jarin@chromium.prg , original review here:
> https://codereview.chromium.org/795713003/
>
> TBR=jarin@chromium.org
> BUG=
>
> Committed: https://crrev.com/2764fd8d1a266a9136c987c2483492113b0c8d80
> Cr-Commit-Position: refs/heads/master@{#26197}
TBR=jkummerow@chromium.org ,rossberg@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=
Review URL: https://codereview.chromium.org/868583002
Cr-Commit-Position: refs/heads/master@{#26207}
2015-01-22 05:33:39 +00:00
rossberg
2764fd8d1a
Steps towards unification of number bitset and range types.
...
- New invariant on union types: if the union has a range then the number
bits in the bitset must be cleared.
- Various tweaks in intersection and union to satisfy the invariant.
- Exposed and used representation bits in range types (and the Limits
helper class).
- Implemented Glb for ranges so that the Is predicate handles
ranges correctly.
- Change typer weakening so that it does not rely on GetRange.
However, the code still seems to be a bit fragile.
- Removed the Smi types from the type system core, instead introduced
Signed31, Unsigned30 and created constructors for Small(Un)Signed
that point to the right type for the architecture.
- Punched a hole in the config to be able to get to the isolate so
that it is possible to allocate heap numbers for newly created
ranges.
Patch by jarin@chromium.prg , original review here:
https://codereview.chromium.org/795713003/
TBR=jarin@chromium.org
BUG=
Review URL: https://codereview.chromium.org/837723006
Cr-Commit-Position: refs/heads/master@{#26197}
2015-01-21 15:29:22 +00:00
bmeurer
4b31a97da3
Remove deprecated v8::base::OS::nan_value().
...
Use std::numeric_limits<double>::quiet_NaN() and
std::numeric_limits<float>::quiet_NaN() instead.
Review URL: https://codereview.chromium.org/864803002
Cr-Commit-Position: refs/heads/master@{#26195}
2015-01-21 14:38:58 +00:00
titzer
3442a5f9e0
[turbofan] First version of loop peeling.
...
BUG=
Review URL: https://codereview.chromium.org/816053002
Cr-Commit-Position: refs/heads/master@{#26149}
2015-01-20 09:45:17 +00:00
Ben L. Titzer
396381f944
[turbofan] Rename IrOpcode predicate IsLeafOpcode to IsConstantOpcode.
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/863513002
Cr-Commit-Position: refs/heads/master@{#26141}
2015-01-19 15:35:16 +00:00
bmeurer
f578d35ba8
[turbofan] Make Factory::NewNumber() always return the minus_zero_value.
...
TEST=unittests
Review URL: https://codereview.chromium.org/857783002
Cr-Commit-Position: refs/heads/master@{#26124}
2015-01-19 08:07:37 +00:00
jarin
2e4e43a2dc
[turbofan] Add frame state to the PlainPrimitiveToNumber unit test.
...
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/792043007
Cr-Commit-Position: refs/heads/master@{#26113}
2015-01-16 22:21:22 +00:00
mstarzinger
9fbe872137
Enable test coverage for --turbo-deoptimization mode.
...
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/845193004
Cr-Commit-Position: refs/heads/master@{#26102}
2015-01-16 12:53:30 +00:00
bmeurer
835cc463a8
[turbofan] Initial attempt to cleanup Node and related classes.
...
- Make Node::Inputs and Node::Uses mostly STL compliant.
- Get rid of some pre-C++11 crappiness.
- Start moving unit tests from cctest to unittests.
- TrimInputCount() now tries to reserve inputs slots for
later appending.
- Fix numerous style guide violations.
TEST=cctest,unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/851263002
Cr-Commit-Position: refs/heads/master@{#26098}
2015-01-16 11:04:22 +00:00
Sven Panne
e4c5b84652
Contribution of PowerPC port (continuation of 422063005)
...
Contribution of PowerPC port (continuation of 422063005). The inital patch
covers the core changes to the common files. Subsequent patches will cover
changes to common files to support AIX and to update the ppc directories so
they are current with the changes in the rest of the project.
This is based off of the GitHub repository
https://github.com/andrewlow/v8ppc
BUG=
R=svenpanne@chromium.org , danno@chromium.org , sevnpanne@chromium.org
Review URL: https://codereview.chromium.org/817143002
Cr-Commit-Position: refs/heads/master@{#26091}
2015-01-16 07:42:15 +00:00
bmeurer
a9d0d23405
Revert of [turbofan] Make Factory::NewNumber() always return the minus_zero_value. (patchset #1 id:1 of https://codereview.chromium.org/838263006/ )
...
Reason for revert:
Breaks the tree
Original issue's description:
> [turbofan] Make Factory::NewNumber() always return the minus_zero_value.
>
> TEST=unittests
> R=mstarzinger@chromium.org , dcarney@chromium.org
>
> Committed: https://crrev.com/55b3e268b2895e2c09230d39669a75b6ab4e7e4d
> Cr-Commit-Position: refs/heads/master@{#26080}
TBR=dcarney@chromium.org ,mstarzinger@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/853683009
Cr-Commit-Position: refs/heads/master@{#26081}
2015-01-15 15:29:42 +00:00
Benedikt Meurer
55b3e268b2
[turbofan] Make Factory::NewNumber() always return the minus_zero_value.
...
TEST=unittests
R=mstarzinger@chromium.org , dcarney@chromium.org
Review URL: https://codereview.chromium.org/838263006
Cr-Commit-Position: refs/heads/master@{#26080}
2015-01-15 15:10:05 +00:00
bmeurer
dd6ce12645
[turbofan] Turn IrOpcode::IsXXX() into range checks.
...
TEST=unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/807573004
Cr-Commit-Position: refs/heads/master@{#26079}
2015-01-15 15:07:39 +00:00
bmeurer
4914716387
Revert of [turbofan] Use PlainPrimitiveToNumber whenever possible. (patchset #1 id:1 of https://codereview.chromium.org/852763002/ )
...
Reason for revert:
Tanks performance of SQLite and towers.c.
Original issue's description:
> [turbofan] Use PlainPrimitiveToNumber whenever possible.
>
> TEST=cctest,unittests
> R=jarin@chromium.org
>
> Committed: https://crrev.com/1a5db24e6bf831e61e3f4aa0c252f77e48c3689c
> Cr-Commit-Position: refs/heads/master@{#26071}
TBR=jarin@chromium.org ,dcarney@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/852153003
Cr-Commit-Position: refs/heads/master@{#26078}
2015-01-15 13:26:55 +00:00
bmeurer
1a5db24e6b
[turbofan] Use PlainPrimitiveToNumber whenever possible.
...
TEST=cctest,unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/852763002
Cr-Commit-Position: refs/heads/master@{#26071}
2015-01-15 09:49:23 +00:00
dcarney
e6552d4917
Reland "[turbofan] simplify gap ordering"
...
BUG=
Review URL: https://codereview.chromium.org/854703002
Cr-Commit-Position: refs/heads/master@{#26069}
2015-01-15 09:06:05 +00:00
dcarney
a7e3c71b23
add register allocator regression test
...
BUG=
Review URL: https://codereview.chromium.org/852633002
Cr-Commit-Position: refs/heads/master@{#26068}
2015-01-15 08:56:10 +00:00
baptiste.afsa
51f3c66b64
[turbofan] Allow 0.0 as immediate for floating-point comparison on arm/arm64.
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/850073002
Cr-Commit-Position: refs/heads/master@{#26066}
2015-01-15 06:31:07 +00:00
bmeurer
70b32e4b8a
[turbofan] Fix truncation/representation sloppiness wrt. bool/bit.
...
TEST=cctest,mjsunit,unittests
BUG=v8:3812
LOG=y
Review URL: https://codereview.chromium.org/850013003
Cr-Commit-Position: refs/heads/master@{#26051}
2015-01-14 12:06:56 +00:00
bmeurer
214387fce1
Revert of [turbofan] Improve typed lowering of JSBitwiseAnd. (patchset #1 id:1 of https://codereview.chromium.org/811653004/ )
...
Reason for revert:
Breaks SQLite
Original issue's description:
> [turbofan] Improve typed lowering of JSBitwiseAnd.
>
> TEST=unittests
> R=jarin@chromium.org
>
> Committed: https://crrev.com/284e1108182995abe85f580bc813d26491642b8c
> Cr-Commit-Position: refs/heads/master@{#26046}
TBR=jarin@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/795833006
Cr-Commit-Position: refs/heads/master@{#26048}
2015-01-14 09:07:07 +00:00
Benedikt Meurer
284e110818
[turbofan] Improve typed lowering of JSBitwiseAnd.
...
TEST=unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/811653004
Cr-Commit-Position: refs/heads/master@{#26046}
2015-01-14 07:40:32 +00:00
balazs.kilvady
3da5a729e8
MIPS: [turbofan] Improve code generation for unordered comparisons.
...
Port c24220c0c1
TEST=cctest,unittests
BUG=
Review URL: https://codereview.chromium.org/850733004
Cr-Commit-Position: refs/heads/master@{#26045}
2015-01-13 20:28:13 +00:00
bmeurer
1fa21bfd39
[turbofan] Reduce Word32And masking with shifted inputs.
...
TEST=unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/847113002
Cr-Commit-Position: refs/heads/master@{#26040}
2015-01-13 13:02:40 +00:00
bmeurer
9f292086f9
[turbofan] Add PlainPrimitiveToNumber simplified operator.
...
TEST=unittests
Review URL: https://codereview.chromium.org/845333002
Cr-Commit-Position: refs/heads/master@{#26038}
2015-01-13 11:02:57 +00:00
bmeurer
c24220c0c1
[turbofan] Improve code generation for unordered comparisons.
...
TEST=cctest,unittests
Review URL: https://codereview.chromium.org/850653002
Cr-Commit-Position: refs/heads/master@{#26034}
2015-01-13 08:42:02 +00:00
bmeurer
0e8a6d4ec8
[turbofan] Canonicalize x - K to x + -K.
...
TEST=unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/846913002
Cr-Commit-Position: refs/heads/master@{#26027}
2015-01-12 15:02:06 +00:00
bmeurer
b6c7e11c10
[turbofan] Fix typo in IrOpcode::Mnemonic.
...
TEST=unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/843043002
Cr-Commit-Position: refs/heads/master@{#26014}
2015-01-09 14:20:03 +00:00
bmeurer
5157472539
[turbofan] Cleanup duplicated/unused code in InstructionSelector.
...
- Use C++11 range based for loops.
- Remove duplicated virtual register set in unittests.
- Don't expose implementation details of InstructionSelector.
TEST=unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/837423002
Cr-Commit-Position: refs/heads/master@{#25997}
2015-01-08 14:13:33 +00:00
bmeurer
fec1bba852
[turbofan] Correctify representation changes to bit.
...
TEST=cctest/test-representation-change,unittests,mjsunit/compiler/regress-bit-number-constant
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/840953003
Cr-Commit-Position: refs/heads/master@{#25987}
2015-01-08 09:48:41 +00:00
bmeurer
e53845d41c
[turbofan] Cleanup Graph and related classes.
...
- Move NodeMarker to its own file, and introduce a non
templatized base class.
- Cleanup the include hell.
- Sanitize the Node construction methods now that we
got rid of that GenericNode/GenericGraph stuff.
- Protect against NodeId overflow in Graph.
- Various minor cleanups.
TEST=cctest,mjsunit,unittests
Review URL: https://codereview.chromium.org/838783002
Cr-Commit-Position: refs/heads/master@{#25977}
2015-01-07 14:42:49 +00:00
bmeurer
ec35c52e54
[turbofan] Generalize constant propagation.
...
Also support additional number types (singleton ranges, NaN and minus
zero) for constant propagation in typed lowering.
TEST=unittests
Review URL: https://codereview.chromium.org/829303002
Cr-Commit-Position: refs/heads/master@{#25963}
2015-01-07 08:24:38 +00:00
Benedikt Meurer
9def087efc
[turbofan] Correctify JSToBoolean lowering.
...
Introduce a new AnyToBoolean simplified operator to handle the later
lowering of boolean conversions. Previously we tried to hack that with
the generic JSToBoolean, having its context set to zero, but that lead
to various problems/bugs and did not handle all cases.
TEST=cctest,unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/800833003
Cr-Commit-Position: refs/heads/master@{#25958}
2015-01-05 13:44:31 +00:00
bmeurer
c329a49d69
[turbofan] Fix incorrect minus zero handling in the unit tests.
...
TEST=unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/831203003
Cr-Commit-Position: refs/heads/master@{#25956}
2015-01-05 12:29:27 +00:00
bmeurer
643ed5b8be
[turbofan] Fix missing MachineOperator unittest.
...
The machine-operator-unittest.cc file was missing from unittests.gyp.
Fixed the compiler errors and added it back.
TBR=machenbach@chromium.org
Review URL: https://codereview.chromium.org/824243003
Cr-Commit-Position: refs/heads/master@{#25948}
2015-01-02 07:44:52 +00:00
bmeurer
eeec886e5f
[turbofan] Deinlinify OperatorProperties implementation.
...
TEST=cctest,unittests
R=jochen@chromium.org
Review URL: https://codereview.chromium.org/821913002
Cr-Commit-Position: refs/heads/master@{#25935}
2014-12-23 12:50:51 +00:00
bmeurer
00013a5692
[turbofan] Minor cleanup to reduce code duplication.
...
TEST=unittests
R=jochen@chromium.org
Review URL: https://codereview.chromium.org/819103002
Cr-Commit-Position: refs/heads/master@{#25927}
2014-12-22 14:37:22 +00:00
Benedikt Meurer
1ec1f5957f
[turbofan] Cleanup use of virtual, OVERRIDE, FINAL.
...
Following the Google/Chromium coding style wrt. virtual, OVERRIDE and
FINAL specifications.
TEST=unittests
R=jochen@chromium.org
Review URL: https://codereview.chromium.org/816453005
Cr-Commit-Position: refs/heads/master@{#25924}
2014-12-22 13:48:10 +00:00
Benedikt Meurer
ee98a1d760
[turbofan] Introduce CommonOperatorReducer.
...
The CommonOperatorReducer currently takes care of redundant Phis,
EffectPhis and Selects. This functionality overlaps with ControlReducer,
but is required to make certain optimizations effective, since the
ControlReducer only runs really early and really late in the pipeline
and therefore other reducers aren't reapplied properly after redundant
phi/select elimination.
TEST=unittests
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/817243003
Cr-Commit-Position: refs/heads/master@{#25922}
2014-12-22 13:06:43 +00:00
machenbach
7d478d9621
Revert of Remove obsolete V8_INFINITY macro. (patchset #3 id:40001 of https://codereview.chromium.org/798413003/ )
...
Reason for revert:
Speculative revert. This seems to block the current roll: https://codereview.chromium.org/819653003/
I retried several times, also with a new roll. The error is internal - but that doesn't make much of a difference.
Original issue's description:
> Remove obsolete V8_INFINITY macro.
>
> Use std::numeric_limits consistently.
>
> R=svenpanne@chromium.org
>
> Committed: https://crrev.com/31c66e2d53569c4e229d55483d28208491e73612
> Cr-Commit-Position: refs/heads/master@{#25897}
TBR=svenpanne@chromium.org ,bmeurer@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/813813003
Cr-Commit-Position: refs/heads/master@{#25912}
2014-12-20 13:17:35 +00:00
bmeurer
31c66e2d53
Remove obsolete V8_INFINITY macro.
...
Use std::numeric_limits consistently.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/798413003
Cr-Commit-Position: refs/heads/master@{#25897}
2014-12-19 07:18:00 +00:00
machenbach
1f44e7267e
Revert of [turbofan] simplify gap ordering (patchset #2 id:20001 of https://codereview.chromium.org/810013002/ )
...
Reason for revert:
Revert for breaking emscripten bullet with turbofan on android arm64.
Original issue's description:
> [turbofan] simplify gap ordering
>
> BUG=
>
> Committed: https://crrev.com/70b5eb47b39acbf31746f4a116a9b3ce2730218a
> Cr-Commit-Position: refs/heads/master@{#25865}
TBR=bmeurer@chromium.org ,dcarney@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=
Review URL: https://codereview.chromium.org/815743002
Cr-Commit-Position: refs/heads/master@{#25888}
2014-12-18 15:49:58 +00:00
machenbach
70eb456e73
Revert of [turbofan] remove control field from instruction (patchset #1 id:1 of https://codereview.chromium.org/810023002/ )
...
Reason for revert:
Needed to revert 70b5eb47b3
Original issue's description:
> [turbofan] remove control field from instruction
>
> R=titzer@chromium.org
> BUG=
>
> Committed: https://crrev.com/7b9cb2eb3764d0c807c669e397fc3b84fbefb175
> Cr-Commit-Position: refs/heads/master@{#25866}
TBR=titzer@chromium.org ,dcarney@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=
Review URL: https://codereview.chromium.org/814043002
Cr-Commit-Position: refs/heads/master@{#25884}
2014-12-18 14:42:16 +00:00
Benedikt Meurer
0925be14a2
[turbofan] Further reduction of Word32And with Int32Add.
...
- (y * (K << L) + x) & (-1 << L) => (x & (-1 << L)) + y * (K << L)
- (x + y * (K << L)) & (-1 << L) => (x & (-1 << L)) + y * (K << L)
TEST=unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/811293002
Cr-Commit-Position: refs/heads/master@{#25875}
2014-12-18 08:42:57 +00:00
dcarney
44e2dd535e
[turbofan] move assembly order to InstructionBlock
...
R=titzer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/805263003
Cr-Commit-Position: refs/heads/master@{#25867}
2014-12-17 15:10:03 +00:00
dcarney
7b9cb2eb37
[turbofan] remove control field from instruction
...
R=titzer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/810023002
Cr-Commit-Position: refs/heads/master@{#25866}
2014-12-17 14:10:46 +00:00
dcarney
70b5eb47b3
[turbofan] simplify gap ordering
...
BUG=
Review URL: https://codereview.chromium.org/810013002
Cr-Commit-Position: refs/heads/master@{#25865}
2014-12-17 13:37:56 +00:00
dcarney
84345afbfb
[turbofan] use START and END gap positions for constraints
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/798363007
Cr-Commit-Position: refs/heads/master@{#25864}
2014-12-17 12:13:58 +00:00
Benedikt Meurer
a7d8724188
[turbofan] Improve reduction of Word32And and Int32Add.
...
TEST=unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/816433002
Cr-Commit-Position: refs/heads/master@{#25863}
2014-12-17 11:34:39 +00:00
bmeurer
5a8be47d21
Revert of [turbofan] Correctify TruncateFloat64ToInt32 reduction in MachineOperatorReducer. (patchset #1 id:1 of https://codereview.chromium.org/801263002/ )
...
Reason for revert:
Can cause reduce cycles, needs more investigation
Original issue's description:
> [turbofan] Correctify TruncateFloat64ToInt32 reduction in MachineOperatorReducer.
>
> TEST=unittests
> R=svenpanne@chromium.org
>
> Committed: 6e7ceee4d0
TBR=svenpanne@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/794473003
Cr-Commit-Position: refs/heads/master@{#25859}
2014-12-17 09:51:17 +00:00
Benedikt Meurer
2b4eb88cdd
[turbofan] Cache conversions inserted during typed lowering.
...
This greatly reduces the number of nodes in the graph (by more than 20x in
some extreme cases) for the Emscripten python interpreter main function.
BUG=v8:3763
LOG=y
TEST=cctest,mjsunit,unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/802353003
Cr-Commit-Position: refs/heads/master@{#25840}
2014-12-16 12:59:16 +00:00
Benedikt Meurer
54a31b628d
[base] Add iterator_range helper class.
...
TEST=unittests
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/810683003
Cr-Commit-Position: refs/heads/master@{#25834}
2014-12-16 07:32:03 +00:00
Benedikt Meurer
283175d984
[turbofan] Relax effects and context for JSToNumber(x:plain-primitive).
...
Relanded with fix for always returning Change for PlainPrimitive even
if there was no change. The performance regression on primes.js and
corrections.js is due to unlucky loop header alignment; will be addressed
separately.
TEST=unittests
R=svenpanne@chromium.org
Committed: 75484e8d16
Review URL: https://codereview.chromium.org/799413002
Cr-Commit-Position: refs/heads/master@{#25832}
2014-12-16 05:39:46 +00:00
bmeurer
2c30ab6616
Revert of [turbofan] Relax effects and context for JSToNumber(x:plain-primitive). (patchset #1 id:1 of https://codereview.chromium.org/799413002/ )
...
Reason for revert:
Performance regressions on primes and corrections benchmarks.
Original issue's description:
> [turbofan] Relax effects and context for JSToNumber(x:plain-primitive).
>
> TEST=unittests
> R=svenpanne@chromium.org
>
> Committed: 75484e8d16
TBR=svenpanne@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/806103002
Cr-Commit-Position: refs/heads/master@{#25831}
2014-12-16 04:45:09 +00:00
Benedikt Meurer
75484e8d16
[turbofan] Relax effects and context for JSToNumber(x:plain-primitive).
...
TEST=unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/799413002
Cr-Commit-Position: refs/heads/master@{#25818}
2014-12-15 13:42:54 +00:00
Benedikt Meurer
6e7ceee4d0
[turbofan] Correctify TruncateFloat64ToInt32 reduction in MachineOperatorReducer.
...
TEST=unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/801263002
Cr-Commit-Position: refs/heads/master@{#25812}
2014-12-15 07:46:21 +00:00
danno
10b38df268
[turbofan]: Fix x64 regression during ia32 lea port
...
Review URL: https://codereview.chromium.org/795353008
Cr-Commit-Position: refs/heads/master@{#25807}
2014-12-12 18:17:01 +00:00
dcarney
3595176565
[turbofan] improve register allocator testing framework
...
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/800493002
Cr-Commit-Position: refs/heads/master@{#25794}
2014-12-12 11:15:26 +00:00
svenpanne
71bb00e261
Consistently use only one of virtual/OVERRIDE/FINAL.
...
FINAL implies OVERRIDE, which in turn implies virtual, so there's no need to use
more than one of these. The Google C++ style guide even requires this, see
http://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Inheritance .
While we're here, port r24662 to x87.
The net result is that v8 compiles again with a current clang.
BUG=v8:3753
LOG=y
Review URL: https://codereview.chromium.org/797943002
Cr-Commit-Position: refs/heads/master@{#25792}
2014-12-12 10:44:25 +00:00
jarin
5913c7cc3f
Reland of "Avoid number range holes in bitset types."
...
This reverts commit 8a6cbf0a86
.
R=rossberg@chromium.org
BUG=
Review URL: https://codereview.chromium.org/788313002
Cr-Commit-Position: refs/heads/master@{#25786}
2014-12-11 17:50:11 +00:00
vogelheim
efdb6c8de1
Fix builds w/ component=="shared_library" and v8_use_external_startup_data==1.
...
R=machenbach@chromium.org
BUG=
Review URL: https://codereview.chromium.org/794213002
Cr-Commit-Position: refs/heads/master@{#25784}
2014-12-11 16:41:56 +00:00
baptiste.afsa
49baecc42b
[turbofan] Mark arm64 cbz/cbnz tbz/tbnz instructions as branch instructions.
...
The instruction selector now selects pseudo instructions: CompareAndBranch or
TestAndBranch which are associated with their continuations so that generic
code in the code generator will treat them as branch instruction and will be
able to apply optimization like avoiding branches when the code can falltrhough.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/798553002
Cr-Commit-Position: refs/heads/master@{#25773}
2014-12-11 12:45:33 +00:00
danno
2f7a5af0e3
[turbofan]: Port lea changes to ia32
...
Review URL: https://codereview.chromium.org/747283005
Cr-Commit-Position: refs/heads/master@{#25771}
2014-12-11 11:53:00 +00:00
jarin
8a6cbf0a86
Revert of Avoid number range holes in bitset types. (patchset #5 id:80001 of https://codereview.chromium.org/759013003/ )
...
Reason for revert:
For breaking the waterfall (run-json-stringify test).
Original issue's description:
> Avoid number range holes in bitset types.
>
> BUG=
TBR=rossberg@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=
Review URL: https://codereview.chromium.org/794663002
Cr-Commit-Position: refs/heads/master@{#25756}
2014-12-10 18:25:38 +00:00
jarin
4de4f74cf2
Avoid number range holes in bitset types.
...
BUG=
Review URL: https://codereview.chromium.org/759013003
Cr-Commit-Position: refs/heads/master@{#25754}
2014-12-10 16:39:10 +00:00
dcarney
aae665862f
[turbofan] delay inserting spill slots for parent ranges.
...
R=jarin@chromium.org ,
BUG=
Review URL: https://codereview.chromium.org/785993002
Cr-Commit-Position: refs/heads/master@{#25736}
2014-12-10 09:46:01 +00:00
bmeurer
baafb8f92e
[turbofan] Turn JSToBoolean and JSUnaryNot into pure operators.
...
Also fix the pushing of JSToBoolean into Phis and generalize it to
also include pushing into Selects.
TEST=cctest,unittests
Review URL: https://codereview.chromium.org/792463003
Cr-Commit-Position: refs/heads/master@{#25718}
2014-12-09 07:35:12 +00:00
danno
85d2db8781
[turbofan] Use "leal" in even more situations
...
Achieve more than parity with modes currently handled on ia32 in preparation for
porting the entire mechanism to ia32, including supporting mul of constants 3,
5 and 9 with "leal" instructions.
TEST=unittests
Review URL: https://codereview.chromium.org/774193003
Cr-Commit-Position: refs/heads/master@{#25677}
2014-12-05 10:54:40 +00:00
Benedikt Meurer
b3ace35209
[turbofan] Redundant load elimination.
...
This is an initial version of redundant load elimination, currently
limited to LoadField operators, and implemented by walking the effect
chain.
TEST=unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/782473002
Cr-Commit-Position: refs/heads/master@{#25673}
2014-12-05 07:59:18 +00:00
Benedikt Meurer
2bf048f46c
[turbofan] Reduce context accesses during typed lowering.
...
TEST=unittests
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/776243002
Cr-Commit-Position: refs/heads/master@{#25656}
2014-12-04 10:50:58 +00:00
Benedikt Meurer
2983d84e5c
[turbofan] Combine additional Word32And with Int32Add and negative power of two.
...
- (y << L + x) & (-1 << L) => (x & (-1 << L)) + y << L
- (x + y << L) & (-1 << L) => (x & (-1 << L)) + y << L
TEST=unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/758603003
Cr-Commit-Position: refs/heads/master@{#25627}
2014-12-03 07:35:03 +00:00
mstarzinger
f9e4527f32
Restrict floating control to minimal control-connected component.
...
R=jarin@chromium.org
TEST=cctest/test-scheduler/NestedFloatingDiamondWithChain
Review URL: https://codereview.chromium.org/738613005
Cr-Commit-Position: refs/heads/master@{#25621}
2014-12-02 15:56:30 +00:00
Benedikt Meurer
a94a612220
[turbofan] Cache the JSStoreProperty operator(s).
...
TEST=unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/769193003
Cr-Commit-Position: refs/heads/master@{#25609}
2014-12-02 11:40:32 +00:00
Benedikt Meurer
d33cabea57
[turbofan] Add missing tests for SimplifiedOperatorBuilder.
...
TEST=unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/772723003
Cr-Commit-Position: refs/heads/master@{#25605}
2014-12-02 11:10:55 +00:00
weiliang.lin
2ad1c224b8
[ia32] Introduce vex prefix version of float64 arithmetic binop
...
port 50c4d8826b
BUG=
Review URL: https://codereview.chromium.org/770183002
Cr-Commit-Position: refs/heads/master@{#25595}
2014-12-02 08:09:53 +00:00
Benedikt Meurer
c516d4f094
[turbofan] Add checked load/store operators.
...
TEST=mjsunit,cctest,unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/763963002
Cr-Commit-Position: refs/heads/master@{#25591}
2014-12-02 04:49:11 +00:00
Weiliang Lin
50c4d8826b
[x64] introduce vex prefix version of float64 arithmetic binop
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/764863002
Patch from Weiliang Lin <weiliang.lin@intel.com>.
Cr-Commit-Position: refs/heads/master@{#25582}
2014-12-01 10:45:18 +00:00
danno
91ec654bf9
[turbofan]: Use "leal" more prevasively on x64
...
Only use "addl" and "subl" in cases that have been measured to be
faster (currently only immediate operations).
Review URL: https://codereview.chromium.org/735293004
Cr-Commit-Position: refs/heads/master@{#25580}
2014-12-01 10:04:42 +00:00
hpayer
297935b34f
Use deadline in IdleNotification.
...
BUG=417668
LOG=n
Review URL: https://codereview.chromium.org/750813003
Cr-Commit-Position: refs/heads/master@{#25560}
2014-11-28 10:59:24 +00:00
Hannes Payer
5c3d1cbf75
Re-land: Distinguish beween final incremental mark-compact and full mark-compact event in IdleNotification.
...
BUG=
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/765743002
Cr-Commit-Position: refs/heads/master@{#25545}
2014-11-27 12:39:57 +00:00
dcarney
60af073ad8
[turbofan] add initial move optimizer
...
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/750813004
Cr-Commit-Position: refs/heads/master@{#25533}
2014-11-27 09:21:06 +00:00
rodolph.perfetta
55614cfe69
[turbofan] Recognize rotate right.
...
Extended the rotate left detection code.
BUG=
Review URL: https://codereview.chromium.org/760523004
Cr-Commit-Position: refs/heads/master@{#25517}
2014-11-26 11:49:43 +00:00
Benedikt Meurer
560b0c4534
[arm] Fix recognition of VNEG.
...
TEST=mjsunit,unittests
R=svenpanne@chromium.org
Committed: 2aed882fe7
Review URL: https://codereview.chromium.org/762493006
Cr-Commit-Position: refs/heads/master@{#25515}
2014-11-26 11:18:58 +00:00
machenbach
86f6123ade
Revert of [arm] Fix recognition of VNEG. (patchset #3 id:40001 of https://codereview.chromium.org/762493006/ )
...
Reason for revert:
Breaks arm compilation.
Original issue's description:
> [arm] Fix recognition of VNEG.
>
> TEST=mjsunit,unittests
> R=svenpanne@chromium.org
>
> Committed: 2aed882fe7
TBR=svenpanne@chromium.org ,bmeurer@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/751653004
Cr-Commit-Position: refs/heads/master@{#25514}
2014-11-26 11:07:23 +00:00
Benedikt Meurer
2aed882fe7
[arm] Fix recognition of VNEG.
...
TEST=mjsunit,unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/762493006
Cr-Commit-Position: refs/heads/master@{#25513}
2014-11-26 10:46:37 +00:00
Benedikt Meurer
a01f4d871a
Revert "Distinguish beween final incremental mark-compact and full mark-compact event in IdleNotification."
...
This reverts commit d15d453fa5
for
breaking cctest/test-api/Threading3.
TBR=hpayer@chromium.org
Review URL: https://codereview.chromium.org/758163003
Cr-Commit-Position: refs/heads/master@{#25506}
2014-11-26 05:12:36 +00:00
hpayer
d15d453fa5
Distinguish beween final incremental mark-compact and full mark-compact event in IdleNotification.
...
BUG=
Review URL: https://codereview.chromium.org/727323004
Cr-Commit-Position: refs/heads/master@{#25501}
2014-11-25 13:41:57 +00:00
jarin
322bb23e82
[turbofan] Insert appropriate conversions for typed array stores.
...
BUG=
Review URL: https://codereview.chromium.org/758643003
Cr-Commit-Position: refs/heads/master@{#25496}
2014-11-25 08:40:29 +00:00
Benedikt Meurer
9a5ec9c57c
Fix platform unittests.
...
Follow-up to 87db4ff1f4
, which added
suppressions to unittests.status and a special case for Android to the
ThreadLocalStorageTest, both of which are unneccessary and should be
handled differently for the GTest based unittests.
BUG=v8:3706
LOG=n
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/757913002
Cr-Commit-Position: refs/heads/master@{#25495}
2014-11-25 07:22:00 +00:00
cullinan
87db4ff1f4
Fix/suppress unittests broken on Android
...
cctest/test-threads/ThreadJoinSelf is suppressed for Android, but the
test has since been moved to unittests/Thread.SelfJoin. Move the
suppression to unittests.status.
unittests/ThreadLocalStorageTest.DoTest fails on older Android devices
as it assumes the availability of more TLS slots than many devices
implement. Test a smaller number of slots (32) on Android. Remove old
suppression of test-platform-tls/FastTLS (which no longer exists).
cctest/test-mark-compact/RegressJoinThreadsOnIsolateDeinit can't deal
with shared mappings. Check for 's' instead of '-'.
BUG=v8:3706
LOG=
Review URL: https://codereview.chromium.org/735863003
Cr-Commit-Position: refs/heads/master@{#25492}
2014-11-24 18:06:10 +00:00
jarin
d9cabb9b22
[turbofan] Fix matching of the lea instruction.
...
Resets the scaled exponent to 0 when the scaling match fails.
BUG=
Review URL: https://codereview.chromium.org/756643002
Cr-Commit-Position: refs/heads/master@{#25491}
2014-11-24 17:45:33 +00:00
Benedikt Meurer
94f5b78b96
[turbofan] Combine Word32And with Int32Add and negative power of two.
...
TEST=unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/749233002
Cr-Commit-Position: refs/heads/master@{#25479}
2014-11-24 12:30:30 +00:00
baptiste.afsa
9b5c279b9f
[turbofan] Recognize sign extension of 8-bit and 16-bit values on arm64.
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/730183005
Cr-Commit-Position: refs/heads/master@{#25475}
2014-11-24 11:00:15 +00:00
danno
4f1cc51555
[turbofan]: remove optimization of adds/subs to inc and dec
...
They generally cause regressions on most modern Intel chips. Replace them with
addl/subl.
Review URL: https://codereview.chromium.org/737153003
Cr-Commit-Position: refs/heads/master@{#25466}
2014-11-21 13:18:46 +00:00
Daniel Clifford
5a494cf00c
[turbofan]: More optimizations to add and subtract operations on x64
...
- Use "leal" for subtraction of integer constant when non-constant input to
subtract is used more than once.
- Use "incl", "decl", and "addl" when they are smaller/cheaper than their
leal/addl/subl equivalant.
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/738073002
Cr-Commit-Position: refs/heads/master@{#25439}
2014-11-20 13:48:46 +00:00
Rodolph Perfetta
481772acdd
[turbofan] remove redundant '& 0x1F' for shifts.
...
JavaScript shifts perform an implicit '& 0x1F' on their right operand, this
patch removes it when the underlying architecture already does it.
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/732103002
Cr-Commit-Position: refs/heads/master@{#25438}
2014-11-20 13:09:26 +00:00
dcarney
dd99a31334
[turbofan]: delay ssa deconstruction in register allocator
...
BUG=
Review URL: https://codereview.chromium.org/738853002
Cr-Commit-Position: refs/heads/master@{#25426}
2014-11-19 16:23:40 +00:00
Dusan Milosavljevic
ae9130ebbb
MIPS64: Add turbofan support for mips64.
...
TEST=
BUG=
R=danno@chromium.org , paul.lind@imgtec.com
Review URL: https://codereview.chromium.org/732403002
Cr-Commit-Position: refs/heads/master@{#25424}
2014-11-19 15:44:46 +00:00
Benedikt Meurer
21580e7b79
Revert "Forward declaration for Isolate / Platform in libplatform.h." and "Fixes d8 on windows following.".
...
This reverts commit 0f57ce8f1a
.
and 3245b8cb83
for breaking Chromium
compile.
TBR=machenbach@chromium.org
Review URL: https://codereview.chromium.org/743533003
Cr-Commit-Position: refs/heads/master@{#25411}
2014-11-19 07:28:07 +00:00
bulach
0f57ce8f1a
Forward declaration for Isolate / Platform in libplatform.h.
...
Reduces dependencies on #include files, making it easier for other
build systems to include this library.
BUG=
Review URL: https://codereview.chromium.org/740493002
Cr-Commit-Position: refs/heads/master@{#25408}
2014-11-18 20:29:37 +00:00
Benedikt Meurer
048d37017d
[turbofan] Avoid useless sign extension after sign extended load.
...
TEST=unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/735623002
Cr-Commit-Position: refs/heads/master@{#25388}
2014-11-18 09:28:11 +00:00
Dan Carney
e01f34b5cc
[turbofan] add ForTesting to pipeline entry points that are for testing only.
...
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/727373002
Cr-Commit-Position: refs/heads/master@{#25382}
2014-11-17 14:46:54 +00:00
jarin
e130d01aee
[turbofan] More useful typing for And, Or and Shr.
...
BUG=
Review URL: https://codereview.chromium.org/714413004
Cr-Commit-Position: refs/heads/master@{#25381}
2014-11-17 13:55:40 +00:00
Dan Carney
032191e9be
[turbofan] move register allocation phases to pipeline
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/727323002
Cr-Commit-Position: refs/heads/master@{#25379}
2014-11-17 12:37:11 +00:00
Benedikt Meurer
5934656921
[turbofan] Smartify the GraphReducer.
...
Don't use the generic algorithm, but instead start going into the
direction of ControlReducer, using a stack plus a revisit queue to
not miss any more possibilities for reductions anymore.
TEST=cctest,unittests
R=dcarney@chromium.org
Committed: f047507370
Committed: 6e148989a4
Review URL: https://codereview.chromium.org/726513002
Cr-Commit-Position: refs/heads/master@{#25377}
2014-11-17 12:12:35 +00:00
Daniel Clifford
f173937cdf
Generalize ScaledWithOffsetMatcher to support 64 bits
...
Preparation for supporting more addressing modes in instruction selection.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/729853005
Cr-Commit-Position: refs/heads/master@{#25373}
2014-11-17 10:53:30 +00:00
dcarney
c97a7acf65
[turbofan] refactor pipeline to use hydrogen like Run calls
...
BUG=
Review URL: https://codereview.chromium.org/727733002
Cr-Commit-Position: refs/heads/master@{#25361}
2014-11-14 16:44:45 +00:00
Michael Starzinger
a210f36846
Extend typed lowering to cover JSStrictEqual on differing types.
...
R=rossberg@chromium.org , titzer@chromium.org
TEST=unittests/JSTypedLoweringTest.JSStrictEqualWithTheHole
Review URL: https://codereview.chromium.org/722223003
Cr-Commit-Position: refs/heads/master@{#25359}
2014-11-14 14:25:19 +00:00
Benedikt Meurer
27cc3c685c
Revert "[turbofan] Smartify the GraphReducer."
...
This reverts commit 6e148989a4
for
breaking Massive/Embenchen.
TBR=machenbach@chromium.org
Review URL: https://codereview.chromium.org/727743002
Cr-Commit-Position: refs/heads/master@{#25356}
2014-11-14 11:48:50 +00:00
Benedikt Meurer
6e148989a4
[turbofan] Smartify the GraphReducer.
...
Don't use the generic algorithm, but instead start going into the
direction of ControlReducer, using a stack plus a revisit queue to
not miss any more possibilities for reductions anymore.
TEST=cctest,unittests
R=dcarney@chromium.org
Committed: f047507370
Review URL: https://codereview.chromium.org/726513002
Cr-Commit-Position: refs/heads/master@{#25345}
2014-11-14 08:00:36 +00:00
Michael Starzinger
78332973e2
Revert "[turbofan] Smartify the GraphReducer."
...
This reverts commit f047507370
due to mjsunit/numops-fuzz-part2 hitting an
assertion in the ARM assembler.
TBR=bmeurer@chromium.org
TEST=mjsunit/numops-fuzz-part2
Review URL: https://codereview.chromium.org/724053002
Cr-Commit-Position: refs/heads/master@{#25327}
2014-11-13 14:07:04 +00:00
Benedikt Meurer
f047507370
[turbofan] Smartify the GraphReducer.
...
Don't use the generic algorithm, but instead start going into the
direction of ControlReducer, using a stack plus a revisit queue to
not miss any more possibilities for reductions anymore.
TEST=cctest,unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/726513002
Cr-Commit-Position: refs/heads/master@{#25326}
2014-11-13 11:34:15 +00:00
Dan Carney
0042363714
[turbofan] add some registerallocator unittests
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/700753003
Cr-Commit-Position: refs/heads/master@{#25319}
2014-11-13 09:42:09 +00:00
Benedikt Meurer
7205f6ee9b
[turbofan] Avoid useless bit masking in typed lowering.
...
There's no need to apply the 0x1f mask to right hand sides of shifts if
the input is already in range [0,31].
TEST=cctest,unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/718193003
Cr-Commit-Position: refs/heads/master@{#25313}
2014-11-13 07:40:56 +00:00
dcarney@chromium.org
fdab306aa2
[turbofan] add gap move verifier
...
R=jarin@chromium.org
BUG=
Review URL: https://codereview.chromium.org/704193007
Cr-Commit-Position: refs/heads/master@{#25300}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25300 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-12 14:53:51 +00:00
dslomov@chromium.org
eacdfa0b7a
Various clean-ups after top-level lexical declarations are done.
...
1. Global{Context,Scope}=>Script{Context,Scope}
2. Enable fixed tests
3. Update comments
R=rossberg@chromium.org
BUG=v8:2198
LOG=N
Review URL: https://codereview.chromium.org/716833002
Cr-Commit-Position: refs/heads/master@{#25291}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25291 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-12 11:35:18 +00:00
baptiste.afsa@arm.com
ad815be7d5
[turbofan] Use cbz/cbnz when possible on arm64.
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/715433004
Cr-Commit-Position: refs/heads/master@{#25288}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25288 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-12 10:06:46 +00:00
titzer@chromium.org
b9886ae9ff
Fix bugs in simplified lowering relating to int32/uint32 signs.
...
Lowering of NumberToUint32 and NumberToInt32 was not correctly accounting for the sign of the input and the sign of the output, emitting the wrong representation changes.
Along the way, I've found cases where MachineOperatorBuilder would break if fed a machine type for loads or stores that was not cached, requiring MachineOperatorBuilder to take zone to allocate operators for these cases.
R=bmeurer@chromium.org , jarin@chromium.org
BUG=
Review URL: https://codereview.chromium.org/714613002
Cr-Commit-Position: refs/heads/master@{#25247}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25247 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-10 14:28:42 +00:00
bmeurer@chromium.org
4446e8fe50
Reland "[turbofan] Fix select lowering" with fix.
...
Select lowering must not merge Select nodes that depend on each other,
because the resulting graph is not schedulable.
TEST=unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/709423003
Cr-Commit-Position: refs/heads/master@{#25245}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25245 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-10 11:55:47 +00:00
bmeurer@chromium.org
9ac7ee2d22
Revert "[turbofan] Fix select lowering."
...
This reverts commit cf08e8d70f
for
breaking Embenchen bullet.
TBR=jarin@chromium.org
Review URL: https://codereview.chromium.org/684413003
Cr-Commit-Position: refs/heads/master@{#25238}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25238 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-10 10:43:41 +00:00
bmeurer@chromium.org
cf08e8d70f
[turbofan] Fix select lowering.
...
Select lowering must not merge Select nodes that depend on each other,
because the resulting graph is not schedulable.
TEST=unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/717473002
Cr-Commit-Position: refs/heads/master@{#25236}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25236 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-10 10:30:17 +00:00
bmeurer@chromium.org
8977e3d5e4
[arm] Recognize SXTB, SXTH, UXTB and UXTH.
...
TEST=cctest,msjunit/asm,unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/709123005
Cr-Commit-Position: refs/heads/master@{#25228}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25228 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-10 05:49:17 +00:00
danno@chromium.org
9a58807030
[turbofan] Optimize add operations to use 'leal' instruction on x64
...
Add MemoryOperandMatcher that recognizes node clusters in the form
[%r1 + %r2*SCALE + OFFSET] and explicit support in the x64 Int32Add
selector to use it to translate complex adds to 'leal' instructions.
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/704713003
Cr-Commit-Position: refs/heads/master@{#25223}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25223 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-07 16:47:45 +00:00
hpayer@chromium.org
19c3296988
Remove heap size filter for context disposal garbage collection.
...
BUG=
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/712563002
Cr-Commit-Position: refs/heads/master@{#25213}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25213 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-07 13:07:47 +00:00
baptiste.afsa@arm.com
57ae54203c
[turbofan][arm64] Optimize shifts combined with truncations or extensions.
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/705983002
Cr-Commit-Position: refs/heads/master@{#25210}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25210 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-07 09:56:17 +00:00
hpayer@chromium.org
c0ac2ab9d0
Perform context disposal garbage collections only if contexts disposals happen at a high rate.
...
BUG=
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/710603003
Cr-Commit-Position: refs/heads/master@{#25208}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25208 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-07 09:37:11 +00:00
dcarney@chromium.org
a350f0d608
[turbofan] phis cannot take registers as inputs
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/704153002
Cr-Commit-Position: refs/heads/master@{#25191}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25191 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-06 12:56:44 +00:00
bmeurer@chromium.org
35cc4af769
[turbofan] Push TruncateFloat64ToInt32 into phis.
...
TEST=unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/707683003
Cr-Commit-Position: refs/heads/master@{#25189}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25189 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-06 12:38:47 +00:00
bmeurer@chromium.org
8798c410e1
[turbofan] Turn various diamonds into selects.
...
TEST=cctest/test-changes-lowering,mjsunit/asm,unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/704463004
Cr-Commit-Position: refs/heads/master@{#25180}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25180 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-06 09:10:32 +00:00
dcarney@chromium.org
57b42dc51f
[turbofan] extend register allocator testing with control flow
...
R=bmeurer@chromium.org , jarin@chromium.org
BUG=
Review URL: https://codereview.chromium.org/699083003
Cr-Commit-Position: refs/heads/master@{#25178}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25178 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-06 08:28:45 +00:00
bmeurer@chromium.org
881cece8de
[turbofan] Transform x * -1.0 to -0.0 - x.
...
TEST=msjunit/asm,unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/683753004
Cr-Commit-Position: refs/heads/master@{#25176}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25176 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-06 06:13:46 +00:00
dusan.milosavljevic@imgtec.com
032ae8e876
MIPS: Fix instruction selection test expectations after r25120.
...
TEST=unittests/InstructionSelectorCmpTest.Parameter,
InstructionSelectorTest.Word32EqualWithZero
BUG=
R=paul.lind@imgtec.com
Review URL: https://codereview.chromium.org/706633003
Cr-Commit-Position: refs/heads/master@{#25167}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25167 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-05 18:51:43 +00:00
mstarzinger@chromium.org
b0aa81f30d
Make special RPO computation iterative during scheduling.
...
This contains the following changes squashed together:
- Switch BasicBlock::loop_end to be a basic block instead of an RPO.
- Switch ScheduleLate to use dominator depth instead of RPO.
- Switch ScheduleEarly to use dominator depth instead of RPO.
- Push out absolute RPO ordering everywhere else in the scheduler.
- Keep linked list of blocks in RPO order while scheduling.
- Switch from RPO number to depth for dominator calculation.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/696363002
Cr-Commit-Position: refs/heads/master@{#25138}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25138 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-05 10:10:54 +00:00
bmeurer@chromium.org
1ef9e22900
[x64] 64-bit shift left by 32 or more covers sign/zero extend.
...
TEST=unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/704703002
Cr-Commit-Position: refs/heads/master@{#25123}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25123 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-05 05:58:15 +00:00
titzer@chromium.org
faa71f966a
Introduce Diamond, a helper for building diamond-shaped control patterns.
...
R=mstarzinger@chromium.org , bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/694063005
Cr-Commit-Position: refs/heads/master@{#25110}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25110 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-04 14:37:44 +00:00
bmeurer@chromium.org
3897182246
[turbofan] Add AllocateHeapNumberStub to avoid runtime call.
...
TEST=unittests
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/703473004
Cr-Commit-Position: refs/heads/master@{#25107}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25107 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-04 12:58:49 +00:00
dcarney@chromium.org
7cb25f5020
[turbofan] add RegisterConfiguration to decouple arch specific register layouts from compiler
...
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/694313002
Cr-Commit-Position: refs/heads/master@{#25097}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25097 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-04 09:22:32 +00:00
bmeurer@chromium.org
18e18d21f1
[turbofan] Strip useless sign-extension for store8/store16.
...
TEST=unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/698963002
Cr-Commit-Position: refs/heads/master@{#25091}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25091 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-04 07:35:49 +00:00
bmeurer@chromium.org
744c66bc29
[turbofan] Introduce separate SelectLowering reducer.
...
Split lowering of Select nodes into a separate graph reducer and be more
clever when lowering to diamonds, i.e. reuse diamonds that have the same
condition and only add more phis to it.
TEST=unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/702463002
Cr-Commit-Position: refs/heads/master@{#25078}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25078 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-03 15:17:47 +00:00
dcarney@chromium.org
0d1cdebad2
[turbofan] initial framework for unittesting of register allocator
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/683133005
Cr-Commit-Position: refs/heads/master@{#25071}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25071 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-03 13:27:23 +00:00
baptiste.afsa@arm.com
bb78f231ab
[turbofan] Select tbz/tbnz when possible on ARM64.
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/697653002
Cr-Commit-Position: refs/heads/master@{#25063}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25063 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-03 10:29:11 +00:00
bmeurer@chromium.org
498920f91c
[turbofan] Also optimize unsigned division by constant.
...
TEST=cctest,mjsunit,unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/697663003
Cr-Commit-Position: refs/heads/master@{#25061}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25061 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-03 10:05:46 +00:00
bmeurer@chromium.org
948ce2141e
[turbofan] First step towards correctified 64-bit addressing.
...
Also remove the LEA matching from x64, since it was never really
effective. We'll optimize that once we're correct.
TEST=cctest,unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/652363006
Cr-Commit-Position: refs/heads/master@{#25024}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25024 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-31 06:41:41 +00:00
titzer@chromium.org
bd5c9834b6
Fix bug in optimization of Uint32LessThan.
...
R=jarin@chromium.org
BUG=
Review URL: https://codereview.chromium.org/689883003
Cr-Commit-Position: refs/heads/master@{#25023}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25023 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-30 15:52:47 +00:00
sigurds@chromium.org
75ac43928b
Add floor, ceil, round (truncate) instructions for ia32, x64 (if SSE4.1) and
...
add floor, ceil, round (truncate and away from zero) for arm64.
R=bmeurer@chromium.org , dcarney@chromium.org , mstarzinger@chromium.org , rodolph.perfetta@arm.com
TEST=test/mjsunit/asm/math-floor.js,test/mjsunit/asm/math-ceil.js,test/unittest/compiler/js-builtin-reducer-unittest.cc
Review URL: https://codereview.chromium.org/677433002
Cr-Commit-Position: refs/heads/master@{#25018}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25018 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-30 14:16:15 +00:00
dcarney@chromium.org
ee9de33075
[turbofan] move Node to vreg mapping to InstructionSelector
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/683933004
Cr-Commit-Position: refs/heads/master@{#25010}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25010 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-30 09:50:41 +00:00
dcarney@chromium.org
7f94583f79
[turbofan] add configuration parameters for register allocator
...
T=jarin@chromium.org
BUG=
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/688633002
Cr-Commit-Position: refs/heads/master@{#25008}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25008 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-30 09:01:47 +00:00
titzer@chromium.org
5c25fdb65e
Inline trivial OperatorProperties methods.
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/686213002
Cr-Commit-Position: refs/heads/master@{#24995}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24995 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-29 18:47:14 +00:00
baptiste.afsa@arm.com
df312d90f0
[turbofan] Bug fix in arm64 ubfx selection.
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/687193002
Cr-Commit-Position: refs/heads/master@{#24989}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24989 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-29 16:47:45 +00:00
titzer@chromium.org
6c6a71b3f7
Move input/output counts directly into Operators, simplying OperatorProperties.
...
This is a first step to refactoring OperatorProperties out of existence.
The next step is to inline OperatorProperties::GetXXXCount into the callers.
R=rossberg@chromium.org
BUG=
Review URL: https://codereview.chromium.org/680313003
Cr-Commit-Position: refs/heads/master@{#24983}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24983 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-29 14:41:18 +00:00
bmeurer@chromium.org
de088f207c
[turbofan] Introduce new Select operator to improve bounds checking.
...
TEST=mjsunit,unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/691513002
Cr-Commit-Position: refs/heads/master@{#24980}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24980 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-29 14:17:14 +00:00
baptiste.afsa@arm.com
3901244107
[arm64] Turn Word64And into tst instruction when possible.
...
Also add corresponding unit tests.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/684813004
Cr-Commit-Position: refs/heads/master@{#24974}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24974 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-29 10:51:46 +00:00
bmeurer@chromium.org
81aaeb476d
[turbofan] Complete support for integer division/modulus in simplified lowering.
...
Also add backend flags that tell whether integer division/modulus is
generally safe, i.e. does not trap on overflow or divide by zero.
TEST=unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/681133004
Cr-Commit-Position: refs/heads/master@{#24942}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24942 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-28 13:56:46 +00:00
bmeurer@chromium.org
2c78a23c56
[turbofan] LoadElement should not have a control input.
...
TEST=unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/685723002
Cr-Commit-Position: refs/heads/master@{#24935}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24935 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-28 13:00:42 +00:00
bmeurer@chromium.org
3a089bf9a0
[turbofan] Reduce (x & K) & K to x & K.
...
TEST=unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/685713002
Cr-Commit-Position: refs/heads/master@{#24931}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24931 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-28 11:57:44 +00:00
bmeurer@chromium.org
95095af57f
[turbofan] Improve typed lowering for JSToBoolean.
...
- JSToBoolean(x:string) => BooleanNot(NumberEqual(x.length, #0 ))
- JSToBoolean(phi(x1,...,xn):primitive) => phi(JSToBoolean(x1),...,JSToBoolean(xn))
TEST=cctest,mjsunit/asm/do-while,mjsunit/boolean,unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/681223002
Cr-Commit-Position: refs/heads/master@{#24919}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24919 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-28 08:34:15 +00:00
bmeurer@chromium.org
1e96221bbb
[turbofan] Minor cleanups to lowering of typed array loads/stores.
...
TEST=unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/680063004
Cr-Commit-Position: refs/heads/master@{#24917}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24917 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-28 08:29:19 +00:00
dcarney@chromium.org
91f4962343
[turbofan] reduce allocations outside of pipeline
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/679793003
Cr-Commit-Position: refs/heads/master@{#24904}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24904 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-27 12:40:13 +00:00
bmeurer@chromium.org
f535763763
[turbofan] Implement the correct semantics for integer division/modulus.
...
Also fix the sdiv/udiv instructions on ARM as a nice side effect.
TEST=cctest,unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/677483005
Cr-Commit-Position: refs/heads/master@{#24888}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24888 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-26 12:50:46 +00:00
jarin@chromium.org
23df66ee24
Add more missing deopts
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/639883002
Cr-Commit-Position: refs/heads/master@{#24886}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24886 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-26 10:25:48 +00:00
baptiste.afsa@arm.com
878ff91c8f
[arm64] Use logical immediates when matching tst instructions.
...
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/668633003
Cr-Commit-Position: refs/heads/master@{#24882}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24882 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 15:29:44 +00:00
sigurds@chromium.org
df9ac2c165
Add Float64Floor, Float64Ceil, Float64RoundTruncate, Float64RoundTiesAway operators.
...
These operators are not supported by any backends yet, and a backend is free to not support them.
R=bmeurer@chromium.org
TEST=unittest/machine-operator
Review URL: https://codereview.chromium.org/668173002
Cr-Commit-Position: refs/heads/master@{#24874}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24874 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 13:12:12 +00:00
bmeurer@chromium.org
548fb46331
[x86] Fix register constraints for multiply-high.
...
TEST=mjsunit/compiler,unittests
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/671393002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24862 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 09:36:40 +00:00
bmeurer@chromium.org
80836787a3
[turbofan] Improve code generation for inline comparisons with zero.
...
TEST=cctest,unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/669133004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24832 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-23 10:22:06 +00:00
dcarney@chromium.org
5f83dabb60
[turbofan] split compilation stats off from HStatistics and track high water marks
...
R=jarin@chromium.org
BUG=
Review URL: https://codereview.chromium.org/669053002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24830 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-23 09:14:35 +00:00
bmeurer@chromium.org
6619a7975d
[turbofan] Add support for deferred code.
...
Branch can now have an optional hint, when the condition is
likely true or false, and if such a hint is present the other
basic block will be marked as deferred and placed at the end
of the function.
We currently use this feature for tagging int32/uint32 in
change lowering, and for load/store bounds checks in simplified
lowering.
TEST=cctest,unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/642883003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24802 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-22 11:24:55 +00:00
dcarney@chromium.org
1c5fafe890
[turbofan] use ZonePool in most places in the compiler pipeline a temp zone is used.
...
R=jarin@chromium.org , bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/663333003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24779 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 14:44:50 +00:00
jochen@chromium.org
2147d5a145
Use an idle notification of 0ms as hint that a GC after context disposal is triggerd
...
BUG=none
R=ulan@chromium.org
LOG=n
Review URL: https://codereview.chromium.org/671513006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24773 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 12:56:52 +00:00
dcarney@chromium.org
54fef44df3
[turbofan] add ZonePool to correctly track compiler phase memory usage
...
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/665893006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24771 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 12:38:46 +00:00
bmeurer@chromium.org
1efc572fe7
[turbofan] Reduce ~~x to x.
...
TEST=unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/666723005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24770 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 12:24:01 +00:00
svenpanne@chromium.org
3de17c6950
Remove v8stdint.h, it doesn't serve a purpose anymore.
...
Basically a follow-up to https://codereview.chromium.org/667573005/ .
LOG=y
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/670673002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 08:25:14 +00:00
dcarney@chromium.org
6c1e4f08d1
[turbofan] cleanup InstructionSequence
...
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/664123002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24753 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 06:59:50 +00:00
mvstanton@chromium.org
c688ebd858
vector-based ICs did not update type feedback counts correctly.
...
BUG=v8:3605
LOG=N
R=jkummerow@chromium.org , ulan@chromium.org
Review URL: https://codereview.chromium.org/650073002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24732 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 11:42:56 +00:00
bmeurer@chromium.org
cc60a45d78
[turbofan] Move node matchers to separate file.
...
TEST=unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/639293006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24729 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 11:26:23 +00:00
dcarney@chromium.org
32161089da
[turbofan] pass zone to InstructionSequence
...
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/663073002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24728 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 11:18:07 +00:00
dcarney@chromium.org
4e191e782e
[turbofan] remove schedule from InstructionSequence
...
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/669613002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24726 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 10:19:15 +00:00
bmeurer@chromium.org
d029d76120
[turbofan] Skip bounds checks for positive indices only.
...
TEST=unittests,mjsunit/asm/int32array-constant-key
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/647773004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24716 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 06:25:41 +00:00
bmeurer@chromium.org
a779150260
[turbofan] Eliminate typed array bounds checks if both key and length are constant.
...
TEST=mjsunit,unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/638853004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24685 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 09:35:45 +00:00
dslomov@chromium.org
7cf9d1c807
Share code between Factory::NewJSTypedArray and API
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/641343005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24681 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 09:04:58 +00:00
bmeurer@chromium.org
fe6656fbfe
[arm] Prefer BIC over BFC.
...
BFC requires same register for input and output and causes introduction
of some unneccesary gap moves.
TEST=unittests,mjsunit
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/658283003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24678 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 07:07:54 +00:00
rossberg@chromium.org
0e16150d33
Better typing and type verification
...
- Extend verifier to check types of JS and Simplified nodes.
- Untyped nodes now contain NULL as types, enforcing hard failure.
- Typer immediately installs itself as a decorator; remove explicit decorator installation.
- Decorator eagerly types all nodes that have typed inputs
(subsumes typing of constant cache, removing its typing
side-channel and various spurious dependencies on the typer).
- Cut down typer interface to prevent inconsistently typed graphs.
- Remove verification from start, since it caused too much trouble
with semi-wellformed nodes.
- Fix a couple of bugs on the way that got uncovered.
To do: verifying machine operators. Also, various conditions in the
verifier are currently commented out, because they don't yet hold.
BUG=
R=jarin@chromium.org ,titzer@chromium.org
Review URL: https://codereview.chromium.org/658543002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24626 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 11:38:04 +00:00
bmeurer@chromium.org
81877a6440
[turbofan] Optimize division/modulus by constant.
...
TEST=cctest,mjsunit,unittests
R=dcarney@chromium.org , svenpanne@chromium.org
Review URL: https://codereview.chromium.org/654833002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24595 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 11:57:06 +00:00
baptiste.afsa@arm.com
573ca15f48
[turbofan] Add support for shifted and rotated operands on ARM64.
...
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/642923003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24591 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 09:28:53 +00:00
bmeurer@chromium.org
8a00950303
[arm] Drop SMMLS support.
...
Apparently
SMMLS r, b, c, a
computes
r = ((a << 32) - b * c) >> 32
while the documentation is kinda misleading and states that it should
compute
r = a - ((b * c) >> 32)
The actual behavior is kinda useless, so we drop the instruction again.
TEST=cctest,unittests
TBR=dcarney@chromium.org
Review URL: https://codereview.chromium.org/654653004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24577 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 07:47:27 +00:00
bmeurer@chromium.org
8950e0a3de
[arm] Add support for SMMLA, SMMLS and SMMUL.
...
TEST=cctest,unittests
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/648283002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24575 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 05:03:04 +00:00
bmeurer@chromium.org
b472d9a045
MIPS: Add OWNERS file for compiler unittests.
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/648413003
Patch from Paul Lind <paul.lind@imgtec.com>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24574 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 03:55:43 +00:00
hpayer@chromium.org
d1e693a43a
Check if there is still time before finalizing an incremental collection.
...
BUG=
R=erik.corry@gmail.com , ulan@chromium.org
Review URL: https://codereview.chromium.org/629903003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24567 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 16:27:55 +00:00
bmeurer@chromium.org
5c1f7b5aa1
[turbofan] Optimize Int32Mod by power-of-two.
...
TEST=mjsunit/asm/int32-tmod,unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/649083005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24554 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 11:09:32 +00:00
bmeurer@chromium.org
4a5055174b
[turbofan] Embed the actual backing store address for typed loads/stores.
...
TEST=unittests
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/650843002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24548 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 09:17:33 +00:00
mvstanton@chromium.org
d04617b2db
Introduce FeedbackVectorSlot type - better than int.
...
It's good to have typing around this value.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/641373002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24528 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 13:22:10 +00:00
bmeurer@chromium.org
059e4c206e
[turbofan] Optimize Uint32LessThan with Word32Sar.
...
TEST=unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/648663002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24520 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 10:23:04 +00:00
mvstanton@chromium.org
52575220d4
Teach TurboFan to call vector-based ICs.
...
Additional static information needs to be passed to Load and KeyedLoad calls if
--vector-ics is turned on.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/633423002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24519 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 09:49:43 +00:00
yangguo@chromium.org
889d1e540c
Conform to the unittest naming convention.
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/644973002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24513 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 08:06:21 +00:00
yangguo@chromium.org
0dd69ec439
Allow identifier code points from supplementary multilingual planes.
...
ES5.1 section 6 ("Source Text"):
"Throughout the rest of this document, the phrase “code unit” and the
word “character” will be used to refer to a 16-bit unsigned value
used to represent a single 16-bit unit of text."
This changed in ES6 draft section 10.1 ("Source Text"):
"The ECMAScript code is expressed using Unicode, version 5.1 or later.
ECMAScript source text is a sequence of code points. All Unicode code
point values from U+0000 to U+10FFFF, including surrogate code points,
may occur in source text where permitted by the ECMAScript grammars."
This patch is to reflect this spec change.
BUG=v8:3617
LOG=Y
R=jochen@chromium.org
Review URL: https://codereview.chromium.org/640193002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24510 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 07:13:46 +00:00
bmeurer@chromium.org
c95ba9bd04
[turbofan] Eliminate redundant masking operations for word8/word16 stores.
...
There's no need to apply 0xff when storing 8-bit values or 0xffff when
storing 16-bit values.
TEST=unittests
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/642033002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24492 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 12:20:45 +00:00
bmeurer@chromium.org
f0452e2193
[turbofan] Add support for ARM64 Ubfx
...
Support selecting Ubfx for shift-mask and mask-shift operations. Also, rename
the shifts to match the instruction names.
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/633123002
Patch from Martyn Capewell <m.m.capewell@googlemail.com>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24482 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 09:18:31 +00:00
yangguo@chromium.org
8659e50723
Update unicode to 7.0.0.
...
And do not use code points with PATTERN_* property for identifier start.
Maintain that \u180E is a white space character.
BUG=v8:2892
LOG=Y
R=dpino@igalia.com , mathias@qiwi.be
Review URL: https://codereview.chromium.org/638643002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24473 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 14:55:03 +00:00
mstarzinger@chromium.org
f99fd3867b
Remove premordial math functions from native context.
...
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/635323002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24471 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 14:42:31 +00:00
jarin@chromium.org
bb5b39260b
Relax representation requirement in FrameStates.
...
This change enables non-tagged representations in FrameStates.
That allows us to run zlib with deoptimization support and have almost the same performance of the generated code (as the code with no deoptimization). Unfortunately, the frame states seem to confuse typer. As a consequence, we generate more representation changes, which in turn causes the scheduler to take a lot more time and memory (>4x). The added compiler time makes zlib with deopt be about 50% slower.
BUG=
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/614713002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24454 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 08:47:29 +00:00
bmeurer@chromium.org
db33f07f79
[turbofan] Reenable value numbering.
...
Value numbering is now limited to eliminatable operators (i.e. operators
that don't throw and don't write), and uses linear probing instead of
separate chaining.
TEST=unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/630423002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24452 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 08:06:59 +00:00
bmeurer@chromium.org
8617b3acf8
[turbofan] Fix HashCode/Equals for floating point operators.
...
Those floating point constant operators require bitwise handling of
their parameters, otherwise 0.0 equals -0.0. This is solved in a
general way by adding new base::bit_equal_to and base::bit_hash
function objects.
TEST=unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/636953002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24450 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 07:32:07 +00:00
bmeurer@chromium.org
a17289f4bc
[turbofan] Drop broken StaticParameterTraits.
...
The StaticParameterTraits are broken by design, and cause way too much
trouble. The compilers usually pick the wrong specialization (i.e. the
default specialization is picked for Load and Phi even tho there is a
specialization for MachineType), which is not only the reason why GVN is
ineffective and slow, but can also lead to correctness issues in some
rare cases.
Also clean up some minor bugs/inconsistencies on the way.
TEST=cctest,unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/636893002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24437 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 13:30:28 +00:00
bmeurer@chromium.org
0a6e406927
Further improve hashing of pointers and integers.
...
Also make sure that the appropriate functions are inlined properly
(using V8_INLINE instead of inline to enforce it even with GCC),
and improve the HashIsOkish unittest.
TEST=unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/635733002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24427 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 07:39:19 +00:00
bmeurer@chromium.org
e3294b1f09
[turbofan] Fix lowering of typed loads/stores.
...
Only JSLoadProperty/JSStoreProperty nodes with external typed arrays can
be lowered to LoadElement/StoreElement, because lowering of non-external
typed arrays would require a map check.
TEST=cctest,unittests,mjsunit
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/631093003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24426 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 07:36:21 +00:00
bmeurer@chromium.org
03255440de
Don't use identity as hash function for integers.
...
Also slightly improve hashing of floats/doubles.
TEST=unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/632713002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24420 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 15:23:59 +00:00
dcarney@chromium.org
e7a635c853
[turbofan] fix vreg mapping for instruction selector tests
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/636543002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24418 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 14:30:55 +00:00
bmeurer@chromium.org
9440b885ae
Add C++11 compatible base::hash function object.
...
Implement NodeCache in terms of base::hash and std::equal_to in preparation
for HeapConstant caching.
TEST=cctest,unittests
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/624153003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24412 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 12:27:24 +00:00
m.m.capewell@googlemail.com
b662e754ae
[turbofan] Negated immediates for ARM64 add/sub
...
Add ARM64 instruction selector support for negating the sense of an arithmetic
instruction when its immediate is negative.
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/610323004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24407 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 10:39:23 +00:00
jarin@chromium.org
f40d582cf1
Revert "[turbofan] Fix lowering of typed loads/stores."
...
This reverts commit r24386 for tanking asm.js benchmarks.
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/634473002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24406 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 08:54:24 +00:00
paul.lind@imgtec.com
f9b39f29fb
MIPS: Add turbofan support for mips32.
...
BUG=
R=bmeurer@chromium.org , dusan.milosavljevic@imgtec.com
Review URL: https://codereview.chromium.org/601723002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24397 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 15:48:48 +00:00
bmeurer@chromium.org
5899cc8ca7
[turbofan] Fix lowering of typed loads/stores.
...
We can only access to external typed arrays; lowering of internal
typed arrays would require a map check plus eager deoptimization.
Also embed the array buffer reference directly instead of embedding
the typed array.
TEST=cctest,mjsunit,unittests
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/621863002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24386 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 08:38:37 +00:00
hpayer@chromium.org
ad6b41ffa7
Force scavenge in idle notification if we estimate that it will take long.
...
BUG=
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/583593006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24379 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 07:21:53 +00:00
mstarzinger@chromium.org
3bc3df9a27
Implement inlined stack-check guards in TurboFan.
...
R=bmeurer@chromium.org
TEST=cctest/test-run-stackcheck/TerminateAtMethodEntry
Review URL: https://codereview.chromium.org/621833003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 14:03:02 +00:00
bmeurer@chromium.org
b9afcdcefb
[turbofan] Add control input to Load and LoadElements.
...
Also remove the now obsolete ControlEffect operator.
TEST=cctest,mjsunit,unittests
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/620803003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24359 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 11:08:37 +00:00
dcarney@chromium.org
b3d426889d
[turbofan] intel lea add multiply matchers
...
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/614013002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24357 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 10:47:14 +00:00
titzer@chromium.org
c1d79db81b
Rename Int32{UMod,UDiv} to Uint32{Div,Mod} and Int64{UMod,UDiv} to Uint64{Div,Mod}.
...
R=bmeurer@chromium.org , mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/620773003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24356 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 10:39:11 +00:00
bmeurer@chromium.org
26b181f4d0
Fix unittests.gyp for cross compiling.
...
TBR=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/615243003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24351 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 08:54:21 +00:00
bmeurer@chromium.org
bfd37ab267
Move unit tests to test/unittests.
...
As per discussion on the V8 team, this is the place we want them to live,
not following the Chrome Style Guide for this.
BUG=v8:3489
LOG=y
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/615393002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24350 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 08:34:25 +00:00
bmeurer@chromium.org
ecec301571
Revert "Initial import of unittests using GTest/GMock."
...
This reverts commit r22847 and r22848. Isolate initialization/shutdown
still broken (so certain debug builds just crash), and our compiler flags
do not work with other Google projects (i.e. GTest/GMock).
TBR=jochen@chromium.org
Review URL: https://codereview.chromium.org/438243003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22855 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-05 10:16:47 +00:00
bmeurer@chromium.org
88ce4eb5bb
Fix build.
...
TBR=jochen@chromium.org
Review URL: https://codereview.chromium.org/442603004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22848 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-05 08:10:21 +00:00
bmeurer@chromium.org
62ac0d1050
Initial import of unittests using GTest/GMock.
...
R=jochen@chromium.org , svenpanne@chromium.org
Review URL: https://codereview.chromium.org/439863004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22847 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-05 08:07:25 +00:00