Archive for January, 2010

Paper: Mint: Java Multi-stage Programming Using Weak Separability

January 31st, 2010, 8:21 pm by Mathias

Mint: Java Multi-stage Programming Using Weak Separability

2010 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2010)

Multi-stage programming (MSP) provides a disciplined approach to run-time code generation. In the purely functional setting, it has been shown how MSP can be used to reduce the overhead of abstractions, allowing clean, maintainable code without paying performance penalties. Unfortunately, MSP is [...]

Print This Print This   Email This Email This

Java Bug 4396719 Work-Around?

January 31st, 2010, 12:00 pm by Mathias

It seems like I can get around the garbage collector bug if I use -XX:+UseConcMarkSweepGC JVM argument.

Now I’m having more Soot problems, but they actually make sense. In addition to being cross-platform, DrJava is also “cross-JDK version”: We support JDK versions 5 and 6 and OpenJDK version 6. In the past, we also supported JDK [...]

Print This Print This   Email This Email This

Soot Build Instructions

January 30th, 2010, 7:39 pm by Mathias

While trying to create a call graph of DrJava using Soot, I ran into some problems that were supposed to have been fixed in the Soot nightly builds already. Unfortunately, the nightly builds I could find were all many months old. So I built Soot from scratch from the Subversion repository, which wasn’t an easy [...]

Print This Print This   Email This Email This

A HotSpot Java Error, a Bus Error and a Segmentation Fault

January 30th, 2010, 3:10 pm by Mathias

When I run Soot to create a call graph of DrJava, I get the aforementioned HotSpot Java error on Windows with Java 1.6.0_18.

On Mac OS X 10.4 with Java 1.5.0_19, I get a “Bus error” (Java exit status 138). On Red Hat Enterprise Linux 5 with Java 1.6.0_18, I get a “Segmentation fault” (Java exit status [...]

Print This Print This   Email This Email This

Mint Paper Accepted to PLDI 2010

January 30th, 2010, 10:11 am by Mathias

I’m happy to report that our Mint paper “Mint: Java Multi-stage Programming Using Weak Separability” has been accepted to PLDI 2010 in Toronto!

I couldn’t find the deadline for submitting the camera-ready version yet, and the reviewer and referee comments aren’t final yet, but I’ll let you know once I know more.

The only disappointing issue is [...]

Print This Print This   Email This Email This

Subversion “obliterate”

January 29th, 2010, 2:28 pm by Mathias

Apparently, Subversion is adding support for an “obliterate” command that can delete a file completely, including from the revision history.

I once had to do this because I accidentally added a license file that needed to be kept private into the repository. I had quickly deleted the license file, but it was still available in the [...]

Print This Print This   Email This Email This

More Details on Soot and -allow-phantom-refs

January 29th, 2010, 11:24 am by Mathias

In the previous post I mentioned that I’m trying to create a call graph of all of DrJava using Soot. Since DrJava is a cross-platform application, there are classes that get compiled and used only on certain operating systems. The classes in the com.apple.eawt package, for instance, are only used on the Mac.

That means that [...]

Print This Print This   Email This Email This

Java Bug 4396719 – Mark Sweep stack overflow on deeply nested Object arrays

January 29th, 2010, 6:39 am by Mathias

I’m trying to create a call graph of all of DrJava using Soot. DrJava is a cross-platform application that has some classes that get compiled and used only on certain operating systems; for example, the com.apple.eawt package is only used on the Mac. That means that Soot doesn’t normally find these classes when generating the [...]

Print This Print This   Email This Email This

Sometimes I Love Myself

January 25th, 2010, 2:46 pm by Mathias

Sometimes I have those moments when something small that I did brings me tremendous joy.

This just happened when I was using DrJava with Soot. I don’t know the Soot framework, so the “Additional Javadoc URLs” feature that I introduced some time in 2009 comes in really handy.

I just entered “http://www.sable.mcgill.ca/soot/doc” as URL, and now I [...]

Print This Print This   Email This Email This

IT Hell

January 22nd, 2010, 4:40 pm by Mathias

Building emacs22 to replace emacs21, so I can install yasnippet, so I can install scala-tool-support, because I can’t install Eclipse since it requires Mac OS 10.5 and I only have 10.4 because Apple doesn’t support Java 6 on 32-bit Macs…

Sitting on a couch in the lobby at work, because my spiffy i7 Dell desktop runs [...]

Print This Print This   Email This Email This

Broken Things 2010

January 17th, 2010, 12:18 pm by Mathias

So far, it seems like 2010 is a year of broken things.

Mr. Coffee, my coffee maker, broke. I loved the guy, so I immediately replaced him with his younger brother.

The power supply fan in my Dell at home is close to dying. It makes a terrible, agonizing rattling sound. I bought a replacement power supply, [...]

Print This Print This   Email This Email This

Another Possible Improvement

January 12th, 2010, 5:04 pm by Mathias

On the other hand, I think I can re-enable checking if the event thread has finished and generating EventThreadStillProcessingErrors in the “update” Runnable that sets the test thread group the event thread uses, at least in certain cases.

It is possible that test A has generated the EventThreadStillProcessingError by putting a long Runnable aRunnable on the [...]

Print This Print This   Email This Email This

Another Possible Problem

January 12th, 2010, 4:29 pm by Mathias

I think I have just realized that this still isn’t good enough. Now we know that there aren’t any more events, but it is conceivable that a Runnable executing just before the token Runnable has started new threads. Those threads could fail, or add new “token” Runnables. It seems like the whole thing needs to [...]

Print This Print This   Email This Email This

New Release of ConcJUnit: 20100112

January 12th, 2010, 4:28 pm by Mathias

I’ve just made a new release of ConcJUnit: 20100112. This release contains an important addition that I had been thinking about for a while.

ConcJUnit already detected failures and uncaught exceptions in the event thread, but since the event thread is a daemon thread started by the system, it is not part of the “join” and [...]

Print This Print This   Email This Email This

Auto-Upgrade to WordPress 2.9

January 3rd, 2010, 1:50 am by Mathias

I just performed an WordPress auto-upgrade to version 2.9.

Version 2.9 requires MySQL version 4.1.2, and 1&1 was only running version 4.0.27. However, I found out that MySQL 5.0 is also running, so I needed to export the MySQL 4.0 database, create a new MySQL 5.0 database, and import the old data. The details of this, [...]

Print This Print This   Email This Email This