- 08 May, 2019 1 commit
-
-
Jakob Kummerow authored
For faster calls from Wasm to C-API functions, passing parameter values directly instead of through JavaScript wrapper objects. Change-Id: I31e7d1622dedaf3154483306ab159427ac167663 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1591601Reviewed-by: Andreas Haas <ahaas@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#61338}
-
- 07 May, 2019 1 commit
-
-
Maya Lekova authored
The call to EnsureSourcePositionsAvailable for a given SharedFunctionInfo is now done in the serializer for each SFI that is marked as serialized for compilation. This will enable brokerization of the JSInliner class. Change-Id: I7821a50fcac8a3e19386e98758f2b0dea3023bb6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1582400 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#61260}
-
- 06 May, 2019 1 commit
-
-
Jaroslav Sevcik authored
Bug: v8:7790 Change-Id: I513c3ba048eafb7ca5bfa2fb63e35143f49643ec Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1596736 Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#61246}
-
- 02 May, 2019 1 commit
-
-
Georg Neis authored
This fixes a memory leak. Bug: v8:9191, v8:7790 Change-Id: I0df49cd3a6791600638a67b4b7ad9687562e500b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1588426 Commit-Queue: Georg Neis <neis@chromium.org> Auto-Submit: Georg Neis <neis@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#61166}
-
- 30 Apr, 2019 1 commit
-
-
Mike Stanton authored
Failure addressed by not exposing the new test to the jitless environment. (jgruber@ on TBR). New enum RelocInfo::COMPRESSED_EMBEDDED_OBJECT created to support compressed pointers in generated code. Enum name EMBEDDED_OBJECT changed to FULL_EMBEDDED_OBJECT. RelocInfo::[set_]target_object() abstract away the difference between FULL_EMBEDDED_OBJECT and COMPRESSED_EMBEDDED_OBJECT. Compressed embedded objects can only be created at this time on x64 with pointer compression turned on. Arm64 constant pools don't support compressed objects at this time. NOPRESUBMIT=true Bug: v8:7703 TBR: jgruber@chromium.org Change-Id: Ifff53b041bab09b4b8c3e16085e5df4aa2b99f4f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1588461Reviewed-by: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#61104}
-
- 29 Apr, 2019 5 commits
-
-
Georg Neis authored
Also const-ify and refactor a few things in BytecodeAnalysis. Change-Id: Ibd261bb67d8c035b1f818e9114d09db08737000d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1587384 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#61088}
-
Ross McIlroy authored
This reverts commit b5da9fcb. Reason for revert: Breaks pointer compression bot: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20pointer%20compression/3098 Original change's description: > [ptr-compr] New RelocInfo for compressed pointers. > > New enum RelocInfo::COMPRESSED_EMBEDDED_OBJECT created to support > compressed pointers in generated code. Enum name EMBEDDED_OBJECT > changed to FULL_EMBEDDED_OBJECT. > > RelocInfo::[set_]target_object() abstract away the difference between > FULL_EMBEDDED_OBJECT and COMPRESSED_EMBEDDED_OBJECT. > > Compressed embedded objects can only be created at this time on > x64 with pointer compression turned on. Arm64 constant pools don't > support compressed objects at this time. > > Bug: v8:7703 > Change-Id: I03bfd84effa33c65cf9bcefa5df680ab7eace9dd > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1547661 > Commit-Queue: Michael Stanton <mvstanton@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#61076} TBR=ulan@chromium.org,mvstanton@chromium.org,mstarzinger@chromium.org,jgruber@chromium.org,ishell@chromium.org Change-Id: I262b2b98315fa987c5a66b1050dc726563ccdb2d No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7703 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1588135Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#61087}
-
Mike Stanton authored
New enum RelocInfo::COMPRESSED_EMBEDDED_OBJECT created to support compressed pointers in generated code. Enum name EMBEDDED_OBJECT changed to FULL_EMBEDDED_OBJECT. RelocInfo::[set_]target_object() abstract away the difference between FULL_EMBEDDED_OBJECT and COMPRESSED_EMBEDDED_OBJECT. Compressed embedded objects can only be created at this time on x64 with pointer compression turned on. Arm64 constant pools don't support compressed objects at this time. Bug: v8:7703 Change-Id: I03bfd84effa33c65cf9bcefa5df680ab7eace9dd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1547661 Commit-Queue: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#61076}
-
Georg Neis authored
- Rename (and negate) "stack_check" to the more descriptive "skip_first_stack_check". - Pass call frequency by value rather than mutable(!) reference. - Embed some things directly into BytecodeGraphBuilder, instead of stack-allocating them and then storing a pointer. - Don't pass things to OsrIteratorState that it can already access via the graph builder parameter. Change-Id: Id852df1ce521a6eefb6047cf76a0882a4c6e95b3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1587375 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#61072}
-
Georg Neis authored
All we really need to expose is a single function that builds the graph. This change drastically simplifies the header file. Change-Id: If185687b8220bdd253f967be9ab2ea3b088e5423 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1585856Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#61068}
-
- 26 Apr, 2019 1 commit
-
-
Ross McIlroy authored
This reverts commit da7322c0. Reason for revert: Breaking the pointer compression bots, e.g.: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20pointer%20compression/3047 Original change's description: > [csa] verify skipped write-barriers in MemoryOptimizer > > With very few exceptions, this verifies all skipped write-barriers in > CSA and Torque, showing that the MemoryOptimizer together with some > type information on the stored value are enough to avoid unsafe skipped > write-barriers. > > Changes to CSA: > SKIP_WRITE_BARRIER and Store*NoWriteBarrier are verified by the > MemoryOptimizer by default. > Type information about the stored values (TNode<Smi>) is exploited to > safely skip write barriers for stored Smi values. > In some cases, the code is re-structured to make it easier to consume > for the MemoryOptimizer (manual branch and load elimination). > > Changes to the MemoryOptimizer: > Improve the MemoryOptimizer to remove write barriers: > - When the store happens to a CSA-generated InnerAllocate, by ignoring > Bitcasts and additions. > - When the stored value is the HeapConstant of an immortal immovable root. > - When the stored value is a SmiConstant (recognized by BitcastToTaggedSigned). > - Fast C-calls are treated as non-allocating. > - Runtime calls can be white-listed as non-allocating. > > Remaining missing cases: > - C++-style iterator loops with inner pointers. > - Inner allocates that are reloaded from a field where they were just stored > (for example an elements backing store). Load elimination would fix that. > - Safe stored value types that cannot be expressed in CSA (e.g., Smi|Hole). > We could handle that in Torque. > - Double-aligned allocations, which are not lowered in the MemoryOptimizer > but in CSA. > > Drive-by change: Avoid Smi suffix for StoreFixedArrayElement since this > can be handled by overload resolution (in Torque and C++). > > R=jarin@chromium.org > TBR=mvstanton@chromium.org > > Change-Id: I0af9b710673f350e0fe81c2e59f37da93c024b7c > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1571414 > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#61016} TBR=mvstanton@chromium.org,jarin@chromium.org,tebbi@chromium.org Change-Id: I36877cd6d08761726ef8dce8a3e3f2ce3eebe6cf No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1585732Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#61038}
-
- 25 Apr, 2019 1 commit
-
-
Tobias Tebbi authored
With very few exceptions, this verifies all skipped write-barriers in CSA and Torque, showing that the MemoryOptimizer together with some type information on the stored value are enough to avoid unsafe skipped write-barriers. Changes to CSA: SKIP_WRITE_BARRIER and Store*NoWriteBarrier are verified by the MemoryOptimizer by default. Type information about the stored values (TNode<Smi>) is exploited to safely skip write barriers for stored Smi values. In some cases, the code is re-structured to make it easier to consume for the MemoryOptimizer (manual branch and load elimination). Changes to the MemoryOptimizer: Improve the MemoryOptimizer to remove write barriers: - When the store happens to a CSA-generated InnerAllocate, by ignoring Bitcasts and additions. - When the stored value is the HeapConstant of an immortal immovable root. - When the stored value is a SmiConstant (recognized by BitcastToTaggedSigned). - Fast C-calls are treated as non-allocating. - Runtime calls can be white-listed as non-allocating. Remaining missing cases: - C++-style iterator loops with inner pointers. - Inner allocates that are reloaded from a field where they were just stored (for example an elements backing store). Load elimination would fix that. - Safe stored value types that cannot be expressed in CSA (e.g., Smi|Hole). We could handle that in Torque. - Double-aligned allocations, which are not lowered in the MemoryOptimizer but in CSA. Drive-by change: Avoid Smi suffix for StoreFixedArrayElement since this can be handled by overload resolution (in Torque and C++). R=jarin@chromium.org TBR=mvstanton@chromium.org Change-Id: I0af9b710673f350e0fe81c2e59f37da93c024b7c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1571414 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#61016}
-
- 12 Apr, 2019 1 commit
-
-
Jaroslav Sevcik authored
Bug: v8:9119, v8:8598 Change-Id: Ia4765c19e60b58d938fe778776ee654b60631e39 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1564203 Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#60808}
-
- 03 Apr, 2019 2 commits
-
-
Frederik Gossen authored
Merged WasmCode::Tier into Execution Tier. Bug: v8:9003 Change-Id: I0ad439b8bc060f73e71d60ab9c93dd6bc18d05fe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1547852 Commit-Queue: Frederik Gossen <frgossen@google.com> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#60610}
-
Jaroslav Sevcik authored
On arm processors, we need to have some kind of subexpression elimination running after memory optimizer, so that we reuse index calculation for loads and stores. This CL introduces a small cleanup phase after memory optimizer. Bug: chromium:947225 Change-Id: Ifda7b348d968d58f31947a4ba139863059f4112d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1547664Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#60602}
-
- 01 Apr, 2019 1 commit
-
-
Georg Neis authored
It was missing a control output. Bug: chromium:946889 Change-Id: I85f203fc6e27a60f0b86e0e2999dd798a5416dfc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1547655 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#60549}
-
- 26 Mar, 2019 2 commits
-
-
Jaroslav Sevcik authored
Run memory optimizer after all the other graph phases. This is a step towards enabling allocation folding for arrays with >16 elements because constant additions will be properly constant-folded. Bug: v8:8984 Change-Id: Ia3c78a3bd32264f4f83d3e20bd78abf240d9292b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1539496Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#60465}
-
Benedikt Meurer authored
The details of the TurboFan pipeline stages are probably not relevant to most users of the "disabled-by-default-v8.compile" category, so we now log them to "disabled-by-default-v8.turbofan" category instead. Bug: v8:8598, v8:9039 Change-Id: Ib451f163f74eb11ffbeb0dc6f2ee590208bd296b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538135 Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#60455}
-
- 25 Mar, 2019 4 commits
-
-
Benedikt Meurer authored
This adds OBJECT/SNAPSHOT trace events for Script and SharedFunctionInfo objects, logging their creation with appropriate information to make sense of them. Based on that we introduces five flow events to model the optimized compilation via tracing in the "disabled-by-default-v8.compile" category: - "v8.optimizingCompile.start" logs the creation of the PipelineCompilationJob (for TurboFan JavaScript optimization) with the "function" argument referring to the trace event object created for the SharedFunctionInfo. - "v8.optimzingCompile.prepare" logs the preparation of the PipelineCompilationJob on the main thread, also carrying the "function" argument. This connects the flow event to the actual tracing duration event associated with the preparation phases. - "v8.optimizingCompile.execute" logs the (usually concurrent) optimization of the TurboFan graph (again with "function"). - "v8.optimizingCompile.finalize" logs the main thread phase which finalizes the optimized code and eventually installs it (in case of success). - "v8.optimizingCompile.end" signals the end of the PipelineCompilationJob, which carries the "compilationInfo", that contains the interesting bits of the OptimizedCompilationInfo, specifically whether the compile was successfull and which functions were inlined for example. This also adds two instant events "V8.AbortOptimization" and "V8.RetryOptimization" in "disabled-by-default-v8.compile" category that are emitted when TurboFan cannot optimize a certain function. In case of "V8.RetryOptimization", TurboFan might be able to optimize it later, whereas "V8.AbortOptimization" permanently disables the optimization of a given function. The JSON representation of this is ```js { "pid": 256639, "tid": 256639, "ts": 6935411377801, "tts": 159116, "ph": "I", "cat": "disabled-by-default-v8.compile", "name": "V8.AbortOptimization", "dur": 0, "tdur": 0, "args": { "reason": "Function is too big to be optimized", "function": { "id_ref": "0x600000001", "scope": "v8::internal::SharedFunctionInfo" } } }, ``` where the "function" refers to a previously emitted SNAPSHOT for the function in question. In the trace viewer it will show up as instant event under "v8.optimizingCompile.prepare" in case of the relevant example where optimization is disabled due to reaching the bytecode limit (as in the JSON above), i.e. it'll look something like this https://i.paste.pics/aafc2de9df10ea8f5acc1a761d80f07b.png for the example highlighted in the recent blog post https://ponyfoo.com/articles/javascript-performance-pitfalls-v8 that describes the optimization limit. The "v8.optimizingCompile.end" duration event will also carry this information as part of the "compilationInfo" object, but specifically for CI tools, etc. it might be a whole lot easier to just look for the "V8.AbortOptimization" instant event. Bug: v8:8598, v8:9039 Tbr: ulan@chromium.org Doc: bit.ly/v8-tracing-signals Change-Id: Ic87ac336004690c65b6b15ad73bc6fbd4b5f12c4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1511483 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Peter Marshall <petermarshall@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#60448}
-
Benedikt Meurer authored
Before this change we had essentially two optimization limits, one hard limit in the TurboFan pipeline (128KiB), and a soft limit in the runtime profiler (60KiB). The hard limit was only relevant to --always-opt and other internal test infrastructure, and the soft limit was always enforced on regular JavaScript, but didn't properly disable further optimization for the function (so for example --trace-opt would continuesly report attempts to optimize the function). Now with this change we only have the hard limit, set to 60KiB, in the TurboFan pipeline and use that consistently. Bug: v8:8598 Change-Id: I9e2ae7cb67de4a2256d3a7b9c3aee3dab60c2ec1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538127 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#60436}
-
Benedikt Meurer authored
This extends the existing PipelineStatistics in the TurboFan pipeline (also used for Wasm) to emit trace events for the various phases of the (optimized) compilation. This works for "disabled-by-default-v8.compile" and "disabled-by-default-v8.wasm" categories. We also rename the existing phase names to match the naming convention for the V8 trace events (starting with either "V8.TF" or "V8.Wasm") to make it easy to spot and categorize them in the trace viewer. This can be seen in action here https://i.paste.pics/a33c0e3942ff707af44f67ed4bac46b0.png taken from a run of Octane/TypeScript. Bug: v8:8598 Change-Id: Id40092ee8afc8d998532f8641780052769cad320 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538121Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Peter Marshall <petermarshall@chromium.org> Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#60433}
-
Mathias Bynens authored
Bug: v8:8834 Change-Id: Ie879ae77f0601682dcd17a61f3a18f49eb78fbee Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1535833 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#60423}
-
- 22 Mar, 2019 1 commit
-
-
Sigurd Schneider authored
This is a reland of 1ca08865 Original change's description: > Reland "[regalloc] Introduce deferred fixed ranges" > > This is a reland of b1769313 > > Original change's description: > > [regalloc] Introduce deferred fixed ranges > > > > Fixed ranges are used to express register constraints in the > > allocator. This change splits these fixed ranges into one for > > normal code and deferred code. The former are handeled as before > > whereas the latter are only made visible while allocating > > registers for deferred code. > > > > This prevents forward looking decisions in normal code to be > > impacted by register constraints from deferred code. > > > > Change-Id: I67d562bb41166194e62765d5ab051bc961054fc7 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1477742 > > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#60322} > > Change-Id: I1a31150256eb5608db985b144aab7ea457169d0d > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1530810 > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#60364} Change-Id: If4a956716e7e4de132f706be2c395cdfdc04ec94 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1532328Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#60408}
-
- 21 Mar, 2019 1 commit
-
-
Sigurd Schneider authored
This reverts commit 1ca08865. Reason for revert: Regressions across the board Original change's description: > Reland "[regalloc] Introduce deferred fixed ranges" > > This is a reland of b1769313 > > Original change's description: > > [regalloc] Introduce deferred fixed ranges > > > > Fixed ranges are used to express register constraints in the > > allocator. This change splits these fixed ranges into one for > > normal code and deferred code. The former are handeled as before > > whereas the latter are only made visible while allocating > > registers for deferred code. > > > > This prevents forward looking decisions in normal code to be > > impacted by register constraints from deferred code. > > > > Change-Id: I67d562bb41166194e62765d5ab051bc961054fc7 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1477742 > > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#60322} > > Change-Id: I1a31150256eb5608db985b144aab7ea457169d0d > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1530810 > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#60364} TBR=jarin@chromium.org,sigurds@chromium.org,herhut@chromium.org Change-Id: Id8ad6c39774e38dd67decea997e08a4c58c452ec No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1532327Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#60381}
-
- 20 Mar, 2019 1 commit
-
-
Sigurd Schneider authored
This is a reland of b1769313 Original change's description: > [regalloc] Introduce deferred fixed ranges > > Fixed ranges are used to express register constraints in the > allocator. This change splits these fixed ranges into one for > normal code and deferred code. The former are handeled as before > whereas the latter are only made visible while allocating > registers for deferred code. > > This prevents forward looking decisions in normal code to be > impacted by register constraints from deferred code. > > Change-Id: I67d562bb41166194e62765d5ab051bc961054fc7 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1477742 > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > Cr-Commit-Position: refs/heads/master@{#60322} Change-Id: I1a31150256eb5608db985b144aab7ea457169d0d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1530810 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#60364}
-
- 19 Mar, 2019 2 commits
-
-
Clemens Hammacher authored
This makes it easier to publish them in batches. Function index and requested compilation tier are duplicated from the WasmCompilationUnit. R=titzer@chromium.org Bug: v8:8916 Change-Id: I87852670be029b1d729f98f01729362ca379fb50 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1529009Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#60325}
-
Mike Stanton authored
If pointer compression is on, it makes sense to embed the map as a 32-bit constant, for direct comparison. No need to uncompress the receiver map. Bug: v8:8982 Change-Id: I285ca4d5b49b26536873776d298e18bcbf84b23e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1518182Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#60313}
-
- 12 Mar, 2019 1 commit
-
-
Frederik Gossen authored
Added a new compilation unit for Wasm interpreter in order to make it a first-class tier in the future. Adapted Wasm interpreter usage to work with the new interface. The new compilation unit is currently not used. Change-Id: Ib9e1d0dc6ca1b03467cc43059f03ce153bb96400 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1514734 Commit-Queue: Frederik Gossen <frgossen@google.com> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#60183}
-
- 27 Feb, 2019 1 commit
-
-
Georg Neis authored
This merges the check if a protector is intact with the recording of the dependency on it, at least in many cases. Also introduce convenience functions to avoid the heap broker clutter. Change-Id: I35508c4685a2f0df77819bf81075dd14a30e7e4f Reviewed-on: https://chromium-review.googlesource.com/c/1487491 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#59924}
-
- 25 Feb, 2019 1 commit
-
-
Jakob Gruber authored
to IsGeneratingEmbeddedBuiltins() to clarify its meaning. Bug: v8:6666 Change-Id: I8b282f29775a103a03f502c3e9629b40b4a690bd Reviewed-on: https://chromium-review.googlesource.com/c/1480380Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#59815}
-
- 21 Feb, 2019 1 commit
-
-
Stephan Herhut authored
This change adds two spilling modes: SpillAtDefinition and SpillDeferred. The former is the known spilling mode where we spill at definition. The latter spills only in deferred code regions. This is implemented based on control flow aware allocation and its invariants. The effect is mostly the same as splintering with the exception of forward looking allocation decisions still being impacted by register constraints in deferred code. Change-Id: Ia708e5765dd095196a8127deb2d8bec950d37e04 Reviewed-on: https://chromium-review.googlesource.com/c/1437118Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Stephan Herhut <herhut@chromium.org> Cr-Commit-Position: refs/heads/master@{#59759}
-
- 19 Feb, 2019 1 commit
-
-
Dan Elphick authored
Fixes cctest/test-cpu-profiler/DetailedSourcePositionAPI by ensuring that source positions are available when starting an optimize job when NeedsDetailedOptimizedCodeLineInfo is set. Also collects source positions when inlining functions and adds a new test for this. Bug: v8:8510 Change-Id: I9d84e37f3c8b638db080f6ec4b6633cdd7e3ee2f Reviewed-on: https://chromium-review.googlesource.com/c/1472634Reviewed-by: Peter Marshall <petermarshall@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#59685}
-
- 04 Feb, 2019 1 commit
-
-
Jakob Gruber authored
These offsets are now transported via CodeDesc. Bug: v8:8758 Change-Id: If7485c62878bc81a55c9b4ca8ce3578dab2376ce Reviewed-on: https://chromium-review.googlesource.com/c/1447717 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#59315}
-
- 01 Feb, 2019 1 commit
-
-
Michael Starzinger authored
This fixes stack height management when a call to an external function raises a type error trap. It also adds a test case that such exceptions can be caught locally. R=clemensh@chromium.org TEST=cctest/test-run-wasm-exceptions BUG=v8:8729 Change-Id: I54b19ba86eb937695584229753d7f6cfa7e1a15d Reviewed-on: https://chromium-review.googlesource.com/c/1447773Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#59273}
-
- 30 Jan, 2019 2 commits
-
-
Jakob Gruber authored
This is an initial step towards clarifying the layout of the instruction area. As follow-ups, we should remove additional safepoint and handler table offset parameters, and perhaps alter Code::safepoint_table_offset (handler_table) semantics to always contain a real offset and avoid the magic 0 signifying nonexistent tables. Bug: v8:8758 Change-Id: I9f54629ff3ddad69904b0e1ce2a58e047397aa15 Reviewed-on: https://chromium-review.googlesource.com/c/1434036 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#59202}
-
Stephan Herhut authored
This change lands a change to the register allocator. Other than classical linear scan, we now take control flow events into account when deciding spill descisions. The basic idea is to restore the state of a predecessor on entry of a successor. In the case of multiple predecessors, we use heuristics to compute the new state based on the predecessors. The main addition to the machinery is to support unspilling live ranges and to undo live range splitting in certain cases. Currently, disabled behind a flag. Change-Id: I37a70c948be826a90d8b806a52856ad81f475573 Reviewed-on: https://chromium-review.googlesource.com/c/1426129 Commit-Queue: Stephan Herhut <herhut@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#59195}
-
- 29 Jan, 2019 3 commits
-
-
Maya Lekova authored
This is a reland of acb60162 Original change's description: > [test] Add testing facility for SerializerForBackgroundCompilation > > R=neis@chromium.org > > Bug: v8:7790 > Change-Id: Id759112d0c780ff857eb094102245b38fcbb1709 > Reviewed-on: https://chromium-review.googlesource.com/c/1434375 > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Maya Lekova <mslekova@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59153} Bug: v8:7790 Change-Id: I1593a768c77c563707b498d47b34a2b1e7fa5dea Reviewed-on: https://chromium-review.googlesource.com/c/1442234 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#59171}
-
Maya Lekova authored
This reverts commit acb60162. Reason for revert: Breaks arm build - https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20arm%20-%20sim%20-%20lite/2035 Original change's description: > [test] Add testing facility for SerializerForBackgroundCompilation > > R=neis@chromium.org > > Bug: v8:7790 > Change-Id: Id759112d0c780ff857eb094102245b38fcbb1709 > Reviewed-on: https://chromium-review.googlesource.com/c/1434375 > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Maya Lekova <mslekova@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59153} TBR=neis@chromium.org,mslekova@chromium.org Change-Id: I5e6a3b94a9b177242aebb582c5184bb35e999314 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7790 Reviewed-on: https://chromium-review.googlesource.com/c/1442232Reviewed-by: Maya Lekova <mslekova@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#59154}
-
Maya Lekova authored
R=neis@chromium.org Bug: v8:7790 Change-Id: Id759112d0c780ff857eb094102245b38fcbb1709 Reviewed-on: https://chromium-review.googlesource.com/c/1434375Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#59153}
-
- 25 Jan, 2019 1 commit
-
-
Andreas Haas authored
Anyref parameters can exist across GC runs. Therefore the GC has to know where anyref parameters are on the stack so that it can mark them in its marking phase, and update them in the compaction phase. Already in a previous CL we grouped all anyref parameters so that they can be found more easily in a stack frame, see https://crrev.com/c/1371827. In this CL we implement the stack scanning itself. Note that anyref parameters are not scanned while iterating over the caller's frame (to which they actually belong), but while iterating over the callee's frame. The reason is that with tail-calls, only the callee knows how many tagged stack parameters (aka anyref parameters) there are. R=mstarzinger@chromium.org also-by=mstarzinger@chromium.org Bug: v8:7581 Change-Id: I7a41ce11d06c0d420146fdb0bb8d5606f28824d7 Reviewed-on: https://chromium-review.googlesource.com/c/1424955 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#59099}
-