<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Trebuchet MS; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Trebuchet MS; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Trebuchet MS; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; ">As followups to this post, I will post a series of six patches which significantly improve LLVM's garbage collection support. These patches are not all fully independent, but I have broken them up into more digestible units for review.</span></span></span></div><div><br class="webkit-block-placeholder"></div><div><b>• gc-1-registry.patch (+288 lines)</b></div><div>My previous Registry.h header, as well as Collectors.h, which is the registry for dynamically-loaded garbage collectors.</div><div><br class="webkit-block-placeholder"></div><div><b>• gc-2-metadata.patch (+303 lines)</b></div><div><font class="Apple-style-span" face="Courier">CollectorMetadata</font> is the data structure populated by back-ends during code-generation.</div><div><br class="webkit-block-placeholder"></div><div><b>• gc-3-collector.patch (+401 lines)</b></div><div><font class="Apple-style-span" face="Courier">Collector</font> is the base class for garbage collector code generators. It provides its subclasses with both static configuration and callbacks through which they can exert its will upon all relevant stages of code generation.</div><div><br class="webkit-block-placeholder"></div><div><b>• gc-4-integration.patch (+113, -17 lines)</b></div><div>In this patch, <font class="Apple-style-span" face="Courier">Collector</font> winds its tendrils throughout the compiler. Overhead should be minimal when disabled.</div><div><br class="webkit-block-placeholder"></div><div><b>• gc-5-shadowstack.patch (+59, -406 lines)</b></div><div>With this patch, the <font class="Apple-style-span" face="Courier">LowerGC</font> transformation is adapted to become the <font class="Apple-style-span" face="Courier">ShadowStackCollector</font>.</div><div><br class="webkit-block-placeholder"></div><div><b>• gc-6-ocaml.patch (+190 lines)</b></div><div>Finally, the new <font class="Apple-style-span" face="Courier">OcamlCollector</font> emits the Ocaml frametable data structure and related symbols.</div><div><br class="webkit-block-placeholder"></div><div>Hopefully I can get feedback so that this can be rolled into 2.2 early in the development cycle. </div><div><br class="webkit-block-placeholder"></div><div>— Gordon</div><div> </div><div><br></div></body></html>