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.

• gc-1-registry.patch (+288 lines)
My previous Registry.h header, as well as Collectors.h, which is the registry for dynamically-loaded garbage collectors.

• gc-2-metadata.patch (+303 lines)
CollectorMetadata is the data structure populated by back-ends during code-generation.

• gc-3-collector.patch (+401 lines)
Collector 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.

• gc-4-integration.patch (+113, -17 lines)
In this patch, Collector winds its tendrils throughout the compiler. Overhead should be minimal when disabled.

• gc-5-shadowstack.patch (+59, -406 lines)
With this patch, the LowerGC transformation is adapted to become the ShadowStackCollector.

• gc-6-ocaml.patch (+190 lines)
Finally, the new OcamlCollector emits the Ocaml frametable data structure and related symbols.

Hopefully I can get feedback so that this can be rolled into 2.2 early in the development cycle.

— Gordon

_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to