aot compiler halts when there exists an infinite loop in clinit()

Yuting Chen chenyt.cs.sjtu at gmail.com
Tue Apr 18 16:42:51 UTC 2017


Hi, are there any comments to this case? I found that the clinit
method will be compiled if it does not contain the infinite loop. It's
weird.

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 hotspot-compiler-dev mailing list