v8/test/unittests
Benedikt Meurer a15ad0d310 [turbofan] Reduce overhead of megamorphic property accesses.
We had an optimization in Crankshaft where we would call into the
megamorphic handler stub directly if an inline cache was already
found to be megamorphic when it hit the optimizing compiler. This
way we could avoid the dispatch overhead when we know that there's
no point in checking for the other states anyways. However we somehow
missed to port this optimization to TurboFan.

Now this change introduces support to call into LoadIC_Megamorphic and
KeyedLoadIC_Megamorphic directly (plus the trampoline versions), which
saves quite a lot of overhead for the cases where the map/name pair is
found in the megamorphic stub cache, and it's quite a simple change. We
can later extend this to also handle the StoreIC and KeyedStoreIC cases
if that turns out to be beneficial.

This improves the score on the Octane/TypeScript test by around ~2%
and the TypeScript test in the web-tooling-benchmark by around ~4%. On
the ARES-6 Air test the steady state mean improves by 2-4%, and on the
ARES-6 ML test the steady state mean seems to also improve by 1-2%, but
that might be within noise.

On a micro-benchmark that just runs `o.x` in a hot loop on a set of 9
different objects, which all have `x` as the first property and are
all in fast mode, we improve by around ~30%, and are now almost on par
with JavaScriptCore.

Bug: v8:6344, v8:6936
Change-Id: Iaa4c6e34c37e78da217ee75f32f6acc95a834250
Reviewed-on: https://chromium-review.googlesource.com/1215623
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55803}
2018-09-11 18:04:01 +00:00
..
api [api][runtime] Support all-in ctors of {Named,Indexed}PropertyHandlerConfiguration 2018-08-15 21:28:09 +00:00
asmjs [scanner] Go back to untemplatized scanning with buffering 2018-08-21 10:52:52 +00:00
assembler PPC/s390: Reland "[turboassembler] Introduce hard-abort mode" 2018-08-08 14:41:22 +00:00
base [ptr-compr] Introduce BoundedPageAllocator and use it instead of CodeRange. 2018-09-10 09:30:50 +00:00
compiler [turbofan] Reduce overhead of megamorphic property accesses. 2018-09-11 18:04:01 +00:00
compiler-dispatcher [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
heap [heap] Refactor HeapController 2018-09-10 19:47:15 +00:00
interpreter Reland "[interpreter] Add bytecode for leading array spreads." 2018-09-05 09:29:51 +00:00
libplatform [V8 Platform] Better WorkerThreads APIs. 2018-04-30 19:05:40 +00:00
parser [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
torque [torque] add unittest for Earley parser 2018-07-24 14:01:33 +00:00
utils [preparser] Refactor VariableProxies to use ThreadedLists interface 2018-09-11 16:14:00 +00:00
wasm [wasm] Add preliminary support for imported exceptions. 2018-09-11 09:25:18 +00:00
zone Fix a bug in ZoneChunkList::Find() at chunk boundaries. 2018-08-22 09:37:41 +00:00
allocation-unittest.cc [ptr-compr] Explicitly pass v8::PageAllocator instance to helper functions. 2018-09-06 14:45:58 +00:00
bigint-unittest.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
BUILD.gn [preparser] Refactor VariableProxies to use ThreadedLists interface 2018-09-11 16:14:00 +00:00
cancelable-tasks-unittest.cc Make CancelableTask ids unique 2017-08-02 16:10:42 +00:00
char-predicates-unittest.cc Use ICU for ID_START, ID_CONTINUE and WhiteSpace check 2017-06-14 20:32:49 +00:00
code-stub-assembler-unittest.cc Make CallInterfaceDescriptor isolate-independent 2018-06-18 15:55:53 +00:00
code-stub-assembler-unittest.h [csa] Add constant folding more universally to CodeAssembler operators 2017-09-12 10:03:10 +00:00
counters-unittest.cc [callbacks] Properly support RCS for ApiAccessors and Callbacks. 2018-08-15 15:25:14 +00:00
DEPS Move unit tests to test/unittests. 2014-10-01 08:34:25 +00:00
detachable-vector-unittest.cc [cleanup] Replace List with std::vector in api. 2017-09-28 09:32:18 +00:00
eh-frame-iterator-unittest.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
eh-frame-writer-unittest.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
locked-queue-unittest.cc Add lock-based unbounded queue 2015-11-18 10:54:13 +00:00
object-unittest.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
register-configuration-unittest.cc [Turbofan] Add concept of FP register aliasing on ARM 32. 2016-10-26 16:04:33 +00:00
run-all-unittests.cc [cleanup] use unique_ptr for the DefaultPlatform 2017-11-14 09:57:18 +00:00
source-position-table-unittest.cc Decouple SourcePositionTableBuilder from Zone 2017-11-21 12:56:13 +00:00
strings-storage-unittest.cc Extend hash seed to 64 bits 2018-07-16 11:19:42 +00:00
test-helpers.cc [sfi] Remove SFI function identifier field 2018-07-19 09:07:11 +00:00
test-helpers.h [unittests] Add TestWithIsolate::RunJS helper method 2017-11-13 14:27:51 +00:00
test-utils.cc [callbacks] Properly support RCS for ApiAccessors and Callbacks. 2018-08-15 15:25:14 +00:00
test-utils.h [callbacks] Properly support RCS for ApiAccessors and Callbacks. 2018-08-15 15:25:14 +00:00
testcfg.py [test] Remove dead code from suites and tests 2018-02-01 14:12:49 +00:00
unicode-unittest.cc Consolidate UTF-8 Vector<char> to uc16 decoding into Iterator 2018-02-20 20:04:41 +00:00
unittests.status [heap] Fix SpacesTest.WriteBarrierFromHeapObject 2018-07-26 11:17:14 +00:00
utils-unittest.cc [turbofan] Add --trace-turbo-filter 2018-05-16 09:33:15 +00:00
value-serializer-unittest.cc Remove unnecessary 'size' argument from TYPED_ARRAYS macro. 2018-07-31 12:29:13 +00:00