[PATCH] D119660: [llvm][doc] Update comments and documentation of custom stackmap formats in GC

Markus Böck via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 13 03:05:36 PST 2022


zero9178 created this revision.
zero9178 added reviewers: reames, apilipenko, cherry.
Herald added a subscriber: dexonsmith.
zero9178 requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Since https://reviews.llvm.org/D53892 it is possible to emit a custom stackmap by overwriting the `emitStackMaps` method of `GCMetadataPrinter`. That way even AOT compilers can generate a more efficient and more suitable format for their needs.

This patch updates documentation and stale comments in source code. In particular it removes the issue from the issue list in the Statepoints documentation and adjusts comments in GCStrategy.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D119660

Files:
  llvm/docs/Statepoints.rst
  llvm/include/llvm/IR/GCStrategy.h


Index: llvm/include/llvm/IR/GCStrategy.h
===================================================================
--- llvm/include/llvm/IR/GCStrategy.h
+++ llvm/include/llvm/IR/GCStrategy.h
@@ -38,9 +38,7 @@
 // When used with gc.statepoint, information about safepoint and roots can be
 // found in the binary StackMap section after code generation.  Safepoint
 // placement is currently the responsibility of the frontend, though late
-// insertion support is planned.  gc.statepoint does not currently support
-// custom stack map formats; such can be generated by parsing the standard
-// stack map section if desired.
+// insertion support is planned.
 //
 // The read and write barrier support can be used with either implementation.
 //
@@ -101,6 +99,11 @@
   }
   ///@}
 
+  /// If set, appropriate metadata tables must be emitted by the back-end
+  /// (assembler, JIT, or otherwise). The default stackmap information can be
+  /// found in the StackMap section as described in the documentation.
+  bool usesMetadata() const { return UsesMetadata; }
+
   /** @name GCRoot Specific Properties
    * These properties and overrides only apply to collector strategies using
    * GCRoot.
@@ -110,12 +113,6 @@
   /// True if safe points need to be inferred on call sites
   bool needsSafePoints() const { return NeededSafePoints; }
 
-  /// If set, appropriate metadata tables must be emitted by the back-end
-  /// (assembler, JIT, or otherwise). For statepoint, this method is
-  /// currently unsupported.  The stackmap information can be found in the
-  /// StackMap section as described in the documentation.
-  bool usesMetadata() const { return UsesMetadata; }
-
   ///@}
 };
 
@@ -126,7 +123,7 @@
 /// static GCRegistry::Add<CustomGC> X("custom-name",
 ///        "my custom supper fancy gc strategy");
 ///
-/// Note that to use a custom GCMetadataPrinter w/gc.roots, you must also
+/// Note that to use a custom GCMetadataPrinter, you must also
 /// register your GCMetadataPrinter subclass with the
 /// GCMetadataPrinterRegistery as well.
 using GCRegistry = Registry<GCStrategy>;
Index: llvm/docs/Statepoints.rst
===================================================================
--- llvm/docs/Statepoints.rst
+++ llvm/docs/Statepoints.rst
@@ -795,18 +795,6 @@
 <https://groups.google.com/forum/#!topic/llvm-dev/AE417XjgxvI>`_ for more
 detail.
 
-Support for alternate stackmap formats
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For some use cases, it is
-desirable to directly encode a final memory efficient stackmap format for
-use by the runtime.  This is particularly relevant for ahead of time
-compilers which wish to directly link object files without the need for
-post processing of each individual object file.  While not implemented
-today for statepoints, there is precedent for a GCStrategy to be able to
-select a customer GCMetataPrinter for this purpose.  Patches to enable
-this functionality upstream are welcome.
-
 Bugs and Enhancements
 =====================
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D119660.408247.patch
Type: text/x-patch
Size: 2998 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220213/dea944b5/attachment.bin>


More information about the llvm-commits mailing list