- 27 May, 2020 1 commit
-
-
George Wort authored
Display register allocation live ranges alongside sequences in turbolizer. The existing --trace-turbo flag now also outputs the register allocation data as part of the json file alongside the instruction sequence data that is already produced before and after register allocation is performed. This data includes live range intervals for each virtual and fixed register and the state of their assignments. This json data can now be displayed in turbolizer alongside the instruction sequences. The information is presented as a grid, with each grid cell representing a LifeTimePosition of a certain virtual register, determined by the column and row indices respectively. Each LifeTimePosition is shown to be part of an instruction id which itself is shown to be part of a block id. Each interval is shown as a coloured rectangle positioned over the relevant cells, and displaying text to indicate the state of their assignment. The Resizer object has been extended to allow the grid's html panel to be varied in size in the same manner that the left and right panels can be. The size of the grid itself must also be adjusted whenever the div container changes size. The RangeView class is introduced and is created and held by the single SequenceView object used to display the InstructionSequence data before and after register allocation. A checkbox allows the user to show/hide the range view, this is disabled when register allocation data is not provided or more than 249 instructions are in the sequence. The latter being required due to the css grid-row-col limit of 1000 alond with helping alleviate performance issues. The SequenceView object tracks the phase index currently selected as well as whether or not it is currently being shown. This ensures that the RangeView is not hidden and shown when switching between before and after register allocation, allowing for a smoother transition between the two. The scroll position is also saved and restored for convenience. The data about the instruction sequence required for the display is held by the RangeView object and reset whenever a new instruction sequence is shown. The grid div must sync its scroll with the headers and row labels so as to ensure a consistent view. The register allocation data is extracted from the json, with each register row showing all intervals within the relevant ranges. When the view is switched between before and after register allocation, the relevant intervals are swapped in. Bug: v8:7327 Notry: true Change-Id: I183535a2410a7d663382f387199885250fb98691 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2184232Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#68019}
-
- 21 May, 2020 1 commit
-
-
Seth Brenith authored
Currently, if d8 is run with the --turbo-profiling flag, it prints info about every TurboFan-compiled function. This info includes the number of times that each basic block in the function was run. It also includes text representations of the function's schedule and code, so that the person reading the output can associate counters with blocks of code. The data about each function is currently stored in a BasicBlockProfiler::Data instance, which is attached to a list owned by the singleton BasicBlockProfiler. Each Data contains an std::vector<uint32_t> which represents how many times each block in the function has executed. The generated code for each block uses a raw pointer into the storage of that vector to implement incrementing the counter. With this change, if you compile with v8_enable_builtins_profiling and then run with --turbo-profiling, d8 will print that same info about builtins too. In order to generate code that can survive being serialized to a snapshot and reloaded, this change uses counters in the JS heap instead of a std::vector outside the JS heap. The steps for instrumentation are as follows: 1. Between scheduling and instruction selection, add code to increment the counter for each block. The counters array doesn't yet exist at this point, and allocation is disallowed, so at this point the code refers to a special marker value. 2. During finalization of the code, allocate a BasicBlockProfilingData object on the JS heap containing data equivalent to what is stored in BasicBlockProfiler::Data. This includes a ByteArray that is big enough to store the counters for each block. 3. Patch the reference in the BuiltinsConstantsTableBuilder so that instead of referring to the marker object, it now refers to this ByteArray. Also add the BasicBlockProfilingData object to a list that is attached to the heap roots so it can be easily accessed for printing. Because these steps include modifying the BuiltinsConstantsTableBuilder, this procedure is only applicable to builtins. Runtime-generated code still uses raw pointers into std::vector instances. In order to keep divergence between these code paths to a minimum, most work is done referring to instances of BasicBlockProfiler::Data (the C++ class), and functions are provided to copy back and forth between that type and BasicBlockProfilingData (the JS heap object). This change is intended only to make --turbo-profiling work consistently on more kinds of functions, but with some further work, this data could form the basis for: - code coverage info for fuzzers, and/or - hot-path info for profile-guided optimization. Bug: v8:10470, v8:9119 Change-Id: Ib556a5bc3abe67cdaa2e3ee62702a2a08b11cb61 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2159738 Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#67944}
-
- 18 May, 2020 1 commit
-
-
Clemens Backes authored
We constantly fight against scrambled output with --print-wasm-code and other flags. Passing --single-threaded only partially mitigates this, because there could still be multiple isolates (e.g. Workers), and we sometimes failed to really execute in a single thread if that flag was set. Hence this CL solves the problem in a more fundamental way: Whenever a {StdoutStream} is constructed, it implicitly takes a global recursive mutex. The recursive mutex is needed because we still have some printing methods that don't take a stream as parameter, and instead create their own instance of {StdoutStream}, which should not crash of course. The overhead of taking a mutex should be acceptable, since output to stdout mostly happens if special tracing flags have been passed, and is slow anyway. This CL ensures that the {StdoutStream} is used at least for --print-code, --print-wasm-code, and --trace-turbo-graph. More flags can later be ported on demand. The {JSHeapBroker} class was modified to not contain a {StdoutStream}, but instead create one on demand. R=mlippautz@chromium.org, tebbi@chromium.org CC=ahaas@chromium.org Bug: v8:10506 Change-Id: Ib9cf8d76aa79553b4215bb7775e6d47a8179aafa Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2201767Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#67855}
-
- 06 May, 2020 1 commit
-
-
Clemens Backes authored
Interpreter entry compilation was removed in https://crrev.com/c/2172962. This CL removes the {WasmInterpreterEntryFrame} and the corresponding {WASM_INTERPRETER_ENTRY} code kind. Some follow-up cleanups are left as TODOs. R=jkummerow@chromium.org,bmeurer@chromium.org Bug: v8:10389 Change-Id: I1a43eba1ac1a751e05990c688088d99fc901231f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2182456Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#67607}
-
- 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}
-
- 28 Apr, 2020 2 commits
-
-
Clemens Backes authored
This reverts commit 43b885a8. Reason for revert: Still fails on UBSan: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/10873 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} TBR=neis@chromium.org,tebbi@chromium.org Change-Id: I49e19811ebcecb846f61291bc0c4a0d8b0bc4cff No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:9962 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2168876Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#67431}
-
Tobias Tebbi authored
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}
-
- 24 Apr, 2020 2 commits
-
-
Bill Budge authored
This reverts commit ff22ae80. Reason for revert: new test fails on UBSAN https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/10831 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} TBR=neis@chromium.org,tebbi@chromium.org Change-Id: I2617d7a44e5ae33fd79322d37c8b722c00162d22 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:9962 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2165873Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#67380}
-
Tobias Tebbi authored
- 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}
-
- 20 Apr, 2020 2 commits
-
-
Georg Neis authored
is not enough This CL records the inlined bytecode size in code objects and take it into consideration when calculating inline candidate's size. It can improve Speedometer2 by ~1% and JetStream2 by ~3% on 9900K platform. Contributted by tao.pan@intel.com Change-Id: Icf31ca52ed5013d62a9c8d5dd550944ef3a4fbda Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2089021Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Mythri Alle <mythria@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#67237}
-
Sathya Gunasekaran authored
Previously, one single retained maps list was used across all contexts. When one context was disposed, this entire list of retained maps was disposed as well. This caused maps that were still alive to be disposed leading to deopts when such maps were embedded in code objects. This patch makes the list of retained maps be per context so we can dispose only the dead maps. Bug: v8:9684, v8:10431 Change-Id: I0a50f4f49c9f6d72367c62e950828a039220fdfc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2122016Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#67225}
-
- 10 Mar, 2020 1 commit
-
-
Dan Elphick authored
Useful for profiling why mksnapshot is so slow in conjunction with --runtime-call-stats. Change-Id: Ib193d292352e0019b93c8edccb38a904aadbf553 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2089932Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#66646}
-
- 05 Mar, 2020 3 commits
-
-
Clemens Backes authored
This is a reland of 79398ab0 Original change's description: > [wasm] Further reduce the size of WasmCode > > Also, save dynamic allocations (plus their memory overhead). > This is realized by storing the relocation information, source position > table, and protected instruction information together in one "metadata" > byte array. > For each of the three components, we just store their size, such that > the accessors can return the respecitive {Vector} views as before. > > This makes each WasmCode object 24 bytes smaller on 64-bit > architectures. It also saves a few more bytes per code object because > less padding is needed for the individual allocations, and each dynamic > allocation comes with some constant memory overhead. > > Since the protected instructions will just be stored in a byte array > now, some APIs are refactored to just return that byte array directly > (instead of an array of {ProtectedInstructionData}). This also > simplifies serialization and deserialization, and will allow for > switching to a more compact representation in the future. > > Drive-by: Add some more checks to {Vector::cast} to protect against > undefined behaviour. > > R=ahaas@chromium.org > > Bug: v8:10254 > Change-Id: I81ca847023841110e3e52cc402fcb0349325d7af > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2078545 > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/master@{#66596} Tbr: ahaas@chromium.org Bug: v8:10254 Change-Id: Idcdcb4f13c3eb7a3f7fb5ef8a1229103ca0ae975 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2089934Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#66598}
-
Clemens Backes authored
This reverts commit 79398ab0. Reason for revert: Makes UBSan unhappy: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/10186 Original change's description: > [wasm] Further reduce the size of WasmCode > > Also, save dynamic allocations (plus their memory overhead). > This is realized by storing the relocation information, source position > table, and protected instruction information together in one "metadata" > byte array. > For each of the three components, we just store their size, such that > the accessors can return the respecitive {Vector} views as before. > > This makes each WasmCode object 24 bytes smaller on 64-bit > architectures. It also saves a few more bytes per code object because > less padding is needed for the individual allocations, and each dynamic > allocation comes with some constant memory overhead. > > Since the protected instructions will just be stored in a byte array > now, some APIs are refactored to just return that byte array directly > (instead of an array of {ProtectedInstructionData}). This also > simplifies serialization and deserialization, and will allow for > switching to a more compact representation in the future. > > Drive-by: Add some more checks to {Vector::cast} to protect against > undefined behaviour. > > R=ahaas@chromium.org > > Bug: v8:10254 > Change-Id: I81ca847023841110e3e52cc402fcb0349325d7af > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2078545 > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/master@{#66596} TBR=jkummerow@chromium.org,ahaas@chromium.org,clemensb@chromium.org,tebbi@chromium.org Change-Id: Id80aa82cfce8942879031032b322ee66855b5600 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:10254 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2089933Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#66597}
-
Clemens Backes authored
Also, save dynamic allocations (plus their memory overhead). This is realized by storing the relocation information, source position table, and protected instruction information together in one "metadata" byte array. For each of the three components, we just store their size, such that the accessors can return the respecitive {Vector} views as before. This makes each WasmCode object 24 bytes smaller on 64-bit architectures. It also saves a few more bytes per code object because less padding is needed for the individual allocations, and each dynamic allocation comes with some constant memory overhead. Since the protected instructions will just be stored in a byte array now, some APIs are refactored to just return that byte array directly (instead of an array of {ProtectedInstructionData}). This also simplifies serialization and deserialization, and will allow for switching to a more compact representation in the future. Drive-by: Add some more checks to {Vector::cast} to protect against undefined behaviour. R=ahaas@chromium.org Bug: v8:10254 Change-Id: I81ca847023841110e3e52cc402fcb0349325d7af Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2078545Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#66596}
-
- 22 Jan, 2020 1 commit
-
-
Georg Neis authored
... and consult it there from the various reducers. The flag makes no sense without the broker and the reducers already have access to the broker, so we can avoid an additional flag per reducer. Bug: v8:7790 Change-Id: I448050a55951b94d5313c1a79a502be906b98b25 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2013108 Auto-Submit: Georg Neis <neis@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#65918}
-
- 21 Jan, 2020 1 commit
-
-
Ross McIlroy authored
Adds support to the register allocator verifier to keep track of which stack slots contain tagged pointers, but have not been tracked by the reference map and so could contain stale values (i.e., not traced by a garbage collection). BUG=v8:9684 Change-Id: I8dd9925f0cb71cac4ae3e49f467767454694e515 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2007488Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#65883}
-
- 16 Jan, 2020 1 commit
-
-
Jakob Gruber authored
Function calls can push arguments onto the stack. The consumed stack slots are not considered by the function-entry stack check, since initial frame setup only reserves space for local slots, not call arguments. This CL adds such logic by tracking the maximum pushed argument count during instruction selection, and adding these slots to the (existing) stack check offset logic in code generation. Bug: chromium:1030167 Change-Id: I26a9407cf38009839b1dda2ff0c8ec297c15ed8d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2002540 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#65814}
-
- 13 Jan, 2020 1 commit
-
-
Mythri A authored
For measuring the time spent in each phase of TurboFan we use PipelineRunScope that adds a RuntimeCallStats scope with the correct counter. PipelineRunScope uses the runtimestats table set on the PipelineData to initialize the RuntimeCallStats scope. We correctly set the runtimestats on the pipelineData when starting ExecuteJobs but don't set it on PrepareJobs. This cl fixes it to also set runtimestats table on PrepareJobs. PrepareJobs always run on main thread, so it should be safe to use the runtimestats table on the isolate. Change-Id: Ied211158a10197aabb94373967146089a48c2db0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1995386 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Dan Elphick <delphick@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#65737}
-
- 09 Jan, 2020 1 commit
-
-
Maya Lekova authored
Bug: v8:7790 Change-Id: Idf066adcd5c3dca3004e2eaa0d8fa389755720af Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1991490Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#65671}
-
- 07 Jan, 2020 1 commit
-
-
Thibaud Michaud authored
Set the wasm engine in the {PipelineData} constructor used for JS to Wasm wrapper compilation, so that the code tracer can be accessed independently from the isolate. R=mvstanton@chromium.org Bug: chromium:1032677 Change-Id: Id26d1695446251e310fe7dbd9cc7b04f8f1ad175 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1973738Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/master@{#65595}
-
- 23 Dec, 2019 1 commit
-
-
Tobias Tebbi authored
This enables using the GraphAssembler for Wasm. Change-Id: Id1f46db6cc05c9de6e878fb062434211a9c390ff Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1977160 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#65552}
-
- 20 Dec, 2019 2 commits
-
-
Tobias Tebbi authored
This allows the definition of classes with several arrays and ports SmallOrderedHashTable subclasses to Torque as an example, including the existing CSA allocation functions for them. Overview of changes: - Introduce ResidueClass to encapsulate the modulo-arithmetic necessary to do alignment checks. - Add MachineOperatorReducer to the CSA pipeline to address now missing CSA ad-hoc constant folding that got blocked by a temporary phi. - Allow assignments to references to structs. This is needed to initialize the data_table part of SmallOrderedHashMap. - Make the NumberLiteralExpression AST-node store a double instead of a string. This is necessary to detect arrays with constant size used for padding. - Turn offsets into base::Optional<size_t> to ensure we don't use an invalid or statically unknown offset. - Remove CreateFieldReferenceInstruction since it doesn't work for complex offset computations and the logic can be expressed better in ImplementationVisitor. - Validate alignment of structs embedded in classes. Bug: v8:10004 v8:7793 Change-Id: Ifa414b42278e572a0c577bf9da3d37f80771a258 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1958011 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#65538}
-
Tobias Tebbi authored
This is a reland of 53308bf7 Original change's description: > [csa] use JSGraph to create constants in CodeAssembler > > Now that CodeAssembler uses optimizing TurboFan passes, creating > constants without using the caching implemented in JSGraph leads to > problems, since value numbering only works properly if all constants > in the graph were introduced through the cache. > To mitigate this, this CL creates the JSGraph earlier so that > CodeAssembler can already use the same JSGraph used by later TurboFan > optimizations. > For other uses of RawMachineAssembler, everything stays as before. > > This issue is creating bot failures in > https://chromium-review.googlesource.com/c/v8/v8/+/1958011 > > Change-Id: Ife017876b19cb2602694279ef1da75f23e18a031 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1967329 > Reviewed-by: Maya Lekova <mslekova@chromium.org> > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#65477} TBR=mslekova@chromium.org Change-Id: I5c8218ce22470b3efa06d872176c910a4c5325a4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1977858Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#65537}
-
- 17 Dec, 2019 2 commits
-
-
Clemens Backes authored
This reverts commit 53308bf7. Reason for revert: Fails on multiple arm bots, e.g. https://ci.chromium.org/p/v8/builders/ci/V8%20Arm%20-%20debug/12441 Original change's description: > [csa] use JSGraph to create constants in CodeAssembler > > Now that CodeAssembler uses optimizing TurboFan passes, creating > constants without using the caching implemented in JSGraph leads to > problems, since value numbering only works properly if all constants > in the graph were introduced through the cache. > To mitigate this, this CL creates the JSGraph earlier so that > CodeAssembler can already use the same JSGraph used by later TurboFan > optimizations. > For other uses of RawMachineAssembler, everything stays as before. > > This issue is creating bot failures in > https://chromium-review.googlesource.com/c/v8/v8/+/1958011 > > Change-Id: Ife017876b19cb2602694279ef1da75f23e18a031 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1967329 > Reviewed-by: Maya Lekova <mslekova@chromium.org> > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#65477} TBR=tebbi@chromium.org,mslekova@chromium.org Change-Id: I6df6782adfb40632f51681942efab9b591f72cab No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1969901Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#65483}
-
Tobias Tebbi authored
Now that CodeAssembler uses optimizing TurboFan passes, creating constants without using the caching implemented in JSGraph leads to problems, since value numbering only works properly if all constants in the graph were introduced through the cache. To mitigate this, this CL creates the JSGraph earlier so that CodeAssembler can already use the same JSGraph used by later TurboFan optimizations. For other uses of RawMachineAssembler, everything stays as before. This issue is creating bot failures in https://chromium-review.googlesource.com/c/v8/v8/+/1958011 Change-Id: Ife017876b19cb2602694279ef1da75f23e18a031 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1967329Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#65477}
-
- 02 Dec, 2019 1 commit
-
-
Dan Elphick authored
Each Pipeline phase now declares kRuntimeCallCounterId which is used to record the runtime stats for the duration of the phase. As a result some manually instantiated counters are removed. All counters have the same name as the phase name with the v8.TF prefix replaced with Optimize. To enforce this, the existing phase_name declaration in each phase has been replaced with a macro that also declares the counter id and its mode. Bug: v8:10006 Change-Id: I836582298b60c30eb794f4c45a8bb16efa17a38e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1943161Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#65289}
-
- 27 Nov, 2019 2 commits
-
-
Dan Elphick authored
First this plumbs RuntimeCallStats from the OptimizingCompileDispatcher down through to PipelineCompilationJob which stashes the RuntimeCallStats on the PipelineData. Adds new RCS thread-specific counters: OptimizeAssembleCode and OptimizeBackgroundAssembleCode which are used in PipelineImpl::AssembleCode. Bug: v8:10006 Change-Id: Ieef6d32afddf4b0760e204010b09a85dfec92cf3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1926030 Commit-Queue: Dan Elphick <delphick@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#65221}
-
Georg Neis authored
This enum defined three modes of doing inlining: kGeneralInlining, kRestrictedInlining, kStressInlining. kStressInlining was unused. kRestrictedInlining meant that JSInliningHeuristic::Reduce would return NoChange, but only after wasting some time inspecting calls. This is now replaced by simply not installing JSInliningHeuristic as a reducer when inlining is disabled. Note: There is still a --stress-inline flag, which sets (through flag implications) a bunch of parameters that affect inlining. Change-Id: I05bafbe3f1f35610d7035a2c71c5ac17bdb80758 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1936473 Auto-Submit: Georg Neis <neis@chromium.org> Reviewed-by:
Mythri Alle <mythria@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#65196}
-
- 26 Nov, 2019 1 commit
-
-
Georg Neis authored
This flag has had no effect since mid 2017 when its use-site was accidentally removed (in https://codereview.chromium.org/2902533003). Change-Id: I81436b064c2664deff781ad6d75ad47937e3fdc0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1934333 Auto-Submit: Georg Neis <neis@chromium.org> Reviewed-by:
Mythri Alle <mythria@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#65172}
-
- 25 Nov, 2019 2 commits
-
-
Mythri A authored
TurboFan serializes the callee functions when concurrent inlining is turned on. However, if inlining itself is turned off (for ex: TurboProp) we don't need to serialize these functions reducing time spent on main thread. Bug: v8:9684 Change-Id: If4aba1deb64188e411d4f82b27c475ea93a15344 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1932375Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Mythri Alle <mythria@chromium.org> Cr-Commit-Position: refs/heads/master@{#65157}
-
Mythri A authored
Adds RuntimeStats counters for HeapBrokerInitialization, Serialize, SerializeMetadata and Finalization phases. These happen only on main thread. In a followup cl we will also add counters for other phases that could happen on main thread or background thread. Earlier RecompileSynchronous was used to measure the time spent in Concurrent, non Concurrent and Concurrent finalize phases. This cl replaces them with OptimizeConcurrent, OptimizeNonConcurrent and OptimizeConcurrentFinalize counters. This cl also renames RecompileConcurrent to OptimizeBackground to make it clear this measures the background component of optimization. This also updates names of trace events to be in-sync with RuntimeStat counters. Bug: v8:9684 Change-Id: Ifda81ce7ab1c659c2df53bab924c51c46f46939b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1924439Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Dan Elphick <delphick@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Mythri Alle <mythria@chromium.org> Cr-Commit-Position: refs/heads/master@{#65147}
-
- 21 Nov, 2019 1 commit
-
-
Jakob Gruber authored
An initial investigation of using GraphAssembler in JSCallReducer. This CL ports two simple reductions (ReduceMathUnary, ReduceMathBinary) as well as a slightly more involved reduction with branching control flow (ReduceStringPrototypeSubstring). The graph assembler abstracts away the details of maintaining effect and control edges. Resulting code ends up looking very similar to CSA. Newly introduced: - Typing through TNode. - IfBuilder1 for nicer if-then-else sequences that return exactly 1 value. Future CLs will add more convenience builders that follow this pattern. - Many small readability improvements through helper functions. Bug: v8:9972 Change-Id: Iaa186b76c006e07c8d69a74f340a4912577a32a5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1914204 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#65095}
-
- 07 Nov, 2019 1 commit
-
-
Santiago Aboy Solanes authored
Since the turbo_decompression_elimination flag is removed, there are several methods in machine-type.h that get simplified, e.g TypeCompressedTaggedPointer() can be replaced by just "TaggedPointer()". Also Removing the creation of Change to/from Compressed nodes. Removing these Change nodes' logic is left to a follow-up CL. Bug: v8:7703 Change-Id: Iff1f9aa8361189cf781a26317fd342b942fd5aa4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1897537 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#64834}
-
- 06 Nov, 2019 1 commit
-
-
Santiago Aboy Solanes authored
Previously we were only blocking verify_stub_graph and not FLAG_turbo_verify_machine_graph. This led to failures when FLAG_turbo_verify_machine_graph was active (e.g when it was set to "*"). Change-Id: I27b53f0bc1b544498d1d182903301347e5669013 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1893339Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#64806}
-
- 05 Nov, 2019 1 commit
-
-
Benedikt Meurer authored
This removes the feature that we log precise information about functions and scripts in "v8.compile", since it comes at a significant cost and is not going to be used anytime soon. If we ever decide that we need this, we will have to come up with a cheaper way of doing this. Fixed: v8:9874 Tbr: yangguo@chromium.org Bug: v8:8598, v8:9039, v8:9325, v8:9874 Change-Id: I3481570b6fda2a050f05d2ae84cf3e9245f67d52 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1898652Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#64783}
-
- 28 Oct, 2019 1 commit
-
-
Ross McIlroy authored
Add support to verify the update schedule after ScheduledEffectControlLinearization and ScheduledMachineLowering phases. To do so, we need to recompute the immediate dominator tree of the scheduled blocks. BUG=v8:9684 Change-Id: I849fb7e3e699ca56c5115d90a53006d517cf3fe5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1881160 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#64596}
-
- 24 Oct, 2019 1 commit
-
-
Ross McIlroy authored
This rearranges the TurboProp pipeline to avoid the need for a second schedule of the graph. To do this, it moves the final schedule creation before effect-control-linearization (which used a temporary schedule previously, and with TurboFan). It then enables the block updater in the graph assembler for effect control linearization and does select and memory lowering in a new ScheduledMachineLowering phase to maintain this existing schedule during these lowering passes. BUG=v8:9684 Change-Id: I6a7790b010f8b152dd01d85aa95ee5d4f99087a5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1847351 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#64537}
-
- 22 Oct, 2019 1 commit
-
-
Santiago Aboy Solanes authored
We should be encountering this due to TaggedEquality. DecompressionElimination used to take care of this, but it will not be present in the new system. Bug: v8:7703 Change-Id: I9fe00ee116ed1514cb4c465a8d19df6e785ef913 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1868623Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#64471}
-
- 21 Oct, 2019 1 commit
-
-
Santiago Aboy Solanes authored
This is a reland of ad9bd3a0 Reland reason: Probably not the cause of the TSAN failures Original change's description: > [ptr-compr][CSA] Enable the DecompressionOptimizer phase in CSA > > Also update the MachineGraphVerifier to take into account the > possibility of the Store receiving a Compressed representation as well. > > Bug: v8:7703 > Change-Id: I6d6e28b980151af6296000cfe6f67a3a037b029c > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1859627 > Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/master@{#64410} TBR=tebbi@chromium.org, jgruber@chromium.org Bug: v8:7703 Change-Id: Ic8181d0288a8504e611437601f6b34e472fcac47 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1871919Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#64420}
-