1. 30 May, 2018 1 commit
  2. 26 Apr, 2018 1 commit
  3. 06 Apr, 2018 1 commit
  4. 04 Sep, 2017 1 commit
  5. 14 Aug, 2017 1 commit
  6. 20 Jun, 2017 1 commit
    • Clemens Hammacher's avatar
      Implement managed objects with phantom handles · f244f0c5
      Clemens Hammacher authored
      For each Managed<T> (which is a Foreign), we create a weak global handle
      with a finalizer which deletes the referenced C++ object once the
      Foreign is dead.
      Before calling this finalizer, the garbage collector needs to mark the
      referenced object black (i.e. live), because the finalizer might
      resurrect it.
      Since this is never done for managed objects, we can use the more
      lightweight phantom handle semantics, which allows the referenced
      object to be garbage collected right away.
      
      However, we can't access the global handle via the WeakCallbackInfo,
      because the global handle will already be garbage collected. So we need
      to store it explicitly. This is solved by storing the global handle
      together with the finalizer.
      In order to implement this, ownership of the ManagedObjectFinalizer
      is moved from the isolate to the managed object.
      
      R=ulan@chromium.org, mtrofin@chromium.org
      BUG=v8:6505, chromium:734345
      
      Change-Id: I94a245df601f70e19355d82439d30099e159231b
      Reviewed-on: https://chromium-review.googlesource.com/539578
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46036}
      f244f0c5
  7. 21 Feb, 2017 1 commit
    • mtrofin's avatar
      [wasm] Managed<T> ensures T's lifetime does not leak past Isolate's · caa1d4b2
      mtrofin authored
      Native resources allocated by v8, as internal implementation detail,
      and held by a Foreign object, must be released when the Isolate is
      torn down. Example: wasm::WasmModule allocated by wasm compile, and
      held throughout the lifetime of the WebAssembly.Module object.
      
      This change:
      - Extends Managed<CppType> with a mechanism for doing just that
      - Separates the role of Managed<CppType> to be strictly an owner of
      the lifetime of the native resource. For cases where that's not
      desirable, we can polymorphically use Foregin.
      - moves managed.h out of wasm, since it's not wasm-specific.
      
      BUG=680065
      
      Review-Url: https://codereview.chromium.org/2676513008
      Cr-Commit-Position: refs/heads/master@{#43350}
      caa1d4b2