v8/tools
Peter Marshall 5a70a5ea0a [memory] Save space in the FeedbackMetadata on 64 bit platforms.
Previously we used a FixedArray for the FeedbackMetadata, packing bits
of information into Smi fields. On 64-bit platforms, we waste at least
half of the available memory by using the Smi representation.

Given that this is just raw data (no pointers), we can just use a new
type that uses the existing packing scheme to store the data in int32
format instead.

This CL changes FeedbackMetadata to a new subclass of HeapObject. This
is to reduce the API surface exposed, in comparison to extending/using
a more general purpose data structure like ByteArray, which is also just
raw data.

FeedbackMetadata only exposes general purpose methods for accessing
slots, but hides the implementation detail of packing bits into int32
fields.

This CL also introduces a sentinal EmptyFeedbackMetadata, because there
are ~750 empty FeedbackMetadata objects when running an empty program in
V8. These are probably for builtins.

Bug: v8:7500
Change-Id: Ic85563153abbd71a22854cee8519260c32b1e9ab
Reviewed-on: https://chromium-review.googlesource.com/945730
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#51842}
2018-03-09 14:18:14 +00:00
..
blink_tests [Interpreter] Remove failure expectation for observer-expectations blink test. 2016-06-27 16:10:20 +00:00
cfi Port cfi blacklist from chromium. 2015-09-15 08:45:51 +00:00
clusterfuzz [foozzie] Fix errors in adjusted harness 2018-03-08 08:17:12 +00:00
dev [gm.py] Use autoninja instead of ninja 2018-01-19 19:31:58 +00:00
gcmole [build] Download gcmole and jsfunfuzz controlled by gclient flag 2018-02-12 13:32:03 +00:00
generate_shim_headers Add dependency to ICU 4.6 2013-07-01 08:32:41 +00:00
heap-stats [tools] Improve HeapStats category percentages 2018-03-05 18:28:51 +00:00
ignition [Interpreter] Replace --ignition flag with a --stress-fullcodegen 2017-07-13 13:05:00 +00:00
jsfunfuzz [build] Download gcmole and jsfunfuzz controlled by gclient flag 2018-02-12 13:32:03 +00:00
link_clicker.extension [tools] Add link_click chrome extension 2017-05-09 15:25:21 +00:00
mb [build] Remove obsolete gyp flag 2018-02-12 10:16:03 +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 [ycm] The YouCompleteMe configuration is not VIM specific. 2015-02-12 07:21:13 +00:00
node [gyp] remove gyp files. 2018-02-08 20:04:06 +00:00
perf [tools] Refactor patch/no-patch terminology in run_perf.py 2017-11-22 07:19:50 +00:00
profview [profview] Use identity operator 2017-11-08 09:11:33 +00:00
profviz [tools] Move common arguments processing into separate file 2017-10-24 00:25:04 +00:00
release Remove tools/release/update_node.py. 2018-02-19 10:09:07 +00:00
sanitizers Revert "[heap] Add TSAN suppression for lock-order inversion in Scavenger" 2017-10-25 10:18:49 +00:00
sodium Add tool to visualize machine code/lithium. 2013-10-21 13:35:48 +00:00
testrunner [Compiler] Remove unused background_compile flag. 2018-03-06 10:42:21 +00:00
toolchain [build] Support mips toolchain for cross-compiling 2018-02-08 08:25:47 +00:00
turbolizer [cleanup] Remove unused monkey patches 2018-02-23 15:13:57 +00:00
ubsan [build] Fix ubsan compilation 2017-07-19 14:08:39 +00:00
unittests [test] Abort testing immediately on interrupt and sigterm 2018-02-20 18:02:25 +00:00
v8.xcodeproj Add support for building Xcode project files from GYP files 2011-06-09 09:07:17 +00:00
vim [ycm] The YouCompleteMe configuration is not VIM specific. 2015-02-12 07:21:13 +00:00
visual_studio Remove the Visual Studio project files 2011-05-02 13:43:13 +00:00
wasm [wasm] Update spec tests 2018-01-25 09:28:58 +00:00
adb-d8.py [tools] Various small adb-d8.py enhancements 2017-08-24 14:20:55 +00:00
android-build.sh Rewrite Makefile rules for Android to allow parallel execution 2012-07-27 11:14:44 +00:00
android-ll-prof.sh Change default ARCH version in android low-level profiler script to 4.6 2012-10-08 11:11:30 +00:00
android-run.py Bug fix: android-run.py 2016-07-18 09:45:23 +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
bash-completion.sh [tools] Fix tools/bash-completion.sh for bool flags and harmony features 2015-12-10 10:01:39 +00:00
bigint-tester.py [bigint] Remove BigInt.parseInt 2018-01-26 02:51:58 +00:00
BUILD.gn [test] Add benchmarks to deopt-fuzzer and remove obsolete configs 2018-01-19 13:47:06 +00:00
callstats.html [tools] Update tools/callstats.* with the new background GC group. 2017-12-04 15:46:28 +00:00
callstats.py [tools] Update tools/callstats.* with the new background GC group. 2017-12-04 15:46:28 +00:00
check-inline-includes.sh [iwyu] Extend inline include checking to tests. 2017-09-08 09:31:32 +00:00
check-static-initializers.isolate [swarming] Isolate static initializer check. 2016-01-08 12:58:30 +00:00
check-static-initializers.sh Reland^3 r22105 "Remove static initializer from isolate" 2014-07-07 10:56:36 +00:00
check-unused-bailouts.sh [tools] Speed-up check-unused-bailouts.sh 2017-08-02 11:11:19 +00:00
codemap.js [profiler] Graphical front-end for tick processor. 2017-03-04 13:04:58 +00:00
compare-table-gen.js Add more exhaustive tests for Math.min and Math.max. 2015-04-10 12:35:16 +00:00
concatenate-files.py Fix common misspellings 2017-08-02 09:35:28 +00:00
consarray.js Make sure files end with exactly one new line and police this in presubmit. 2013-11-22 13:50:39 +00:00
cpu.sh [tools] Allow specifying cores for cpu.sh script. 2015-11-18 10:53:30 +00:00
cross_build_gcc.sh Fix tools/cross_build_gcc.sh. 2014-02-20 16:37:40 +00:00
csvparser.js [log] Escape newline with \n 2017-11-03 16:41:39 +00:00
DEPS Add DEPS files and run checkdeps in presubmit check 2014-06-03 13:39:42 +00:00
detect-builtins.js [tools] Fix detect-builtins.js 2016-06-09 10:17:32 +00:00
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 Rename A64 port to ARM64 port 2014-03-21 09:28:26 +00:00
dump-cpp.py [tools] Move common arguments processing into separate file 2017-10-24 00:25:04 +00:00
dumpcpp-driver.js [prof] Add slide offset in dumpcpp script 2016-05-30 08:56:59 +00:00
dumpcpp.js [prof] Add slide offset in dumpcpp script 2016-05-30 08:56:59 +00:00
eval_gc_nvp.py [tools] Compute percentiles for GC NVP 2016-04-08 12:05:59 +00:00
eval_gc_time.sh [Heap] Remove code flushing. 2017-05-22 09:34:43 +00:00
find_depot_tools.py Prototype for a client-side performance trybot script. 2014-11-18 14:40:00 +00:00
find-commit-for-patch.py Add tools/find-commit-for-patch.py 2014-12-16 14:25:00 +00:00
freebsd-tick-processor * Fix build errors on FreeBSD 8.2 2011-03-16 11:15:43 +00:00
fuzz-harness.sh [compiler] Make --debug-code the default in debug builds. 2016-12-02 11:36:55 +00:00
gc_nvp_common.py Clean up mark-compact phases and GC counter names. 2015-12-11 11:26:21 +00:00
gc-nvp-to-csv.py [tools] Add gc-nvp-to-csv.py script. 2015-06-19 10:40:47 +00:00
gc-nvp-trace-processor.py [tools] Add gc-nvp-to-csv.py script. 2015-06-19 10:40:47 +00:00
gdb-v8-support.py [tools] Add redirect gdb helper 2017-11-24 16:55:16 +00:00
gdbinit Fix jlh gdb macro. 2017-12-06 19:42:23 +00:00
gen-inlining-tests.py [turbofan] Remove --turbo shorthand for --turbo-filter. 2017-06-23 11:19:19 +00:00
gen-postmortem-metadata.py Introduce SimpleNumberDictionary. 2018-01-25 13:49:23 +00:00
generate-builtins-tests.py Add a script that can generate simple test cases for user-exposed JS builtins 2014-09-11 09:58:58 +00:00
generate-ten-powers.scm Fast double-to-ascii conversion. 2010-03-11 14:49:35 +00:00
get_landmines.py [build] Prepare removal of gyp-defines from landmine 2018-02-16 23:28:14 +00:00
grokdump.py [runtime] Add BOILERPLATE_DESCRIPTION_TYPE InstanceType 2018-03-02 13:43:27 +00:00
ic-explorer.html [tools] Fix IC-Explorer drilldown and format file 2017-10-30 11:17:43 +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 [ic] Introduce new IC for storing into array literals. 2018-03-02 21:12:57 +00:00
isolate_driver.py Move msvs_dependencies.isolate out of gypfiles. 2018-01-30 09:12:14 +00:00
js2c.py Remove initial whitespace & empty lines to decrease JS files size 2017-12-19 00:04:19 +00:00
jsmin.py jsmin.py: Fix issue with escaping of back ticks 2015-06-24 22:29:46 +00:00
linux-tick-processor [tools] Move common arguments processing into separate file 2017-10-24 00:25:04 +00:00
ll_prof.py Fix annotated disassembly in ll_prof.py 2016-04-06 12:38:44 +00:00
lldb_commands.py [tools] add lldbinit 2017-03-27 06:44:15 +00:00
lldbinit [debugging] Add helper to print transition trees 2017-07-06 10:44:01 +00:00
logreader.js [tools/logreader] Print overflow drops to stderr 2017-03-17 13:42:14 +00:00
mac-nm [profiler] Graphical front-end for tick processor. 2017-03-04 13:04:58 +00:00
mac-tick-processor Implement shared libraries logging on Mac OS X, added required support in Tick Processor. 2009-07-14 05:01:06 +00:00
Makefile.tags [Makefile] Move tags generation to standalone Makefile 2018-01-26 12:03:32 +00:00
map-processor [tools] All new shiny maptracer.html 2017-12-18 12:48:00 +00:00
map-processor-driver.js [tools] All new shiny maptracer.html 2017-12-18 12:48:00 +00:00
map-processor.html [tools] All new shiny maptracer.html 2017-12-18 12:48:00 +00:00
map-processor.js [tools] All new shiny maptracer.html 2017-12-18 12:48:00 +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 Add initial set of sub directory OWNERS file 2015-04-02 08:46:24 +00:00
parse-processor [tools] New parse processor tool 2017-12-20 13:07:17 +00:00
parse-processor-driver.js [tools] New parse processor tool 2017-12-20 13:07:17 +00:00
parse-processor.html [tools] New parse processor tool 2017-12-20 13:07:17 +00:00
parse-processor.js [tools] New parse processor tool 2017-12-20 13:07:17 +00:00
parser-shell.cc Remove support for unused compile options. 2018-02-21 09:51:31 +00:00
perf-compare.py Reland "Reland "[test] Creating command before execution phase."" 2017-12-04 13:40:29 +00:00
perf-to-html.py Reland "Reland "[test] Creating command before execution phase."" 2017-12-04 13:40:29 +00:00
plot-timer-events [tools] Move common arguments processing into separate file 2017-10-24 00:25:04 +00:00
predictable_wrapper.py [test] Move predictable testing into a python wrapper 2017-12-08 14:46:10 +00:00
presubmit.py [gyp] remove gyp files. 2018-02-08 20:04:06 +00:00
profile_view.js Tick processor: improved [Summary] section 2014-08-04 08:31:49 +00:00
profile.js [profiler] Add script name to v8.log with --log-source-code. 2017-08-10 04:43:43 +00:00
run_perf.py [js-perf-tests] Create tests for Array.from 2018-02-05 16:23:19 +00:00
run-llprof.sh Fix tools/run-llprof.sh to work with newer perf. 2014-10-09 06:01:41 +00:00
run-num-fuzzer.isolate [test] Remove old gc and deopt fuzzers 2018-01-26 14:36:03 +00:00
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 First cut at run_mksnapshot action for gn 2014-06-03 06:50:46 +00:00
shell-utils.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
SourceMap.js Add source map support to tick processor. 2013-08-23 17:20:54 +00:00
splaytree.js Remove support for logging into a memory buffer. 2011-07-13 11:31:22 +00:00
stats-viewer.py Fix common misspellings 2017-08-02 09:35:28 +00:00
tick-processor.html [tools] Move common arguments processing into separate file 2017-10-24 00:25:04 +00:00
tickprocessor-driver.js [tools] Add options to separate more entries in tickprocessor 2017-04-11 10:23:02 +00:00
tickprocessor.js [tools] Move common arguments processing into separate file 2017-10-24 00:25:04 +00:00
trace-maps-processor.py Add FLAG_trace_maps 2014-11-07 16:03:44 +00:00
try_perf.py Trigger v8_linux64_perf_try on swarming 2018-02-15 01:09:34 +00:00
turbolizer-perf.py [turbolizer] Fixed naming of turbolizer perf script. 2016-07-28 12:38:00 +00:00
v8heapconst.py [memory] Save space in the FeedbackMetadata on 64 bit platforms. 2018-03-09 14:18:14 +00:00
whitespace.txt Whitespace CL 2018-03-08 16:13:55 +00:00
windows-tick-processor.bat [tools] Move common arguments processing into separate file 2017-10-24 00:25:04 +00:00