- 10 Mar, 2022 14 commits
-
-
Dominik Inführ authored
Store the total committed physical memory in SemiSpace::committed_physical_memory_ and keep it up-to-date when adding/removing pages from it, similar to the PagedSpace. So far we were iterating all pages in the SemiSpace to calculate this value. Bug: v8:12691 Change-Id: Iaf3c5eadd60db561a6ddb06014f82703b0df6873 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3513836Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/main@{#79444}
-
Darius M authored
This is a reland of 2dc40370 Original change's description: > [compiler] Improve code generated for patterns like "x >> 1 == 0" > > Change-Id: I79575ba61a3bdea93468f48d66a3cb3edd0e1442 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3506504 > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Darius Mercadier <dmercadier@chromium.org> > Cr-Commit-Position: refs/heads/main@{#79419} Change-Id: Iad111f8d4bb40a295903dd67f66c8ecd9c4eadd9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3514072Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Darius Mercadier <dmercadier@chromium.org> Cr-Commit-Position: refs/heads/main@{#79443}
-
Michael Lippautz authored
Move the check for whether an object is live or dead out of the prefinalizer trampoline. Moving it into the backend allows for inlining the check which avoids a call to the trampoline for live objects. On catapult benchmarks (e.g. cnn:2021, nytimes:2020), there's often ~2k finalizers registered. In order to avoid memory overhead in the range of a few KB, we store the fact whether the object points to the base object payload in the LSB of the pointer. For caged builds this is replaced with just storing the index into the cage for both object and base object payload. Locally saves around ~10% of atomic sweeping processing time which is in the order of .05ms. Bug: v8:12698 Change-Id: I198205a6b1d57fc2df821ee4e73e53dc6f825ff5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3497764Reviewed-by: Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#79442}
-
Marja Hölttä authored
Bug: v8:11525 Change-Id: I0580787252ab235222e9b9fb2d677015794207eb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3506485Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/main@{#79441}
-
Anton Bikineev authored
The CL runs Oilpan minor GCs after each Scavenger cycle. Bug: chromium:1029379 Change-Id: Ic67cf4dc9158759207f0209640f1720bf188cc1d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3472500Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/main@{#79440}
-
Jakob Gruber authored
When the Isolate is already available, there is no need to fetch it through GetIsolate. Change-Id: I3ddc3d46924b401f154360564b203406a9b9e8e5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3510389 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/main@{#79439}
-
Camillo Bruni authored
Drive-by-fix: - Use explicit casts to HeapNumber in NumberToXXX methods Bug: v8:11263 Change-Id: If99af3ccee33a299d9f42cd39b87b6935a555f83 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3512618Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/main@{#79438}
-
Igor Sheludko authored
... for 32-bit Windows. When the TLS value is not set the TlsExpansionSlots field of the TEB struct might be NULL in which case the InternalGetExistingThreadLocal should return NULL too. Bug: v8:12653 Change-Id: Ic6c6d8e51e2447551c372720fad0967e9201f3dc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3513835 Auto-Submit: Igor Sheludko <ishell@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#79437}
-
Dmitrii Tsykunov authored
When compiled with `target_cpu = "x86"` several VirtualAddressSpaceTest's crashed with segmentation fault when calling VirtualAlloc2. Explicitly specifying calling convention fixed the issue. Change-Id: Ie505006be0d44525c935c89b84caa2c373cea566 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3501836Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Auto-Submit: Dmitrii Tsykunov <dtsykunov1@yandex-team.ru> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#79436}
-
Jakob Gruber authored
This reverts commit 190b5d95. Reason for revert: We should understand & fix regressions, see crbug.com/1304870#c9. Original change's description: > [compiler] Don't remove OSR code cache if deoptimizing at out of loop > > The main purpose of OSR compilation is fasten inner loop execution, the > OSR code cache is still correct for loop if optimizing at out of loop, > keep OSR code cache can reduce unnecessary slow bytecode execution with > feedback collection and avoid re-OSR compilation. > This CL can improve JetStream2 case navier-stokes by ~6%. > > Change-Id: I9518317fb922071b131cab5b56998a0fc198804a > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3494981 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Commit-Queue: Tao Pan <tao.pan@intel.com> > Cr-Commit-Position: refs/heads/main@{#79413} Bug: chromium:1304870 Change-Id: I8791edc34b66ef9dd0b477d3e340e85b0617ef59 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3515732 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#79435}
-
Leszek Swirski authored
Don't rely on register_values[index] == nullptr for checking if a register is free, but instead re-use the free register list, and iterate the allocatable_register & ~free_register list when iterating used registers. This also changes the indexing of register_values to be by register code, not allocatable register index. The register state stored on the InterpreterFrameState, however, stays compact (allocatable register count). A new wrapper class + iterator keeps iteration over it and the register_values array in sync. Bug: v8:7700 Change-Id: I7815aa2d4a1f7b7ebafaaafe0727219adcc4dcfe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3512792 Auto-Submit: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/main@{#79434}
-
v8-ci-autoroll-builder authored
Rolling v8/third_party/google_benchmark/src: https://chromium.googlesource.com/external/github.com/google/benchmark/+log/7cb2914..a25f3cd Appended additional BSD 3-Clause to LICENSE (#1363) (Vy Nguyen) https://chromium.googlesource.com/external/github.com/google/benchmark/+/a25f3cd Add SetBenchmarkFilter() to set --benchmark_filter flag value in user code (#1362) (Vy Nguyen) https://chromium.googlesource.com/external/github.com/google/benchmark/+/eacce0b Add long description and content type for proper PyPI presentation (#1361) (Nicholas Junge) https://chromium.googlesource.com/external/github.com/google/benchmark/+/df7749c Allow setting the default time unit globally (#1337) (Bátor Tallér) https://chromium.googlesource.com/external/github.com/google/benchmark/+/d08e7b6 restore BENCHMARK_MAIN() (#1357) (Sergiu Deitsch) https://chromium.googlesource.com/external/github.com/google/benchmark/+/e33986a R=v8-waterfall-sheriff@grotations.appspotmail.com,mtv-sf-v8-sheriff@grotations.appspotmail.com,mlippautz@chromium.org Change-Id: I6e4614ebf74b16768ee6e6534e7693022e9bac9f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3514720 Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Bot-Commit: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#79433}
-
v8-ci-autoroll-builder authored
Rolling v8/build: https://chromium.googlesource.com/chromium/src/build/+log/69dab41..ea42de6 Rolling v8/buildtools/linux64: git_revision:d7c2209cebcfe37f46dba7be4e1a7000ffc342fb..git_revision:46f94b5a7f5527b5d7ef57271d3e9447a65e22ac Rolling v8/buildtools/third_party/libc++abi/trunk: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi/+log/738dc10..289d52c Rolling v8/third_party/depot_tools: https://chromium.googlesource.com/chromium/tools/depot_tools/+log/8edc960..37db69d Rolling v8/third_party/zlib: https://chromium.googlesource.com/chromium/src/third_party/zlib/+log/aa6909a..85bdd64 R=v8-waterfall-sheriff@grotations.appspotmail.com,mtv-sf-v8-sheriff@grotations.appspotmail.com Change-Id: I1381459f8667d61f8e5b049c8822560606ccd852 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3514717 Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Bot-Commit: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#79432}
-
Shu-yu Guo authored
Atomics.load and Atomics.store now accept string field names as the 2nd argument when the 1st argument is a shared struct. Currently these are implemented in C++ and not yet in CSA. Bug: v8:12547 Change-Id: Ideeafc13fb6a925540edf3dc17428c8e50bcee79 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3510837 Commit-Queue: Shu-yu Guo <syg@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#79431}
-
- 09 Mar, 2022 19 commits
-
-
v8-ci-autoroll-builder authored
R=clemensb@chromium.org Change-Id: I1d3513a75c32a505cb5cdb1a123f2d586f55ee02 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3513416Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/main@{#79430}
-
Michael Lippautz authored
- Roll forward to Update google_benchmark - Add export header that is usually generated by the build system of google benchmark. We can ignore the export macro as we always just use the library in a source set. Bug: v8:12666 Change-Id: Ifec570745c0258aa541b7aea41ba557a7e0fe563 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3512575Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#79429}
-
Dominik Inführ authored
Instead of using the high water mark for determining this metric, we use a bitset for all active/used system pages on a V8 heap page. Each time when allocating a LAB on a page, we add the pages of that memory range to that bitset. During sweeping we rebuild that bitset from scratch and replace it with the old one in case free pages are discarded by the GC. We DCHECK here that the sweeper only ever removes pages. This has the nice benefit of ensuring that we don't miss any allocations (like we do now for concurrent allocations). CommittedPhysicalMemory for a page is then calculated by counting the set bits in the bitset and multiplying it with the system page size. This should be simpler to verify and track the "real" effective size more precisely. One case where we are partially less precise than the current implementation is for LABs. In order to reduce complexity we now treat all pages of a LAB allocation as active immediately. In the current implementation we tried to only account the actual used part of the LAB when changing the LAB later. This is more complex to track correctly but also doesn't account the currently used LAB in effective size. Change-Id: Ia83df9ad5fbb852f0717c4c396b5074604bd21e9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3497363Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/main@{#79428}
-
Junliang Yan authored
Change-Id: I0bf578e877eaee280b7825ff3c1407815d57e7f9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3513615Reviewed-by: Milad Farazmand <mfarazma@redhat.com> Commit-Queue: Junliang Yan <junyan@redhat.com> Cr-Commit-Position: refs/heads/main@{#79427}
-
legendecas authored
NewSpace page operations like RemovePage, PrependPage, and EnsureCurrentCapacity should account for committed page size. This may happen when a page was promoted from the new space to old space on mark-compact. Also, add DCHECKs on Commit and Uncommit to ensure the final committed page size is the same as the current state. Bug: v8:12657 Change-Id: I7aebc1fd3f51f177ae2ef6420f757f0c573e126b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3504766Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Chengzhong Wu <legendecas@gmail.com> Cr-Commit-Position: refs/heads/main@{#79426}
-
legendecas authored
HeapObjectIterator creates a SafepointScope which requires the heap to allow garbage collection. This collides with the outer DisallowGarbageCollection scope. HeapObjectIterator already ensures there is no allocation during its lifetime, so there is no need to create an outer DisallowGarbageCollection scope. Code::source_position_table requires their kind not equals to CodeKind::BASELINE. This also exposes the statistics extension through flag --expose-statistics. Bug: v8:12657 Change-Id: I1bf11cf499285a742dd99ec8c228ebc36152b597 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3496552Reviewed-by: Camillo Bruni <cbruni@chromium.org> Reviewed-by: Marja Hölttä <marja@chromium.org> Commit-Queue: Chengzhong Wu <legendecas@gmail.com> Cr-Commit-Position: refs/heads/main@{#79425}
-
Clemens Backes authored
This is a reland of commit a664aef0. The test is made ~25x faster by using integer parameters instead of floating point. Original change's description: > [asm] Reject import calls with too many parameters > > The asm parser was missing a check for too many parameters for calls to > imported functions. For regular functions this check implicitly existed > because the limit was checked at the function declaration, and the call > site needs to match the declared parameter count. > > R=mslekova@chromium.org > > Bug: chromium:1302596 > Change-Id: I0d35e70a66d682ee8fdecf5c8ea4d2b1419ce684 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3509393 > Reviewed-by: Maya Lekova <mslekova@chromium.org> > Commit-Queue: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/main@{#79415} Bug: chromium:1302596 Change-Id: I138561742b38939a1c2c9a69a6fa508d4f3a028d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3513613Reviewed-by: Maya Lekova <mslekova@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#79424}
-
Victor Gomes authored
Allows incremental test, while some codegen paths are not available. Bug: v8:7700 Change-Id: Icc24cf8e85464587f9eee6175107093a25b76da9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3512794Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Victor Gomes <victorgomes@chromium.org> Auto-Submit: Victor Gomes <victorgomes@chromium.org> Cr-Commit-Position: refs/heads/main@{#79423}
-
Leszek Swirski authored
This reverts commit 2dc40370. Reason for revert: Broke in UBSan: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20UBSan/20397/overview Original change's description: > [compiler] Improve code generated for patterns like "x >> 1 == 0" > > Change-Id: I79575ba61a3bdea93468f48d66a3cb3edd0e1442 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3506504 > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Darius Mercadier <dmercadier@chromium.org> > Cr-Commit-Position: refs/heads/main@{#79419} Change-Id: I489440d7cbd46763d496c6d22190240c5676e486 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3513893 Auto-Submit: Leszek Swirski <leszeks@chromium.org> Owners-Override: Leszek Swirski <leszeks@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/main@{#79422}
-
Leszek Swirski authored
Registers were supposed to fit in an int, but some register subclasses added extra fields which made them too big. This fiddles around with field sizes so that all the Register subclasses still fit inside of an int (by making the Register code field 8-bit etc). Change-Id: I31ffbc8f98b6a5e1f638fc59147009e5f81dff41 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3513612 Auto-Submit: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Victor Gomes <victorgomes@chromium.org> Commit-Queue: Victor Gomes <victorgomes@chromium.org> Cr-Commit-Position: refs/heads/main@{#79421}
-
Michael Lippautz authored
The only user of OverrideEmbedderStackStateScope is Blink where it is used to override stack state of top-level tasks. Adjust the behavior here to allow using this scope broadly while still supporting explicit garbage collection calls. Bug: chromium:1300492 Change-Id: I78c418c5f08991bf6857147cd4a537246bfcc556 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3497744Reviewed-by: Omer Katz <omerkatz@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#79420}
-
Darius M authored
Change-Id: I79575ba61a3bdea93468f48d66a3cb3edd0e1442 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3506504Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Darius Mercadier <dmercadier@chromium.org> Cr-Commit-Position: refs/heads/main@{#79419}
-
Camillo Bruni authored
Replace all CONVERT_XXX_ARG_XXX() macros from runtime-util.h with direct calls to Arguments or the fully expanded equivalent. - This replaces many of the hard CHECKs with DCHECK (as is common practice in most V8 code) - Instead of relying on verbose comments we now have readable code - Rename Arguments.::xxx_at with Arguments::xxx_value_at since these methods don't return the Object but rather their double/int value - Add Oddball::ToBool helper - Add and use v8::internal::PropertyAttributesFromInt helper - Add stronger DCHECK for PropertyAttributes returned in GetPropertyAttributesWithInterceptorInternal Bug: v8:11263 Change-Id: I8d531857e05d19f3198753b05af28d993a391854 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3497768Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/main@{#79418}
-
Clemens Backes authored
This reverts commit a664aef0. Reason for revert: Times out on CFI: https://cr-buildbucket.appspot.com/build/8820170241901030897 Original change's description: > [asm] Reject import calls with too many parameters > > The asm parser was missing a check for too many parameters for calls to > imported functions. For regular functions this check implicitly existed > because the limit was checked at the function declaration, and the call > site needs to match the declared parameter count. > > R=mslekova@chromium.org > > Bug: chromium:1302596 > Change-Id: I0d35e70a66d682ee8fdecf5c8ea4d2b1419ce684 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3509393 > Reviewed-by: Maya Lekova <mslekova@chromium.org> > Commit-Queue: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/main@{#79415} Bug: chromium:1302596 Change-Id: I743647f739e0cc93b2e99145086dbbb7d2660c79 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3512853 Auto-Submit: Clemens Backes <clemensb@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/main@{#79417}
-
Victor Gomes authored
Context: https://chromium-review.googlesource.com/c/v8/v8/+/3506444 Bug: v8:7700 Change-Id: Ie877f7f18759f286597f07412ceb1ba25eb4787a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3512793 Commit-Queue: Victor Gomes <victorgomes@chromium.org> Auto-Submit: Victor Gomes <victorgomes@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#79416}
-
Clemens Backes authored
The asm parser was missing a check for too many parameters for calls to imported functions. For regular functions this check implicitly existed because the limit was checked at the function declaration, and the call site needs to match the declared parameter count. R=mslekova@chromium.org Bug: chromium:1302596 Change-Id: I0d35e70a66d682ee8fdecf5c8ea4d2b1419ce684 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3509393Reviewed-by: Maya Lekova <mslekova@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#79415}
-
Darius Mercadier authored
This reverts commit 48b443f6. Reason for revert: https://bugs.chromium.org/p/chromium/issues/detail?id=1303902 Original change's description: > [compiler] Simplify "==0" branches in MachineOperatorReducer > > Bug: v8:12484 > Change-Id: I0667c7464c0dd71338bc199a24a69248a7a0a525 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3497303 > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Owners-Override: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Darius Mercadier <dmercadier@chromium.org> > Cr-Commit-Position: refs/heads/main@{#79379} Bug: v8:12484 Change-Id: I5114b2871a14444a84f6230aa1bd2113d32a2a83 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3510390 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Darius Mercadier <dmercadier@chromium.org> Cr-Commit-Position: refs/heads/main@{#79414}
-
Pan, Tao authored
The main purpose of OSR compilation is fasten inner loop execution, the OSR code cache is still correct for loop if optimizing at out of loop, keep OSR code cache can reduce unnecessary slow bytecode execution with feedback collection and avoid re-OSR compilation. This CL can improve JetStream2 case navier-stokes by ~6%. Change-Id: I9518317fb922071b131cab5b56998a0fc198804a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3494981Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Tao Pan <tao.pan@intel.com> Cr-Commit-Position: refs/heads/main@{#79413}
-
v8-ci-autoroll-builder authored
Rolling v8/build: https://chromium.googlesource.com/chromium/src/build/+log/eaff38e..69dab41 Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/34063a8..5b79b29 Rolling v8/third_party/depot_tools: https://chromium.googlesource.com/chromium/tools/depot_tools/+log/9ce8be3..8edc960 Rolling v8/third_party/googletest/src: https://chromium.googlesource.com/external/github.com/google/googletest/+log/c9461a9..ae1b7ad R=v8-waterfall-sheriff@grotations.appspotmail.com,mtv-sf-v8-sheriff@grotations.appspotmail.com Change-Id: I5f1314f6a81905ae48dace343548ee01d467cc66 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3509971 Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Bot-Commit: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#79412}
-
- 08 Mar, 2022 7 commits
-
-
gaosheng08 authored
When I was looking at the v8 Promise source, I noticed that some of the links that needed to point to ECMA262 were broken, some were deprecated, some were not legitimate, so I tried to fix them. Bug: no Change-Id: I26deeb635d8c293245e7cdb62089f60557547846 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3462029Reviewed-by: Shu-yu Guo <syg@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/main@{#79411}
-
Deepti Gandluri authored
Codegen details detailed in the relevant github issue. https://github.com/WebAssembly/relaxed-simd/issues/21 Bug: v8:12284 Change-Id: I06c8859035abae775269bdf949ff0f1c2e262859 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3508560Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/main@{#79410}
-
Joyee Cheung authored
For background and reasoning, see https://docs.google.com/document/d/1jvSEvXFHRkxg4JX-j6ho3nRqAF8vZI2Ai7RI8AY54gM/edit This is the first step towards pulling the DefineNamedOwn operation out of StoreIC. Summary of the renamed identifiers: Bytecodes: - StaNamedProperty -> SetNamedProperty: calls StoreIC and emitted for normal named property sets like obj.x = 1. - StaNamedOwnProperty -> DefineNamedOwnProperty: calls DefineNamedOwnIC (previously StoreOwnIC), and emitted for initialization of named properties in object literals and named public class fields. - StaKeyedProperty -> SetKeyedProperty: calls KeyedStoreIC and emitted for keyed property sets like obj[x] = 1. - StaKeyedPropertyAsDefine -> DefineKeyedOwnProperty: calls DefineKeyedOwnIC (previously KeyedDefineOwnIC) and emitted for initialization of private class fields and computed public class fields. - StaDataPropertyInLiteral -> DefineKeyedOwnPropertyInLiteral: calls DefineKeyedOwnPropertyInLiteral runtime function (previously DefineDataPropertyInLiteral) and emitted for initialization of keyed properties in object literals and static class initializers. (note that previously the StoreDataPropertyInLiteral runtime function name was taken by object spreads and array literal creation instead) - LdaKeyedProperty -> GetKeyedProperty, LdaNamedProperty -> GetNamedProperty, LdaNamedPropertyFromSuper -> GetNamedPropertyFromSuper: we drop the Sta prefix for the property store operations since the accumulator use is implicit and to make the wording more natural, for symmetry the Lda prefix for the property load operations is also dropped. opcodes: - (JS)StoreNamed -> (JS)SetNamedProperty: implements set semantics for named properties, compiled from SetNamedProperty (previously StaNamedProperty) and lowers to StoreIC or Runtime::kSetNamedProperty - (JS)StoreNamedOwn -> (JS)DefineNamedOwnProperty: implements define semantics for initializing named own properties in object literal and public class fields, compiled from DefineNamedOwnProperty (previously StaNamedOwnProperty) and lowers to DefineNamedOwnIC (previously StoreOwnIC) - (JS)StoreProperty -> (JS)SetKeyedProperty: implements set semantics for keyed properties, only compiled from SetKeyedProperty(previously StaKeyedProperty) and lowers to KeyedStoreIC - (JS)DefineProperty -> (JS)DefineKeyedOwnProperty: implements define semantics for initialization of private class fields and computed public class fields, compiled from DefineKeyedOwnProperty (previously StaKeyedPropertyAsDefine) and calls DefineKeyedOwnIC (previously KeyedDefineOwnIC). - (JS)StoreDataPropertyInLiteral -> (JS)DefineKeyedOwnPropertyInLiteral: implements define semantics for initialization of keyed properties in object literals and static class initializers, compiled from DefineKeyedOwnPropertyInLiteral (previously StaDataPropertyInLiteral) and calls the DefineKeyedOwnPropertyInLiteral runtime function (previously DefineDataPropertyInLiteral). Runtime: - DefineDataPropertyInLiteral -> DefineKeyedOwnPropertyInLiteral: following the bytecode/opcodes change, this is used by DefineKeyedOwnPropertyInLiteral (previously StaDataPropertyInLiteral) for object and class literal initialization. - StoreDataPropertyInLiteral -> DefineKeyedOwnPropertyInLiteral_Simple: it's just a simplified version of DefineDataPropertyInLiteral that does not update feedback or perform function name configuration. This is used by object spread and array literal creation. Since we are renaming DefineDataPropertyInLiteral to DefineKeyedOwnPropertyInLiteral, rename this simplified version with a `_Simple` suffix. We can consider merging it into DefineKeyedOwnPropertyInLiteral in the future. See https://docs.google.com/document/d/1jvSEvXFHRkxg4JX-j6ho3nRqAF8vZI2Ai7RI8AY54gM/edit?disco=AAAAQQIz6mU - Other changes following the bytecode/IR changes IC: - StoreOwn -> DefineNamedOwn: used for initialization of named properties in object literals and named public class fields. - StoreOwnIC -> DefineNamedOwnIC - StoreMode::kStoreOwn -> StoreMode::kDefineNamedOwn - StoreICMode::kStoreOwn -> StoreICMode::kDefineNamedOwn - IsStoreOwn() -> IsDefineNamedOwn() - DefineOwn -> DefineKeyedOwn: IsDefineOwnIC() was already just IsDefineKeyedOwnIC(), and IsAnyDefineOwn() includes both named and keyed defines so we don't need an extra generic predicate. - StoreMode::kDefineOwn -> StoreMode::kDefineKeyedOwn - StoreICMode::kDefineOwn -> StoreICMode::kDefineKeyedOwn - IsDefineOwn() -> IsDefineKeyedOwn() - IsDefineOwnIC() -> IsDefineKeyedOwnIC() - Removing IsKeyedDefineOwnIC() as its now a duplicate of IsDefineKeyedOwnIC() - KeyedDefineOwnIC -> DefineKeyedOwnIC, KeyedDefineOwnGenericGenerator() -> DefineKeyedOwnGenericGenerator: make the ordering of terms more consistent - IsAnyStoreOwn() -> IsAnyDefineOwn(): this includes the renamed and DefineNamedOwn and DefineKeyedOwn. Also is_any_store_own() is removed since it's just a duplicate of this. - IsKeyedStoreOwn() -> IsDefineNamedOwn(): it's unclear where the "keyed" part came from, but it's only used when DefineNamedOwnIC (previously StoreOwnIC) reuses KeyedStoreIC, so rename it accordingly Interpreter & compiler: - BytecodeArrayBuilder: following bytecode changes - StoreNamedProperty -> SetNamedProperty - StoreNamedOwnProperty -> DefineNamedOwnProperty - StoreKeyedProperty -> SetKeyedProperty - DefineKeyedProperty -> DefineKeyedOwnProperty - StoreDataPropertyInLiteral -> DefineKeyedOwnPropertyInLiteral - FeedbackSlotKind: - kDefineOwnKeyed -> kDefineKeyedOwn: make the ordering of terms more consistent - kStoreOwnNamed -> kDefineNamedOwn: following the IC change - kStoreNamed{Sloppy|Strict} -> kSetNamed{Sloppy|Strict}: only used in StoreIC for set semantics - kStoreKeyed{Sloppy|Strict} -> kSetKeyed{Sloppy|Strict}: only used in KeyedStoreIC for set semantics - kStoreDataPropertyInLiteral -> kDefineKeyedOwnPropertyInLiteral: following the IC change - BytecodeGraphBuilder - StoreMode::kNormal, kOwn -> NamedStoreMode::kSet, kDefineOwn: this is only used by BytecodeGraphBuilder::BuildNamedStore() to tell the difference between SetNamedProperty and DefineNamedOwnProperty operations. Not changed: - StoreIC and KeyedStoreIC currently contain mixed logic for both Set and Define operations, and the paths are controlled by feedback. The plan is to refactor the hierarchy like this: ``` - StoreIC - DefineNamedOwnIC - SetNamedIC (there could also be a NamedStoreIC if that's helpful) - KeyedStoreIC - SetKeyedIC - DefineKeyedOwnIC - DefineKeyedOwnICLiteral (could be merged into DefineKeyedOwnIC) - StoreInArrayLiteralIC - ... ``` StoreIC and KeyedStoreIC would then contain helpers shared by their subclasses, therefore it still makes sense to keep the word "Store" in their names since they would be generic base classes for both set and define operations. - The Lda and Sta prefixes of bytecodes not involving object properties (e.g. Ldar, Star, LdaZero) are kept, since this patch focuses on property operations, and distinction between Set and Define might be less relevant or nonexistent for bytecodes not involving object properties. We could consider rename some of them in future patches if that's helpful though. Bug: v8:12548 Change-Id: Ia36997b02f59a87da3247f20e0560a7eb13077f3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3481475Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Shu-yu Guo <syg@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Joyee Cheung <joyee@igalia.com> Cr-Commit-Position: refs/heads/main@{#79409}
-
Nikolaos Papaspyrou authored
Report full GC statistics to the Recorder API. These will be used by Blink to populate UMA histograms. Existing UMA reporting in V8 remains as is for now and will be removed in a followup. With this CL, most full GC statistics are reported as part of V8.GC.Cycle.*.Full.*. Also V8.GCMarkCompactReason is migrated to V8.GC.Cycle.Reason.Full. This CL goes together with: https://chromium-review.googlesource.com/c/chromium/src/+/3353448 Bug: chromium:1154636 Change-Id: I199be75e75144a59e5f56a6872268d0ecad3a885 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3356195Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Omer Katz <omerkatz@chromium.org> Commit-Queue: Nikolaos Papaspyrou <nikolaos@chromium.org> Cr-Commit-Position: refs/heads/main@{#79408}
-
Nikolaos Papaspyrou authored
Before a young GC, the scavenger finalizes a pending full GC sweeping, in case there are no more running sweeping jobs, to avoid unnecessarily pausing sweeping and then resuming it. This CL moves this sweeping finalization from ScavengerCollector::CollectGarbage to Heap::CompleteSweepingYoung, so that it is also performed for the minor mark-compactor and that sweeping is correctly attributed to the previous full GC cycle (instead of the beginning young cycle). Furthermore, it also finalizes CppGC sweeping if there are no more running sweeping jobs. Bug: chromium:1154636 Change-Id: Ic9ba4803f49db32c0a539f080329f012859bc8bc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3508011Reviewed-by: Omer Katz <omerkatz@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Nikolaos Papaspyrou <nikolaos@chromium.org> Cr-Commit-Position: refs/heads/main@{#79407}
-
Dominik Inführ authored
We can cache this in a static field during V8 initialization such that we don't need to cache this method's result for each use-case that might benefit. Bug: v8:12691 Change-Id: I4391a5e306646465ce96fb7e354be996d9fe8b44 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3506375Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/main@{#79406}
-
Clemens Backes authored
The 5.4 and 5.10 kernels received a patch for PKRU handling, which landed in 5.4.182 and 5.10.103. See "x86/fpu: Correct pkru/xstate inconsistency" by Brian Geffon <bgeffon@google.com>: https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.4.182 https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.10.103 R=jkummerow@chromium.org Bug: v8:11974 Change-Id: Ie2d4840f9fbd902a0988c94c50ab450485d9117c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3506991Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#79405}
-