These are the old pages from the weblog as they were published at Cornell. Visit for up-to-date entries.

September 23, 2003

SSCLI 2003 Conference Day 2 Report

Thursday (Sept. 18) started with a my presentation on the CLI benchmarking. After I have fixed a few errors I will post the slides here. The code will be posted as soon as I have reached agreement with the java people on the best way to solve the Floating Point overflow errors in the original benchmarks, hopefully later this week.

The next two presentations were on concurrency extensions to CLI based languages, both from ETH: The first by Raphael Guentensperger extends C# with the notion of activities en channels, where activities are independent concurrency units and channels the way to communicate between activities. Activities are autonomous and are blocked in an “await” statement waiting for tokens to arrive on a channel. The second presentation was on SCOOP by Piotr Nienaltowski and Volkan Arslan, both students of Bertrand Meyer. SCOOP is a concurrency extension based on 'design by contract” and other Eiffel constructs. In essence these two projects have similar goals.

The afternoon started with a presentation by Luis Vega, a student with Paulo Ferreira, on distributed garbage collection. Their system is largely based on reference visiting and SSP chains, but Luis also presented a novel reduction technique for finding distributed cycles.

The last presentation of the day was by Kapil Vaswani, which for me was the highlight of the whole conference, Kapil presented a level 1 and level 2 optimizing JIT. The system is based on the idea that we do not want to chance the base JIT compiler, as it is very fast in generating code, and any optimizations would introduce delays in start-up times. There is however nothing in the systems that prevents it from becoming the baseline JIT. During the level 1 phase existing code is analyzed and transformed from a stack machine architecture to a register based architecture, and a whole slew of optimizations is applied. During this phase profile logging calls are inserted into the code. If level 2 is enabled the profile information is enabled to find 'hot' methods, and profile information is used to do code inlining, loop unrolling and block reordering. Kapil gave a detailed, convincing presentation with descriptions of successes as well as failures, and the audience went away with a better understanding of technology as well as the problems.

Posted by Werner Vogels at September 23, 2003 02:17 PM