Commit Graph

55 Commits

Author SHA1 Message Date
erikcorry
4f5337a2b6 Cosmetic changes to tests to make it easier to concatenate them.
When compiling on a laptop I like to concatenate the small test files.
This makes a big difference to compile times. These changes make that
easier.

R=ulan@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28742}
2015-06-01 22:47:08 +00:00
ishell
0902b5f4df Incorrect handling of HTransitionElementsKind in hydrogen check elimination phase fixed.
BUG=chromium:460917
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#27154}
2015-03-12 11:44:29 +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@chromium.org
d07a2eb806 Rename ASSERT* to DCHECK*.
This way we don't clash with the ASSERT* macros
defined by GoogleTest, and we are one step closer
to being able to replace our homegrown base/ with
base/ from Chrome.

R=jochen@chromium.org, svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 11:34:54 +00:00
jochen@chromium.org
56a486c322 Use full include paths everywhere
- this avoids using relative include paths which are forbidden by the style guide
- makes the code more readable since it's clear which header is meant
- allows for starting to use checkdeps

BUG=none
R=jkummerow@chromium.org, danno@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 08:12:43 +00:00
bmeurer@chromium.org
77130247ac Handle HCheckInstanceType and HIsStringAndBranch in check elimination.
R=ishell@chromium.org

Committed: https://code.google.com/p/v8/source/detail?r=21593

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21606 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-02 12:17:05 +00:00
bmeurer@chromium.org
dae3413cc4 Revert "Handle HCheckInstanceType and HIsStringAndBranch in check elimination."
This reverts commit r21593 for breaking the Webkit tests.

TBR=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21594 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-02 09:20:19 +00:00
bmeurer@chromium.org
1c17e61629 Handle HCheckInstanceType and HIsStringAndBranch in check elimination.
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21593 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-02 08:51:25 +00:00
jochen@chromium.org
84e078e561 Reland 21502 - "Move OS::MemCopy and OS::MemMove out of platform to utils"
Verified that arm builds locally.

BUG=none
TBR=jkummerow@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 07:57:22 +00:00
jochen@chromium.org
eabd5a19b9 Revert 21502 - "Move OS::MemCopy and OS::MemMove out of platform to utils"
TBR=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21504 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 19:56:27 +00:00
jochen@chromium.org
a5a21a0da4 Move OS::MemCopy and OS::MemMove out of platform to utils
Since both are jitted on some platforms and depend on codegen, they
don't belong to the platform abstraction. At the same time, I can't put
them to codegen.h, as this would introduce cyclic dependencies.

BUG=none
R=jkummerow@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21502 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 19:33:15 +00:00
bmeurer@chromium.org
a7e19c1a43 Revert "Refactor transitioning stores."
This reverts commit r21383 for breaking the Mozilla tests.

TBR=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21386 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-20 13:03:25 +00:00
bmeurer@chromium.org
b09989ec58 Refactor transitioning stores.
There's actually no need to have the transition as part of the HStoreNamedField instruction. In fact, it is cleaner and faster to generate a separate HStoreNamedField for the transition map. This will also help to eliminate map stores with store elimination, as well as reduce register pressure for transitioning stores on ia32.

R=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-20 11:06:23 +00:00
bmeurer@chromium.org
424877c773 Fix invalid condition in check elimination effects.
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21375 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-20 08:16:47 +00:00
ishell@chromium.org
6e74578968 Use stability to only conditionally flush information from the map check table.
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21274 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-12 20:05:52 +00:00
bmeurer@chromium.org
a3fed0af84 Fix constructors for HLoadNamedField.
Also try to determine an appropriate HType for tracked fields,
instead of (incorrectly) using HType::NonPrimitive() everywhere.

R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21186 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-07 08:41:35 +00:00
bmeurer@chromium.org
a051bc5762 Next bunch of fixes for check elimination.
- Canonicalize HCheckMapValue with constant map to
  HCheckMaps, and get rid of the special treatment
  during check elimination.
- Track only stable object maps for HConstants and
  add CHECK()s to verify state during code generation.

R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21154 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-06 07:05:07 +00:00
bmeurer@chromium.org
7c1036d424 Various cleanups in check elimination.
- Move IsMapAccess() to HObjectAccess.
- Collect the actual objects instead of HStoreNamedFields in
  effects, and also consider HTransitionElementsKind.
- Fix ownership of HCheckMaps::maps() and HLoadNamedField::maps().
- Avoid heavy copying of the same map sets all the time during
  check elimination, and do something useful with the memory
  instead by slightly bumping the maximum number of tracked
  objects.
- Slightly optimize UniqueSet::Contains().

R=svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21133 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-05 06:53:19 +00:00
bmeurer@chromium.org
d4b533d41b Bulk update of Google copyright headers in source files.
R=svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21035 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-29 06:42:26 +00:00
bmeurer@chromium.org
01041ce92e Remove invalid HCheckValue case in check elimination.
Also eliminate a useless copy of the map set in case of
HCheckMaps.

R=svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21033 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-29 04:59:37 +00:00
bmeurer@chromium.org
eccda7f000 Fix field type handling in load elimination.
Drive-by-fix: map_set() must return a pointer to the UniqueSet
instead of a copy.

R=svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20870 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-22 07:24:05 +00:00
bmeurer@chromium.org
42c67d5fa2 Allow merging of monomorphic accesses to tracked fields.
Also add stability dependency only on maps that can transition,
and delay adding the dependencies until we are actually using
them, either in a HLoadNamedField or an HCheckMaps.

