- 10 Jun, 2021 4 commits
-
-
Benedikt Meurer authored
This change addresses inconsistencies wrt. to stepping into generator functions and breaking on the implicit initial yield. The new behavior is the following: 1. Stepping into a generator function doesn't trigger "generator stepping", but rather pauses right before the initial yield (assuming there a no non-simple parameters in between). 2. When paused on the initial yield and stepping into or over, we also don't turn on "generator stepping" immediately, but rather return to the caller and only enter "generator stepping" on SuspendGenerator bytecodes that correspond to `yield`s or `await`s in the source code. This matches the stepping behavior of regular functions more closely and seems like a good compromise. Fixed: chromium:901814 Change-Id: Ifc6c174011df1afea183e2c6ec21de27d72b17a7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2949099 Commit-Queue: Yang Guo <yangguo@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#75066}
-
Jakob Gruber authored
.. when concurrent inlining is on. SerializeBackPointer SerializeForElementLoad SerializeRootMap For SerializeRootMap: Due to changed root map access timing, it is now possible to see an abandoned prototype map - added logic for that in RemoveImpossibleMaps. Bug: v8:7790 Change-Id: Icdb3fff12536bfdc84923e7cd40bad9978a2a401 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2948658 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#75065}
-
Jakob Gruber authored
In fond memory of kPossiblyBackgroundSerialized, this CL adds a new subtype of kNeverSerialized called NeverEverSerialized. Such refs are never ever serialized, i.e. not even when concurrent inlining is disabled. The first Ref in this category is RegExpBoilerplateDescriptionRef. The intent is to gradually transition all kNeverSerialized refs to NeverEverSerialized and then remove NeverEverSerialized (making it the default behavior). Bug: v8:7790 Change-Id: I8741a94212426a773ec3dc20758a41cb89f13368 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2947415 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#75064}
-
Daoming Qiu authored
It adjusts V8 page size for performance reasons. The main use case is improving Node.js performance. The design doc is at:https://docs.google.com/document/d/1CO8Q0YZKJ3QKFRTk-aoJzmSFsuI8ALYQLtsjqLzyi-0/edit?usp=sharing Change-Id: Ie037d405a7116ccd986131d22d417b86ccf6a899 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2860840Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Shiyu Zhang <shiyu.zhang@intel.com> Cr-Commit-Position: refs/heads/master@{#75063}
-
- 09 Jun, 2021 34 commits
-
-
Peter Kasting authored
Bug: chromium:1216696 Change-Id: I0918215c2e2b845bd7b39e06128d74382a467b05 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2950262 Commit-Queue: Peter Kasting <pkasting@chromium.org> Auto-Submit: Peter Kasting <pkasting@chromium.org> Reviewed-by: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#75062}
-
Manos Koukoutos authored
- Add support for packed types. - Emit arguments first in wasm-module-builder.cc. Bug: v8:7748 Change-Id: I358ca13db4332e026ee5850de6f629822bc92b04 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2948887Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#75061}
-
Michael Lippautz authored
Pass along the intended atomicity parameter for a getter in a DCHECK. Bug: chromium:1218072 Change-Id: Ib83c8f548d3de9c944546c74291cd148643e185c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2950242 Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#75060}
-
Jakob Kummerow authored
And also make sure that even long names don't get truncated. Fixed: chromium:1216284 Change-Id: I2792b60ddeb40a87816cb54fb0414ef0dea45da0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2947409 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#75059}
-
Shu-yu Guo authored
Bug: chromium:1217573 Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel_ng Change-Id: Ida9cabc4f46f0ad4f35e2b97f5803cc7c30fb972 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2947857 Commit-Queue: Shu-yu Guo <syg@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#75058}
-
Junliang Yan authored
Change-Id: Ieeb437abf3ebc59461ee828aeb6c65e06fdb17fb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2950241 Commit-Queue: Junliang Yan <junyan@redhat.com> Commit-Queue: Milad Fa <mfarazma@redhat.com> Auto-Submit: Junliang Yan <junyan@redhat.com> Reviewed-by: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#75057}
-
Ng Zhi An authored
For tail calls, we already set the flag kCallTail on CallBufferFlags, the bool is_tail_cal always matches the flag (and there is only one call site (L3037). Drive-by clean up to get SaveFPRegsMode once, this is used when we need to save and restore caller-saved registers. Change-Id: Id175922c4cb5162d38b5ab61b84e151aaf2083e8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2945536Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#75056}
-
Dan Elphick authored
By moving this out of counters.h, counters.h no longer needs to depend on isolate.h. Change-Id: Ic5272e3b3a729c0a438124dc5cdc1835817f3341 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2949098 Auto-Submit: Dan Elphick <delphick@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#75055}
-
Dominik Inführ authored
IsPendingAllocation will now load the space from the object's page header first and then only check the object against the current LAB of that particular space. Previously we were looking up that object in the LABs of all spaces. This new design also makes it feasible to have one dedicated mutex for original_top/original_limit (respectively pending_object) for each space. This will reduce contention on the mutexes. Change-Id: I8e7636410259fd03b7970084bfbbaeadb2d8ba61 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2936606 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#75054}
-
Junliang Yan authored
Change-Id: Ife5883cf5108dfc25603a57df0044d096b6c5855 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2949105 Commit-Queue: Junliang Yan <junyan@redhat.com> Commit-Queue: Milad Fa <mfarazma@redhat.com> Auto-Submit: Junliang Yan <junyan@redhat.com> Reviewed-by: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#75053}
-
Dominik Inführ authored
Better explain why internalized strings have to be in old space. The scavenger doesn't need to iterate and update references in the string table and the stub cache. Change-Id: I93c3e0b743f85fbf4de2ad877f3667abb2e0ae53 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2949101 Auto-Submit: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#75052}
-
Junliang Yan authored
Change-Id: I4728042456c884f7ba91bd74e3a296973c663715 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2949967 Commit-Queue: Junliang Yan <junyan@redhat.com> Commit-Queue: Milad Fa <mfarazma@redhat.com> Auto-Submit: Junliang Yan <junyan@redhat.com> Reviewed-by: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#75051}
-
QiuJi authored
Port f68e1be7 Fix build error for 8ab75a56 Change-Id: I1014b8c036b0b8a8fcad5207fc9692e0668e2cce Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2945175Reviewed-by: Ji Qiu <qiuji@iscas.ac.cn> Reviewed-by: Brice Dobry <brice.dobry@futurewei.com> Commit-Queue: Brice Dobry <brice.dobry@futurewei.com> Cr-Commit-Position: refs/heads/master@{#75050}
-
Patrick Thier authored
Use batch compilation per default for Sparkplug. Bug: v8:11790, v8:11420 Change-Id: Ie0fd8a0614d674170b0878064292caa0a5ab06e2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2948659Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Patrick Thier <pthier@chromium.org> Cr-Commit-Position: refs/heads/master@{#75049}
-
Michael Lippautz authored
This is a reland of 7ef67b2e Manually checked that the CL was not the culprit breaking media_blink_unittests --gtest_filter=WebMediaPlayerImplTest.MemDumpReporting Original change's description: > heap: Fix initial GC configuration for C++-only heaps > > Heaps in V8 start with a large limit that is shrunk upon young > generation GCs, based on some liveness estimate. This provides best > throughput during startup while at the same time finding a reasonable > first limit. > > For C++ (embedder memory) there is no estimate which is why it was > piggy-backing on V8. This breaks in scenarios where no JS memory is > allocated. > > In this fix we start a memory reducer after embedder memory has hit > the activation threshold if no GC happened so far. As soon as a single > Scavenger has happened, we leave it up to the JS estimate to figure > out a limit. Memory reducing GCs will then find a regular limit based > on the initial live size. > > Drive-by: Give embedders the same activiation threshold of 8MB as JS. > > Bug: chromium:1217076 > Change-Id: I8469696002ac2af8d75d6b47def062d2608387a1 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2944935 > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/master@{#75012} Bug: chromium:1217076 Change-Id: I482d8525379e33095834d5b41be8bb49bdd8a5d4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2949094 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#75048}
-
Manos Koukoutos authored
Changes: - Implement a single function WriteGlobalValue(const WasmGlobal&, const WasmValue&). Compute an intermediate WasmValue when needed. - Add WasmValue::CopyTo() to avoid reading little endian values in WasmValue, and then transforming back to little endian. - Add WasmValue::to_string() for tracing. Change-Id: Ia7d9b9cddc7b8f77ae35fc588fe34c41ef444a2c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2948664 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#75047}
-
Zheng Liu authored
The disassembler cannot decode neg instruction correctly because a single quote is missed. Bug: v8:11833 Change-Id: I43f12e8e8e3f1e51244dc891e9bfb611a95f393b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2934617Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Brice Dobry <brice.dobry@futurewei.com> Reviewed-by: Ji Qiu <qiuji@iscas.ac.cn> Commit-Queue: Brice Dobry <brice.dobry@futurewei.com> Cr-Commit-Position: refs/heads/master@{#75046}
-
Manos Koukoutos authored
Change-Id: Ic0edb4a424b7358a40c54984f0f56f5c0ba05b09 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2930171 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#75045}
-
Michael Lippautz authored
Previously, for generating the snapshot, ephemerons containers were just traced strongly, without handling their ephemeron pairs. This resulted in the snbapshot missing out on all the value objects (as keys were traced through regular Visit()). The fix here a) Adds ephemeron tracing; b) Adds a flag to avoid showing the key being retained by the ephemeron collection; Bug: chromium:1056170 Change-Id: I45cc95bf4876879fa78b83154b13f20751b262b9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2948889 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#75044}
-
Manos Koukoutos authored
Loop fallthroughs should leave values according to their out-type on the stack, even when the stack is polymorphic. Bug: chromium:1217470 Change-Id: I0a7e0569fa24fc16fcac76569a5ba14b6c7b0a9f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2949090Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#75043}
-
Santiago Aboy Solanes authored
Similar to https://crrev.com/c/v8/v8/+/2270548, we can add an early return since we will not be creating thin strings while single_generation is on. Bug: v8:7790, v8:10614 Change-Id: Ib6ccc00bc79058daa163920a944ad328515f667e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2948888 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Auto-Submit: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#75042}
-
Simon Zünd authored
This CL adds a new method intended for tests or lab settings to cleanup V8 caches. The synchronous nature of the method greatly reduces flakiness of blink leak detection in many cases. Bug: chromium:1217831 Change-Id: I107eddc8b88d91aa7e69430ecfc135fe39538a5c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2948666 Commit-Queue: Simon Zünd <szuend@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#75041}
-
Manos Koukoutos authored
These can now be implemented with EvaluateInitExpression Change-Id: I891e0ef91627eaac1af85af10748ada5f032e5c0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2948663 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#75040}
-
Santiago Aboy Solanes authored
It was added years ago and in 2017 it was enabled by default[1], which means enough time has passed and we can remove the flag. [1]: https://chromium-review.googlesource.com/c/v8/v8/+/528076/ Change-Id: I059417d4683910e86ebfddd93f504006094fa342 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2947406Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#75039}
-
Igor Sheludko authored
... and add regression test for contextual stores to JSGlobalObject with interceptor in the prototype chain. Bug: chromium:1216437 Change-Id: Ibd344288c6327b35f3276f59517995d591acb967 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2944895 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#75038}
-
Patrick Thier authored
--stress-concurrent-inlining has a negative implication for --lazy-feedback-allocation. We need to explicitly add --no-stress-concurrent-inlining, since the test relies on lazy feedback allocation. Bug: v8:11853 Change-Id: I2bd8f0da05a766dd7282cdb3b70c4a1b478c71cc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2948647 Commit-Queue: Patrick Thier <pthier@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#75037}
-
Wenyu Zhao authored
* Skip 8 tests that timeout due to the low-performance of current MMTk non-moving GC. - This will be enabled after TPH performance issues are addressed. * Skip 2 new tests that creates a second isolate -- TPH does not support it at the moment. * Skip 1 test that expects concurrent sweeping behavior of cppgc. Bug: v8:11641 Change-Id: If86cdcc303b01536d278368886bb30d91da5c5c1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2909692 Auto-Submit: Wenyu Zhao <wenyu.zhao@anu.edu.au> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#75036}
-
Jakob Gruber authored
Tbr: neis@chromium.org Bug: v8:7790 Change-Id: Iaa094977b3c1099880ead9819df8418bc85e3dde Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2947416Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#75035}
-
Maya Lekova authored
This reverts commit 7ef67b2e. Reason for revert: Speculative revert for a blocked roll - https://chromium-review.googlesource.com/c/chromium/src/+/2947365 Original change's description: > heap: Fix initial GC configuration for C++-only heaps > > Heaps in V8 start with a large limit that is shrunk upon young > generation GCs, based on some liveness estimate. This provides best > throughput during startup while at the same time finding a reasonable > first limit. > > For C++ (embedder memory) there is no estimate which is why it was > piggy-backing on V8. This breaks in scenarios where no JS memory is > allocated. > > In this fix we start a memory reducer after embedder memory has hit > the activation threshold if no GC happened so far. As soon as a single > Scavenger has happened, we leave it up to the JS estimate to figure > out a limit. Memory reducing GCs will then find a regular limit based > on the initial live size. > > Drive-by: Give embedders the same activiation threshold of 8MB as JS. > > Bug: chromium:1217076 > Change-Id: I8469696002ac2af8d75d6b47def062d2608387a1 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2944935 > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/master@{#75012} Bug: chromium:1217076 Change-Id: Ic1530162e846c2a767ea5ea902a01a21967d8e35 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2947419 Auto-Submit: Maya Lekova <mslekova@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#75034}
-
Jakob Gruber authored
This is a step towards making JSObjectRef non-serialized. Change JSObjectRef::RawFastPropertyAt to use a direct load with relaxed semantics. Special handling of `uninitialized` sentinel values is moved to the only use-site. A new lock `boilerplate_migration_access` protects against concurrent boilerplate migrations while we are iterating over properties. Bug: v8:7790 Change-Id: Ic9de54ca16c1f3364d497a77058cfa33d48dd4a4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2928184 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#75033}
-
Maya Lekova authored
This reverts commit eb3ce72b. Reason for revert: Broke Android Arm64 Builder, see https://bugs.chromium.org/p/chromium/issues/detail?id=1217912 Original change's description: > Update V8 DEPS. > > Rolling v8/build: https://chromium.googlesource.com/chromium/src/build/+log/8870cb4..921ea58 > > Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/a8bae77..df0a59a > > Rolling v8/third_party/depot_tools: https://chromium.googlesource.com/chromium/tools/depot_tools/+log/b508ecd..b14cdae > > Rolling v8/tools/clang: https://chromium.googlesource.com/chromium/src/tools/clang/+log/0c64e83..d987b04 > > TBR=v8-waterfall-sheriff@grotations.appspotmail.com,mtv-sf-v8-sheriff@grotations.appspotmail.com > > Change-Id: I8906ce650c866bd771910fea5db6c735bfe0c7e2 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2947396 > Reviewed-by: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> > Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> > Cr-Commit-Position: refs/heads/master@{#75029} Change-Id: I4d83f012cf04ab94eb66bab9a8ebec04ed098fbf No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2947417 Auto-Submit: Maya Lekova <mslekova@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#75032}
-
Iain Ireland authored
In issue 11290, we disabled the propagation of EAL data out of lookarounds, because it was incorrect for lookahead nodes in loops. This caused performance regressions: for example, `/^\P{Letter}+$/u` (matching only characters that are not in Unicode's Letter category) uses negative lookahead when matching lone surrogates, and became about 2x slower. I spent some time looking into fixes, and this is what I've settled on. Some background: the implementation of lookarounds in irregexp is split between positive and negative lookaheads. (Lookbehinds aren't relevant here, because backwards matches always have EAL=0.) Positive lookaheads are wrapped in BEGIN_SUBMATCH and POSITIVE_SUBMATCH_SUCCESS ActionNodes. BEGIN_SUBMATCH saves the current state. POSITIVE_SUBMATCH_SUCCESS restores the necessary state (while leaving any captures that occurred during the lookaround intact). Negative lookaheads also begin with a BEGIN_SUBMATCH node, but follow it with a NegativeLookaroundChoiceNode. This node has two successors: a lookaround node, and a continue node. It only executes the continue node if the lookaround node backtracks, which automatically restores the previous state. Negative lookarounds also can't update captures. This affects EAL calculations. It turns out that negative lookaheads are already doing the right thing: EatsAtLeastPropagator only propagates information from the continue node, ignoring the lookaround node. The same is true for quick checks (see the comment in RegExpLookaround:Builder::ForMatch). A BEGIN_SUBMATCH for a negative lookahead can simply propagate the EAL data from its successor like any other ActionNode, and everything works. Positive lookaheads are harder. I tried saving a pointer to the successor in BEGIN_SUBMATCH, but ran into problems in FillInBMInfo, because the EAL value corresponded to the nodes after the lookahead, but the analysis was still looking at the nodes inside. I fell back to a more modest approach: split BEGIN_SUBMATCH in two, and propagate EAL info for BEGIN_NEGATIVE_SUBMATCH while keeping the current behaviour for BEGIN_POSITIVE_SUBMATCH. This fixes the performance regression at hand. Two potential approaches for fixing EAL for positive lookahead are: 1. Handling positive lookahead with its own dedicated choice node, like NegativeLookaroundChoiceNode. 2. Adding an eats_at_least_inside_loop field to EatsAtLeastInfo, which is <= eats_at_least_from_possibly_start, and using that value in EatsAtLeastFromLoopEntry. Both of those approaches are more complex than I want to tackle right now, though. Bug: v8:11844 Change-Id: I2a43509c2c21194b8c18f0a587fa21c194db76c2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2934858Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#75031}
-
Frank Tang authored
The test push stack boundary and too flaky (timeout) while running machine with more memory. Bug: v8:11845 Change-Id: I5b603f05270d224de71c735ece5dd65a27311c25 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2939082Reviewed-by: Shu-yu Guo <syg@chromium.org> Commit-Queue: Frank Tang <ftang@chromium.org> Cr-Commit-Position: refs/heads/master@{#75030}
-
v8-ci-autoroll-builder authored
Rolling v8/build: https://chromium.googlesource.com/chromium/src/build/+log/8870cb4..921ea58 Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/a8bae77..df0a59a Rolling v8/third_party/depot_tools: https://chromium.googlesource.com/chromium/tools/depot_tools/+log/b508ecd..b14cdae Rolling v8/tools/clang: https://chromium.googlesource.com/chromium/src/tools/clang/+log/0c64e83..d987b04 TBR=v8-waterfall-sheriff@grotations.appspotmail.com,mtv-sf-v8-sheriff@grotations.appspotmail.com Change-Id: I8906ce650c866bd771910fea5db6c735bfe0c7e2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2947396Reviewed-by: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#75029}
-
- 08 Jun, 2021 2 commits
-
-
Jakob Kummerow authored
Due to the limits of ia32's calling convention, being able to avoid construction of "Digits" objects (thanks to inlining) helps a lot for microbenchmarks. Fixed: chromium:1192133 Change-Id: I5676640d96a99dc6422f3946c608bcc93ef222ba Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2947410 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Auto-Submit: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/master@{#75028}
-
Frank Tang authored
Add "calendar", and "dateTimeField" Add option for languageDisplay https://tc39.es/intl-displaynames-v2/ https://chromestatus.com/feature/5082027281874944 Design Doc: https://docs.google.com/document/d/17hQz4nOC7PJYhxc_MU-BRoT6BnYGZv66XlU1iGX0ywQ/edit# Bug: v8:11637 Change-Id: Ie7dc80d16956f0e668b11e600e47f5bafb081ff7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2924523 Commit-Queue: Frank Tang <ftang@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#75027}
-