- 11 Oct, 2018 1 commit
-
-
Jakob Kummerow authored
The primary purpose of this is to untangle a circular dependency objects.h -> handles.h -> objects.h. Most compilation units only need message-template.h, without the rest of messages.h. Bonus: change the enum to an enum class for improved type safety. Bug: v8:3770 Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: I8102c55197a450811de2588a68a08e7f99ea6b9e Reviewed-on: https://chromium-review.googlesource.com/c/1272193 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#56583}
-
- 08 Oct, 2018 1 commit
-
-
Marja Hölttä authored
See https://chromium-review.googlesource.com/1219025 for the corresponding MaybeObject renaming. BUG=v8:7308 Change-Id: Ib454fd53d12f110da289e1d3e1e12411b016e557 Reviewed-on: https://chromium-review.googlesource.com/c/1267937Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#56443}
-
- 20 Sep, 2018 2 commits
-
-
Igor Sheludko authored
and introduce RootsTable - a V8 heap roots storage. So, the renaming part looks like this: Heap::RootListIndex -> RootIndex Heap::kBlahBlahRootIndex -> RootIndex::kBlahBlah Bug: v8:8015, v8:8182 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I38e1f3e3f6813ef35e37b0bed35e9ae14a62134f Reviewed-on: https://chromium-review.googlesource.com/1234613Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#56067}
-
Florian Sattler authored
Fixing clang-tidy warning. Bug: v8:8015 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: Ibc5124e06f5774e7695029e2d21084a7efb965e6 Reviewed-on: https://chromium-review.googlesource.com/1224412 Commit-Queue: Florian Sattler <sattlerf@google.com> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#56065}
-
- 18 Sep, 2018 1 commit
-
-
Benedikt Meurer authored
This is the next step to support large array buffers. On 64-bit archs the full safe integer range is available (up to 2^53-1 bytes in theory). On 32-bit platforms the full Unsigned31 range is allowed, so that we can continue to use CheckBounds for typed arrays and data views in the optimizing compiler (it's generally unlikely that the kernel will give you more than 1GiB of contiguous memory anyways). Drive-by-fix: This introduces proper chokepoints for the byte_offset and byte_length accesses in the CSA code, and also does some renaming for consistency. Bug: v8:4153, v8:7881, v8:8171 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I92a767638532ca9f86084398ce72556c5180cc6e Reviewed-on: https://chromium-review.googlesource.com/1228377Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#56008}
-
- 17 Sep, 2018 1 commit
-
-
Marja Hölttä authored
E.g., "ToWeakHeapObject" was misleading, since it didn't convert to a weak heap object, instead returned a weakly pointed heap object. Change the function names (in this case, to "GetHeapObjectIfWeak") to reflect this. Also make casts explicit, if a MaybeObject is an Object, we can call cast<Object>(). Previous version: https://chromium-review.googlesource.com/1219025 BUG=v8:7308 TBR=ishell@chromium.org, ulan@chromium.org, ahaas@chromium.org, yangguo@chromium.org, tebbi@chromium.org Change-Id: I503d4a2a3a68f85e9e02e1c2f9fc1c4187c8e9a1 Reviewed-on: https://chromium-review.googlesource.com/1226800Reviewed-by:
Marja Hölttä <marja@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#55934}
-
- 14 Sep, 2018 3 commits
-
-
Marja Hölttä authored
This reverts commit ad72d195. Reason for revert: Build failures on *san Original change's description: > [in-place weak refs] Fix MaybeObject function names > > E.g., "ToWeakHeapObject" was misleading, since it didn't convert to a weak heap > object, instead returned a weakly pointed heap object. Change the function names > (in this case, to "GetHeapObjectIfWeak") to reflect this. > > Also make casts explicit, if a MaybeObject is an Object, we can call cast<Object>(). > > BUG=v8:7308 > > Change-Id: I4ef078572b4f4415afe7e2e706d3bd684e16e47d > Reviewed-on: https://chromium-review.googlesource.com/1219025 > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Commit-Queue: Marja Hölttä <marja@chromium.org> > Cr-Commit-Position: refs/heads/master@{#55906} TBR=ulan@chromium.org,marja@chromium.org,yangguo@chromium.org,ahaas@chromium.org,tebbi@chromium.org,ishell@chromium.org Change-Id: I054b578518e3f6fd7dbcddf0b56cc018726c1e7a No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7308 Reviewed-on: https://chromium-review.googlesource.com/1226874Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#55918}
-
Florian Sattler authored
Fixing clang-tidy warning. Bug: v8:8015 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: Ib48ead467519354715e3bc0e3f718cbdda28f989 Reviewed-on: https://chromium-review.googlesource.com/1225704 Commit-Queue: Florian Sattler <sattlerf@google.com> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#55907}
-
Marja Hölttä authored
E.g., "ToWeakHeapObject" was misleading, since it didn't convert to a weak heap object, instead returned a weakly pointed heap object. Change the function names (in this case, to "GetHeapObjectIfWeak") to reflect this. Also make casts explicit, if a MaybeObject is an Object, we can call cast<Object>(). BUG=v8:7308 Change-Id: I4ef078572b4f4415afe7e2e706d3bd684e16e47d Reviewed-on: https://chromium-review.googlesource.com/1219025Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#55906}
-
- 13 Sep, 2018 2 commits
-
-
Benedikt Meurer authored
This changes the Name::hash_field and Symbol::flags to uint32_t as well, so that both Symbols and Strings consume one fewer word on 64-bit architectures now. More importantly the access to String::length is always a 32-bit field load now, even with 31-bit Smis (i.e. on ARM or on 64-bit with pointer compression), so the access should be faster. Bug: v8:7065, v8:8171 Change-Id: I1a38f4470d62fbeba2b3bc5fcf4ecdbada7d6b8a Tbr: ulan@chromium.org, yangguo@chromium.org, ishell@chromium.org Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng Reviewed-on: https://chromium-review.googlesource.com/1224432Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#55861}
-
Benedikt Meurer authored
Since the removal of Crankshaft there's no use for StringAdd with pretenuring anymore, so we can remove the extra code and builtins. Bug: v8:8015 Change-Id: If178c6f1d08841428f42b1baece231268cdae2ad Reviewed-on: https://chromium-review.googlesource.com/1213206 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#55843}
-
- 12 Sep, 2018 6 commits
-
-
Sathya Gunasekaran authored
This reverts commit a03cec2c. Reason for revert: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/21320 Original change's description: > Reland "[objects] Change String::length field to uint32_t." > > This is a reland of 1f1eb625, the > breakage on the GCStress bot seems to be unrelated (maybe flushed > out by this change). We decided to reland to figure out whether it's > a random flake or really triggered by this particular change. > > Original change's description: > > [objects] Change String::length field to uint32_t. > > > > This changes the Name::hash_field and Symbol::flags to uint32_t as > > well, so that both Symbols and Strings consume one fewer word on 64-bit > > architectures now. More importantly the access to String::length is > > always a 32-bit field load now, even with 31-bit Smis (i.e. on ARM or > > on 64-bit with pointer compression), so the access should be faster. > > > > Bug: v8:7065, v8:8171 > > Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng > > Change-Id: I5523deb1f84ece91fa2fea775d50318bd1300493 > > Reviewed-on: https://chromium-review.googlesource.com/1221288 > > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> > > Reviewed-by: Yang Guo <yangguo@chromium.org> > > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > > Reviewed-by: Igor Sheludko <ishell@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#55825} > > Bug: v8:7065, v8:8171 > Tbr: tebbi@chromium.org, yangguo@chromium.org, ishell@chromium.org, ulan@chromium.org > Change-Id: I2be24ac018591c04c826e7e8db82e007b738d156 > Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng > Reviewed-on: https://chromium-review.googlesource.com/1222308 > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#55838} TBR=yangguo@chromium.org,tebbi@chromium.org,ishell@chromium.org,bmeurer@chromium.org Change-Id: Ic741c3d407d4257a8c86b3082b9a19e33dc89215 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7065, v8:8171 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng Reviewed-on: https://chromium-review.googlesource.com/1222368Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#55839}
-
Benedikt Meurer authored
This is a reland of 1f1eb625, the breakage on the GCStress bot seems to be unrelated (maybe flushed out by this change). We decided to reland to figure out whether it's a random flake or really triggered by this particular change. Original change's description: > [objects] Change String::length field to uint32_t. > > This changes the Name::hash_field and Symbol::flags to uint32_t as > well, so that both Symbols and Strings consume one fewer word on 64-bit > architectures now. More importantly the access to String::length is > always a 32-bit field load now, even with 31-bit Smis (i.e. on ARM or > on 64-bit with pointer compression), so the access should be faster. > > Bug: v8:7065, v8:8171 > Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng > Change-Id: I5523deb1f84ece91fa2fea775d50318bd1300493 > Reviewed-on: https://chromium-review.googlesource.com/1221288 > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/master@{#55825} Bug: v8:7065, v8:8171 Tbr: tebbi@chromium.org, yangguo@chromium.org, ishell@chromium.org, ulan@chromium.org Change-Id: I2be24ac018591c04c826e7e8db82e007b738d156 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng Reviewed-on: https://chromium-review.googlesource.com/1222308Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#55838}
-
Benedikt Meurer authored
This reverts commit df6157ae. Reason for revert: trybots didn't rerun :-/ Original change's description: > Reland "[objects] Change String::length field to uint32_t." > > This is a reland of 1f1eb625, the > breakage on the GCStress bot seems to be unrelated (maybe flushed > out by this change). We decided to reland to figure out whether it's > a random flake or really triggered by this particular change. > > Original change's description: > > [objects] Change String::length field to uint32_t. > > > > This changes the Name::hash_field and Symbol::flags to uint32_t as > > well, so that both Symbols and Strings consume one fewer word on 64-bit > > architectures now. More importantly the access to String::length is > > always a 32-bit field load now, even with 31-bit Smis (i.e. on ARM or > > on 64-bit with pointer compression), so the access should be faster. > > > > Bug: v8:7065, v8:8171 > > Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng > > Change-Id: I5523deb1f84ece91fa2fea775d50318bd1300493 > > Reviewed-on: https://chromium-review.googlesource.com/1221288 > > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> > > Reviewed-by: Yang Guo <yangguo@chromium.org> > > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > > Reviewed-by: Igor Sheludko <ishell@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#55825} > > Tbr: tebbi@chromium.org, yangguo@chromium.org, ishell@chromium.org > Bug: v8:7065, v8:8171 > Change-Id: I3c7d0b00abb15fa98ab622f9ecd8602fc798cbc3 > Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng > Reviewed-on: https://chromium-review.googlesource.com/1221290 > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#55836} TBR=ulan@chromium.org,yangguo@chromium.org,tebbi@chromium.org,ishell@chromium.org,bmeurer@chromium.org Change-Id: Ieaf3be31166abb02e37370ad846c38fa3d114693 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7065, v8:8171 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng Reviewed-on: https://chromium-review.googlesource.com/1222306Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#55837}
-
Benedikt Meurer authored
This is a reland of 1f1eb625, the breakage on the GCStress bot seems to be unrelated (maybe flushed out by this change). We decided to reland to figure out whether it's a random flake or really triggered by this particular change. Original change's description: > [objects] Change String::length field to uint32_t. > > This changes the Name::hash_field and Symbol::flags to uint32_t as > well, so that both Symbols and Strings consume one fewer word on 64-bit > architectures now. More importantly the access to String::length is > always a 32-bit field load now, even with 31-bit Smis (i.e. on ARM or > on 64-bit with pointer compression), so the access should be faster. > > Bug: v8:7065, v8:8171 > Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng > Change-Id: I5523deb1f84ece91fa2fea775d50318bd1300493 > Reviewed-on: https://chromium-review.googlesource.com/1221288 > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/master@{#55825} Tbr: tebbi@chromium.org, yangguo@chromium.org, ishell@chromium.org Bug: v8:7065, v8:8171 Change-Id: I3c7d0b00abb15fa98ab622f9ecd8602fc798cbc3 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng Reviewed-on: https://chromium-review.googlesource.com/1221290 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#55836}
-
Leszek Swirski authored
This reverts commit 1f1eb625. Reason for revert: GC Stress failure (https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/21311) Original change's description: > [objects] Change String::length field to uint32_t. > > This changes the Name::hash_field and Symbol::flags to uint32_t as > well, so that both Symbols and Strings consume one fewer word on 64-bit > architectures now. More importantly the access to String::length is > always a 32-bit field load now, even with 31-bit Smis (i.e. on ARM or > on 64-bit with pointer compression), so the access should be faster. > > Bug: v8:7065, v8:8171 > Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng > Change-Id: I5523deb1f84ece91fa2fea775d50318bd1300493 > Reviewed-on: https://chromium-review.googlesource.com/1221288 > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/master@{#55825} TBR=yangguo@chromium.org,tebbi@chromium.org,ishell@chromium.org,bmeurer@chromium.org Change-Id: I73f3200902f9d52e5664d48c938e37d9dfb7bce7 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7065, v8:8171 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng Reviewed-on: https://chromium-review.googlesource.com/1221706Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#55826}
-
Benedikt Meurer authored
This changes the Name::hash_field and Symbol::flags to uint32_t as well, so that both Symbols and Strings consume one fewer word on 64-bit architectures now. More importantly the access to String::length is always a 32-bit field load now, even with 31-bit Smis (i.e. on ARM or on 64-bit with pointer compression), so the access should be faster. Bug: v8:7065, v8:8171 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: I5523deb1f84ece91fa2fea775d50318bd1300493 Reviewed-on: https://chromium-review.googlesource.com/1221288 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#55825}
-
- 11 Sep, 2018 5 commits
-
-
Caitlin Potter authored
The CSA implementation is a separate handler so that TF has the opportunity to reduce to a direct call, skipping some of the dispatching in the CloneObjectIC stub. This patch moves the looping over a source object's keys and values into the base CodeStubAssembler, so that it can be shared between ObjectAssignFast and CloneObjectIC_Slow. During each step of the loop, storing is delegated to a new SetPropertyInLiteral helper in KeyedStoreGenericGenerator, which performs a store without consulting the prototype chain, and automatically reconfigures accessors into data properties regardless of their attributes. BUG=v8:8067, v8:7611 R=ishell@chromium.org, jkummerow@chromium.org Change-Id: I06ae89f37e9b4265aab67389cf68a96529f90578 Reviewed-on: https://chromium-review.googlesource.com/1182122 Commit-Queue: Caitlin Potter <caitp@igalia.com> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#55806}
-
Benedikt Meurer authored
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/1215623Reviewed-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}
-
Creddy authored
- Rename Runtime_SetProperty to Runtime_SetKeyedProperty - Create Runtime_SetNamedProperty and use it for SetNamed property in one-shot code. - Rename Object::StoreFromKeyed enum to StoreOrigin Bug: v8:8072, chromium:876839 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: I22132380ca4b6ce1e0a14a38cca849814559cdcf Reviewed-on: https://chromium-review.googlesource.com/1207870Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Chandan Reddy <chandanreddy@google.com> Cr-Commit-Position: refs/heads/master@{#55790}
-
Clemens Hammacher authored
The macro has been deprecated since 2016, and it keeps confusing me, so let's just remove it completely from the code base. R=leszeks@chromium.org TBR=mstarzinger@chromium.org, verwaest@chromium.org, jgruber@chromium.org Bug: v8:8015 Change-Id: Ibe1122fd9d2624bc94873d9c51dc8499c54a04fd Reviewed-on: https://chromium-review.googlesource.com/1209322Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#55779}
-
Marja Hölttä authored
BUG=v8:7308 Change-Id: I564f340096e64b3d17f9367aea031148a40faf40 Reviewed-on: https://chromium-review.googlesource.com/1218742Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#55778}
-
- 31 Aug, 2018 2 commits
-
-
Benedikt Meurer authored
As noticed by jkummerow@ there's probably not really a point in keeping two separate runtime functions that perform the same operation, but one has a different fast-path (which is not available to the other). So %KeyedGetProperty is now effectively %GetProperty and used consistently as fallback from both the ICs as well as other callers like the GetProperty builtin. Bug: v8:8015 Change-Id: Ib46b13da739229e2eb820ecf87923ac99c6971d3 Reviewed-on: https://chromium-review.googlesource.com/1199105 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#55547}
-
Benedikt Meurer authored
In the KeyedLoadICGeneric case the engine previously immediately fell back to the %KeyedGetProperty runtime function if the key was not a Name or a valid array index. This turns out to be really slow if a program passes for example objects as keys. Since we already have all the logic in place to convert an arbitrary JavaScript value to a Name, we can just call into ToName first and then operate on the result of that, which is significantly faster since C++ usually doesn't need to call back into JavaScript then to convert a JSReceiver into a Name. This also changes the ToName builtin to use the existing builtin for NonPrimitiveToPrimitive, which stays in JavaScript land completely. Since there's not really a point in inlining ToName into the call sites, the other uses were also changed to call the builtin instead, which saves some space and might also help with instruction cache utilization (especially when the ToName logic is more involved now). This improves the performance on the microbenchmark ```js const n = 1e7; const obj = {}; const key = [1,2]; const start = Date.now(); for (let i = 0; i < n; ++i) { if (obj[key] === undefined) obj[key] = key; } print(`time: ${Date.now() - start} ms.`); ``` by up to 36%. On the ARES-6 ML benchmark the steady state improves by up to ~7% and the overall mean for ARES-6 ML improves by up to ~6%. Further improvements might be possible here if the GetProperty builtin could be made faster for common prototype lookups like Symbol.toPrimitive and the "valueOf" and "toString" functions. Bug: v8:6344, v8:6670 Change-Id: Ic3ac2bc4d4277836ef03039de4eda5c5f66a85da Reviewed-on: https://chromium-review.googlesource.com/1199022 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#55540}
-
- 23 Aug, 2018 1 commit
-
-
Bill Budge authored
Change-Id: I0870a13fd257e014a3b6dca8ee7ccb3aa5485066 Reviewed-on: https://chromium-review.googlesource.com/1183525Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#55359}
-
- 15 Aug, 2018 1 commit
-
-
Camillo Bruni authored
Bug: chromium:782550 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: I4426415b55772d82bd16b638c3c533320efa3b72 Reviewed-on: https://chromium-review.googlesource.com/771752 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#55138}
-
- 13 Aug, 2018 1 commit
-
-
Creddy authored
Word32Not was used instead of Word32BinaryNot which caused unecssary runtime lookup. This CL fixed the performance regression https://crrev.com/c/1145438. Bug: chromium:868799 Change-Id: I9e070de6155797e52dd9b461a9660cb003509a57 Reviewed-on: https://chromium-review.googlesource.com/1169808 Commit-Queue: Chandan Reddy <chandanreddy@google.com> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#55100}
-
- 09 Aug, 2018 1 commit
-
-
Simon Zünd authored
This CL adds a SetProperty method to the KeyedStoreGenericGenerator that mirrors what "KeyedStoreGeneric" does (used for KeyedStoreIC_MegaMorphic). This new SetProperty method is then used in the SetProperty stub. Change-Id: I72a684238ef6c3b8c4db8ba957d5b79238f7e495 Reviewed-on: https://chromium-review.googlesource.com/1164945 Commit-Queue: Simon Zünd <szuend@google.com> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#55005}
-
- 08 Aug, 2018 1 commit
-
-
Marja Hölttä authored
The parameter cannot be a WeakCell here anymore. BUG=v8:7308 Change-Id: Ie96312e0988e801d3bf52368d731e3b0cf9cc2dc Reviewed-on: https://chromium-review.googlesource.com/1167047Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#54972}
-
- 07 Aug, 2018 1 commit
-
-
Tobias Tebbi authored
This enables fast bounds checks on FixedArray's. Change-Id: I0ae57b2c6981d8e1b2c7017ba658fd9c890d2bad Reviewed-on: https://chromium-review.googlesource.com/1163614 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#54946}
-
- 06 Aug, 2018 1 commit
-
-
Jakob Kummerow authored
A recent refactoring accidentally disabled the code path that keeps negative indices for TypedArrays on the fast path. Change-Id: I89bbb414f54d04f85af77c6d205705906925c61e Reviewed-on: https://chromium-review.googlesource.com/1164469Reviewed-by:
Adam Klein <adamk@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#54932}
-
- 04 Aug, 2018 1 commit
-
-
Caitlin Potter authored
This fixes a CHECK failure in MapVerify, and gets the correct behaviour for uses of the well-known symbols. BUG=v8:7611, chromium:866229 R=jkummerow@chromium.org, mvstanton@chromium.org, bmeurer@chromium.org Change-Id: I5d679357b8807ea9d1054121d8d336fe0dd43c7c Reviewed-on: https://chromium-review.googlesource.com/1162278Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Caitlin Potter <caitp@igalia.com> Cr-Commit-Position: refs/heads/master@{#54905}
-
- 03 Aug, 2018 1 commit
-
-
Clemens Hammacher authored
arguments.h used methods only defined in objects-inl.h and handles-inl.h. These uses are now moved to arguments-inl.h. Since builtins-utils.h used these methods, it also needs to be split to have an inl header now. R=titzer@chromium.org Bug: v8:7754, v8:7965 Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: I21db7a86f7c15776eccf060f81f2bde000b92a40 Reviewed-on: https://chromium-review.googlesource.com/1160647Reviewed-by:
Ben Titzer <titzer@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#54889}
-
- 01 Aug, 2018 1 commit
-
-
Caitlin Potter authored
An object with a deprecated Map which has already been cached in CloneObjectIC feedback is still a valid Map for fast cloning --- but to be consistent with other ICs, deprecated maps are ignored, and are expected to be transitioned away from. If the source object has a deprecated map, the instance is migrated. BUG=v8:7611, chromium:867958, chromium:868586, chromium:869342, chromium:869347, chromium:869293 R=jkummerow@chromium.org, mvstanton@chromium.org Reviewed-on: https://chromium-review.googlesource.com/1154143 Commit-Queue: Caitlin Potter <caitp@igalia.com> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#54799} Change-Id: I6e2f7b28c41bb9bd6255441da0f209a97bce5e8f Reviewed-on: https://chromium-review.googlesource.com/1157142 Cr-Commit-Position: refs/heads/master@{#54830}
-
- 31 Jul, 2018 2 commits
-
-
Michael Achenbach authored
This reverts commit d9f6c685. Reason for revert: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20gc%20stress/17584 Original change's description: > Reland [CloneObjectIC] overwrite monomorphic/polymorphic feedback if deprecated > > An object with a deprecated Map which has already been cached in > CloneObjectIC feedback is still a valid Map for fast cloning --- but > to be consistent with other ICs, deprecated maps are ignored, and are > expected to be transitioned away from. > > If the source object has a deprecated map, the instance is migrated. > > BUG=v8:7611, chromium:867958, chromium:868586 > R=jkummerow@chromium.org, mvstanton@chromium.org > > Change-Id: I477aec6c8d0ae1e1648a70e85d2fd46146521d1c > Reviewed-on: https://chromium-review.googlesource.com/1154143 > Commit-Queue: Caitlin Potter <caitp@igalia.com> > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Cr-Commit-Position: refs/heads/master@{#54799} TBR=jkummerow@chromium.org,mvstanton@chromium.org,caitp@igalia.com Change-Id: Ifcb422c3a692543490710d450590323524a6359a No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7611, chromium:867958, chromium:868586 Reviewed-on: https://chromium-review.googlesource.com/1155593Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#54800}
-
Caitlin Potter authored
An object with a deprecated Map which has already been cached in CloneObjectIC feedback is still a valid Map for fast cloning --- but to be consistent with other ICs, deprecated maps are ignored, and are expected to be transitioned away from. If the source object has a deprecated map, the instance is migrated. BUG=v8:7611, chromium:867958, chromium:868586 R=jkummerow@chromium.org, mvstanton@chromium.org Change-Id: I477aec6c8d0ae1e1648a70e85d2fd46146521d1c Reviewed-on: https://chromium-review.googlesource.com/1154143 Commit-Queue: Caitlin Potter <caitp@igalia.com> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#54799}
-
- 30 Jul, 2018 1 commit
-
-
Jaroslav Sevcik authored
This CL introduces InstanceTypeChecker namespace with type checkers for types used by the optimizing compiler. The type checkers are global functions. Examples: bool InstanceTypeChecker::IsJSFunction(InstanceType); bool InstanceTypeChecker::IsAllocationSite(InstanceType); The CL also uses these type checkers in the HeapObject::IsXXXX() functions to ensure consistency. Bug: v8:7790 Change-Id: I7eb9e79ca28da02fd489201f532e566d0d13243a Reviewed-on: https://chromium-review.googlesource.com/1154529Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#54782}
-
- 27 Jul, 2018 3 commits
-
-
Deepti Gandluri authored
This reverts commit 670fa86f. Reason for revert: Causes gc-stress bots to fail - https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket.appspot.com/8939819990688690880/+/steps/Check_-_d8/0/logs/object-spread-ic/0 https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket.appspot.com/8939819696982258192/+/steps/Check_-_d8/0/logs/object-spread-ic/0 Original change's description: > [CloneObjectIC] overwrite monomorphic/polymorphic feedback if deprecated > > An object with a deprecated Map which has already been cached in > CloneObjectIC feedback is still a valid Map for fast cloning --- but > to be consistent with other ICs, deprecated maps are ignored, and are > expected to be transitioned away from. > > If the source object has a deprecated map, the instance is migrated. > > BUG=v8:7611, chromium:867958 > R=jkummerow@chromium.org, mvstanton@chromium.org > > Change-Id: I9771b00400fb4dda45a62e874a31d9b50630d847 > Reviewed-on: https://chromium-review.googlesource.com/1152414 > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Commit-Queue: Caitlin Potter <caitp@igalia.com> > Cr-Commit-Position: refs/heads/master@{#54758} TBR=jkummerow@chromium.org,mvstanton@chromium.org,caitp@igalia.com Change-Id: Id17652ad6f3f09adb43848069549ad146d48b2d7 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7611, chromium:867958 Reviewed-on: https://chromium-review.googlesource.com/1153747Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#54760}
-
Caitlin Potter authored
An object with a deprecated Map which has already been cached in CloneObjectIC feedback is still a valid Map for fast cloning --- but to be consistent with other ICs, deprecated maps are ignored, and are expected to be transitioned away from. If the source object has a deprecated map, the instance is migrated. BUG=v8:7611, chromium:867958 R=jkummerow@chromium.org, mvstanton@chromium.org Change-Id: I9771b00400fb4dda45a62e874a31d9b50630d847 Reviewed-on: https://chromium-review.googlesource.com/1152414Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Caitlin Potter <caitp@igalia.com> Cr-Commit-Position: refs/heads/master@{#54758}
-
Creddy authored
The CSA fast path returned null for Proxy.prototype whereas runtime GetProperty returned undefined. The CL fixes this discrepancy by returning undefined for both cases and this makes it complaint with the spec. Change-Id: I35b75c09dc99e8fd629671e30eacd2cabea8c1d4 Reviewed-on: https://chromium-review.googlesource.com/1145438Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Chandan Reddy <chandanreddy@google.com> Cr-Commit-Position: refs/heads/master@{#54745}
-