LLVM  9.0.0svn
Public Member Functions | Protected Attributes | Friends | List of all members
llvm::GCStrategy Class Reference

GCStrategy describes a garbage collector algorithm's code generation requirements, and provides overridable hooks for those needs which cannot be abstractly described. More...

#include "llvm/CodeGen/GCStrategy.h"

Collaboration diagram for llvm::GCStrategy:
Collaboration graph
[legend]

Public Member Functions

 GCStrategy ()
 
virtual ~GCStrategy ()=default
 
const std::string & getName () const
 Return the name of the GC strategy. More...
 
bool useStatepoints () const
 Returns true if this strategy is expecting the use of gc.statepoints, and false otherwise. More...
 
Statepoint Specific Properties
virtual Optional< boolisGCManagedPointer (const Type *Ty) const
 If the type specified can be reliably distinguished, returns true for pointers to GC managed locations and false for pointers to non-GC managed locations. More...
 
GCRoot Specific Properties

These properties and overrides only apply to collector strategies using GCRoot.

bool needsSafePoints () const
 True if safe points need to be inferred on call sites. More...
 
bool usesMetadata () const
 If set, appropriate metadata tables must be emitted by the back-end (assembler, JIT, or otherwise). More...
 

Protected Attributes

bool UseStatepoints = false
 
bool NeededSafePoints = false
 Uses gc.statepoints as opposed to gc.roots, if set, none of the other options can be anything but their default values. More...
 
bool UsesMetadata = false
 If set, backend must emit metadata tables. More...
 

Friends

class GCModuleInfo
 

Detailed Description

GCStrategy describes a garbage collector algorithm's code generation requirements, and provides overridable hooks for those needs which cannot be abstractly described.

GCStrategy objects must be looked up through the Function. The objects themselves are owned by the Context and must be immutable.

Definition at line 66 of file GCStrategy.h.

Constructor & Destructor Documentation

◆ GCStrategy()

GCStrategy::GCStrategy ( )
default

◆ ~GCStrategy()

virtual llvm::GCStrategy::~GCStrategy ( )
virtualdefault

Member Function Documentation

◆ getName()

const std::string& llvm::GCStrategy::getName ( ) const
inline

Return the name of the GC strategy.

This is the value of the collector name string specified on functions which use this strategy.

Definition at line 86 of file GCStrategy.h.

References Name.

Referenced by EmitCamlGlobal(), and llvm::AsmPrinter::isBlockOnlyReachableByFallthrough().

◆ isGCManagedPointer()

virtual Optional<bool> llvm::GCStrategy::isGCManagedPointer ( const Type Ty) const
inlinevirtual

If the type specified can be reliably distinguished, returns true for pointers to GC managed locations and false for pointers to non-GC managed locations.

Note a GCStrategy can always return 'None' (i.e. an empty optional indicating it can't reliably distinguish.

Definition at line 99 of file GCStrategy.h.

References llvm::None.

Referenced by lowerStatepointMetaArgs().

◆ needsSafePoints()

bool llvm::GCStrategy::needsSafePoints ( ) const
inline

True if safe points need to be inferred on call sites.

Definition at line 111 of file GCStrategy.h.

References NeededSafePoints.

◆ usesMetadata()

bool llvm::GCStrategy::usesMetadata ( ) const
inline

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.

Definition at line 117 of file GCStrategy.h.

References UsesMetadata.

Referenced by llvm::AsmPrinter::isBlockOnlyReachableByFallthrough().

◆ useStatepoints()

bool llvm::GCStrategy::useStatepoints ( ) const
inline

Returns true if this strategy is expecting the use of gc.statepoints, and false otherwise.

Definition at line 90 of file GCStrategy.h.

References UseStatepoints.

Friends And Related Function Documentation

◆ GCModuleInfo

friend class GCModuleInfo
friend

Definition at line 68 of file GCStrategy.h.

Member Data Documentation

◆ NeededSafePoints

bool llvm::GCStrategy::NeededSafePoints = false
protected

Uses gc.statepoints as opposed to gc.roots, if set, none of the other options can be anything but their default values.

if set, calls are inferred to be safepoints

Definition at line 77 of file GCStrategy.h.

Referenced by needsSafePoints().

◆ UsesMetadata

bool llvm::GCStrategy::UsesMetadata = false
protected

If set, backend must emit metadata tables.

Definition at line 78 of file GCStrategy.h.

Referenced by usesMetadata().

◆ UseStatepoints

bool llvm::GCStrategy::UseStatepoints = false
protected

Definition at line 73 of file GCStrategy.h.

Referenced by useStatepoints().


The documentation for this class was generated from the following files: