- 16 Sep, 2020 1 commit
-
-
Milad Fa authored
Change-Id: I564e60a04616f98cf0ad5258c994e53b6ab8f4eb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2410010Reviewed-by:
Michael Dawson <midawson@redhat.com> Reviewed-by:
Joran Siu <joransiu@ca.ibm.com> Reviewed-by:
Michael Hablich <hablich@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Junliang Yan <junyan@redhat.com> Commit-Queue: Milad Farazmand <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#69945}
-
- 11 Sep, 2020 1 commit
-
-
Georg Neis authored
... by unparking the local heap before accessing the handles. Bug: v8:7790 Change-Id: I0910fd8ad2a1e9cbbf312acb4f26358a09891f0f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2404455Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Auto-Submit: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#69852}
-
- 18 Aug, 2020 1 commit
-
-
Z Nguyen-Huu authored
There exists such optimization for additions but not for multiplication. This adds optimizations that apply the reductions (x * Int32Constant(a)) * Int32Constant(b)) => x * Int32Constant(a * b) (x * Int64Constant(a)) * Int64Constant(b)) => x * Int64Constant(a * b) to the TurboFan graph. Bug: v8:10305 Change-Id: I28f72c2b7d8ff0f758a0a08b69fb3763557a6241 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2360327 Commit-Queue: Z Nguyen-Huu <duongn@microsoft.com> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#69462}
-
- 13 Aug, 2020 1 commit
-
-
Santiago Aboy Solanes authored
Since it will be patched in later in the cases where it will be used, there is no need to have it as a parameter. Bug: v8:7790 Change-Id: I93b27f3baf8c3841a60f5ac5ed09993d1caf19bc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2351667Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#69366}
-
- 10 Aug, 2020 1 commit
-
-
Ng Zhi An authored
With a displacement of int32_t min (-2^31), and a displacement mode of kNegativeDisplacement, we will try to negate this constant, but the result will not fit in an int32_t, leading to a runtime crash. Check for this special case in CanBeImmediate, and return false. Bug: chromium:1091892 Change-Id: I7f18153d13805f2836dd5c8e1bc098f1e9600566 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2341095 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#69311}
-
- 31 Jul, 2020 3 commits
-
-
Igor Sheludko authored
This is a reland of 13141c8a ... with a fix for an UB issue of passing null pointers to memcpy() when size is zero. TBR=leszeks@chromium.org Original change's description: > [zone-compr] Introduce ZoneTypeTraits and ZoneCompression > > Also move zone compression flags to src/common/globals.h. > > Bug: v8:9923 > Change-Id: Id0a77720e735e2669a1e5eef48e1b4866ad99480 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2324255 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/master@{#69160} Bug: v8:9923 Change-Id: I2245b81516c39ccea262c282c659ef601af57abf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2332165 Commit-Queue: Igor Sheludko (OOO Aug 3-17) <ishell@chromium.org> Reviewed-by:
Igor Sheludko (OOO Aug 3-17) <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#69166}
-
Nico Hartmann authored
This reverts commit 13141c8a. Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/12253? Original change's description: > [zone-compr] Introduce ZoneTypeTraits and ZoneCompression > > Also move zone compression flags to src/common/globals.h. > > Bug: v8:9923 > Change-Id: Id0a77720e735e2669a1e5eef48e1b4866ad99480 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2324255 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/master@{#69160} TBR=leszeks@chromium.org,ishell@chromium.org Change-Id: I01fc05b33d01c19f9a9432d4b2dd73cf8b38b972 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:9923 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2332163Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#69162}
-
Igor Sheludko authored
Also move zone compression flags to src/common/globals.h. Bug: v8:9923 Change-Id: Id0a77720e735e2669a1e5eef48e1b4866ad99480 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2324255Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#69160}
-
- 30 Jul, 2020 3 commits
-
-
Ng Zhi An authored
These are no longer tied to instruction-selector, so move them out into their own unittests. We can then remove the *ForTesting methods. Bug: v8:10696 Change-Id: I387cf38290d9602b011ee1d13ee5285ac660f208 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2326951Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#69149}
-
Ross McIlroy authored
Adds unittests that test the fast register allocator correctly deals with spills of Phi's between their definition and a predecessor block's gap move to populate the Phi. BUG=v8:9684 Change-Id: I17263058d5ac29088895ad3de7b3131315ec8fae Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2299371 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#69141}
-
Ross McIlroy authored
Adds support for Phis to be allocated to the fast register allocator. Registers used for Phis are marked specially between the point where the Phi is defined, and the gap-move's in the predecessor blocks which populate the Phi value, since if the Phi is spilled then all predecessor blocks must also spill the Phi even if they were already allocated. BUG=v8:9684 Change-Id: Iebe90495b83df655d3335a7d55874123f3b27f8d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2299366 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#69139}
-
- 28 Jul, 2020 2 commits
-
-
Ross McIlroy authored
Adds support for populating reference maps to the fast register allocator. In order to calculate whether a stack slot is live at a given instruction, we use the dominator tree to build a bitmap of blocks which are dominated by each block. A variable's spill operand is classed as alive for any blocks that are dominated by the block it was defined in, until the instruction index of the spill operand's last use. As such, it may be classified as live down a branch where the spill operand is never used, however it is safe since the spill slot won't be re-allocated until after it's last-use instruction index in any case. BUG=v8:9684 Change-Id: I772374599ef916f57d82d468f66429e32c712ddf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2298008 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#69108}
-
Ross McIlroy authored
Adds support for tracking the instruction range of spilled operands, and then allocating spill slots to these ranges. It also adds some unittests covering spill slot allocation. Spill slots are allocated in a linear fashion, running through the instruction stream in a linear order, ensuring that no spill operand is allocated to a same spill slot that is already assigned to during this whole start / end range. This isn’t optimal, since it doesn’t take into account holes in these ranges (e.g, blocks between start and end that aren’t dominated by the start), but in practice rarely leads to more than one extra spill slot being allocated compared to the current allocator. BUG=v8:9684 Change-Id: Iedee7bcf552080e5b4b6a2f4e96b78b6c1396cab Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2297470Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#69107}
-
- 24 Jul, 2020 2 commits
-
-
Ross McIlroy authored
Adds support for register allocation within a block to the fast register allocator. Also adds some unittests covering basic register allocation. No support yet for spill slot allocation, so functions that spill don't work yet. BUG=v8:9684 Change-Id: I91d0fc0660d7b65f59235242fd5e3b1a7618d813 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2297467 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#69045}
-
Igor Sheludko authored
... that controls whether the TF graph zones should support compression. Bug: v8:9923 Change-Id: Ifbe237b75e9c92e62eb32b69d6b3b1a818269b83 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2308347 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#69036}
-
- 22 Jul, 2020 1 commit
-
-
Seth Brenith authored
Design doc: https://docs.google.com/document/d/1szInbXZfaErWW70d30hJsOLL0Es-l5_g8d2rXm1ZBqI/edit?usp=sharing V8 can already collect data about how many times each basic block in the builtins is run. This change enables using that data for profile-guided optimization. New comments in BUILD.gn describe how to use this feature. A few implementation details worth mentioning, which aren't covered in the design doc: - BasicBlockProfilerData currently contains an array of RPO numbers. However, this array is always just [0, 1, 2, 3, ...], so this change removes that array. A new DCHECK in BasicBlockInstrumentor::Instrument ensures that the removal is valid. - RPO numbers, while useful for printing data that matches with the stringified schedule, are not useful for matching profiling data with blocks that haven't been scheduled yet. This change adds a new array of block IDs in BasicBlockProfilerData, so that block counters can be used for PGO. - Basic block counters need to be written to a file so that they can be provided to a subsequent run of mksnapshot, but the design doc doesn't specify the transfer format or what file is used. In this change, I propose using the existing v8.log file for that purpose. Block count records look like this: block,TestLessThanHandler,37,29405 This line indicates that block ID 37 in TestLessThanHandler was run 29405 times. If multiple lines refer to the same block, the reader adds them all together. I like this format because it's easy to use: - V8 already has robust logic for creating the log file, naming it to avoid conflicts in multi-process situations, etc. - Line order doesn't matter, and interleaved writes from various logging sources are fine, given that V8 writes each line atomically. - Combining multiple sources of profiling data is as simple as concatenating their v8.log files together. - It is a good idea to avoid making any changes based on profiling data if the function being compiled doesn't match the one that was profiled, since it is common to use profiling data downloaded from a central lab which is updated only periodically. To check whether a function matches, I propose using a hash of the Graph state right before scheduling. This might be stricter than necessary, as some changes to the function might be small enough that the profile data is still relevant, but I'd rather err on the side of not making incorrect changes. This hash is also written to the v8.log file, in a line that looks like this: builtin_hash,LdaZeroHandler,3387822046 Bug: v8:10470 Change-Id: I429e5ce5efa94e01e7489deb3996012cf860cf13 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2220765 Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#69008}
-
- 14 Jul, 2020 2 commits
-
-
Ross McIlroy authored
Adds basic framework to pipeline.cc to enable a seperate fast register allocator for the TurboProp mid-tier. As part of this, common logic as well as a base class for RegisterAllocationData is moved to a seperate register-allocation.h header file. The current register allocator's RegisterAllocationData is renamed to TopTierRegisterAllocationData, and the former name is the new base class held in PipelineData. BUG=v8:9684 Change-Id: I28285b7d6112505bf90e88ea3cda66d03dfabc74 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2295359 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#68852}
-
Santiago Aboy Solanes authored
This CL adds functionality to read the source positions directly from the JS heap rather than from serialized data. In order to do this, we create a PersistentHandles container in the OptimizedCompilationInfo which gets passed onto the JSHeapBroker. This allows us to create the handles in the main thread and pass them safely to the background thread. In order to read safely from the background thread, we need a LocalHeap which blocks the GC from running and potentially moving the handles. This LocalHeap is created only when the JSHeapBroker has finalized serializing and destroyed when retiring it. Bug: v8:7790 Change-Id: I19f8b08d12e5be0a3df34d6af2043310c0c7b6fe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2277802Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#68836}
-
- 10 Jul, 2020 2 commits
-
-
Igor Sheludko authored
... by migrating old-style code MyObject* obj = new (zone) MyObject(...) to the new style MyObject* obj = zone->New<MyObject>(...) Bug: v8:10689 Change-Id: I55c686bbedfa1fd1955a5927df3f72b366312fd4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2288867 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#68808}
-
Igor Sheludko authored
... by migrating old-style code MyObject* obj = new (zone) MyObject(...) to the new style MyObject* obj = zone->New<MyObject>(...) Bug: v8:10689 Change-Id: Iea6c1225ee672035763d8141292a40874658d270 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2288864 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#68788}
-
- 06 Jul, 2020 3 commits
-
-
Leszek Swirski authored
This will allow it to take an OffThreadIsolate in the future, without requiring GetIsolate on SharedFunctionInfo. Change-Id: I7db56d5f0587585f829b26e60683c133760d8ff1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2282534Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Auto-Submit: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#68696}
-
Jakob Gruber authored
This is the last batch of operators which used to embed the feedback vector as a HeapConstant: - CreateEmptyLiteralArray - LoadGlobal - LoadNamed - StoreDataPropertyInLiteral - StoreGlobal - StoreInArrayLiteral - StoreNamed - StoreNamedOwn They now take the vector as an input. In NCI mode, the vector is loaded from the closure at the beginning of the function. Bug: v8:8888 Change-Id: Ifd2d2a556db343512b61e099a73702822b1ba9f0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2282525 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#68695}
-
Jakob Gruber authored
Prior to this CL, the construct node layout was: {target, args..., new_target} The new layout is: {target, new_target, args..., feedback_vector} Having new_target at index 1 brings it closer to call node layout, which is now identical except that it has receiver at index 1. The new feedback vector input will be needed for NCI code. Affected node kinds are: - JSConstruct - JSConstructWithArrayLike - JSConstructWithSpread - JSConstructForwardVarargs (just the new_target position change) Bug: v8:8888 Change-Id: I4c68a0901d01e8862fd276c8a858799d5f4ff024 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2278475 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#68692}
-
- 30 Jun, 2020 1 commit
-
-
Jakob Gruber authored
This is likely the major change of the series, as Call nodes are the focus of call reducer (and to a lesser extent other phases like inlining). This CL essentially adds the new input to Call nodes, and updates the rest of the pipeline. As a (fairly large) drive-by, I also introduce the JSCallNode wrapper class and apply it in call reducer. This change, although large, will hopefully make future refactorings *much* easier, since it is now clear where certain assumptions about Call node layout are made. Bug: v8:8888 Change-Id: Ia15fe0ba459b6034863a5815a4e4662cee41fc83 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264353 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#68616}
-
- 23 Jun, 2020 2 commits
-
-
Jakob Gruber authored
Following up on previous changes for unary ops: https://crrev.com/c/2246576 Bug: v8:8888 Change-Id: Ie4dd9a307fb0415e93babf412e3d8d9e86791761 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2257227 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#68479}
-
Jakob Gruber authored
This extends the opcode macro lists to include both the long name (e.g.: JSAdd) and short name (Add) to reduce duplication. The change is only for JS operators for now but can be extended to others in the future. Drive-by: Base more predicates off the macro lists for robustness. Bug: v8:8888 Change-Id: I10debdf86166dbe9dac63a6df57938820a8af8d0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2255468 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#68477}
-
- 15 Jun, 2020 1 commit
-
-
Jakob Gruber authored
... to OptimizedCompilationInfo, BytecodeGraphBuilder, and JSHeapBroker. Also add first uses of these flags in pipeline.cc by skipping certain phases when nci is enabled. With this change, tests in the NCI variant will start to fail since generic lowering is not fully implemented. These implementations will follow incrementally in the next days. Bug: v8:8888 Change-Id: I3f570fb92f09059d1f1f4015f88ffe80ccf746ad Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2239572 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#68339}
-
- 10 Jun, 2020 2 commits
-
-
Victor Gomes authored
Change-Id: I3a624b9cb164dd4a49606f311f71ea0115afe30a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2238572 Commit-Queue: Victor Gomes <victorgomes@chromium.org> Auto-Submit: Victor Gomes <victorgomes@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#68296}
-
Jakob Gruber authored
This is a reland of 8748613f, fixing an issue accessing binary op's BinaryOperationHints. Original change's description: > [compiler] Hook in binary op builtins with feedback in generic lowering > > If --turbo-nci is enabled, use binary op builtins with feedback > collection during generic lowering. > > Bug: v8:8888 > Change-Id: I307dc742488982bdc68006be5bcd1da8e68768f5 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2228614 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#68227} Bug: v8:8888,chromium:1092553 Change-Id: I1356659d65a5e46bc57bb6c0ebe2e9e86cb8be81 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2237128 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#68288}
-
- 08 Jun, 2020 2 commits
-
-
Leszek Swirski authored
This reverts commit 8748613f. Reason for revert: MSAN failures (https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/32760?) Original change's description: > [compiler] Hook in binary op builtins with feedback in generic lowering > > If --turbo-nci is enabled, use binary op builtins with feedback > collection during generic lowering. > > Bug: v8:8888 > Change-Id: I307dc742488982bdc68006be5bcd1da8e68768f5 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2228614 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#68227} TBR=neis@chromium.org,jgruber@chromium.org Change-Id: I635b1a5a28b25ce29e4f8bc23eb52841885b0cdf No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8888 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2235535Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#68229}
-
Jakob Gruber authored
If --turbo-nci is enabled, use binary op builtins with feedback collection during generic lowering. Bug: v8:8888 Change-Id: I307dc742488982bdc68006be5bcd1da8e68768f5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2228614 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#68227}
-
- 03 Jun, 2020 1 commit
-
-
Mythri A authored
This is a followup of the cl [1] that fixes a bug where bytecode was getting flushed when allocating feedback vector. The fix added IsCompiledScope before allocating a new feedback vector. We now pass IsCompiledScope to JSFunction::EnsureFeedbackVector. This makes it explicit that EnsureFeedbackVector expects a function that is compiled and the bytecode shouldn't be flushed during the allocation.Also adds a test. [1] https://chromium-review.googlesource.com/c/v8/v8/+/2218066 Bug: v8:10560 Change-Id: I552c449a57555dffa625b2e4efa04c2c276fc0b4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2222347 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68142}
-
- 02 Jun, 2020 2 commits
-
-
Jakob Gruber authored
If --turbo-nci is enabled, use compare op builtins with feedback collection during generic lowering. Bug: v8:8888 Change-Id: I886020e2ee280f65388d9987c70958546f99e0f3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2215821Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#68100}
-
Georg Neis authored
Bug: chromium:1085804 Change-Id: I98f12da97334bd5fd32bd01b1eca56be895dc0a8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2218286 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#68095}
-
- 25 May, 2020 1 commit
-
-
Ross McIlroy authored
We can't consistently rewire the successor blocks of an unreachable node to disconnect them from the graph when we are trying to maintain the schedule. Instead simply leave the code there. As a future optimization we could add a proper scheduled dead code elimination phase which can deal with this. As a side-effect, one of the tests sees a int64 DeadValue, so add support for that in the instruction selector. BUG=chromium:1083272,chromium:1083763,chromium:1084953,v8:9684 Change-Id: I69a6feaeef4eae62110392e27ea848b28bccf787 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2209061 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Auto-Submit: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#67953}
-
- 22 May, 2020 1 commit
-
-
Seth Brenith authored
Sometimes CSA code carefully constructs a mask to check several bitfields at once. Thus far, such a check has been very awkward to write in Torque. This change adds a way to do so, using the non-short-circuiting binary `&` operator. So now you can write an expression that depends on several bitfields from a bitfield struct, like `x.a == 5 & x.b & !x.c & x.d == 2` (assuming b is a one-bit value), and it will be reduced to a single mask and equality check. To demonstrate a usage of this new reduction, this change ports the trivial macro IsSimpleObjectMap to Torque. I manually verified that the generated code for the builtin SetDataProperties, which uses that macro, is unchanged. Bug: v8:7793 Change-Id: I4a23e0005d738a6699ea0f2a63f9fd67b01e7026 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2183276 Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#67948}
-
- 13 May, 2020 1 commit
-
-
Ambroise Vincent authored
Fold distinct MUL and ADD (or SUB) instructions into a single MLA (or MLS) instruction, mirroring what is being done for general purpose registers. SIMD wasm only uses the vectorized ADD and MUL instructions on quad vectors (NEON Q), so only those cases are handled. SIMD wasm only uses MUL by vectors, not by elements so there is no need to check for an addition and shift reduction. Change-Id: If07191dde9fb1dc37a5de27187800c15cc4325ea Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2184239Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Reviewed-by:
Zhi An Ng <zhin@chromium.org> Commit-Queue: Martyn Capewell <martyn.capewell@arm.com> Cr-Commit-Position: refs/heads/master@{#67770}
-
- 06 May, 2020 1 commit
-
-
Ross McIlroy authored
Fully remove the successor blocks when effect-control-linearization reaches an unreachable node and is maintaining the schedule. Previously we just updated the current_block_'s successor and removed any unreachable predecessors from end, however if the current_block_ is not an original block in the schedule, but a new one added due to control flow from effect control linearization lowering, the removed successor blocks could still be re-connected to the end block when they were lowered. Instead, entirely remove these unreachable blocks from the predecessor / successor chains, and have the effect-control-linearizer avoid lowering these blocks entirely. BUG=chromium:1076569,v8:9684 Change-Id: I4b4216019d55aef5363d88255726b85df8e7ada5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2179842Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#67595}
-
- 01 May, 2020 1 commit
-
-
Z Nguyen-Huu authored
ROL will be optional operator as arm, arm64 only have ROR. The reason for this CL is inefficient Wasm codegen for 64-bit left-rotation. Bug: v8:10216 Change-Id: I0cd13e4b6de5276a0d0b80eac5ed9c2e52ba1f96 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2157648 Commit-Queue: Z Nguyen-Huu <duongn@microsoft.com> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#67518}
-
- 29 Apr, 2020 1 commit
-
-
Tobias Tebbi authored
This is a reland of 43b885a8 This fixes another signed overflow in the unit test. Original change's description: > Reland "[turbofan][csa] optimize Smi untagging better" > > This is a reland of ff22ae80 > > Original change's description: > > [turbofan][csa] optimize Smi untagging better > > > > - Introduce new operator variants for signed right-shifts with the > > additional information that they always shift out zeros. > > - Use these new operators for Smi untagging. > > - Merge left-shifts with a preceding Smi-untagging shift. > > - Optimize comparisons of Smi-untagging shifts to operate on the > > unshifted word. > > - Optimize 64bit comparisons of values expanded from 32bit to use > > a 32bit comparison instead. > > - Change CodeStubAssembler::UntagSmi to first sign-extend and then > > right-shift to enable better address computations for Smi indices. > > > > Bug: v8:9962 > > Change-Id: If91300f365e8f01457aebf0bd43bdf88b305c460 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2135734 > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > Reviewed-by: Georg Neis <neis@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#67378} > > Bug: v8:9962 > Change-Id: Ieab0755806c95fb50022eb17596fb0c95f36004c > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170001 > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Georg Neis <neis@chromium.org> > Auto-Submit: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67430} Bug: v8:9962 TBR: neis@chromium.org Change-Id: I79883db546bf37873b3727b8023ef688507091d9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2169103 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#67464}
-