[LLVMdev] CollectorRegistry

Simon Ask Ulsnes vinterbleg at gmail.com
Sat Jul 26 09:14:34 PDT 2008


2008/7/26 Gordon Henriksen <gordonhenriksen at me.com>:
> I'm not sure the purpose of doing so—llvm::Collector (poorly named;
> I'm open to suggestions) exists only in the compiler, not at runtime
> in the compiled program. You should need access to it at runtime no
> more than you might need access to an instance of llvm::TargetMachine.

Maybe I don't understand the architecture correctly.

This means that the implementation of my collector's data structures
(in this case, a few heaps) is supposed to be independent on the
subclassed llvm::Collector?

I had initially implemented it as

class SimonCollector : public llvm::Collector
{
    public:
        // ... virtual methods from llvm::Collector

        void* allocate(...) { /* my allocator */ }
        void collect() { /* ... */ }
        // etc.
};

but actually allocate, collect, etc. aren't supposed to be there, but
in some separate structure that is accessed by both my llvm::Collector
subclass (or rather, the assembly generated in the lowering passes)
and llvm_gc_*?

If that is the case, then I agree, it's a poor name -- at least it got
me confused. :-P
It's hard to come up with good alternatives, though. Hmm.

I looked a bit at the ShadowStackCollector class, and suddenly it
makes much more sense. But I fail to find any implementations of
llvm_gc_allocate and friends?

- Simon




More information about the llvm-dev mailing list