Here are some links to papers with relevance to the implementation of the graph coloring register allocator in C2. The first couple are overviews and generally describe the algorithm in use, which would a Chaitin-Briggs style allocator with optimistic coloring.
Register allocation & spilling via graph coloring
Coloring heuristics for register allocation
Improvements to Graph Coloring Register Allocation
These two papers describe some improvement to spill placement that might be an interesting future addition to the allocator.
Live Range Splitting in a Graph Coloring Register Allocator