ReadyTalk/avian — pull request #171 by joshuawarner32 (2014-02-22 05:42:14+00:00)
Title: Flatten "vm" dir and split signal handling out of vm::System

These are some of the changes I've made during my compiler rewrite. I'd like to start merging non-breaking changes where possible, to avoid excess divergence.

I have three reasons for removing "vm" from header / source paths:
- It was inconsistent with the namespacing
- It was inconsistent between `include/vm/{system,heap,codegen}` and `{src/vm/system, src/{codegen,heap}}`
- In my branch I've started moving java-specific sources into src/jvm and include/jvm (so far, just compile.cpp and interpret.cpp), and it's a bit confusing to have both "vm" and "jvm"

For splitting out signal handling:
- It's one step toward reducing the godhood of System
- It removes the dependency of System on vmJump (on posix). This means we no longer need to link in the assembly code just to use System.

I'll note some small changes that are side-effects of how I'm doing the refactoring:
- In the couple places where I abort in SignalRegistrar, these are "real" aborts instead of calls to System::abort. Correct me if I'm wrong, but I don't think that anyone is actually using the ability to implement System::abort differently (say, with a longjmp). Doing so would currently require either exposing MySystem from windows.cpp and posix.cpp to embedders, or having embedders completely re-implement them. Also, I can't imagine ever hitting those particular aborts in production.
- The crash dump directory is set & handlers are registered slightly later, so theoretically we could have crashes that would have gotten dumped before but won't be now.

I've tested this with:
- {darwin,linux}: `make mode={fast,debug} process={compile,interpret} test`

Also, it builds on windows - but I have yet to test it. Please don't merge this until I do.