X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FGarbageCollection.html;h=91768f1e53397a3a2851ae231b947c83f262e7a8;hb=17183ab9737ef0e9933486b8138ab6d1e7efb1f7;hp=c9324859ba9457b23f24df9a2f3f00f609959246;hpb=0adede059ed76940700195342bb5b02c79e58516;p=oota-llvm.git diff --git a/docs/GarbageCollection.html b/docs/GarbageCollection.html index c9324859ba9..91768f1e533 100644 --- a/docs/GarbageCollection.html +++ b/docs/GarbageCollection.html @@ -151,7 +151,7 @@ support accurate garbage collection.

LLVM's intermediate representation provides garbage -collection intrinsics which offer support for a broad class of +collection intrinsics that offer support for a broad class of collector models. For instance, the intrinsics permit:

@@ -1094,8 +1094,8 @@ bool MyCollector::performCustomLowering(Function &F) { bool MadeChange = false; for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB) - for (BasicBlock::iterator II = BB->begin(), E = BB->end(); II != E; ++II) - if (IntrinsicInst *CI = dyn_cast<IntrinsicInst>(II)) + for (BasicBlock::iterator II = BB->begin(), E = BB->end(); II != E; ) + if (IntrinsicInst *CI = dyn_cast<IntrinsicInst>(II++)) if (Function *F = CI->getCalledFunction()) switch (F->getIntrinsicID()) { case Intrinsic::gcwrite: @@ -1329,7 +1329,7 @@ href="#gcdescriptors">where pointers are located in heap objects.

llvm_gc_collect functions. To do this, it will probably have to trace through the roots from the stack and understand the GC descriptors -for heap objects. Luckily, there are some example +for heap objects. Luckily, there are some example implementations available.

@@ -1366,7 +1366,7 @@ book-keeping is needed at all. This is common for Lisp-like languages.

The LLVM garbage collectors are capable of supporting all of these styles of language, including ones that mix various implementations. To do this, it allows the source-language to associate meta-data with the stack roots, and the heap tracing routines can propagate the +href="#gcroot">stack roots, and the heap tracing routines can propagate the information. In addition, LLVM allows the front-end to extract GC information in any form from a specific object pointer (this supports situations #1 and #3).