-
Bug
-
Resolution: Fixed
-
P4
-
1.1.6
-
1.1.6
-
x86
-
windows_95
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2020744 | 1.2.0 | Deepa Viswanathan | P4 | Resolved | Fixed | 1.2beta4 |
Name: diC59631 Date: 05/21/98
Category general:jit_symantec ?
I have encountered the following problem when using JDK1.1.6 and the
included JIT compiler on Windows95.
The following simplified code runs fine:
public class JITError {
public static void main(String argv[]) {
getX();
}
private static void getX() {
int x=0;
while (x!=0) {
try {
Class.forName("");
} catch (Exception ex) {
}
x--;
}
}
}
javap -c -private JITError
Method void getX()
0 iconst_0
1 istore_0
2 goto 18
5 ldc #1 <String "">
7 invokestatic #7 <Method java.lang.Class forName(java.lang.String)>
10 pop
11 goto 15
14 pop
15 iinc 0 -1
18 iload_0
19 ifne 5
22 return
Exception table:
from to target type
5 11 14 <Class java.lang.Exception>
------------------------------------------------------------------------
However with the following modification the JIT dll causes a windows error:
Now comment out the x-- line:
public class JITError {
public static void main(String argv[]) {
getX();
}
private static void getX() {
int x=0;
while (x!=0) {
try {
Class.forName("");
} catch (Exception ex) {
}
// x--;
}
}
}
javap -c -private JITError
Method void getX()
0 iconst_0
1 istore_0
2 goto 18
5 ldc #1 <String "">
7 invokestatic #7 <Method java.lang.Class forName(java.lang.String)>
10 pop
11 goto 18
14 pop
15 goto 18
18 iload_0
19 ifne 5
22 return
Exception table:
from to target type
5 11 14 <Class java.lang.Exception>
This causes the JIT Compiler error on windows 95:
JAVA caused an invalid page fault in
module SYMCJIT.DLL at 02cf:01f4704e.
Registers:
EAX=00000000 CS=02cf EIP=01f4704e EFLGS=00010293
EBX=01d90c24 SS=02d7 ESP=0063ed34 EBP=01d91b98
ECX=0063ee98 DS=02d7 ESI=01d9109c FS=0fdf
EDX=01d91a64 ES=02d7 EDI=01d9109c GS=0000
Bytes at CS:EIP:
39 70 04 74 04 8b d0 eb f5 8b 30 89 32 c7 00 00
Stack dump:
0063ee98 01f1091a 01d90c24 01d9109c 0063ee98 0063ee98 01d91f94 00000000 01d92688 0000005b 01d91c24 01f46f7e 01d91f94 0063ee98 01d91f84 0000005b
The only difference between the two sequencies of virtual code
is:
14 pop
15 iinc 0 -1
18 iload_0
which is ok and
14 pop
15 goto 18
18 iload_0
which fails. ie goto goes redundantly goes to the following command.
(Review ID: 30878)
======================================================================
- backported by
-
JDK-2020744 JIT fatal bug
- Resolved