TEST=mjsunit/field-type-tracking
R=svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20796 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 11:41:09 +00:00
bmeurer@chromium.org
6b4d4b7287 Reland "Track field types.".
This is an initial step towards tracking the exact types instead of just
the representations of fields. It adds support to track up to one map of
heap object field values, eliminating various map checks on values
loaded from such fields, at the cost of making stores to such fields
slightly more expensive.

Issues with transitioning stores and fast object literals in Crankshaft
fixed.

TEST=mjsunit/field-type-tracking
R=svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20746 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-15 07:36:47 +00:00
jarin@chromium.org
c1a3ab6b4f Revert "Track field types."
Revert r20701.

TBR=bmeurer@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-14 08:24:15 +00:00
bmeurer@chromium.org
9cf3909975 Track field types.
This is an initial step towards tracking the exact types instead of just the representations of fields. It adds support to track up to one map of heap object field values, eliminating various map checks on values loaded from such fields, at the cost of making stores to such fields slightly more expensive.

TEST=mjsunit/field-type-tracking
R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20701 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-14 06:29:15 +00:00
ishell@chromium.org
f77c51b0a6 Check elimination now sets known successor branch of HCompareObjectEqAndBranch (correctness fix).
BUG=chromium:352058
LOG=N
R=bmeurer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19964 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-17 09:11:38 +00:00
ishell@chromium.org
c2601aea8a Check elimination did not mark some dead blocks.
R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19619 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-28 14:16:38 +00:00
verwaest@chromium.org
d5caecccc5 Revert "Use stability to only conditionally flush information from the CheckMaps table."
R=ishell@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19548 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-25 16:11:58 +00:00
ishell@chromium.org
1342cb8b00 Bugfix in check elimination with a regression test.
R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19481 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-19 12:34:50 +00:00
jkummerow@chromium.org
4c2626a0c7 Valgrind fix: always initialize HCheckTableEntry->is_stable_
BUG=chromium:343621
LOG=N
R=ishell@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19371 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 10:03:17 +00:00
verwaest@chromium.org
161b2f689a Reland: "Use stability to only conditionally flush information from the CheckMaps table."
BUG=
R=ishell@chromium.org

Original CL: https://codereview.chromium.org/153823003

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19342 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-12 18:48:12 +00:00
verwaest@chromium.org
7b7e3658f7 Don't propagate information through phis in loop headers.
To properly do this, we'd have to iterate over CompareMaps (and their bodies) handling phis, until we have learned enough to decide which paths can be taken. For now, just disable learning from phis in loop headers.

BUG=
R=ishell@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19341 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-12 18:30:41 +00:00
verwaest@chromium.org
75432b7696 Revert "Use stability to only conditionally flush information from the CheckMaps table."
R=ishell@chromium.org

BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19331 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-12 15:38:42 +00:00
verwaest@chromium.org
2b7d33572a Use stability to only conditionally flush information from the CheckMaps table.
BUG=
R=ishell@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19330 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-12 15:07:41 +00:00
ishell@chromium.org
b446674c85 More check elimination improvements including partial learning on false branches of CompareMap and better handling of unreachable blocks.
R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19300 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-11 19:18:06 +00:00
bmeurer@chromium.org
a5ef6e5eec Improve inobject field tracking during GVN.
Now stores to inobject fields do no longer prevent hoisting
and combining of loads from other inobject fields.

R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19249 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-11 06:53:14 +00:00
bmeurer@chromium.org
40f3b1ba87 Revert "Improve inobject field tracking during GVN."
This reverts commit r19427 for breaking the build. Will reland with
fix.

TBR=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19248 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-11 06:46:14 +00:00
bmeurer@chromium.org
cd1b7df638 Improve inobject field tracking during GVN.
Now stores to inobject fields do no longer prevent hoisting
and combining of loads from other inobject fields.

R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19247 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-11 06:41:06 +00:00
ishell@chromium.org
f46da9d43b Reland of r19102: Check elimination improvement: propagation of state through phis is supported, CheckMap narrowing implemented with tests.
R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19229 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-10 15:32:54 +00:00
bmeurer@chromium.org
2b60325def [Sheriff] Revert "Check elimination temporarily disabled.", "Fix for buildbot failure after r19102." and "Check elimination improvement: propagation of state through phis is supported, CheckMap narrowing implemented."
This reverts commit r19102, r19105 and r19170 for breaking the
Chrome browser_tests. Will reland once fixed.

R=ishell@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-07 07:36:30 +00:00
ishell@chromium.org
9743d254f3 Fix for buildbot failure after r19102.
R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19105 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-05 15:22:54 +00:00
ishell@chromium.org
a11899ff4e Check elimination improvement: propagation of state through phis is supported, CheckMap narrowing implemented.
R=titzer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19102 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-05 13:39:55 +00:00
bmeurer@chromium.org
8150c34c82 Optimize redundant HCompareMap instructions with known successors.
R=ishell@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19094 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-05 09:30:53 +00:00
ishell@chromium.org
9070615980 Fix for potential issue related to replacing CheckMaps with values.
R=titzer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18887 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-28 17:49:13 +00:00
ishell@chromium.org
5dafb426b3 Flow engine fixes: unreachable block processing, state merging.
R=titzer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18885 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-28 16:57:39 +00:00
jkummerow@chromium.org
5298a078c6 Revert "Eliminatable CheckMaps replaced with if(true) or if(false)."
This reverts r18592 for breaking the GC stress bots.

R=machenbach@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18611 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-15 09:53:54 +00:00
ishell@chromium.org
952fbe475f Eliminatable CheckMaps replaced with if(true) or if(false).
R=titzer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18592 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-14 16:06:40 +00:00
titzer@chromium.org
1f679a58f7 Improve check elimination with branch sensitivity on HCompareObjectEqAndBranch.
BUG=
R=mvstanton@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18377 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-19 17:42:21 +00:00