[kaffe] kaffe m68k jit patch

Dalibor Topic robilad at yahoo.com
Tue May 6 05:59:01 PDT 2003


Hi Richard,

sorry about the long delay, I got buried in work[1] and had no time for kaffe
for two weeks. Ouch ;) I'm cross posting this to kaffe at kaffe.org to keep the
list updated as there is a lot of buzz around m68k at the moment.

--- Richard Zidlicky <rz at linux-m68k.org> wrote:

> > I'm not sure if that will work. You could re-run ./configure with an
> additional
> > --with-rt-jar=/path/to/the/downloaded/rt.jar and try if it works. Or, you
> could
> > just make -k install the thing, and copy the downloaded rt.jar in place
> > (path/to/installed-kaffe/jre/lib/rt.jar)
> 
> done a clean build, what surprised me a bit is that /path/rt.jar must 
> be an absolute path in the configure command..

hmm, is there a better way to do it? I'm quite new to the whole auto* tools
thing, and I'm still on the learning curve. ;)

> Btw does the CVS version ignore CFLAGS?

It shouldn't. But I believe that quite often it sets CFLAGS where it should set
AM_CFLAGS. Platform builds use config.frag files for platform specific settings
and often set CFLAGS directly. See
http://www.kaffe.org/cgi-bin/viewcvs.cgi/kaffe/config/m68k/linux/config.frag?rev=1.4&content-type=text/vnd.viewcvs-markup
 
