aot compiler halts when there exists an infinite loop in clinit()
Yuting Chen
chenyt.cs.sjtu at gmail.com
Tue Apr 18 01:14:32 UTC 2017
Hi, I recently met a problem: when I tried to compile a class whose
clinit method contains an infinite loop, the aotc waits and fails to
response....
It seems that the aotc performs some static analysis before the
compilation, while the analysis may not stop (when an infinite loop is
there).
The bytecode is shown as follows:
public class Vector1
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Utf8 Vector1
#2 = Class #1 // Vector1
#3 = Utf8 java/lang/Object
#4 = Class #3 // java/lang/Object
#5 = Utf8 serialVersionUID
#6 = Utf8 J
#7 = Long -2767605614048989439l
#9 = Utf8 <clinit>
#10 = Utf8 ()V
#11 = NameAndType #5:#6 // serialVersionUID:J
#12 = Fieldref #2.#11 // Vector1.serialVersionUID:J
#13 = Utf8 main
#14 = Utf8 ([Ljava/lang/String;)V
#15 = Utf8 ConstantValue
#16 = Utf8 Code
#17 = Utf8 StackMapTable
{
public static {};
descriptor: ()V
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc2_w #7 // long -2767605614048989439l
3: putstatic #12 // Field serialVersionUID:J
6: iconst_1
7: iconst_m1
8: iadd
9: ifge 0
12: return
StackMapTable: number_of_entries = 1
frame_type = 0 /* same */
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=0, locals=1, args_size=1
0: return
}
More information about the jdk9-dev
mailing list