Commit Graph

36 Commits

Author SHA1 Message Date
Michael Achenbach
7eb022c857 [test] Upgrade gcmole plugin
This upgrades to a precompiled plugin version including:
https://chromium.googlesource.com/v8/v8/+/4b0edcf7

BUG=v8:5970
TBR=clemensh@chromium.org,mstarzinger@chromium.org

Change-Id: I28ecdd568e4bc075533b3d14b7946a4a7ce5f9e0
Reviewed-on: https://chromium-review.googlesource.com/443648
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#43255}
2017-02-16 14:54:22 +00:00
clemensh
4b0edcf7e0 [gcmole] Fixes for unreachable code
Enforce the invariant that unreachable implicates an empty live set and
fix the implementation of |= and &= operator.
This is a fix-up for http://crrev.com/2694103005.

R=vegorov@chromium.org
CC=mstarzinger@chromium.org, machenbach@chromium.org
BUG=v8:5970

Review-Url: https://codereview.chromium.org/2691103008
Cr-Commit-Position: refs/heads/master@{#43251}
2017-02-16 14:13:11 +00:00
clemensh
b8787e348d [gcmole] Avoid hardcoded maximum of 256 locals
This CL changes the datastructure to store live variables from a
std::bitset<256> to a std::vector<bool> to support an arbitrary number
of locals. Unfortunately, std::vector<bool> does not define |= and &=
operators, so I added them on the Environment class.

R=vegorov@chromium.org, mstarzinger@chromium.org, machenbach@chromium.org
BUG=v8:5970

Review-Url: https://codereview.chromium.org/2694103005
Cr-Commit-Position: refs/heads/master@{#43216}
2017-02-15 14:43:22 +00:00
machenbach
a8951a96ab [gn] Add gn support to gcmole
This also adds sources missing for PPC and x87, fixes a few
missing files in gyp due to wrong quotation and a few that
were simply not included.

The gn files are now authoritative, but the gcmole gyp and
gn source lists are enforced to match exactly.

This additional enforcement helped finding the bugs above
and will be removed when we deprecate the gyp files.

BUG=614645
NOTRY=true

Review-Url: https://codereview.chromium.org/2352103002
Cr-Commit-Position: refs/heads/master@{#39592}
2016-09-21 11:45:24 +00:00
jochen
7036d96b57 Add a mode to completely deserialize scope chains
This will allow for the background parser to parse inner functions

BUG=v8:5215
R=marja@chromium.org,verwaest@chromium.org

Review-Url: https://codereview.chromium.org/2198043002
Cr-Commit-Position: refs/heads/master@{#38291}
2016-08-03 13:31:04 +00:00
machenbach
994dc21148 [gn] Use one source of truth for test source files.
This avoids forgetting to add files for either gyp or gn.

While for most executables, this is detected by compilation
errors, for test executables, it can lead to tests silently
not running.

BUG=chromium:474921

Review-Url: https://codereview.chromium.org/2098313002
Cr-Commit-Position: refs/heads/master@{#37331}
2016-06-28 13:24:08 +00:00
mstarzinger
fd20e49f4c [gcmole] Fix source files pattern in GYP parsing.
The pattern of how our source files are listed in GYP files changed,
which in turn broke the parsing pattern that GCMole uses to gather a
list of files to check. Only 'cctest' file were checked, 'src' files
were being ignored.

R=cbruni@chromium.org

Review-Url: https://codereview.chromium.org/2065933002
Cr-Commit-Position: refs/heads/master@{#36962}
2016-06-14 12:08:04 +00:00
machenbach
3bf44848c3 [gn] Move build to gypfiles
This prepares for pulling chromium's build as dependency for
gn. After this, the files in build and gypfiles need to stay
in sync until chromium is updated.

BUG=chromium:474921
LOG=n

Review-Url: https://codereview.chromium.org/1848553003
Cr-Commit-Position: refs/heads/master@{#35898}
2016-04-29 10:11:11 +00:00
machenbach
cb855fe728 [build] Prepare moving v8.gyp to src/
This will allow to pull in gyp as a deps to the same location
as chromium (tools/gyp not build/gyp), needed for gn switch.

This is the first step of a 3-way move.
1) Copy v8.gyp in v8
2) Update references in embedders (follow up)
3) Remove old v8.gyp (follow up)

BUG=chromium:474921
LOG=n
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#35760}
2016-04-25 12:20:24 +00:00
jochen
b576da4059 Add include/ to include dir list for gcmole
BUG=
R=yangguo@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#34381}
2016-03-01 09:03:03 +00:00
machenbach
e761942801 [Swarming] Add missing files to gcmole isolate.
BUG=chromium:535160
LOG=n
TBR=tandrii@chromium.org, kjellander@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#34079}
2016-02-17 13:26:57 +00:00
machenbach
a08701cb0f [Swarming] Add missing files to gcmole isolate.
BUG=chromium:535160
LOG=n
TBR=tandrii@chromium.org, kjellander@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#34075}
2016-02-17 12:51:03 +00:00
machenbach
95e4c70287 [Swarming] Isolate gcmole.
BUG=chromium:535160
LOG=n
TBR=tandrii@chromium.org, kjellander@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#34065}
2016-02-17 10:08:09 +00:00
machenbach
4fbca26cde [Swarming] Make gcmole wrapper cwd-independent.
Some parts of the wrapped scripts seem to expect cwd to be
the v8 directory.

BUG=chromium:535160
LOG=n
TBR=tandrii@chromium.org, kjellander@chromium.org, mstarzinger@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#34059}
2016-02-17 08:40:05 +00:00
machenbach
3ec1417050 [Swarming] Bundle gcmole tools.
This enables downloading all gcmole dependencies from
google storage on demand, controlled by a gyp flag
"gcmole=1". This makes the analysis portable to any linux64
host. The archive contains a prebuilt clang in the needed
version, the gcmole plugin and a lua binary.

The tool can be run through a new wrapper that sets up the
environment. This'll ease running it on swarming.

BUG=chromium:535160
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#34046}
2016-02-16 19:07:57 +00:00
machenbach
94e683b526 Make gcmole execute in parallel.
TBR=tandrii@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#26724}
2015-02-18 15:35:34 +00:00
machenbach
7307bf0ff3 Make gcmole correctly handle 32 bit architectures.
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#26723}
2015-02-18 14:51:09 +00:00
svenpanne@chromium.org
adeac1a32c Unbreak gcmole bots.
Switching on C++11 features for gcmole might actually be a good idea... :-}

TBR=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22991 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-08 10:37:45 +00:00
svenpanne@chromium.org
6e75bfc35b Update gcmole to a more recent clang/llvm.
* Changes for 2.9:
     * Use CXX in Makefile instead of hardwired g++, we need a more
       modern GCC than 4.6 later, anyway.

* Changes for 3.0:
     * Use llvm namespace.
     * Diagnostic => DiagnosticsEngine.

* Changes for 3.1:
     * The BlockDeclRefExpr AST node is gone.
     * The structure of the CXXNewExpr AST node has changed.
     * Path changed from Release to Release+Asserts.
     * Use clang++ instead of -cc1, otherwise we lose the system include
       paths.

* Changes for 3.2:
     none needed

* Changes for 3.3:
     * Use lookup_iterator::begin/end instead of first/second.

* Changes for 3.4:
     * createItaniumMangleContext => ItaniumMangleContext::create.

* Changes for 3.5:
     * clang uses <type_traits> now, so -std=c++0x is needed.
     * Type-trait-related AST changes.
     * getCustomDiagID signature changed.
     * We must link the C++ library statically now.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22972 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-07 12:56:53 +00:00
jochen@chromium.org
2874a5ce8e Update include paths for gcmole
TBR=mvstanton@chromium.org
LOG=n
BUG=none

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 11:01:35 +00:00
mstarzinger@chromium.org
1c314382c0 Extend GCMole to also cover cctest files.
R=rossberg@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20841 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-17 11:57:08 +00:00
mstarzinger@chromium.org
95f61f9243 Extend GCMole to cover ARM64 architecture.
R=ishell@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20237 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-25 11:46:28 +00:00
jochen@chromium.org
13cc3b59be updates
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16189 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-14 12:53:09 +00:00
jochen@chromium.org
aeaa87714c updates
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16188 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-14 12:53:01 +00:00
jochen@chromium.org
ef95294896 Add a bootstrap script to make it easier to build gcmole
R=machenbach@chromium.org

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16187 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-14 12:52:51 +00:00
jochen@chromium.org
ab4cbbc083 Also add i18n directories to gcmole
R=vegorov@chromium.org

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16170 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-13 12:22:56 +00:00
jochen@chromium.org
91f0f5f0c3 Run gcmole on i18n code.
BUG=none
R=vegorov@chromium.org, vegorov@google.com

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16167 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-13 11:05:30 +00:00
mstarzinger@chromium.org
6e5c8fe803 Make sure GCMole pukes when Clang invocation fails.
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15187 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-17 18:00:23 +00:00
mstarzinger@chromium.org
c46cbccefd Make it clear that GCMole depends on Clang 2.9 currently.
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14393 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-23 12:48:59 +00:00
mstarzinger@chromium.org
d1942e1431 Make Clang plugins directory configurable for GCMole.
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14374 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-22 12:49:08 +00:00
mstarzinger@chromium.org
6654cbeb7d Switch GCMole to use GYP build file instead of SCons.
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14350 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-19 12:46:32 +00:00
vegorov@chromium.org
9e87728572 In gcmole assume that methods exiting VM can cause GC.
Detect those methods by reference to StateTag::EXTERNAL in their bodies.

R=fschneider@google.com

Review URL: https://chromiumcodereview.appspot.com/9420046

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10738 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-17 11:34:50 +00:00
vegorov@chromium.org
777df2d878 Adjust contents of kAheadOfTime to match write-barrier stub called from CompileArrayPushCall.
R=erik.corry@gmail.com
BUG=v8:1729

Review URL: http://codereview.chromium.org/8113034

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9513 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-04 11:38:12 +00:00
sgjesse@chromium.org
8a6108de95 Remove the ability to compile without logging and profiling
The preprocessor defines ENABLE_LOGGING_AND_PROFILING and ENABLE_VMSTATE_TRACKING has been removed as these where required to be turned on for Crankshaft to work. To re-enable reducing the binary size by leaving out heap and CPU profiler a new set of defines needs to be created.

R=ager@chromium.org

BUG=v8:1271
TEST=all

Review URL: http://codereview.chromium.org//7350014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-13 09:09:04 +00:00
vegorov@chromium.org
850b106400 Extend GCMole with poor man's data flow analysis to catch dead raw pointer vars.
Fix various places in the code found by improved GCMole.

Review URL: http://codereview.chromium.org/6973063

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7895 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-16 09:06:16 +00:00
vegorov@chromium.org
8578dfc6ce Add GCMole to the repository.
GCMole is a simple static analysis tool that searches for GC-usafe evaluation order dependent callsites.

Review URL: http://codereview.chromium.org/6812002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7540 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-07 12:38:16 +00:00