1. 26 Jan, 2021 1 commit
    • Benedikt Meurer's avatar
      [inspector] Fix crash due to misuse of embedder fields. · 7e2f1108
      Benedikt Meurer authored
      The contract between V8 and Blink is that embedder fields belong to
      Blink, at least when the object has two or more of them. Now we had 2-3
      embedder fields used by the debug proxies and that was confusing Blink,
      since it expects the first slot to hold an aligned pointer in that case
      and we had a HeapObject reference stored there.
      
      This is a quickfix, which avoids internal fields completely for the
      context extension proxy (using interceptors on the prototype instead)
      and changes the named proxies to store the name table under a private
      symbol instead of using a second internal field.
      
      A proper but way more involved fix is to introduce a proper instance
      type here and use space in the header instead of misusing embedder
      fields.
      
      Fixed: chromium:1170283
      Bug: chromium:1159402
      Change-Id: I6c4bbe2fe88fef29a6b9946708588245efbbe72b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2649033
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72323}
      7e2f1108
  2. 19 Jan, 2021 1 commit
    • Benedikt Meurer's avatar
      [debug][wasm] Store debug proxy maps on native context. · 975ded1d
      Benedikt Meurer authored
      This was originally proposed by yangguo@ on the original CL that
      introduced this, but back then it looked easier to put the map cache
      onto the global object than on the native context. However it turns out
      that this is indeed quite strange and also not necessarily supported (we
      got crashes from the wild indicating that the `Object::GetProperty()`
      might fail on the global object). So this CL simplifies the original
      design and just puts the map cache onto the native context like with do
      with other context specific maps.
      
      Fixed: chromium:1167399
      Bug: chromium:1127914, chromium:1159402, chromium:1071432, chromium:1164241
      Change-Id: Ie16f892dd19b55b4c49e9d4829cab3c24ae64ad3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2637226
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72159}
      975ded1d
  3. 13 Jan, 2021 1 commit
    • Benedikt Meurer's avatar
      [wasm][debug] Simplify debug name handling. · 1bd5755b
      Benedikt Meurer authored
      This moves the logic for the debug name heuristic, which derives names
      for imported and exported entities from the relevant tables, into
      wasm-debug.{cc,h} and stores these maps on the DebugInfoImpl rather than
      on the WasmModule.
      
      Drive-by-fix: Also use the import table based heuristic for function
      names, just like we use it for everything else.
      
      Bug: chromium:1164305
      Change-Id: I8a21e0880c680079f63e6607b5b62c788049b9e1
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2625870
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72061}
      1bd5755b
  4. 12 Jan, 2021 1 commit
    • Benedikt Meurer's avatar
      [inspector][wasm] Improve Scope view and instance preview. · a23adbbc
      Benedikt Meurer authored
      This adds the following internal properties to `WasmInstanceObject`
      values in DevTools:
      
       - `[[Module]]` pointing to the `WasmModuleObject`, allowing the
         developer to find the module to an instance no matter where in
         DevTools front-end the instance is inspected.
       - `[[Functions]]`, `[[Globals]]`, `[[Memories]]`, and `[[Tables]]`
         are shown (when they aren't empty), allowing developers to inspect
         the entities within an instance no matter where in DevTools front-end
         it's inspected.
      
      This also updates the _Module_ scope for Wasm frames to show the entity
      containers (`functions`, `globals`, `memories` and `tables`) in addition
      to the `instance` and `module` to make it easier accessible (fewer
      clicks to get there), but also to align it better with the _Add property
      path to Watch_ and _Copy property path_ features (since exactly the same
      names are exposed via Debug Evaluate on Wasm frames).
      
      ```
      > Stack
      > Locals
      v Module
        > module
        > instance
        > functions
        > globals
        > memories
        > tables
      ```
      
      Drive-by-fix: Move GetWasmModuleObjectInternalProperties() logic into
      debug-wasm-support.cc
      
      Screenshot: https://imgur.com/ksEHG2I.png
      Doc: http://bit.ly/devtools-wasm-entities
      Fixed: chromium:1165294
      Bug: chromium:1071432, chromium:1164241, chromium:1165304
      Change-Id: Ia88fb2705287c79988ff2b432e4a33ac34e098f5
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2622912Reviewed-by: 's avatarPhilip Pfaffe <pfaffe@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72042}
      a23adbbc
  5. 11 Jan, 2021 2 commits