What's happening with Jackpot?

The research project at Sun that I spend the most time on these days is called Jackpot. A good way to think of it is that it's a framework for building tools to do things like refactoring, lint checking, system analysis, ... and a broad range of large system manipulations. It's been getting really interesting.

I spent a recent couple of months working on moving methods from one class to another. This turns out to be a really hard problem. For example, say you had the following method:

static void f(T p) { if(p!=null) p.x++; }
And you wanted to move this into class T. The natural thing is to have what was parameter "p" become the new "this". The dumb transformation would be:
void f() { if(this!=null) x++; }
But "this" can never be null, so this should simplify to:
void f() { x++; }
The behavior with respect to null is now broken: f(a) is not the same as a.f() in the case where a is null.

Handling this correctly, along with many other cases, has provided lots of geek entertainment. Unfortunatly, it has also meant that it's still too shakey to release.

June 17, 2005