From: Godmar Back (gback@cs.utah.edu)
Date: Thu Dec 10 1998 - 19:58:58 EST
I saw the patch, applied it, but it didn't change anything.
I think the problem is now that we reenter the jitter, and clobber
maxStack and maxLocal, which are global.
Here's a trace:
verifyMethod 0x201030: java/lang/ClassLoader.findSystemClass
verifyMethod 0x201030: codeInfo = 0x3af648
tidyVerifyMethod 0x201030: clearing codeInfo 0x3af648
<JIT: java/lang/ClassLoader.findSystemClass(Ljava/lang/String;)Ljava/lang/Class; time 0ms (1656ms) @ 0x4e5f08>
verifyMethod 0x201030: java/lang/ClassLoader.resolveClass
verifyMethod 0x201030: codeInfo = 0x3af648
tidyVerifyMethod 0x201030: clearing codeInfo 0x3af648
<JIT: java/lang/ClassLoader.resolveClass(Ljava/lang/Class;)V time 0ms (1656ms) @ 0x4e5c88>
verifyMethod 0x201030: setup.decompressStream
verifyMethod 0x201030: codeInfo = 0x56e3f8
tidyVerifyMethod 0x201030: clearing codeInfo 0x56e3f8
<JIT: setup.decompressStream(Ljava/io/FileInputStream;)Ljava/io/InputStream; time 1ms (1657ms) @ 0x583da8>
verifyMethod 0x201030: installshield/jshield/runtime/CompressedInputStream.<init>
verifyMethod 0x201030: codeInfo = 0x584110
tidyVerifyMethod 0x201030: clearing codeInfo 0x584110
<JIT: installshield/jshield/runtime/CompressedInputStream.<init>()V time 0ms (1657ms) @ 0x513520>
verifyMethod 0x201030: installshield/jshield/runtime/CompressedInputStream.equals
verifyMethod 0x201030: codeInfo = 0x56e3f8
verifyMethod 0x201030: java/util/zip/Inflater.<clinit>
verifyMethod 0x201030: codeInfo = 0x3af648
tidyVerifyMethod 0x201030: clearing codeInfo 0x3af648
<JIT: java/util/zip/Inflater.<clinit>()V time 0ms (1657ms) @ 0x605e60>
stackno 6, maxStack 1, maxLocal 0
assertion "stackno <= maxStack+maxLocal" failed: file "../../../kaffe/kaffe/kaffevm/jit/machine.c", line 268
Basically, I think it's jitting
installshield/jshield/runtime/CompressedInputStream.equals (0x56e3f8)
with this meth:
$2 = {name = 0x5393d0, signature = 0x543a30, accflags = 0x8001, idx = 0x1,
stacksz = 0x3, localsz = 0x3, ncode = 0x471d5d, c = {ncode = {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ncode_start = 0x4e5f88, ncode_end = 0x38}, bcode = {code = 0x4e5f88,
codelen = 0x38}}, class = 0x512420, lines = 0x5124e0,
exception_table = 0x0, ndeclared_exceptions = 0x0, declared_exceptions = 0x0}
then it all the sudden starts jitting java/util/zip/Inflater, which
clobbers its maxStack/maxLocal with 1/0, respective, and voila.
I now see what Tim might have been referring to: if we didn't COMPLETE
the class from when we load it, we wouldn't need the jitter here, and it
would ``work.''
Obviously, the proper solution is to make the jit state invocation
specific. We can always throw the few globals in codeinfo*.
Maybe I get to it after dinner.
Comments?
- Godmar
This archive was generated by hypermail 2b29 : Sat Sep 23 2000 - 19:57:11 EDT