50 #ifndef LLVM_IR_GCSTRATEGY_H
51 #define LLVM_IR_GCSTRATEGY_H
bool usesMetadata() const
If set, appropriate metadata tables must be emitted by the back-end (assembler, JIT, or otherwise).
bool UsesMetadata
If set, backend must emit metadata tables.
bool InitRoots
If set, roots are nulled during lowering.
A global registry used in conjunction with static constructors to make pluggable components (like tar...
PointKind
PointKind - Used to indicate whether the address of the call instruction or the address after the cal...
unsigned NeededSafePoints
Uses gc.statepoints as opposed to gc.roots, if set, none of the other options can be anything but the...
An analysis pass which caches information about the entire Module.
bool useStatepoints() const
Returns true if this strategy is expecting the use of gc.statepoints, and false otherwise.
Registry< GCStrategy > GCRegistry
Subclasses of GCStrategy are made available for use during compilation by adding them to the global G...
const std::string & getName() const
Return the name of the GC strategy.
virtual Optional< bool > isGCManagedPointer(const Type *Ty) const
If the type specified can be reliably distinguished, returns true for pointers to GC managed location...
bool customReadBarrier() const
By default, read barriers are replaced with simple load instructions.
bool CustomReadBarriers
Default is to insert loads.
bool CustomWriteBarriers
Default is to insert stores.
The instances of the Type class are immutable: once they are created, they are never changed...
bool initializeRoots() const
If set, gcroot intrinsics should initialize their allocas to null before the first use...
Instr is the return address of a call.
bool needsSafePoint(GC::PointKind Kind) const
True if the given kind of safe point is required.
bool needsSafePoints() const
True if safe points of any kind are required.
bool customRoots() const
By default, roots are left for the code generator so it can generate a stack map. ...
Module.h This file contains the declarations for the Module class.
bool CustomRoots
Default is to pass through to backend.
GCStrategy describes a garbage collector algorithm's code generation requirements, and provides overridable hooks for those needs which cannot be abstractly described.
bool customWriteBarrier() const
By default, write barriers are replaced with simple store instructions.
Instr is a call instruction.