aot compiler halts when there exists an infinite loop in clinit()
Yuting Chen
chenyt.cs.sjtu at gmail.com
Wed Apr 19 16:47:26 UTC 2017
The compiler can itself be a jvm, :)
I'd expect that some timeout messages will be reported (a quick
patch?). I compiled some pieces of bytecode and waited for the whole
night...
Regards,
Yuting
On Wed, Apr 19, 2017 at 2:23 AM, Peter Levart <peter.levart at gmail.com> wrote:
> <joke-mode>
> Assuming your hunch is correct, I would call this a feature, not a bug.
> Isn't it better when compilation of a program loops infinitely than when the
> program loops infinitely at runtime? :-)
> </joke-mode>
>
> Regards, Peter
>
>
> On 04/18/2017 03:14 AM, Yuting Chen wrote:
>>
>> 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