[kaffe] NEWS: GNU Classpath's AWT/Swing now runs on KaffeVM.

Dalibor Topic robilad at kaffe.org
Mon Jun 7 06:20:05 PDT 2004


jserv at linux2.cc.ntu.edu.tw wrote:
> Due to big changes in GNU Classpath of 2004-05-31, I updated my tarball
> to adapt it accordingly. However, there are some notes to be mentioned:
> 
>   (1) javax/swing/JComponent.java uses holdsLock() method in 
>       java.lang.Thread to handle double-buffering, but Kaffe lacks it.
> 
>   (2) Java2D implementation in GNU Classpath makes use of much newer
>       version of Cairo, but the one shipped with some Linux ditributions
>       is a bit old.
> 
> In my tarball, remove-holdslock.diff solves the (1) and (2) can be fixed
> with fix-gtkcairopeer.diff. Another way to solve (1) is to implement it,
> but I have no idea how it should exactly be implemented, so that I did
> a dummy one[1].

Okay, I've implemented holdLock like this in pure java code:

public static boolean holdsLock(Object obj) {
  // use obj.notify to check if the current thread holds
  // the monitor of the object.
  // if it doesn't, notify will throw an exception.
  try {
    obj.notify();
    // okay, current thread holds lock
    return true;
  }
  catch (IllegalMonitorStateException e) {
    // it doesn't hold the lock
    return false;
  }
}

I believe it's correct, thought it's not optimal performance wise :)

cheers,
dalibor topic




More information about the kaffe mailing list