[LLVMdev] Segmented Stacks: Pre-midterm work

Sanjoy Das sanjoy at playingwithpointers.com
Mon Aug 15 13:19:07 PDT 2011


Hi!

I've been working on coroutines for some time, and it seems you were
right - it makes much more sense to have regular C (and assembly) code
for handling coroutines. For instance, I'd otherwise would have to
make an assumption about the threading model the platform has (or
assume there are no threads at all, which prevents me from allowing
goroutine like ("run parallel till you need to write to a channel")
behavior).

Right now I'm sort-of dogfooding my work by trying to get Go running
on dragonegg. I've discovered some small issues already (for instance
I need to save R10 somewhere when compiling a function with a nest
parameter). I'll send a revised set of patches within sometime this
week, addressing all such issues I can find.

That apart, about getting Go to work with dragonegg:

1. Does it sound viable?
2. What things do I need to keep in mind?

Currently, I'm passing `-fplugin=./dragonegg.so' to gccgo and have
edited dragonegg to enable segmented stacks when it detects the
language is "GNU Go". This seems to do what I expect (saving the fact
the binaries throw a mysterious SIGILL :) ).

Thanks!

-- 
Sanjoy Das
http://playingwithpointers.com



More information about the llvm-dev mailing list