<html>
    <head>
      <base href="https://bugs.llvm.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 - add pointer stack to improve garbage collection"
   href="https://bugs.llvm.org/show_bug.cgi?id=43101">43101</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>add pointer stack to improve garbage collection
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows NT
          </td>
        </tr>

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

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>-New Bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>pquiring@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>htmldeveloper@gmail.com, llvm-bugs@lists.llvm.org, neeilans@live.com, richard-llvm@metafoo.co.uk
          </td>
        </tr></table>
      <p>
        <div>
        <pre>To aid in garbage collection I think it could improve performance if C++ had a
second stack just for pointers.
The usual (rsp/rbp) would be for primitive types, return address, register
saves, etc.  But add a new stack (r12/r13) that would just hold pointer types.
Since these registers are preserved any function would preserve the stack.
Functions that use this second stack could have an attribute assigned to them.
  [[pointer_stack]] void my_function() {...}
The epilogue of these functions could also zero out the stack as they removed
locals, and the calling function must zero out arguments.
This would be one step closer to real-time GC.  Just need to figure out how to
deal with threads that 'move' pointers around.

Just an idea.

Thanks,</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>