<html>
    <head>
      <base href="https://bugs.webkit.org/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - GC copy phase spans too many files"
   href="https://bugs.webkit.org/show_bug.cgi?id=149586">149586</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>GC copy phase spans too many files
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>WebKit
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>Other
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>Normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P2
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>JavaScriptCore
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>webkit-unassigned&#64;lists.webkit.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>fpizlo&#64;apple.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Current the GC copy phase has some code in HeapInlines.h that gets included into every file in WebKit, some code in Heap.cpp, some code in CopyVisitor.cpp, and some in CopyVisitorInlines.h.  Also, CopyVisitor has this peculiar idiom where you always use it by first instantiating it, then calling an init method, then doing things, then calling a tear-down method, and then calling some malloc method, and then destructing the CopyVisitor.  That's too complicated.

Part of the problem is that we have a fairly clever sharding work distribution algorithm that uses Heap as the place where we hold shared state.  We don't really have to do that.  Because we now use a lambda-based parallelism API (ParallelHelperPool), we could just have the state on the stack, and have all of the functionality in one place.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>