- 13 May, 2020 1 commit
-
-
Clemens Backes authored
Frames that have not been compiled by Liftoff for debugging are uninspectable. Instead of reporting an empty local scope and stack scope in this case, just don't report these two scopes at all. This also fixes a case missed in https://crrev.com/c/2196349, where we would still try to generate the stack scope for non-debugging code. Drive-by: Use {WasmFrame} instead of {StandardFrame} in the {DebugWasmScopeIterator}, and use the {FrameInspectionScope} consistently. R=thibaudm@chromium.org, bmeurer@chromium.org CC=kimanh@chromium.org Bug: v8:10359, chromium:1071757, chromium:1079328, chromium:1072839 Change-Id: I3a3731a0bd9f582f94458500252922b4146e394f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2198982Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#67777}
-
- 11 May, 2020 1 commit
-
-
Clemens Backes authored
Also, rename the WASM_COMPILED frame type to just WASM. R=jkummerow@chromium.org Bug: v8:10389 Change-Id: I71f16f41a69f8b0295ba34bd7d7fad71729546f2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187613 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#67698}
-
- 08 May, 2020 1 commit
-
-
Clemens Backes authored
All wasm code is compiled now. Hence merge the {WasmCompiledFrameSummary} into {WasmFrameSummary} and remove the dispatch. Also, rename {IsWasmCompiled} to {IsWasm} and {AsWasmCompiled} to {AsWasm}. R=jkummerow@chromium.org Bug: v8:10389 Change-Id: I33e413c7d0fa622249563091925b29631472b40c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187170Reviewed-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@{#67689}
-
- 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}
-
- 24 Apr, 2020 2 commits
-
-
Clemens Backes authored
This is the last cctest that uses the interpreter for debugging. This CL moves it over to Liftoff. R=jkummerow@chromium.org Bug: v8:10389 Change-Id: I1791f0c762c9aab38eee5f5fb96772f4d01c212f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2164790Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#67367}
-
Clemens Backes authored
The cctests for breakpoints were still executing in the interpreter. This CL moves them over to Liftoff. Note that the additional methods on {DebugInfo} will be reused for other purposes, see https://crrev.com/c/1941139. R=jkummerow@chromium.org Bug: v8:10389 Change-Id: Ia88150612377d6e7db0514af1efe091124b3ddce Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2162852Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#67360}
-
- 03 Apr, 2020 1 commit
-
-
Clemens Backes authored
Instead of two copies of the lookup code in frames.cc and wasm-debug.cc, put one lookup method on the WasmCode. This is where it belongs really, since the WasmCode is the main input to the function (besides the offset). Also refactor how source positions are computed in WasmCompiledFrame. Avoid going through the summary, which is unneccessarily complex. This also adds another {byte_offset} accessor which can be used for debugging. Bug: v8:10235 Change-Id: I5c545ee302754b86009f09bedc5ff6e39ba664f6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2135726Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#66991}
-
- 16 Mar, 2020 1 commit
-
-
Clemens Backes authored
This implements inspection of live registers on breakpoints in Liftoff. To that end, the frame pointer of the WasmDebugBreak frame is remembered when iterating the stack. Based on a platform-specific implementation of {WasmDebugBreakFrameConstants}, the offset of the respective register within that frame is computed, and the value is read from the frame. As a drive-by, the wasm debug side table is storing register codes as liftoff codes, which can also store register pairs (needed for i64 on 32-bit platforms, and for SIMD, which is not supported yet). R=jkummerow@chromium.org CC=thibaudm@chromium.org Bug: v8:10222 Change-Id: I01b669baf56430e100cd46cc46f210121ea679da Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2102574Reviewed-by: Simon Zünd <szuend@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#66719}
-
- 02 Mar, 2020 2 commits
-
-
Clemens Backes authored
The frame created by the WasmDebugBreak builtin now has a separate frame type, which will (later) allow to inspect the spilled registers. Once Liftoff supports reference types, this frame will also need special GC support for spilled heap references. R=jkummerow@chromium.org Bug: v8:10222 Change-Id: I110e51d1e6d09b0f44dcdd1cdcaafa2eaa64fddd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2083013Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#66531}
-
Victor Gomes authored
Bug: v8:10201 Change-Id: I7c91e912feab227378810c91afe3de61e0e2fda8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2081817 Commit-Queue: Victor Gomes <victorgomes@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#66523}
-
- 13 Feb, 2020 1 commit
-
-
Georgia Kouveli authored
This is a reland of 137bfe47 Original change's description: > [arm64] Protect return addresses stored on stack > > This change uses the Arm v8.3 pointer authentication instructions in > order to protect return addresses stored on the stack. The generated > code signs the return address before storing on the stack and > authenticates it after loading it. This also changes the stack frame > iterator in order to authenticate stored return addresses and re-sign > them when needed, as well as the deoptimizer in order to sign saved > return addresses when creating new frames. This offers a level of > protection against ROP attacks. > > This functionality is enabled with the v8_control_flow_integrity flag > that this CL introduces. > > The code size effect of this change is small for Octane (up to 2% in > some cases but mostly much lower) and negligible for larger benchmarks, > however code size measurements are rather noisy. The performance impact > on current cores (where the instructions are NOPs) is single digit, > around 1-2% for ARES-6 and Octane, and tends to be smaller for big > cores than for little cores. > > Bug: v8:10026 > Change-Id: I0081f3938c56e2f24d8227e4640032749f4f8368 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1373782 > Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#66239} Bug: v8:10026 Change-Id: Id1adfa2e6c713f6977d69aa467986e48fe67b3c2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2051958Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#66254}
-
- 12 Feb, 2020 2 commits
-
-
Nico Hartmann authored
This reverts commit 137bfe47. Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Arm%20-%20debug/13072 Original change's description: > [arm64] Protect return addresses stored on stack > > This change uses the Arm v8.3 pointer authentication instructions in > order to protect return addresses stored on the stack. The generated > code signs the return address before storing on the stack and > authenticates it after loading it. This also changes the stack frame > iterator in order to authenticate stored return addresses and re-sign > them when needed, as well as the deoptimizer in order to sign saved > return addresses when creating new frames. This offers a level of > protection against ROP attacks. > > This functionality is enabled with the v8_control_flow_integrity flag > that this CL introduces. > > The code size effect of this change is small for Octane (up to 2% in > some cases but mostly much lower) and negligible for larger benchmarks, > however code size measurements are rather noisy. The performance impact > on current cores (where the instructions are NOPs) is single digit, > around 1-2% for ARES-6 and Octane, and tends to be smaller for big > cores than for little cores. > > Bug: v8:10026 > Change-Id: I0081f3938c56e2f24d8227e4640032749f4f8368 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1373782 > Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#66239} TBR=rmcilroy@chromium.org,mstarzinger@chromium.org,neis@chromium.org,georgia.kouveli@arm.com Change-Id: I57d5928949b0d403774550b9bf7dc0b08ce4e703 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:10026 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2051952Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#66242}
-
Georgia Kouveli authored
This change uses the Arm v8.3 pointer authentication instructions in order to protect return addresses stored on the stack. The generated code signs the return address before storing on the stack and authenticates it after loading it. This also changes the stack frame iterator in order to authenticate stored return addresses and re-sign them when needed, as well as the deoptimizer in order to sign saved return addresses when creating new frames. This offers a level of protection against ROP attacks. This functionality is enabled with the v8_control_flow_integrity flag that this CL introduces. The code size effect of this change is small for Octane (up to 2% in some cases but mostly much lower) and negligible for larger benchmarks, however code size measurements are rather noisy. The performance impact on current cores (where the instructions are NOPs) is single digit, around 1-2% for ARES-6 and Octane, and tends to be smaller for big cores than for little cores. Bug: v8:10026 Change-Id: I0081f3938c56e2f24d8227e4640032749f4f8368 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1373782 Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#66239}
-
- 27 Dec, 2019 1 commit
-
-
Clemens Backes authored
This adds a {wasm::DebugInfo} struct which will hold the {wasm::DebugSideTable}s for individual Liftoff functions, and will use them to construct local scope information. R=jkummerow@chromium.org, bmeurer@chromium.org Bug: v8:10019 Change-Id: I7869cec5000e9b126c891a242fcccfc53c67662e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1975758 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#65563}
-
- 03 Dec, 2019 1 commit
-
-
Clemens Backes authored
Currently, we show wasm frames, js frames, and js-to-wasm frames (the latter two are identified as "OPTIMIZED"). This CL makes us also show wasm-to-js frames in CPU profiling. R=petermarshall@chromium.org Bug: chromium:1029470 Change-Id: I2d09f73e7d7e62867554f2a95dc8ad4500a2cde1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1948706Reviewed-by: Peter Marshall <petermarshall@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#65313}
-
- 22 Nov, 2019 1 commit
-
-
Z Nguyen-Huu authored
This scenario is where user is at the end of Wasm execution and do some stepping. Hence, user should be back at Javascript frame. We can detect that stepping as it exits Wasm Interpreter and prepare debugging as a step-out-ish in Javascript. Bug: chromium:823923, chromium:1019606, chromium:1025151 Change-Id: I29022af0d5e5dcf78d87e83193f6e16fec954e87 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1912985 Commit-Queue: Z Nguyen-Huu <duongn@microsoft.com> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#65122}
-
- 25 Oct, 2019 1 commit
-
-
Clemens Backes authored
This is a reland of bc8ad334. The CL was innocent, thus unmodified reland with TBR. Original change's description: > [wasm][debug] Report global scope also for compiled frames > > The global scope (containing global values and the memory) can be > produced from the instance alone, hence we can also report it for > compiled frames. > > R=mstarzinger@chromium.org, jgruber@chromium.org > > Bug: v8:9676 > Change-Id: I20fbb74a98b00b128b6ed305b92fb56ad7dc7558 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1876816 > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Commit-Queue: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/master@{#64547} TBR=mstarzinger@chromium.org Bug: v8:9676 Change-Id: I2486a007156b7197d523f62ca3c30e29e7650b63 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1879929 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#64558}
-
- 24 Oct, 2019 2 commits
-
-
Sigurd Schneider authored
This reverts commit bc8ad334. Reason for revert: breaks ASAN: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20ASAN/33137 Original change's description: > [wasm][debug] Report global scope also for compiled frames > > The global scope (containing global values and the memory) can be > produced from the instance alone, hence we can also report it for > compiled frames. > > R=mstarzinger@chromium.org, jgruber@chromium.org > > Bug: v8:9676 > Change-Id: I20fbb74a98b00b128b6ed305b92fb56ad7dc7558 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1876816 > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Commit-Queue: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/master@{#64547} TBR=mstarzinger@chromium.org,jgruber@chromium.org,clemensb@chromium.org Change-Id: I7a37723286315235f0c0a63728de58633a3b259e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:9676 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1878713Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#64549}
-
Clemens Backes authored
The global scope (containing global values and the memory) can be produced from the instance alone, hence we can also report it for compiled frames. R=mstarzinger@chromium.org, jgruber@chromium.org Bug: v8:9676 Change-Id: I20fbb74a98b00b128b6ed305b92fb56ad7dc7558 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1876816Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#64547}
-
- 08 Oct, 2019 1 commit
-
-
Michael Starzinger authored
This removes the output parameter returning the number of stack slot for the frame from {LookupExceptionHandlerInTable}. This is a remnant from when V8 had dynamically sized frames (aka. full-codegen), which is no longer the case. The frame size can easily be computed independent of the exception handler found during the lookup. R=jkummerow@chromium.org BUG=v8:9810 Change-Id: I0c7e04c75d7e24f2731e22370833005c17d0297a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1847155Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#64159}
-
- 16 Sep, 2019 1 commit
-
-
Jakob Kummerow authored
Bug: v8:3770,v8:9666 Change-Id: I7b7652887d6b60fbb80e1100834bc7c9df0544d8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1792909 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Martyn Capewell <martyn.capewell@arm.com> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#63801}
-
- 22 Aug, 2019 3 commits
-
-
Jakob Gruber authored
This is a reland of 1e472c42 No change, this was a speculative revert to unblock the roll. TBR=jgruber Original change's description: > [compiler] Track the maximal unoptimized frame size > > This is another step towards considering the unoptimized frame size in > stack checks within optimized code. > > With the changes in this CL, we now keep track of the maximal > unoptimized frame size of the function that is currently being > compiled. An optimized function may inline multiple unoptimized > functions, so a single optimized frame can deopt to multiple > frames. The real frame size thus differs in different parts of the > optimized function. > > We only care about the maximal frame size, which we calculate > conservatively as an over-approximation, and track in > InstructionSelector::max_unoptimized_frame_height_ for now. In future > work, this value will be passed on to codegen, where it will be > applied as an offset to the stack pointer during the stack check. > > (The motivation behind this is to avoid stack overflows through deopts, > caused by size differences between optimized and unoptimized frames.) > > Note that this offset only ensure that the topmost optimized frame can > deopt without overflowing the stack limit. That's fine, because we only > deopt optimized frames one at a time. Other (non-topmost) frames are > only deoptimized once they are returned to. > > Drive-by: Print variable and total frame height in --trace-deopt. > > Bug: v8:9534 > Change-Id: I821684a9da93bff59c20c8ab226105e7e12d93eb > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1762024 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Auto-Submit: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#63330} Bug: v8:9534 Change-Id: I686f200e7be1f419e23e50789e11607a0b2886d9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1766645 Commit-Queue: Bill Budge <bbudge@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#63356}
-
Bill Budge authored
This reverts commit 1e472c42. Reason for revert: Speculative revert, to attempt to fix crashes that block the V8 roll. Example failure run: https://ci.chromium.org/p/chromium/builders/try/linux-rel/173465 Original change's description: > [compiler] Track the maximal unoptimized frame size > > This is another step towards considering the unoptimized frame size in > stack checks within optimized code. > > With the changes in this CL, we now keep track of the maximal > unoptimized frame size of the function that is currently being > compiled. An optimized function may inline multiple unoptimized > functions, so a single optimized frame can deopt to multiple > frames. The real frame size thus differs in different parts of the > optimized function. > > We only care about the maximal frame size, which we calculate > conservatively as an over-approximation, and track in > InstructionSelector::max_unoptimized_frame_height_ for now. In future > work, this value will be passed on to codegen, where it will be > applied as an offset to the stack pointer during the stack check. > > (The motivation behind this is to avoid stack overflows through deopts, > caused by size differences between optimized and unoptimized frames.) > > Note that this offset only ensure that the topmost optimized frame can > deopt without overflowing the stack limit. That's fine, because we only > deopt optimized frames one at a time. Other (non-topmost) frames are > only deoptimized once they are returned to. > > Drive-by: Print variable and total frame height in --trace-deopt. > > Bug: v8:9534 > Change-Id: I821684a9da93bff59c20c8ab226105e7e12d93eb > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1762024 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Auto-Submit: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Sigurd Schneider <sigurds@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#63330} TBR=neis@chromium.org,sigurds@chromium.org,jgruber@chromium.org Change-Id: I7b225c30bfc4e1d958276583f512a1ec5fa2b458 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:9534 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1764626Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#63350}
-
Jakob Gruber authored
This is another step towards considering the unoptimized frame size in stack checks within optimized code. With the changes in this CL, we now keep track of the maximal unoptimized frame size of the function that is currently being compiled. An optimized function may inline multiple unoptimized functions, so a single optimized frame can deopt to multiple frames. The real frame size thus differs in different parts of the optimized function. We only care about the maximal frame size, which we calculate conservatively as an over-approximation, and track in InstructionSelector::max_unoptimized_frame_height_ for now. In future work, this value will be passed on to codegen, where it will be applied as an offset to the stack pointer during the stack check. (The motivation behind this is to avoid stack overflows through deopts, caused by size differences between optimized and unoptimized frames.) Note that this offset only ensure that the topmost optimized frame can deopt without overflowing the stack limit. That's fine, because we only deopt optimized frames one at a time. Other (non-topmost) frames are only deoptimized once they are returned to. Drive-by: Print variable and total frame height in --trace-deopt. Bug: v8:9534 Change-Id: I821684a9da93bff59c20c8ab226105e7e12d93eb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1762024 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#63330}
-
- 20 Aug, 2019 2 commits
-
-
Jakob Gruber authored
The deoptimizer calculates frame layout based on the translation's `height` field, together with additional data (e.g.: are we looking at the topmost frame? what kind of deopt are we in?). The result is the final deoptimized frame size in bytes, together with a bunch of intermediate results such as the variable frame size (= without the fixed-size portion). In order to consider the deoptimized frame size in optimized stack checks, we will need to calculate the frame layout during compilation in addition to what we currently do during deoptimization. This CL moves in that direction by extracting relevant parts of frame layout calculation into classes that can be reused by both compiler and deoptimizer. These helpers will support both precise and conservative modes; the deoptimizer will use the precise mode (since it has full information), while the instruction selector will use the conservative mode. Bug: v8:9534 Change-Id: I93d6c39f10d251733f4625d3cc161b2010652d02 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1760825 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#63279}
-
Andrew Comminos authored
Adds support to the CPU profiler for scraping the incumbent contexts of V8 stack frames. While it is generally unsafe to access heap objects during a profiling interrupt, the native context is uniquely usable due to being guaranteed an alive root on the stack, as well as its slots being immutable after context creation. Change-Id: I2c3149c1302b74d2f13aa99d1fdd0cf006e0f9d1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1580020 Commit-Queue: Andrew Comminos <acomminos@fb.com> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Alexei Filippov <alph@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#63258}
-
- 12 Jul, 2019 1 commit
-
-
Peter Marshall authored
Everyone was getting a copy of this through debug.h. Bug: v8:9396 Change-Id: I5189cb4bf27a3381768b0be479d7b3d60dec20bb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1695472 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#62670}
-
- 11 Jul, 2019 2 commits
-
-
Peter Marshall authored
The simulator builds have bugs which cause invalid frame markers in some cases. Change-Id: I837732c6f5efe24821415a0ae0626578bbcc3a7e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1697253Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#62650}
-
Peter Marshall authored
Add a bit on the isolate which indicates that the stack is currently not iterable for the SafeStackFrameIterator. This is needed during deoptimization, when we do a fast C call without a return address on the stack, meaning we can't iterate the stack frames. Re-enable DeoptAtFirstLevelInlinedSource which is fixed by this CL. Bug: v8:9057 Change-Id: I76379a2dd38023be7e6f5153edeb1f838e9ac4d6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1688049 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#62634}
-
- 08 Jul, 2019 1 commit
-
-
Clemens Hammacher authored
Cpplint usually checks for non-const reference arguments. They are forbidden in the style guide, and v8 does not explicitly make an exception here. This CL re-enables that warning, and fixes all current violations by adding an explicit "NOLINT(runtime/references)" comment. In follow-up CLs, we should aim to remove as many of them as possible. TBR=mlippautz@chromium.org Bug: v8:9429 Change-Id: If7054d0b366138b731972ed5d4e304b5ac8423bb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1687891Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#62551}
-
- 27 Jun, 2019 1 commit
-
-
Jakob Kummerow authored
powered by a new function Execution::CallWasm and a corresponding, Turbofan-generated CWasmEntry stub. This entirely sidesteps the traditional Execution::Invoke -> JSEntryStub path. Change-Id: If2b97825cca4ce927eecbddc248c64782d903287 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1660618 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#62424}
-
- 17 Jun, 2019 1 commit
-
-
Thibaud Michaud authored
R=mstarzinger@chromium.org Bug: v8:9183 Change-Id: Id64bffd899afe1389748a0cd3527e41d1e028bad Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1660472Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/master@{#62205}
-
- 29 May, 2019 1 commit
-
-
Jakob Kummerow authored
So far, calls to Wasm C/C++ API functions reused the call descriptors of WasmImportWrappers, and the stack frame type of regular Wasm functions. This CL cleans that up by introducing separate implementations for both. No change in functionality or performance is expected. Change-Id: I79301fa81da52283cc776ddf19d4712372f3a58b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1632235 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#61914}
-
- 24 May, 2019 1 commit
-
-
Michael Starzinger authored
This removes dead and obsolete support for batch-saved register from the safepoint table. We no longer spill the entire register window (either double or general-purpose) from optimized code. All spills happen as part of the normal spill-slots on the stack by now. R=clemensh@chromium.org,jarin@chromium.org BUG=v8:9183 Change-Id: I5a2be7a543fa3e44d71ab1a35c722da0d458765c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627531 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#61815}
-
- 23 May, 2019 2 commits
-
-
Yang Guo authored
TBR=bmeurer@chromium.org,leszeks@chromium.org Bug: v8:9247 Change-Id: I8d14d0192ea8c705f8274e8e61a162531826edb6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624220Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#61769}
-
Yang Guo authored
Bug: v8:9247 Change-Id: I0023200c54fa6499ae4e2cf5e4c89407cc35f187 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624218Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#61762}
-
- 22 May, 2019 1 commit
-
-
Yang Guo authored
Bug: v8:9247 Change-Id: I79e0553e8a0d6dac2aa16b94a6c0e05b6ccde4a1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1621934 Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#61725}
-
- 21 May, 2019 1 commit
-
-
Yang Guo authored
Bug: v8:9247 TBR=bmeurer@chromium.org,neis@chromium.org NOPRESUBMIT=true Change-Id: Ia1e49d1aac09c4ff9e05d58fab9d08dd71198878 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1621931Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#61682}
-
- 10 May, 2019 1 commit
-
-
Dan Elphick authored
This is a reland of f2e65226 Nothing has changed but https://chromium-review.googlesource.com/c/v8/v8/+/1585269 has been rolled back due to v8:9234. Original change's description: > Reland "[compiler] Don't collect source positions for the top frame" > > Fixed crashes by adding missing call to EnsureSourcePositionsAvailable, > which requires clearing and restoring the pending exception. > > > While most source positions were not collected even throwing exceptions, > > the top frame still was always collected as it was used to initialize > > the JSMessageObject. This skips even that frame, by storing the > > SharedFunctionInfo and bytecode offset in the JSMessageObject allowing > > it to lazily evaluate the actual source position. > > > > Also adds tests to test-api.cc that test each of the source position > > functions in isolation to ensure that they don't rely on previous > > invocations to call the source collection function. > > > > Since no source positions are now collected at the point when an > > exception is thrown, the mjsunit/stack-traces-overflow now passes again > > with the flag enabled. (cctest/test-cpu-profiler/Inlining2 is now the > > only failure). > > Bug: v8:8510 > Change-Id: Ifa5fe31d3db34a6c6d6a9cef3d646ad620dabd81 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601270 > Commit-Queue: Dan Elphick <delphick@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Cr-Commit-Position: refs/heads/master@{#61372} TBR=ulan@chromium.org Bug: v8:8510 Change-Id: Iaa9e376f90d10c0f25d1bcc352808363e4ea8b4d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1605946Reviewed-by: Dan Elphick <delphick@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#61418}
-
- 09 May, 2019 1 commit
-
-
Maya Lekova authored
This reverts commit f2e65226. Reason for revert: Speculative revert, seems to break GC stress bot and block LKGR - https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/25701 Original change's description: > Reland "[compiler] Don't collect source positions for the top frame" > > Fixed crashes by adding missing call to EnsureSourcePositionsAvailable, > which requires clearing and restoring the pending exception. > > > While most source positions were not collected even throwing exceptions, > > the top frame still was always collected as it was used to initialize > > the JSMessageObject. This skips even that frame, by storing the > > SharedFunctionInfo and bytecode offset in the JSMessageObject allowing > > it to lazily evaluate the actual source position. > > > > Also adds tests to test-api.cc that test each of the source position > > functions in isolation to ensure that they don't rely on previous > > invocations to call the source collection function. > > > > Since no source positions are now collected at the point when an > > exception is thrown, the mjsunit/stack-traces-overflow now passes again > > with the flag enabled. (cctest/test-cpu-profiler/Inlining2 is now the > > only failure). > > Bug: v8:8510 > Change-Id: Ifa5fe31d3db34a6c6d6a9cef3d646ad620dabd81 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601270 > Commit-Queue: Dan Elphick <delphick@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Cr-Commit-Position: refs/heads/master@{#61372} TBR=ulan@chromium.org,rmcilroy@chromium.org,delphick@chromium.org Change-Id: Ie590df6c308b38836afc5d417d03d2a63260bcb2 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8510 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1602692Reviewed-by: Maya Lekova <mslekova@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#61381}
-