- 27 Jan, 2017 1 commit
-
-
clemensh authored
This also fixes bugs found by the new test. It only tests stepping inside of wasm code. Wasm to JS and vice versa will follow in another CL. R=yangguo@chromium.org, titzer@chromium.org, kozyatinskiy@chromium.org BUG=v8:5822 Review-Url: https://codereview.chromium.org/2651043004 Cr-Commit-Position: refs/heads/master@{#42729}
-
- 25 Jan, 2017 1 commit
-
-
kozyatinskiy authored
This action was used by inspector for blackboxing and isn't needed with new blackboxing implementation inside V8. BUG=none R=yangguo@chromium.org,clemensh@chromium.org TBR=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/2650943011 Cr-Commit-Position: refs/heads/master@{#42670}
-
- 24 Jan, 2017 1 commit
-
-
clemensh authored
Implement stepping by remembering the current step action in the wasm interpreter handle in WasmDebugInfo, and using it when continuing execution in the interpreter. The control flow is as follows: After module compilation, the user sets a breakpoint in wasm. The respective function is redirected to the interpreter and the breakpoint is set on the interpreter. When it is hit, we notify all debug event listeners, which might prepare stepping. When returning from these listeners, before continuing execution, we check whether stepping was requested and continue execution in the interpreter accordingly. Stepping from Wasm to JS and vice versa will be implemented and tested in a follow-up CL. Testing this requires breakpoints and stepping in Wasm to be exposed via the inspector interface, such that we can write an inspector test. This mixed JS-Wasm-execution is hard to set up in a cctest. R=titzer@chromium.org, yangguo@chromium.org BUG= Review-Url: https://codereview.chromium.org/2649533002 Cr-Commit-Position: refs/heads/master@{#42624}
-
- 23 Jan, 2017 1 commit
-
-
yangguo authored
R=jgruber@chromium.org BUG=v8:5530 Review-Url: https://codereview.chromium.org/2642253005 Cr-Original-Commit-Position: refs/heads/master@{#42543} Committed: https://chromium.googlesource.com/v8/v8/+/e26a58e43c51a680a0a6363e0066886f4971a41f Review-Url: https://codereview.chromium.org/2642253005 Cr-Commit-Position: refs/heads/master@{#42595}
-
- 20 Jan, 2017 2 commits
-
-
clemensh authored
Test that setting breakpoints works for wasm, and that they are hit correctly. This basically tests all the layers involved: Compiling and running wasm interpreter entries, passing arguments to the interpreter, storing break point infos in wasm objects, getting the right BreakLocation from wasm frames, and getting stack information from interpreted frames. BUG=v8:5822 R=titzer@chromium.org, yangguo@chromium.org Review-Url: https://codereview.chromium.org/2629883002 Cr-Commit-Position: refs/heads/master@{#42560}
-
clemensh authored
Frame inspection is currently limited to locations of execution. Further details like local variables or stack content will follow later. The FrameInspector now stores a pointer to the interpreted wasm frame, and redirects certain requests there, just as for deoptimized frames. Hitting breakpoints is now also supported for wasm frames. R=yangguo@chromium.org, titzer@chromium.org BUG=v8:5822 Review-Url: https://codereview.chromium.org/2629823003 Cr-Commit-Position: refs/heads/master@{#42551}
-
- 16 Jan, 2017 1 commit
-
-
clemensh authored
Our .clang-format is derived on the Google style, which sets PointerAlignment to left (e.g. "Type* name"), but sets DerivePointerAlignment to true. Once we started with the wrong style, this made all new code in wasm-debug.cc use PointerAlignment=right, resulting in lots of code using the wrong style. For this CL, I ran clang-format -style="{DerivePointerAlignment: false, BasedOnStyle: \ Google}" -i src/wasm/wasm-debug.cc R=titzer@chromium.org Review-Url: https://codereview.chromium.org/2635003002 Cr-Commit-Position: refs/heads/master@{#42380}
-
- 13 Jan, 2017 1 commit
-
-
clemensh authored
If a breakpoint is set on a wasm function, compile an interpreter entry stub for it, and replace all calls to the original function by calls to this interpreter entry. Also, instantiate a wasm interpreter object on demand and set the breakpoint there. R=titzer@chromium.org BUG=v8:5822 Review-Url: https://codereview.chromium.org/2625093004 Cr-Commit-Position: refs/heads/master@{#42309}
-
- 11 Jan, 2017 1 commit
-
-
clemensh authored
Also, add a runtime function to call the interpreter, passing a stack-allocated buffer holding the arguments. The WASM_INTERPRETER_ENTRY stub allocates the stack slot for the arguments, fills it, and calls to the wasm interpreter. It's abi is compatible with WASM functions, such that we can just replace a call to a WASM_FUNCTION with a call to WASM_INTERPRETER_ENTRY. See tracking bug to get the overall picture. BUG=v8:5822 R=titzer@chromium.org Review-Url: https://codereview.chromium.org/2619803004 Cr-Commit-Position: refs/heads/master@{#42242}
-
- 20 Dec, 2016 1 commit
-
-
clemensh authored
The new object will hold information which is shared by all clones of a WasmCompiledModule, e.g. the decoded asm.js offset table, and in the future also breakpoints. From there, we can set them on each new instantiation of any clone. While already changing lots of the code base, I also renamed all getters from "get_foo" to "foo", to conform to the style guide. R=titzer@chromium.org, yangguo@chromium.org BUG=v8:5732 Review-Url: https://codereview.chromium.org/2591653002 Cr-Commit-Position: refs/heads/master@{#41862}
-
- 28 Nov, 2016 1 commit
-
-
clemensh authored
Before, the encoded variant was stored in the compiled module, and the decoded one in the debug info (per instance). The decoded table was a FixedArray of ByteArrays. Now, also the decoded table is a flat ByteArray, and it encodes whether it is encoded or decoded. This saves memory and allows to store encoded and decoded variant in the same field. The table is automatically decoded on the first use. This CL also removes some unused and unimplemented methods from WasmDebugInfo (probably merge artifacts). That class is now pretty much empty, but we might still need it for breakpoint support. R=titzer@chromium.org, ahaas@chromium.org Review-Url: https://codereview.chromium.org/2522953002 Cr-Commit-Position: refs/heads/master@{#41316}
-
- 24 Nov, 2016 2 commits
-
-
clemensh authored
Revert of [base] Define CHECK comparison for signed vs. unsigned (patchset #5 id:80001 of https://codereview.chromium.org/2526783002/ ) Reason for revert: Need to revert previous CL because of Android compile error, and this one depends in it. Original issue's description: > [base] Define CHECK comparison for signed vs. unsigned > > The current CHECK/DCHECK implementation fails statically if a signed > value is compared against an unsigned value. The common solution is to > cast on each caller, which is tedious and error-prone (might hide bugs). > This CL implements signed vs. unsigned comparisons by executing up to > two comparisons. For example, if i is int32_t and u is uint_32_t, a > DCHECK_LE(i, u) would create the check > i <= 0 || static_cast<uint32_t>(i) <= u. > For checks against constants, at least one of the checks can be removed > by compiler optimizations. > > The tradeoff we have to make is to sometimes silently execute an > additional comparison. And we increase code complexity of course, even > though the usage is just as easy (or even easier) as before. > > The compile time impact seems to be minimal: > I ran 3 full compilations for Optdebug on my local machine, one time on > the current ToT, one time with this CL plus http://crrev.com/2524093002. > Before: 143.72 +- 1.21 seconds > Now: 144.18 +- 0.67 seconds > > In order to check that the new comparisons are working, I refactored > some DCHECKs in wasm to use the new magic. > > R=bmeurer@chromium.org, titzer@chromium.org > > Committed: https://crrev.com/5925074a9dab5a8577766545b91b62f2c531d3dc > Cr-Commit-Position: refs/heads/master@{#41275} TBR=ishell@chromium.org,titzer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/2531533003 Cr-Commit-Position: refs/heads/master@{#41277}
-
clemensh authored
The current CHECK/DCHECK implementation fails statically if a signed value is compared against an unsigned value. The common solution is to cast on each caller, which is tedious and error-prone (might hide bugs). This CL implements signed vs. unsigned comparisons by executing up to two comparisons. For example, if i is int32_t and u is uint_32_t, a DCHECK_LE(i, u) would create the check i <= 0 || static_cast<uint32_t>(i) <= u. For checks against constants, at least one of the checks can be removed by compiler optimizations. The tradeoff we have to make is to sometimes silently execute an additional comparison. And we increase code complexity of course, even though the usage is just as easy (or even easier) as before. The compile time impact seems to be minimal: I ran 3 full compilations for Optdebug on my local machine, one time on the current ToT, one time with this CL plus http://crrev.com/2524093002. Before: 143.72 +- 1.21 seconds Now: 144.18 +- 0.67 seconds In order to check that the new comparisons are working, I refactored some DCHECKs in wasm to use the new magic. R=bmeurer@chromium.org, titzer@chromium.org Review-Url: https://codereview.chromium.org/2526783002 Cr-Commit-Position: refs/heads/master@{#41275}
-
- 17 Nov, 2016 1 commit
-
-
clemensh authored
With the new wasm object types, the GetCompiledModule and GetWasmBytes functions are not needed any more. The same functions are already public on the wasm objects. In order to use them properly, I changed a few more locations to make use of the new types. R=ahaas@chromium.org, titzer@chromium.org Review-Url: https://codereview.chromium.org/2503403005 Cr-Commit-Position: refs/heads/master@{#41085}
-
- 15 Nov, 2016 1 commit
-
-
clemensh authored
Before, we allocated one script per function per instance, and each script referenced the wasm instance and the function index. Now we only allocate one script per compiled wasm module, so the script also only references this WasmCompiledModule, which causes changes to many interfaces. Instead of fixing the disassemble API only used via debug.js, I decided to drop it for now. Some later CL will reintroduce it via DebugInterface. BUG=v8:5530,chromium:659715 R=yangguo@chromium.org, titzer@chromium.org CC=jgruber@chromium.org Review-Url: https://codereview.chromium.org/2493823003 Cr-Commit-Position: refs/heads/master@{#41004}
-
- 11 Nov, 2016 1 commit
-
-
titzer authored
This CL moves all heap-allocated WASM data structures, both ones that are bonafide JSObjects and ones that are FixedArrays only, into a consistent place with consistent layout. Note that not all accessors are complete, and I haven't fully spread the new static typing goodness to all places in the code. R=ahaas@chromium.org,rossberg@chromium.org CC=gdeepti@chromium.org,mtrofin@chromium.org,clemensh@chromium.org BUG= Review-Url: https://codereview.chromium.org/2490663002 Cr-Commit-Position: refs/heads/master@{#40913}
-
- 25 Oct, 2016 1 commit
-
-
clemensh authored
And add a test case for more than one entry ;) R=titzer@chromium.org,ahaas@chromium.org Review-Url: https://codereview.chromium.org/2448833004 Cr-Commit-Position: refs/heads/master@{#40553}
-
- 19 Oct, 2016 1 commit
-
-
titzer authored
R=clemensh@chromium.org,ahaas@chromium.org BUG= Review-Url: https://chromiumcodereview.appspot.com/2428343005 Cr-Commit-Position: refs/heads/master@{#40426}
-
- 12 Oct, 2016 1 commit
-
-
clemensh authored
For the asm.js to WASM pipeline, the current stack traces only show low-level WASM information. This CL maps this back to asm.js source positions. It does so by attaching the asm.js source Script to the compiled WASM module, and emitting a delta-encoded table which maps from WASM byte offsets to positions within that Script. As asm.js code does not throw exceptions, we only store a mapping for call instructions. The new AsmJsWasmStackFrame implementation inherits from WasmStackFrame, but contains the logic to provide the source script and the position inside of it. What is still missing is the JSFunction object returned by CallSite.getFunction(). We currently return null. R=jgruber@chromium.org, titzer@chromium.org BUG=v8:4203 Review-Url: https://codereview.chromium.org/2404253002 Cr-Commit-Position: refs/heads/master@{#40205}
-
- 06 Oct, 2016 1 commit
-
-
clemensh authored
Use information in the WasmCompiledModule instead. R=titzer@chromium.org,mtrofin@chromium.org Review-Url: https://codereview.chromium.org/2396043002 Cr-Commit-Position: refs/heads/master@{#40062}
-
- 27 Sep, 2016 1 commit
-
-
titzer authored
[0xC] Convert to stack machine semantics. [0xC] Use section codes instead of names. [0xC] Add elements section decoding. [0xC] Decoding of globals section. [0xC] Decoding of memory section. [0xC] Decoding of imports section. [0xC] Decoding of exports section. [0xC] Decoding of data section. [0xC] Remove CallImport bytecode. [0xC] Function bodies have an implicit block. [0xC] Remove the bottom label from loops. [0xC] Add signatures to blocks. [0xC] Remove arities from branches. Add tests for init expression decoding. Rework compilation of import wrappers and how they are patched. Rework function indices in debugging. Fix ASM->WASM builder for stack machine. Reorganize asm.js foreign functions due to import indices change. R=ahaas@chromium.org,rossberg@chromium.org,bradnelson@chromium.org BUG=chromium:575167 LOG=Y Committed: https://crrev.com/76eb976a67273b8c03c744f64ad850b0432554b9 Review-Url: https://codereview.chromium.org/2345593003 Cr-Original-Commit-Position: refs/heads/master@{#39678} Cr-Commit-Position: refs/heads/master@{#39795}
-
- 23 Sep, 2016 2 commits
-
-
machenbach authored
Revert of [wasm] Master CL for Binary 0xC changes. (patchset #26 id:490001 of https://codereview.chromium.org/2345593003/ ) Reason for revert: Main suspect for tsan: https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20TSAN/builds/11893 Also changes layout tests: https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/10036 +mips builder: https://build.chromium.org/p/client.v8.ports/builders/V8%20Mips%20-%20builder/builds/4032 Original issue's description: > [wasm] Master CL for Binary 0xC changes. > > [0xC] Convert to stack machine semantics. > [0xC] Use section codes instead of names. > [0xC] Add elements section decoding. > [0xC] Decoding of globals section. > [0xC] Decoding of memory section. > [0xC] Decoding of imports section. > [0xC] Decoding of exports section. > [0xC] Decoding of data section. > [0xC] Remove CallImport bytecode. > [0xC] Function bodies have an implicit block. > [0xC] Remove the bottom label from loops. > [0xC] Add signatures to blocks. > [0xC] Remove arities from branches. > Add tests for init expression decoding. > Rework compilation of import wrappers and how they are patched. > Rework function indices in debugging. > Fix ASM->WASM builder for stack machine. > Reorganize asm.js foreign functions due to import indices change. > > R=ahaas@chromium.org,rossberg@chromium.org,bradnelson@chromium.org > BUG=chromium:575167 > LOG=Y > > Committed: https://crrev.com/76eb976a67273b8c03c744f64ad850b0432554b9 > Cr-Commit-Position: refs/heads/master@{#39678} TBR=ahaas@chromium.org,bradnelson@chromium.org,mtrofin@chromium.org,rossberg@chromium.org,bradnelson@google.com,titzer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:575167 Review-Url: https://codereview.chromium.org/2361053004 Cr-Commit-Position: refs/heads/master@{#39685}
-
titzer authored
[0xC] Convert to stack machine semantics. [0xC] Use section codes instead of names. [0xC] Add elements section decoding. [0xC] Decoding of globals section. [0xC] Decoding of memory section. [0xC] Decoding of imports section. [0xC] Decoding of exports section. [0xC] Decoding of data section. [0xC] Remove CallImport bytecode. [0xC] Function bodies have an implicit block. [0xC] Remove the bottom label from loops. [0xC] Add signatures to blocks. [0xC] Remove arities from branches. Add tests for init expression decoding. Rework compilation of import wrappers and how they are patched. Rework function indices in debugging. Fix ASM->WASM builder for stack machine. Reorganize asm.js foreign functions due to import indices change. R=ahaas@chromium.org,rossberg@chromium.org,bradnelson@chromium.org BUG=chromium:575167 LOG=Y Review-Url: https://codereview.chromium.org/2345593003 Cr-Commit-Position: refs/heads/master@{#39678}
-
- 20 Sep, 2016 1 commit
-
-
heimbuef authored
This is some initial cleanup to keep /src clean. The AccountingAllocator is actually exclusively used by zones and this common subfolder makes that more clear. BUG=v8:5409 Review-Url: https://codereview.chromium.org/2344143003 Cr-Commit-Position: refs/heads/master@{#39558}
-
- 02 Sep, 2016 1 commit
-
-
jgruber authored
This disables notification of wasm script 'compilation' since OnAfterCompile actually triggers a JS call (which is disallowed during stack trace collection). BUG=641065 Review-Url: https://codereview.chromium.org/2304943002 Cr-Commit-Position: refs/heads/master@{#39139}
-
- 30 Jun, 2016 1 commit
-
-
titzer authored
This stores the wasm object and the function index in the script, and adds functions to get the disassembled wasm code as well as the offset table mapping from byte position to line and column in the disassembly solely from the script. This will be used to show "ui source code" in DevTools, and map raw locations from the stack trace into this code view. R=yangguo@chromium.org, ahaas@chromium.org, titzer@chromium.org BUG=chromium:613110 patch from issue 2063013004 at patchset 80001 (http://crrev.com/2063013004#ps80001) Review-Url: https://codereview.chromium.org/2105303002 Cr-Commit-Position: refs/heads/master@{#37430}
-
- 29 Jun, 2016 1 commit
-
-
titzer authored
This changes many interfaces to accept StandardFrames instead of JavaScriptFrames, and use the StackTraceFrameIterator instead of the JavaScriptFrameIterator. Also, the detailed frame information array now contains the script in addition to the function, as wasm frames are not associated to any javascript function. This is a rebase of (https://codereview.chromium.org/2069823003/), since clemensh's internship has ended. R=yangguo@chromium.org,ahaas@chromium.org BUG= Review-Url: https://codereview.chromium.org/2109093003 Cr-Commit-Position: refs/heads/master@{#37379}
-
- 20 Jun, 2016 1 commit
-
-
clemensh authored
All function which potentially do heap allocations now take a Handle on a WasmDebugInfo. This unfortunately requires to make some function static, since otherwise the "this" pointer would not be handlified. R=ahaas@chromium.org, titzer@chromium.org BUG=chromium:613110 Review-Url: https://codereview.chromium.org/2074933005 Cr-Commit-Position: refs/heads/master@{#37099}
-
- 17 Jun, 2016 1 commit
-
-
clemensh authored
All debugging-related information is now stored inside a dedicated object, which is only allocated if debugging support is needed. This is also where later a reference to the interpreter will be stored for executing to-be-debugged functions and providing stack inspection. R=titzer@chromium.org, ahaas@chromium.org BUG=chromium:613110 Review-Url: https://codereview.chromium.org/2050953003 Cr-Commit-Position: refs/heads/master@{#37055}
-