From 651713e05ea095633324e1fec1df1a1270176c30 Mon Sep 17 00:00:00 2001 From: Philip Reames Date: Wed, 25 Feb 2015 23:22:43 +0000 Subject: [PATCH] [GC docs] Fill in description of the statepoint-example GC strategy git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230572 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/GarbageCollection.rst | 18 +++++++++++++++--- docs/Statepoints.rst | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/GarbageCollection.rst b/docs/GarbageCollection.rst index d9ae6c1b505..5d1588a7fe4 100644 --- a/docs/GarbageCollection.rst +++ b/docs/GarbageCollection.rst @@ -386,8 +386,8 @@ greater performance impact since pointer reads are more frequent than writes. .. _plugin: -Built In Collectors -==================== +Built In GC Strategies +====================== LLVM includes built in support for several varieties of garbage collectors. @@ -501,7 +501,19 @@ The Statepoint Example GC F.setGC("statepoint-example"); This GC provides an example of how one might use the infrastructure provided -by ``gc.statepoint``. +by ``gc.statepoint``. This example GC is compatible with the +:ref:`PlaceSafepoints` and :ref:`RewriteStatepointsForGC` utility passes +which simplify ``gc.statepoint`` sequence insertion. If you need to build a +custom GC strategy around the ``gc.statepoints`` mechanisms, it is recommended +that you use this one as a starting point. + +This GC strategy does not support read or write barriers. As a result, these +intrinsics are lowered to normal loads and stores. + +The stack map format generated by this GC strategy can be found in the +:ref:`stackmap-section` using a format documented :ref:`here +`. This format is intended to be the standard +format supported by LLVM going forward. Custom GC Strategies diff --git a/docs/Statepoints.rst b/docs/Statepoints.rst index 5b584690cdd..e1e7d9b7d7a 100644 --- a/docs/Statepoints.rst +++ b/docs/Statepoints.rst @@ -322,6 +322,7 @@ A ``gc.relocate`` is modeled as a ``readnone`` pure function. It has no side effects since it is just a way to extract information about work done during the actual call modeled by the ``gc.statepoint``. +.. _statepoint-stackmap-format: Stack Map Format ================ -- 2.40.0