Skip to Content.
Sympa Menu

svadev - Re: [svadev] safecode

svadev AT lists.siebelschool.illinois.edu

Subject: Svadev mailing list

List archive

Re: [svadev] safecode


Chronological Thread 
  • From: John Criswell <criswell AT illinois.edu>
  • To: Daniel Huang <dehuang AT fas.harvard.edu>
  • Cc: svadev AT cs.illinois.edu
  • Subject: Re: [svadev] safecode
  • Date: Sat, 19 May 2012 11:11:07 -0500
  • List-archive: <http://lists.cs.uiuc.edu/pipermail/svadev>
  • List-id: <svadev.cs.uiuc.edu>

On 5/15/12 11:12 AM, Daniel Huang wrote: Ok thanks. Also, I can't get poolalloc release_27 to compile. According to the README, it is broken for LLVM 2.7. I'm wondering if this is indeed the case and should revert to release_26.
It should compile if you grab the release_27 branches of LLVM, SAFECode, and Poolalloc.  That said, we stopped using automatic pool allocation in LLVM 2.7 to try to make SAFECode more robust first.  However, I thought we had had it working to some degree before we began the move to LLVM 3.0 and the great refactoring to integrate into Clang.

Regarding LLVM 3.0, I have now gotten the type-safe load/store check elimination optimization and automatic pool allocation (APA) running within libLTO.  If you add the -DPOOLALLOC option to the compile command-line (by hacking Makefile.common), then it should be enabled.

The good news is that APA is transforming code.

The bad news is that:

1) The run-time library needs to be updated to support the poolalloc run-time functions (how we handle these changed when I refactored SAFECode to integrate with Clang).  Right now, you can transform code to be pool allocated, but you can't link it and run it.

2) I do not know how well APA is actually working.  It successfully transforms the flex lexer generator, but that's the only thing I've tried.

I think fixing the runtime should be simple; I'll take a look into that early next week.  In the meantime, you might want to take APA for a spin on the programs you want to compile to see if it crashes.

-- John T.


On Tue, May 15, 2012 at 1:10 AM, John Criswell <criswell AT illinois.edu> wrote:
On 5/14/12 8:19 PM, Daniel Huang wrote:
Hi SVAdev,

What is the most recent version of Safecode that has pool allocation and type-safety optimizations turned on?

I believe the last version was LLVM 2.7.  If you check out the release_27 branches of LLVM, SAFECode, and Poolalloc, you should get it.

However, the SAFECode integration with clang wasn't done for LLVM 2.7.  If you want to use SAFECode with LLVM 2.7, you'll have to link the entire program into a single bitcode file and run the sc tool on it (check the docs directory for information on the sc tool).


Also, when do you expect the most recent version to have those turned on.

The type-safety optimization could probably be turned on now since it won't break correct programs.  It won't be sound without poolalloc or garbage collection, but for debug mode, people probably won't care.

We have not made any plans yet on when we'll be working on poolalloc.  There are other optimizations which are easier to make robust that should help SAFECode's performance; this (and other obligations) are why poolalloc hasn't been worked on in awhile.

Since you need poolalloc for your work, I think what we can do is to try running it within libLTO at a higher optimization level so that it doesn't affect the average SAFECode user but is available for you (and other adventerous souls) to use.  I can try to look at that later this week or next week.

-- John T.


Regards,
Dan


_______________________________________________
svadev mailing list
svadev AT cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/svadev






Archive powered by MHonArc 2.6.16.

Top of Page