llvm-6502/include/llvm/CodeGen
Gordon Henriksen 364caf0e19 Collector is the base class for garbage collection code generators.
This version enhances the previous patch to add root initialization
as discussed here:

http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070910/053455.html

Collector gives its subclasses control over generic algorithms:

  unsigned NeededSafePoints; //< Bitmask of required safe points.
  bool CustomReadBarriers;   //< Default is to insert loads.
  bool CustomWriteBarriers;  //< Default is to insert stores.
  bool CustomRoots;          //< Default is to pass through to backend.
  bool InitRoots;            //< If set, roots are nulled during lowering.

It also has callbacks which collectors can hook:

  /// If any of the actions are set to Custom, this is expected to
  /// be overriden to create a transform to lower those actions to
  /// LLVM IR.
  virtual Pass *createCustomLoweringPass() const;

  /// beginAssembly/finishAssembly - Emit module metadata as
  /// assembly code.
  virtual void beginAssembly(Module &M, std::ostream &OS,
                             AsmPrinter &AP,
                             const TargetAsmInfo &TAI) const;
  virtual void finishAssembly(Module &M,
                              CollectorModuleMetadata &CMM,
                              std::ostream &OS, AsmPrinter &AP,
                              const TargetAsmInfo &TAI) const;  

Various other independent algorithms could be implemented, but were
not necessary for the initial two collectors. Some examples are
listed here:

http://llvm.org/docs/GarbageCollection.html#collector-algos


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42466 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-29 02:13:43 +00:00
..
AsmPrinter.h Add a routine for emitting .file directives, for setting up 2007-09-24 20:58:13 +00:00
CallingConvLower.h propagate struct size and alignment of byval arguments to the DAG 2007-08-10 14:44:42 +00:00
Collector.h Collector is the base class for garbage collection code generators. 2007-09-29 02:13:43 +00:00
CollectorMetadata.h CollectorMetadata abstractly describes stack maps for a function. 2007-09-27 22:18:46 +00:00
Collectors.h My previous Registry.h header, as well as Collectors.h, which is the 2007-09-27 19:34:27 +00:00
DwarfWriter.h Landing pad-less eh for PPC. 2007-01-29 18:51:14 +00:00
ELFRelocation.h Implement review feedback. 2007-04-30 23:54:10 +00:00
FileWriters.h Fixed comments. 2007-02-08 06:05:08 +00:00
IntrinsicLowering.h Add explicit keywords. 2007-07-05 20:40:15 +00:00
LinkAllCodegenComponents.h Pluggable coalescers inplementation. 2007-09-06 16:18:45 +00:00
LiveInterval.h Constify to catch bugs. 2007-09-06 19:46:46 +00:00
LiveIntervalAnalysis.h Use pool allocator for all the VNInfo's to improve memory access locality. This reduces coalescing time on siod Mac OS X PPC by 35%. Also remove the back ptr from VNInfo to LiveInterval and other tweaks. 2007-09-05 21:46:51 +00:00
LiveVariables.h Remove isReg, isImm, and isMBB, and change all their users to use 2007-09-14 20:33:02 +00:00
MachineBasicBlock.h Fix misue of iterator pointing to erased object. Uncovered by 2007-06-29 02:45:24 +00:00
MachineCodeEmitter.h Allow target to specify alignment for function stub. 2006-11-16 20:04:54 +00:00
MachineConstantPool.h Add explicit keywords and remove spurious trailing semicolons. 2007-08-27 14:50:10 +00:00
MachineFrameInfo.h Fix prolific source of 'possible loss of data' warnings. 2007-04-27 14:43:05 +00:00
MachineFunction.h Add explicit keywords and remove spurious trailing semicolons. 2007-08-27 14:50:10 +00:00
MachineFunctionPass.h Make MachineFunctionPass::runOnFunction non-virtual. Subclasses override 2007-07-05 20:39:35 +00:00
MachineInstr.h Remove isReg, isImm, and isMBB, and change all their users to use 2007-09-14 20:33:02 +00:00
MachineInstrBuilder.h Fix 80 col violation. 2007-07-26 07:03:08 +00:00
MachineJumpTableInfo.h Add the 'explicit' keyword to several constructors that accept one 2007-03-23 18:44:11 +00:00
MachineLocation.h Add the 'explicit' keyword to several constructors that accept one 2007-03-23 18:44:11 +00:00
MachineModuleInfo.h explicit keywords. 2007-09-24 15:48:49 +00:00
MachinePassRegistry.h switch the sched unit map over to use a DenseMap instead of std::map. This 2007-02-03 01:34:13 +00:00
MachineRelocation.h Make enum-valued bitfield large enough to avoid interpretation as negative values in VC++. 2007-04-21 16:29:37 +00:00
MachORelocation.h New file for the MachORelocation structure. It doesn't have to be tied to the 2007-02-03 02:36:17 +00:00
Passes.h Pluggable coalescers inplementation. 2007-09-06 16:18:45 +00:00
RegAllocRegistry.h Breaking out specialized classes. 2006-08-02 12:27:50 +00:00
RegisterCoalescer.h Pluggable coalescers inplementation. 2007-09-06 16:18:45 +00:00
RegisterScavenging.h Add explicit keywords and remove spurious trailing semicolons. 2007-08-27 14:50:10 +00:00
RuntimeLibcalls.h Add sqrt and powi intrinsics for long double. 2007-09-28 01:08:20 +00:00
SchedGraphCommon.h Added an automatic cast to "std::ostream*" etc. from OStream. We then can 2006-12-17 05:15:13 +00:00
ScheduleDAG.h If two instructions are both two-address code, favors (schedule closer to 2007-09-28 22:32:30 +00:00
SchedulerRegistry.h Breaking out specialized classes. 2006-08-02 12:27:50 +00:00
SelectionDAG.h Yet another getTargetNode variant. 2007-09-12 23:39:49 +00:00
SelectionDAGISel.h If the source and destination pointers in an llvm.memmove are known 2007-08-27 16:26:13 +00:00
SelectionDAGNodes.h Merge DenseMapKeyInfo & DenseMapValueInfo into DenseMapInfo 2007-09-17 18:34:04 +00:00
SimpleRegisterCoalescing.h Pluggable coalescers inplementation. 2007-09-06 16:18:45 +00:00
SSARegMap.h rename DenseMap to IndexedMap. 2007-02-01 05:32:05 +00:00
ValueTypes.h Add MVT::fAny for overloading intrinsics on floating-point types. 2007-08-16 21:57:19 +00:00
ValueTypes.td Add MVT::fAny for overloading intrinsics on floating-point types. 2007-08-16 21:57:19 +00:00