v8/tools
Maya Lekova 45ae9e0ae9 Update gcmole to work with llvm 8 and the new Object design
After introducing the new pointer-containing Object class in V8 (see
https://docs.google.com/document/d/1_w49sakC1XM1OptjTurBDqO86NE16FH8LwbeUAtrbCo/edit),
gcmole stopped finding errorneous usage of raw pointers in functions that could
trigger GC. This CL modifies the heuristics of the tool to classify Object and
MaybeObject instances as raw pointers, thus giving back the missing warnings.

Updated the gcmole implementation to support modern llvm (tested with llvm 8.0)
for which additional support for MaterializeTemporaryExpr, ExprWithCleanups and
UnaryExprOrTypeTraitExpr was needed.

Basic tests are added to make it harder to introduce such errors without
noticing in the future.

This version gives a lot of false positives when ran on the whole project, see
https://docs.google.com/document/d/1K7eJ0f6m9QX6FZIjZnt_GFtUsjEOC_LpiAwZbcAA3f8/edit

R=jkummerow@chromium.org,mstarzinger@chromium.org

Bug: v8:8813
Change-Id: Ic0190a4bc2642eda8880d9f7b30b5145a76a7d89
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1494754
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60099}
2019-03-07 15:22:22 +00:00
..
blink_tests [test] Remove obsolete blink test skips 2019-01-18 12:30:23 +00:00
cfi [CFI] Expand blacklisted entries 2018-04-11 09:00:31 +00:00
clusterfuzz [foozzie] Add sanity checks to avoid bug flooding 2019-02-28 11:27:32 +00:00
dev Specify the Python executable on the command line in gm.py 2019-03-05 03:30:30 +00:00
gcmole Update gcmole to work with llvm 8 and the new Object design 2019-03-07 15:22:22 +00:00
generate_shim_headers
heap-stats [heap-object-stats] Account PreparseData and scope_data together 2019-01-11 13:05:38 +00:00
ignition Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
jsfunfuzz [test] update the jsfunfuzz archive in Google Storage 2018-12-18 15:00:35 +00:00
link_clicker.extension [tools] Add link_click chrome extension 2017-05-09 15:25:21 +00:00
mb Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
memory [build] Fix win-asan compilation 2017-10-16 08:37:15 +00:00
msan [gn] Add missing dep and blacklist for msan 2016-07-29 09:01:24 +00:00
ninja
node Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
perf [tools] Refactor patch/no-patch terminology in run_perf.py 2017-11-22 07:19:50 +00:00
profview [profview] Use requestAnimationFrame to schedule a render 2019-01-15 13:08:46 +00:00
profviz [log] Improve log parsing 2018-06-20 13:40:22 +00:00
release [docs] Change links from old wiki to v8.dev 2019-03-07 12:13:30 +00:00
sanitizers Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
snapshot [Builtins] Infrastructure for source positions in stubs/builtins 2019-01-22 19:09:36 +00:00
sodium
testrunner [test] Make test runner use shell 2019-03-07 08:16:27 +00:00
toolchain [build] Add support for the other MIPS architectures 2018-03-19 10:43:07 +00:00
torque [torque-ls] add option to trace communication from client 2019-03-04 14:43:02 +00:00
turbolizer [turbolizer] Update deploy script 2019-02-28 11:46:32 +00:00
ubsan [test] Remove obsolete ubsan suppression 2019-02-20 09:16:57 +00:00
unittests [test] Skip test with gcc build 2019-02-27 14:46:02 +00:00
v8.xcodeproj
valgrind/asan [build] Add testrunner data deps 2018-03-26 12:17:08 +00:00
vim
visual_studio
wasm [wasm/tools] Add import profiler 2018-11-22 15:36:21 +00:00
__init__.py [test] make python recognize tools and tools/unittests as packages 2018-12-17 12:12:43 +00:00
adb-d8.py [tools] Various small adb-d8.py enhancements 2017-08-24 14:20:55 +00:00
android-build.sh
android-ll-prof.sh
android-run.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
android-sync.sh [tools] Move common arguments processing into separate file 2017-10-24 00:25:04 +00:00
arguments.js [tools] Move common arguments processing into separate file 2017-10-24 00:25:04 +00:00
avg.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
bash-completion.sh
bigint-tester.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
BUILD.gn [test] Fix predictable builder after swarming switch 2018-10-23 13:24:53 +00:00
callstats.html [tools] Clean up HTML for tools 2019-01-06 14:20:33 +00:00
callstats.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
callstats.py.vpython [tools] Fix platform specification for scipi 2018-08-17 18:49:49 +00:00
check-inline-includes.sh [iwyu] Extend inline include checking to tests. 2017-09-08 09:31:32 +00:00
check-static-initializers.sh
check-unused-bailouts.sh [tools] Speed-up check-unused-bailouts.sh 2017-08-02 11:11:19 +00:00
check-unused-symbols.sh [cleanup] Remove unused heap-symbols and add tool. 2018-11-08 17:57:05 +00:00
codemap.js [builtins] Add kind specific flag for off-heap trampolines 2018-06-22 09:43:25 +00:00
collect_deprecation_stats.sh [objects] Deprecate GetIsolate/Heap behind a flag 2018-06-01 15:19:21 +00:00
compare-table-gen.js
concatenate-files.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
consarray.js
cpu.sh
cross_build_gcc.sh
csvparser.js Escape backslashes when logging. 2018-08-10 09:09:19 +00:00
deprecation_stats.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
DEPS
detect-builtins.js
disasm.py [grokdump] Include -z flag to make objdump disassemble all-zero sections 2017-04-21 13:35:37 +00:00
draw_instruction_graph.sh
dump-cpp.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
dumpcpp-driver.js
dumpcpp.js [log] Improve log parsing 2018-06-20 13:40:22 +00:00
eval_gc_nvp.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
eval_gc_time.sh [in-place weak refs] Remove WeakCell 2018-08-14 08:05:05 +00:00
find_depot_tools.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
find-commit-for-patch.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
freebsd-tick-processor
fuzz-harness.sh [compiler] Make --debug-code the default in debug builds. 2016-12-02 11:36:55 +00:00
gc_nvp_common.py
gc-nvp-to-csv.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
gc-nvp-trace-processor.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
gdb-v8-support.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
gdbinit Fix heap_find gdb macro 2019-03-06 11:48:12 +00:00
gen-inlining-tests.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
gen-keywords-gen-h.py [parser] Remove #line directives from keywords-gen.h 2018-11-28 15:22:05 +00:00
gen-postmortem-metadata.py [ptr-compr] Prepare for changing kTaggedSize, pt.1 2019-02-27 15:26:09 +00:00
generate-builtins-tests.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
generate-header-include-checks.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
generate-ten-powers.scm
get_landmines.py Update V8 DEPS. 2019-02-26 10:18:14 +00:00
grokdump.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
ic-explorer.html [tools] Clean up HTML for tools 2019-01-06 14:20:33 +00:00
ic-processor [tools] Move common arguments processing into separate file 2017-10-24 00:25:04 +00:00
ic-processor-driver.js [tools] Fix IC-Explorer drilldown and format file 2017-10-30 11:17:43 +00:00
ic-processor.js [tools] Make ic-processor print global loads/stores. 2019-01-18 12:35:43 +00:00
js2c.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
linux-tick-processor [tools] Make tick processor report error to stderr. 2018-11-06 14:25:55 +00:00
ll_prof.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
lldb_commands.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
locs.py fix syntax error in python2 code 2019-03-05 20:07:08 +00:00
logreader.js [log] Improve log parsing 2018-06-20 13:40:22 +00:00
mac-nm [profiler] Graphical front-end for tick processor. 2017-03-04 13:04:58 +00:00
mac-tick-processor
Makefile.tags [Makefile] Move tags generation to standalone Makefile 2018-01-26 12:03:32 +00:00
map-processor tick processor: fix arguments and comments 2018-10-29 09:48:23 +00:00
map-processor-driver.js [tools] All new shiny maptracer.html 2017-12-18 12:48:00 +00:00
map-processor.html [tools] Clean up HTML for tools 2019-01-06 14:20:33 +00:00
map-processor.js [tools] Add file positions to map-explorer 2018-11-29 11:42:25 +00:00
mips_toolchain.tar.gz.sha1 [build] Enable downloading mips toolchain via runhooks 2018-01-31 14:38:43 +00:00
objdump-v8 [disasm] Make jump target printing perf friendly 2017-03-20 14:47:04 +00:00
OWNERS Make tmrts an infra OWNER 2019-02-15 09:02:24 +00:00
parse-processor tick processor: fix arguments and comments 2018-10-29 09:48:23 +00:00
parse-processor-driver.js [tools] New parse processor tool 2017-12-20 13:07:17 +00:00
parse-processor.html [tools] Clean up HTML for tools 2019-01-06 14:20:33 +00:00
parse-processor.js [tools] Improve function event logging and parse processor 2018-07-16 14:05:14 +00:00
perf-compare.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
plot-timer-events tick processor: fix arguments and comments 2018-10-29 09:48:23 +00:00
predictable_wrapper.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
PRESUBMIT.py [tools] Clean up presubmit and run all unittests 2019-02-01 10:27:29 +00:00
profile_view.js
profile.js [profview] Avoid treating embedded builtins as CPP code. 2018-09-27 12:14:15 +00:00
run_perf.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
run-clang-tidy.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
run-llprof.sh
run-num-fuzzer.py [test] Implement gc fuzzer with test processors 2018-01-19 16:58:49 +00:00
run-perf.sh [tools] run-perf: ensure command line arguments are prepended 2016-10-05 15:15:38 +00:00
run-tests.py TestRunner initial refactor 2017-10-13 08:52:28 +00:00
run.py
shell-utils.h
SourceMap.js
splaytree.js
stats-viewer.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
test262-results-parser.js test262 roll 2018-08-28 21:18:23 +00:00
tick-processor.html [tools] Clean up HTML for tools 2019-01-06 14:20:33 +00:00
tickprocessor-driver.js [d8] pass --no-arguments to omit top-level arguments 2018-10-31 07:42:22 +00:00
tickprocessor.js Delete dead/debug code in (tick|ic|map)processor.js. 2018-08-16 12:31:02 +00:00
trace-maps-processor.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
try_perf.py [tools] Add ares6 and blazor to benchmark set 2019-02-19 15:24:32 +00:00
turbolizer-perf.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
update-object-macros-undef.py Preparing v8 to use with python3 /tools 2019-02-19 09:12:07 +00:00
v8_presubmit.py [foozzie] Add sanity checks to avoid bug flooding 2019-02-28 11:27:32 +00:00
v8heapconst.py [modules] Make debug-scopes handle synthetic variables 2019-03-04 15:06:02 +00:00
whitespace.txt [tools] Whitespace CL 2019-02-27 10:00:02 +00:00
windows-tick-processor.bat [tools] Move common arguments processing into separate file 2017-10-24 00:25:04 +00:00