1. 28 Aug, 2017 1 commit
  2. 19 Jul, 2017 1 commit
    • Ulan Degenbaev's avatar
      [heap] Instrument mark-compact to track retaining paths for debugging. · 40c34606
      Ulan Degenbaev authored
      This patch adds a new intrinsic: %DebugTrackRetainingPath(object).
      Calling the intrinsic in JS code saves a weak reference to the given
      object in GC internal table of tracked objects.
      
      Each subsequent full GC prints to stdout the retaining path for each
      tracked object (if it is still alive). The retaining path is the real
      path that the marker took from the root set to the tracked object.
      
      This is useful for investigating of memory leaks:
      1) Add %DebugTrackRetainingPath(leaking_object) in JS code.
      For example:
        function foo() {
          let x = { bar: "bar"};
          %DebugTrackRetainingPath(x);
          return () => { return x; }
        }
      
        let closure = foo();
        gc();
      
      2) Run d8 with --allow-natives-syntax --track-retaining-path --expose-gc.
      
      3) Check the retaining path in stdout.
      
      For more detailed inspection, run d8 in gdb and set breakpoint in
      
      v8: :internal::Heap::PrintRetainingPath.
      Change-Id: I01a0faac1e009bc6c321fa75613900b49d2b036f
      Reviewed-on: https://chromium-review.googlesource.com/575972
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46766}
      40c34606
  3. 25 Apr, 2017 2 commits
    • ulan's avatar
      Add a host parameter to ObjectVisitor methods. · c59f78f6
      ulan authored
      This makes an ObjectVisitor as powerful as a StaticVisitor and allows
      slots recording in ObjectVisitor.
      
      This patch also renames VisitCell method of ObjectVisitor to
      VisitCellPointer, so that VisitCell is free to be used for actually
      visiting a cell.
      
      BUG=chromium:709075
      
      Review-Url: https://codereview.chromium.org/2810653002
      Cr-Commit-Position: refs/heads/master@{#44860}
      c59f78f6
    • ulan's avatar
      Decouple root visitors from object visitors. · e671ed36
      ulan authored
      This patch adds a new interface called RootVisitor and changes the root
      iteration functions to accept a RootVisitor instead of an ObjectVisitor.
      
      Future CLs will change ObjectVisitor to provide the host object to all
      visiting functions, which will bring it in sync with static visitors.
      
      Having separate visitors for roots and objects removes ambiguity in
      VisitPointers and reduces chances of forgetting to record slots.
      
      This is intended as pure refactoring. All places that require behavior
      change are marked with TODO and will addressed in future CLs.
      
      BUG=chromium:709075
      
      Review-Url: https://codereview.chromium.org/2801073006
      Cr-Commit-Position: refs/heads/master@{#44852}
      e671ed36