Working on a C# compiler (MSIL to native code) and associated runtime system. This compiler and runtime system is the research vehicle for current work.
Worked on the Marmot java compiler, and in particular on the program analyses to be used by the compiler. The goal was to produce a Java compiler producing high-performance code for large Java programs.
Helped build a system to provide programmatic access to C and C++ programs. Besides providing our group easy access to real applications, it also provides a foundation for various people to write interesting programming and testing tools.
Pointer analyses using dataflow methods may be impractical for realistic size programs. The use of types and type inference methods to perform program analyses may be the solution. In particular, I am investigating the use of type systems without union types.
The type inference based first pointer analysis algorithm I developed is described in a technical report. An improved algorithm including a simultaneous non-pointer analysis is described in a POPL'96 paper. An algorithm dealing with individual elements of structured objects in the presence of arbitrary data coercions by unions or casts of pointers to structures is described in a CC'96 paper.
I have also worked on pointer analysis algorithms based on intersection types (a polymorphic/polyvariant/context-sensitive analysis) and multi-level types, as well as a type inference algorithm with an initial typing based on optimistic SSA-form with dynamic fixup of the SSA-form. None of this is presently published.
I developed the concept of store splitting. Store splitting makes a program representation more sparse. It was initially developed for the Value Dependence Graph (VDG), but it can also be used for SSA form. Erik Ruf demonstrated how points-to analysis by data-flow analysis can be performed faster using stores-splitting techniques (POPL'97 paper).