> Attached regression test results, perhaps you can get some clues by
> comparing it with the old 1.0.6 results I have posted earlier
> (http://www.kaffe.org/pipermail/kaffe/2001-December/007541.html)?

Here's a diff of sorted FAIL lines:

--- 106.sorted  Tue May  6 14:44:46 2003
+++ 107.sorted  Tue May  6 14:44:55 2003
-FAIL: BeanBug.java
-FAIL: CatchDeath.java
-FAIL: CLTestConc.java
-FAIL: CLTestJLock.java
-FAIL: DosTimeVerify.java
-FAIL: DoubleComp.java
-FAIL: ExceptionInInitializerTest.java
-FAIL: GCTest.java
+FAIL: BufferedReaderTest.java
+FAIL: divtest.java
+FAIL: InternHog.java
+FAIL: LineNumberReaderTest.java
 FAIL: LostFrame.java
-FAIL: Preempt.java
-FAIL: ProcessClassInst.java
+FAIL: LostTrampolineFrame.java
+FAIL: PipeTest.java
 FAIL: ProcessClassLockTest.java
-FAIL: ProcessClassStop.java
+FAIL: ProcessTest.java
+FAIL: PropertiesTest.java
+FAIL: ReflectInvoke.java
+FAIL: SerializationCompatibility.java
 FAIL: SoInterrupt.java
 FAIL: SortTest.java
 FAIL: SoTimeout.java
 FAIL: StackDump.java
-FAIL: TestUnlock.java

It seems while a lot of bugs are fixed, new ones are introduced (and they seem
to be mostly related to the compiler throwing the illegal argument exception).
I think that the exception comes from some bug in register handling (flushing
?, floats?).

> Another detail that caught my attention is this:
>  #kaffe -jar TextEdit.jar copyright.txt 
>  kaffe-bin: machine.c:562: installMethodCode: Assertion `e->start_pc <=
> e->end_pc' failed.
>  Aborted (core dumped)
> 
> this means jit is used instead of jit3? What is the difference anyway,
> I am slightly confused about this.

kaffe -fullversion should tell you what engine it uses. You can specifuy the
engine on the configure line using --with-engine=jit3. I'm not sure what it
picks up by default on m68k-linux, but I'd guess it's jit3.

The difference: jit3 is the third generation jitter, apparently [2] newer,
fatser, better than the first generation jit. At least on i386, jit3 is
somewhat faster than jit. On m68k, jit is faster than jit3.

The major interesting thing about jit3 is that Tim Stack has done some nice
work on it in JanosVM that will get merged into kaffe eventually.

> Btw any experience installing it on a Redhatish system? Installation
> conflicts with "jdkgcj" package which defines /usr/bin/java. and
> possibly /usr/include/jni.h

I don't have a RedHat system around to test, I'll get me some ISOs and try. How
does the conflict show up?

cheers,
dalibor topic

[1] Setting up a build environment for our theorem prover using automake,
autoqt and cccl to build the thing under Cygwin with MS VC++ and Qt libs. I
shall try to do the same to kaffe, as it would make the merge with the WinCE
port much easier.
[2] All the groundbreaking things seem to have happened before I got involved
last year ;)

> 
> Making check in regression
> make[1]: Entering directory
> `/misc/sources/rz-rpm/BUILD/kaffe-1.0.8/test/regression'
> make  check-TESTS
> make[2]: Entering directory
> `/misc/sources/rz-rpm/BUILD/kaffe-1.0.8/test/regression'
> PASS: HelloWorldApp.class.save
> PASS: HelloWorldApp.java
> PASS: TestIntLong.java
> PASS: TestFloatDouble.java
> PASS: DoubleCvt.java
> PASS: DoubleNeg.java
> PASS: DoubleConst.java
> PASS: DoublePrint.java
> PASS: DoubleComp.java
> PASS: ModuloTest.java
> PASS: LongNeg.java
> PASS: FPUStack.java
> PASS: NegativeDivideConst.java
> FAIL: divtest.java
> PASS: Str.java
> PASS: Str2.java
> error compiling:
> java.lang.IllegalArgumentException
> 	at java.lang.Throwable.fillInStackTrace(Throwable.java:native)
> 	at java.lang.Throwable.<init>(Throwable.java:37)
> 	at java.lang.Exception.<init>(Exception.java:20)
> 	at java.lang.RuntimeException.<init>(RuntimeException.java:17)
> 	at
> java.lang.IllegalArgumentException.<init>(IllegalArgumentException.java:17)
> 	at java.util.HashMap.<init>(HashMap.java:71)
> 	at java.util.HashSet.<init>(HashSet.java:37)
> 	at at.dms.kjc.KjcClassReader.<init>(KjcClassReader.java:37)
> 	at at.dms.kjc.Main.createEnvironment(Main.java:232)
> 	at at.dms.kjc.Main.run(Main.java:116)
> 	at at.dms.kjc.Main.compile(Main.java:69)
> 	at at.dms.kjc.Main.main(Main.java:60)
> FAIL: InternHog.java
> PASS: IndexTest.java
> FAIL: StackDump.java
> PASS: CatchLimits.class.save
> PASS: tname.java
> PASS: ttest.java
> PASS: ThreadInterrupt.java
> PASS: ThreadState.java
> PASS: UncaughtException.java
> PASS: IllegalWait.java
> PASS: WaitTest.java
> PASS: Preempt.java
> PASS: TestSerializable.java
> PASS: TestSerializable2.java
> TestScript: line 4: 30046 Aborted                 (core dumped) $JAVA $*
> >$TMPRESULT 2>&1
> FAIL: SerializationCompatibility.java
> PASS: SerialPersistentFields.java
> PASS: TestSerialVersions.java
> PASS: TestSerialPersistent.java
> PASS: TestSerialFields.java
> PASS: TestObjectStreamField.java
> PASS: ReflectInterfaces.java
> PASS: InnerTest.java
> PASS: SerialUID.java
> PASS: TestCasts.java
> PASS: Alias.java
> PASS: NullPointerTest.java
> PASS: NullInvoke.java
> PASS: TableSwitch.java
> FAIL: LostFrame.java
> PASS: ConstructorTest.java
> PASS: burford.java
> PASS: IllegalInterface.java
> PASS: GetInterfaces.java
> PASS: IntfTest.java
> PASS: SignedShort.java
> PASS: CharCvt.java
> PASS: BadFloatTest.java
> TestScript: line 4: 31383 Aborted                 (core dumped) $JAVA $*
> >$TMPRESULT 2>&1
> FAIL: ProcessTest.java
> PASS: UDPTest.java
> TestScript: line 4: 31501 Aborted                 (core dumped) $JAVA $*
> >$TMPRESULT 2>&1
> FAIL: SoTimeout.java
> PASS: wc.java
> PASS: FileTest.java
> PASS: FileChecks.java
> PASS: finalexc.java
> PASS: finaltest.java
> PASS: finaltest2.java
> PASS: forNameTest.java
> PASS: LoaderTest.java
> PASS: ArrayForName.java
> PASS: KaffeVerifyBug.java
> PASS: Schtum.java
> PASS: Reflect.java
> PASS: MethodBug.java
> PASS: Bean.java
> FAIL: SortTest.java
> PASS: HashTest.java
> PASS: SecureRandomTest.java
> PASS: MapTest.java
> PASS: URLTest.java
> TestScript: line 4: 32699 Aborted                 (core dumped) $JAVA $*
> >$TMPRESULT 2>&1
> FAIL: PropertiesTest.java
> PASS: ReaderTest.java
> PASS: CharArrayReaderTest.java
> TestScript: line 4:   418 Aborted                 (core dumped) $JAVA $*
> >$TMPRESULT 2>&1
> FAIL: LineNumberReaderTest.java
> TestScript: line 4:   478 Aborted                 (core dumped) $JAVA $*
> >$TMPRESULT 2>&1
> FAIL: BufferedReaderTest.java
> PASS: ReaderReadVoidTest.java
> PASS: InputStreamTest.java
> TestScript: line 4:   662 Aborted                 (core dumped) $JAVA $*
> >$TMPRESULT 2>&1
> FAIL: PipeTest.java
> PASS: DateFormatTest.java
> PASS: GetField.java
> FAIL: LostTrampolineFrame.java
> PASS: NetworkInterfaceTest.java
> PASS: InetSocketAddressTest.java
> error compiling:
> java.lang.IllegalArgumentException
> 	at java.lang.Throwable.fillInStackTrace(Throwable.java:native)
> 	at java.lang.Throwable.<init>(Throwable.java:37)
> 	at java.lang.Exception.<init>(Exception.java:20)
> 	at java.lang.RuntimeException.<init>(RuntimeException.java:17)
> 	at
> java.lang.IllegalArgumentException.<init>(IllegalArgumentException.java:17)
> 	at java.util.HashMap.<init>(HashMap.java:71)
> 	at java.util.Hashtable.<init>(Hashtable.java:46)
> 	at at.dms.kjc.CBinaryClass.<init>(CBinaryClass.java:78)
> 	at at.dms.kjc.KjcClassReader.loadClass(KjcClassReader.java:57)
> 	at at.dms.kjc.CBinaryType.getCClass(CBinaryType.java:58)
> 	at at.dms.kjc.CReferenceType.isAssignableTo(CReferenceType.java:259)
> 	at at.dms.kjc.CReferenceType.isAssignableTo(CReferenceType.java:236)
> 	at at.dms.kjc.CReferenceType.isAssignableTo(CReferenceType.java:225)
> 	at at.dms.kjc.CReferenceType.isCheckedException(CReferenceType.java:390)
> 	at at.dms.kjc.JMethodCallExpression.analyse(JMethodCallExpression.java:139)
> 	at at.dms.kjc.JVariableDefinition.analyse(JVariableDefinition.java:134)
> 	at
>
at.dms.kjc.JVariableDeclarationStatement.analyse(JVariableDeclarationStatement.java:99)
> 	at at.dms.kjc.JBlock.analyse(JBlock.java:88)
> 	at at.dms.kjc.JTryCatchStatement.analyse(JTryCatchStatement.java:86)
> 	at at.dms.kjc.JBlock.analyse(JBlock.java:88)
> 	at at.dms.kjc.JMethodDeclaration.checkBody1(JMethodDeclaration.java:221)
> 	at at.dms.kjc.JClassDeclaration.checkTypeBody(JClassDeclaration.java:474)
> 	at at.dms.kjc.JCompilationUnit.checkBody(JCompilationUnit.java:248)
> 	at at.dms.kjc.Main.checkBody(Main.java:409)
> 	at at.dms.kjc.Main.run(Main.java:183)
> 	at at.dms.kjc.Main.compile(Main.java:69)
> 	at at.dms.kjc.Main.main(Main.java:60)
> FAIL: ReflectInvoke.java
> PASS: InvTarExcTest.java
> PASS: SystemLoaderTest.java
> PASS: NoClassDefTest.java
> PASS: CLTest.java
> PASS: CLTestConc.java
> PASS: CLTestJLock.java
> PASS: CLTestLie.java
> PASS: CLTestFindLoaded.java
> PASS: ClassDeadLock.java
> PASS: ExceptionTest.java
> PASS: ExceptionTestClassLoader.java
> PASS: ExceptionTestClassLoader2.java
> PASS: TestClassRef.java
> PASS: ClassGC.java
> PASS: GCTest.java
> PASS: ThreadLocalTest.java
> PASS: BeanBug.java
> PASS: BitSetTest.java
> PASS: ExceptionInInitializerTest.java
> PASS: InitTest.java
> PASS: CLInitThrow.java
> PASS: ProcessClassTest.java
> PASS: ProcessClassInst.java
> PASS: ProcessClassStop.java
> PASS: FindSystemClass.java
> FAIL: ProcessClassLockTest.java
> PASS: DoubleBug.java
> PASS: TestUnlock.java
> PASS: MarkResetTest.java
> PASS: HashtableTest1.java
> PASS: ReflectMultiArray.java
> PASS: ExecTest.java
> PASS: CatchDeath.java
> PASS: ThreadStop.java
> PASS: DeadThread.java
> PASS: tthrd1.java
> PASS: DosTimeVerify.java
> PASS: ZipVerify.java
> PASS: ZipTest.java
> PASS: TruncatedClass.java
> TestScript: line 4:  3418 Aborted                 (core dumped) $JAVA $*
> >$TMPRESULT 2>&1
> FAIL: SoInterrupt.java
> PASS: sysdepCallMethod.java
> PASS: TestNative.java
> ======================
> 16 of 132 tests failed
> ======================
> make[2]: *** [check-TESTS] Error 1
> make[2]: Leaving directory
> `/misc/sources/rz-rpm/BUILD/kaffe-1.0.8/test/regression'
> make[1]: *** [check-am] Error 2
> make[1]: Leaving directory
> `/misc/sources/rz-rpm/BUILD/kaffe-1.0.8/test/regression'
> make: *** [check-recursive] Error 1
> 


__________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo.
http://search.yahoo.com




More information about the kaffe mailing list