mvstanton@chromium.org
026c5507bd
Make HForceRepresentation an idef.
...
An optimization in the array constructor wasn't firing because the code
would check for constant values, failing to find them through
intervening HForceRepresentation instructions. Repaired this site. A
follow-on CL will provide a better way of making decisions based on
constant HValues.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/59623009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17708 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-13 17:03:11 +00:00
yangguo@chromium.org
e83fd01ce6
Reland "Implement Math.sin, cos and tan using table lookup and spline interpolation."
...
This relands r17594 with necessary fixes.
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/70003004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17654 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-12 14:43:18 +00:00
yangguo@chromium.org
df9665032e
Introduce %_IsMinusZero.
...
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/63423004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17639 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-12 11:53:13 +00:00
bmeurer@chromium.org
6f75e92902
Add initial hydrogenized NewStringAddStub.
...
The new stub is enabled via the --new-string-add flag, which is
disabled by default. For now, it's only a stripped down version
of the native StringAddStub, it's still work-in-progress.
BUG=v8:2990
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/61893009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17635 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-12 10:21:08 +00:00
ulan@chromium.org
bc4ad49b25
Do not add values to HGraph in Lithium.
...
Lithium uses indexes after the maximium value ID in the HGraph as indexes
of virtual registers and assumes that the maximum value ID does not change.
The IsStandardConstant and GetConstantXX functions could add constants to
HGraph, which aliased virtual registers with real values. This could confuse
the register allocator to think that a value in a virtual register is tagged
and to incorrectly set it in the pointer map.
BUG=298269
TEST=mjsunit/regress/regress-298269.js
R=verwaest@chromium.org
Review URL: https://chromiumcodereview.appspot.com/66693002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17599 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-08 14:16:34 +00:00
yangguo@chromium.org
9f104a1a3e
Revert "Implement Math.sin, cos and tan using table lookup and spline interpolation."
...
This reverts commit r17594.
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/59153007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17596 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-08 13:44:27 +00:00
yangguo@chromium.org
063b7c4ebb
Implement Math.sin, cos and tan using table lookup and spline interpolation.
...
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/50563003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17594 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-08 13:10:39 +00:00
yangguo@chromium.org
fc1dadce9b
Use register allocator for context on x64.
...
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/50863002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17585 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-08 10:58:51 +00:00
mstarzinger@chromium.org
acac89008d
Defer allocation of constant literal properties.
...
This moves building of constant properties and elements arrays for all
materialized literals into the compiler. The parser no longer allocates
while parsing ObjectLiteral and ArrayLiteral expressions.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/61873003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17557 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-07 12:08:37 +00:00
mvstanton@chromium.org
cec8548d0e
Correct handling of arrays with callbacks in the prototype chain.
...
Our generic KeyedStoreIC doesn't handle the case when a callback is
set on array elements in the prototype chain of the object, nor do
we recognize that we need to avoid the monomorphic case if these
callbacks exist.
This CL addresses the issue by looking for dictionary elements in
the prototype chain on IC misses and crankshaft element store
instructions. When found, the generic IC is used. The generic IC is
changed to go to the runtime in this case too.
In general, keyed loads are immune from this problem because they
won't return the hole: discovery of the hole goes to the runtime where
the callback will be found in the prototype chain. Double array loads
in crankshaft can return the hole but only if the prototype chain is
unaltered (we will catch such alterations).
Includes the following patch as well (already reviewed by bmeurer):
Performance regression found in test regress-2185-2.js. The problem was
that the bailout method for TransitionAndStoreStub was not performing
the appropriate transition.
(Review URL for the ElementsTransitionAndStoreIC_Miss change:
https://codereview.chromium.org/26911007 )
R=danno@chromium.org
Review URL: https://codereview.chromium.org/35413006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17525 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-06 15:45:43 +00:00
mvstanton@chromium.org
ee6e52f292
Remove CreateArrayLiteralShallow, as it's fundamentally the same now as
...
CreateArrayLiteral.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/54333003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17470 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-05 09:54:59 +00:00
bmeurer@chromium.org
537100336c
Do Else() first for JoinContinuation() in IfBuilder.
...
This is required to make sure that environments are correct
for joined continuations.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/52593008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17464 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-05 08:56:48 +00:00
plind44@gmail.com
c042ef360d
Enable double alignment for constructed arrays.
...
2nd (of 3) CL's to ensure complete alignment of FixedDoubleArrays.
TEST=
BUG=
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/35133002
Patch from Dusan Milosavljevic <Dusan.Milosavljevic@rt-rk.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17382 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-24 19:01:30 +00:00
jkummerow@chromium.org
8259439ae8
Fix HObjectAccess for loads from migrating prototypes
...
BUG=chromium:305309
R=danno@chromium.org
Review URL: https://codereview.chromium.org/35173005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17345 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-23 15:15:15 +00:00
ishell@chromium.org
bf7a9bf8dc
HCheckInstanceType factories unified
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/35413007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17342 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-23 13:03:15 +00:00
ishell@chromium.org
a333094165
PushAndAdd() usages refactored.
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/36893002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17339 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-23 12:34:39 +00:00
hpayer@chromium.org
fbaf016b6d
Add a soft-deopt in keyed element access when current IC is pre-monomorphic and no type feedback was collected.
...
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/32643004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17335 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-23 10:41:21 +00:00
dcarney@chromium.org
6eeb141a37
force accessor pair accesses backed by simple api calls to be generic accesses when crankshafted
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/34773003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17332 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-23 08:46:46 +00:00
bmeurer@chromium.org
32d96248f9
Guard against misuse of IfBuilder.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/30693007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17319 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-22 11:37:15 +00:00
ishell@chromium.org
32cdd4d48a
More Hydrogen templatization.
...
Factories added to a set of Hydrogen classes.
Several old-style HXxx::New() replaced with New<HXxx>() and NewUncasted<HXxx>.
Several AddInstruction() calls following New::XXX() replaced with Add<XXX>().
AddLoadNamedField() method added to GraphBuilder.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/34523004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17318 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-22 11:29:05 +00:00
titzer@chromium.org
d63c8e4dc3
Allow constants to be deleted by reinserting them into the graph as needed.
...
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/31943002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17299 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 14:09:32 +00:00
danno@chromium.org
4c565138b5
Add tool to visualize machine code/lithium.
...
In the process:
- Add a command-line flag --opt-code-positions to track source position information throughout optimized code.
- Add a subclass of the hydrogen graph builder to ensure that the source position is properly set on the graph builder for all generated hydrogen code.
- Overhaul handling of source positions in hydrogen to ensure they are passed through to generated code consistently and in most cases transparently.
Originally reviewed in this CL: https://codereview.chromium.org/24957003/
Review URL: https://codereview.chromium.org/29123008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17295 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 13:35:48 +00:00
bmeurer@chromium.org
100fb55555
Inline number to string conversion for string addition into BinaryOp(Stub).
...
This fixes a performance regression that was caused by converting the
BinaryOpStub to a Hydrogen code stub. It also fixes a leftover TODO wrt.
the handling of Number*String or String*Number versions of the stub.
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/27674002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17290 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 12:42:08 +00:00
bmeurer@chromium.org
ef12527b7c
Revert "Add a soft-deopt in keyed element access when current IC is pre-monomorphic and no type feedback was collected."
...
This reverts commit r17288 for breaking the mjsunit/unbox-double-arrays
test on almost every platform.
TBR=hpayer@chromium.org
Review URL: https://codereview.chromium.org/32373002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17289 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 12:32:38 +00:00
hpayer@chromium.org
9667e1b30f
Add a soft-deopt in keyed element access when current IC is pre-monomorphic and no type feedback was collected.
...
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/32263002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17288 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 12:10:01 +00:00
mvstanton@chromium.org
8f9f192f6e
AllocationSites for all literals
...
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/24250005
Review URL: https://codereview.chromium.org/27366003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17228 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 08:10:36 +00:00
mvstanton@chromium.org
f4edc076d8
Revert "AllocationSites for all literals"
...
This reverts commit r17219 due to WebKit failures.
R=mstarzinger@chromium.org
TBR=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/26539010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17222 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-15 15:35:23 +00:00
jkummerow@chromium.org
ea4e0a3d28
Simplify array element access in Hydrogen.
...
No change in functionality intended.
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/26986004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17221 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-15 15:06:04 +00:00
mvstanton@chromium.org
362c0cfbca
AllocationSites for all literals
...
BUG=
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/24250005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17219 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-15 14:52:58 +00:00
jkummerow@chromium.org
1d580b4fd0
Delete dead code from HOptimizedGraphBuilder::VisitCompareOperation
...
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/26419005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17214 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-15 11:24:37 +00:00
rossberg@chromium.org
c806a2385d
Unify handling of position info in AST, part 3
...
* Turn CaseClause into a proper AstNode
R=yangguo@chromium.org
BUG=
Review URL: https://codereview.chromium.org/23684058
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17187 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-14 11:06:15 +00:00
mvstanton@chromium.org
71af6c86a1
Allow FastCloneShallowObjectStub to use AllocationMementos.
...
(currently turned off)
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/26827002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17154 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-11 09:25:14 +00:00
dslomov@chromium.org
12250f23d8
Add instruction factories to HHasInstanceTypeAndBranch.
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/26859003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17150 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-10 20:01:42 +00:00
olivf@chromium.org
66c610398f
Reland "Hydrogenisation of binops"
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/25494007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17104 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-04 08:17:11 +00:00
olivf@chromium.org
24c2336d75
Inline some more compare operations.
...
BUG=
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/25009003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17091 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-02 18:15:57 +00:00
verwaest@chromium.org
41f660fe07
Rename ComputeLoadStoreField to just handle ComputeStoreField.
...
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/25683005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17086 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-02 17:17:00 +00:00
danno@chromium.org
79a14d3f73
Fix failure in unit tests
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/25665006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-02 16:13:49 +00:00
danno@chromium.org
d4bcf5d730
Fix test262 failures and x64 compile failure.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/25604008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17082 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-02 15:27:51 +00:00
verwaest@chromium.org
7e0ea6ab46
Only fold polymorphic into monomorphic load if all load from either receiver or same prototype.
...
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/25718002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17078 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-02 13:24:08 +00:00
danno@chromium.org
908a7dc2a8
Improve and simplify removal of unreachable code
...
- Detect unreachable basic blocks of code either following an unconditional deopt or after a provably untaken branch of HBranch or HCompareObjectEqAndBranch instructions.
- Emit dummy uses in unreachable blocks during Hydrogen -> Lithium translation.
BUG=chromium:258519
R=jkummerow@chromium.org , mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/22876009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17073 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-02 11:43:41 +00:00
palfia@homejinni.com
4b9a9f7af7
MIPS: Allow function inlining with context change.
...
Port r17019 (cd4b69cd)
BUG=
R=jkummerow@chromium.org , plind44@gmail.com
Review URL: https://codereview.chromium.org/25622003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17070 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-02 11:25:06 +00:00
olivf@chromium.org
9459ed3ab4
Revert "Hydrogenisation of binops"
...
This reverts r17052-17054 for various build breaks.
TBR=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/25571002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17055 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-01 18:00:02 +00:00
olivf@chromium.org
7873f35eb2
Hydrogenisation of binops
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/24072013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17052 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-01 15:24:56 +00:00
mstarzinger@chromium.org
b9b528e030
Defer allocation of native function literals.
...
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/25473002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17038 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-01 09:47:37 +00:00
mvstanton@chromium.org
aa90e62ba0
In crankshafted code, we were creating allocation mementos for shallow
...
SMI array literals when we shouldn't. The idea is that we should have learned
by this point what type of array we'll end up with.
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/25146007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17028 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-01 08:22:01 +00:00
jkummerow@chromium.org
85ae341b09
Revert "Defer allocation of native function literals."
...
This reverts r17017 for breaking LayoutTests.
R=mstarzinger@chromium.org
TBR=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/25315002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17024 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-30 17:42:58 +00:00
rodolph.perfetta@gmail.com
e7669d9308
ARM: Allow function inlining with context change.
...
BUG=none
TEST=none
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/25247002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17019 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-30 15:08:20 +00:00
mstarzinger@chromium.org
c624141bf3
Defer allocation of native function literals.
...
R=dcarney@chromium.org
BUG=
Review URL: https://codereview.chromium.org/25164003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17017 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-30 14:49:11 +00:00
yangguo@chromium.org
2dec4372d8
Finish control flow after throw if not inlined.
...
R=jkummerow@chromium.org
BUG=v8:2868
Review URL: https://codereview.chromium.org/24768002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16992 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-27 13:48:19 +00:00
mvstanton@chromium.org
807cdd492b
Refactoring such that loop builders only call into the HOsrBuilder if
...
compiling for OSR.
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/25039003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16990 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-27 13:38:04 +00:00