[LLVMdev] GC patches again

Chris Lattner clattner at apple.com
Fri Nov 30 11:40:53 PST 2007

>> Attached. This makes the last change set compatible with the new  
>> hand-written lexer—a whole one line change!
>> See the readme file in the zip archive.

Hi Gordon, here's some feedback:

   include/llvm/Support/StringPool.h (+124)
   lib/Support/StringPool.cpp (+52)
A reference-counted string interning facility. Will be used by the
next patch.

This implementation is not as fast as it could be, I'd suggest  
switching to using StringMap<char> (char being a dummy).  However,  
this is a fine starting point, the implementation can be tuned later.

About the interface:

+    PooledStringPtr intern(const std::string &Str);

Instead of taking an std::string, please provide two versions:

     PooledStringPtr intern(const char *StrStart, const char *StrEnd);
     PooledStringPtr intern(const char *CStr) { return intern(CStr,  
CStr+strlen(CStr); }

This discourages string abuse/copying: std::string is not very  

Also, in PooledStringPtr, please make the accessor not return an  

//===-- gc-5-funattr.patch (+120 -47) -------------------------===//

Adds these methods to Function and makes corresponding changes to
assembly and bitcode:
The assembly representation is as such:

   define void @f() gc "shadow-stack" { ...

Uses StringPool to unique collector names, which are extremely
likely to be unique per process.

This patch depends on gc-4-stringpool.

Can you please explain to me again why this is needed?  I'd like to  
avoid growing Function by another word for GC, is there another way?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20071130/dd723439/attachment.html>

More information about the llvm-dev mailing list