On Fri, 29 Aug 2003 13:12:10 +0000 (UTC) Riccardo <[EMAIL PROTECTED]> wrote:
Hi Riccardo, > I was able to build kaffe on Solaris/Sparc and regression testing > yielded 7 failed tests, > > CLTestConc.fail SoInterrupt.fail > GCTest.fail TestUnlock.fail > NetworkInterfaceTest.fail ThreadState.fail > NoClassDefTest.fail > > I attach those files! thanks for the testing ;) Looking at these tests, it occured to me that both jit and jit3 seem to have a problem with unlocking objects while dispatching an exception ?!?? When kaffe encounters a synchronized method somewhere on the stack while dispatching an exception, the monitor of that method has to be unlocked. In order to do this, kaffe calls unlockMutexIfHeld and passes the fp of the stack frame as the where parameter. However, this only works if the fp of the stack frame has also been passed as the where parameter to lockMutex when the method was called. The problem is, that the jit engine calls lockObject to lock a monitor, which passes anything but definitely not the fp of the synchronized method to lockMutex, which means that these monitors cannot be properly unlocked while dispatching the exception. To solve this, it seems that we would either have to invent a way to retrieve the fp of the current method or we'd have to add something like the HAVE_mon_enter in jit3 i386 to jit and the other architectures ? Greetings, Helmer _______________________________________________ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe