The following revision refers to this bug:
https://chromium.googlesource.com/v8/v8.git/+/a4af0ce633c5032bafc55e86248c9a78634ef8f8
commit a4af0ce633c5032bafc55e86248c9a78634ef8f8
Author: Camillo Bruni <cbruni@chromium.org>
Date: Sat Nov 18 00:52:12 2017
[ic] Track the IC state change in FeedbackNexus::ConfigureMegamorphic
- This precents us from logging two ICEvents for a megamorphic miss that adds
a new property
- We don't have to reset the profiler ticks anymore for this miss
The particular case for missing to add a new property happens ~1700 times in
the Speedometer Angular benchmark where we get an already internalized key
as property name.
Change-Id: I2362c3b7a66d9def1bc4295f6f1e64c96b25fe8a
Reviewed-on: https://chromium-review.googlesource.com/777259
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49464}
[modify] src/feedback-vector.cc
[modify] src/feedback-vector.h
[modify] src/ic/ic.cc
[modify] src/ic/ic.h
The following revision refers to this bug:
https://chromium.googlesource.com/v8/v8.git/+/426ae4265e539da2932ea2cb2cc1aeed97788b41
commit 426ae4265e539da2932ea2cb2cc1aeed97788b41
Author: Benedikt Meurer <bmeurer@chromium.org>
Date: Thu Aug 03 06:13:13 2017
[csa] Extend TryToName to also implicitly convert Oddball keys.
Previously TryToName bailed out for Oddball keys (i.e. when passing true
or false as the key), which meant that for example the generic
KeyedLoadIC would always bail out to the %KeyedGetProperty runtime
function. But handling Oddball keys is fairly easy, since every oddball
value carries it's unique string representation. Adding just this case
to the CodeStubAssembler::TryToName method boosts this simple
micro-benchmark by a factor of 4x:
const n = 1e7;
const obj = {};
const key = true;
console.time('foo');
for (let i = 0; i < n; ++i) {
if (obj[key] === undefined) {
obj[key] = key;
}
}
console.timeEnd('foo');
It also shows on the ARES-6 ML benchmark and on several Speedometer
tests, where objects are being used as dictionaries and the developers
rely on the implicit ToString conversions on the property accesses.
In the ARES-6 ML benchmark, the number of calls to %KeyedGetProperty
is reduced by 137,758.
Bug: v8:6278 , v8:6344, v8:6670
Change-Id: Iaa965e30be4c247682a67ec09543655df9b761d2
Reviewed-on: https://chromium-review.googlesource.com/599527
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47105}
[modify] https://crrev.com/426ae4265e539da2932ea2cb2cc1aeed97788b41/src/code-stub-assembler.cc
[modify] https://crrev.com/426ae4265e539da2932ea2cb2cc1aeed97788b41/test/cctest/test-code-stub-assembler.cc
commit 6a75fcd4df042f9c1d93319d92d69d72386d8419
Author: Benedikt Meurer <bmeurer@chromium.org>
Date: Thu Jul 27 12:46:33 2017 +0200
[ignition] Improve code generation for TestTypeOf.
The code generated for the TestTypeOf bytecode was not ideal, mostly
because of the default case that just aborted. If we do CSA_ASSERT to
check the validity of the literal_flag instead anf then just use the
last label as the default, the bytecode handler no longer builds a
stack frame and generated code quality is now really close to ideal.
The TestTypeOf bytecode handler was found to be among the three
hottest bytecode handlers in the Speedometer/AngularJS benchmark.
R=jarin@chromium.org
Change-Id: I47705a0ca0a436d5c42899001064e77d44845a64
Reviewed-on: https://chromium-review.googlesource.com/589207
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46930}
commit ac99f28a6372c5dbd2486f8fd21edef4a4b20b64
Author: Jeremy Roman <jbroman@chromium.org>
Date: Fri Oct 27 15:14:02 2017 +0000
Remove id attribute from inner editor element.
This forces the UA shadow root to create a number of data structures, and for
this use case they are adequately replaced by a single native Oilpan member.
On my workstation, this shows up as using about 1.3% of the CPU time in the
Speedometer jQuery TodoMVC app.
Change-Id: I5de4fcbd86920f447399c07f57d5b0f382a3216b
Reviewed-on: https://chromium-review.googlesource.com/734233
Commit-Queue: Jeremy Roman <jbroman@chromium.org>
Reviewed-by: Keishi Hattori <keishi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512185}
commit 10e32c0672ba494d9004bf5a32e1f45849e4148a
Author: Adithya Srinivasan <adithyas@chromium.org>
Date: Fri Feb 2 01:18:11 2018 +0000
Change most kTreeScope collections to be of type kNode
All these caches only return nodes that are in the Document tree. They
only need invalidation when a changed node is in/previously in
the Document tree, so they don't need to be separately invalidated
at the Document level. They will automatically be invalidated when the
ancestors of a node are invalidated in
InvalidateNodeListCachesInAncestors, because the Document is an
ancestor.
Change-Id: I3da315c77e0afe8c82822ea25b8df8099535eded
Reviewed-on: https://chromium-review.googlesource.com/890704
Reviewed-by: Kent Tamura <tkent@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Hayato Ito <hayato@chromium.org>
Commit-Queue: Adithya Srinivasan <adithyas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#533888}
Comment 1 by mathias@chromium.org
, Feb 2 2018