Skip to content

Commit

Permalink
[llvm][doc] Update comments and documentation of custom stackmap form…
Browse files Browse the repository at this point in the history
…ats in GC

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.

Differential Revision: https://reviews.llvm.org/D119660
  • Loading branch information
zero9178 committed Feb 15, 2022
1 parent 87de451 commit db8ae2f
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 22 deletions.
12 changes: 0 additions & 12 deletions llvm/docs/Statepoints.rst
Expand Up @@ -795,18 +795,6 @@ also has relocations. See `this llvm-dev discussion
<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
=====================

Expand Down
17 changes: 7 additions & 10 deletions llvm/include/llvm/IR/GCStrategy.h
Expand Up @@ -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.
//
Expand Down Expand Up @@ -101,6 +99,11 @@ class GCStrategy {
}
///@}

/// 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.
Expand All @@ -110,12 +113,6 @@ class GCStrategy {
/// 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; }

///@}
};

Expand All @@ -126,7 +123,7 @@ class GCStrategy {
/// 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>;
Expand Down

0 comments on commit db8ae2f

Please sign in to comment.