Mercurial > hg > graal-jvmci-8
comparison test/runtime/handlerInTry/HandlerInTry.jasm @ 22893:695017a614d5
8075118: JVM stuck in infinite loop during verification
Summary: keep a list of handlers to prevent the same handler from being scanned repeatedly.
Reviewed-by: dlong, dholmes
author | hseigel |
---|---|
date | Thu, 19 Mar 2015 08:55:50 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
22892:951689652d2c | 22893:695017a614d5 |
---|---|
1 /* | |
2 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. | |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
4 * | |
5 * This code is free software; you can redistribute it and/or modify it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
20 * or visit www.oracle.com if you need additional information or have any | |
21 * questions. | |
22 */ | |
23 | |
24 /* | |
25 * HandlerInTry contains a try block in a ctor whose handler is inside | |
26 * the same try block. The try block starts at line 74 (try t2;), ends at | |
27 * line 106 (endtry t2;), but its handler starts at line 101 (catch t2 #0;). | |
28 */ | |
29 super public class HandlerInTry | |
30 version 51:0 | |
31 { | |
32 | |
33 public static final synthetic Field ___transactionFactory_2002349702336125:"Ljava/lang/Object;"; | |
34 | |
35 public Method "<init>":"(Ljava/lang/Object;)V" | |
36 stack 5 locals 5 | |
37 { | |
38 invokestatic Method ThreadLocalTransaction.getThreadLocalTransaction:"()Ljava/lang/Object;"; | |
39 checkcast class java/lang/Object; | |
40 astore_2; | |
41 aload_2; | |
42 invokestatic Method TransactionLogicDonor.isActiveTransaction:"(Ljava/lang/Object;)Z"; | |
43 ifeq L21; | |
44 aload_0; | |
45 aload_1; | |
46 aload_2; | |
47 invokespecial Method "<init>":"(Ljava/lang/Object;Ljava/lang/Object;)V"; | |
48 return; | |
49 L21: stack_frame_type append; | |
50 locals_map class java/lang/Object; | |
51 aload_2; | |
52 getstatic Field ___transactionFactory_2002349702336125:"Ljava/lang/Object;"; | |
53 invokestatic Method TransactionLogicDonor.createTransaction:"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"; | |
54 astore_2; | |
55 aload_2; | |
56 iconst_1; | |
57 pop; | |
58 aload_2; | |
59 invokestatic Method ThreadLocalTransaction.setThreadLocalTransaction:"(Ljava/lang/Object;)V"; | |
60 try t0, t1; | |
61 aload_0; | |
62 aload_1; | |
63 aload_2; | |
64 invokespecial Method "<init>":"(Ljava/lang/Object;Ljava/lang/Object;)V"; | |
65 aload_2; | |
66 pop; | |
67 aconst_null; | |
68 astore_2; | |
69 endtry t0, t1; | |
70 invokestatic Method ThreadLocalTransaction.clearThreadLocalTransaction:"()V"; | |
71 pop; | |
72 goto L107; | |
73 catch t0 java/lang/Throwable; | |
74 try t2; | |
75 stack_frame_type full; | |
76 locals_map bogus, class java/lang/Object, class java/lang/Object; | |
77 stack_map class java/lang/Throwable; | |
78 astore_3; | |
79 aload_2; | |
80 pop; | |
81 aload_3; | |
82 instanceof class ControlFlowError; | |
83 ifeq L82; | |
84 new class java/lang/NullPointerException; | |
85 dup; | |
86 invokespecial Method java/lang/NullPointerException."<init>":"()V"; | |
87 athrow; | |
88 L82: stack_frame_type append; | |
89 locals_map class java/lang/Throwable; | |
90 aload_3; | |
91 instanceof class java/lang/Error; | |
92 ifeq L94; | |
93 aload_3; | |
94 checkcast class java/lang/Error; | |
95 athrow; | |
96 L94: stack_frame_type same; | |
97 aload_3; | |
98 checkcast class java/lang/Exception; | |
99 athrow; | |
100 catch t1 #0; | |
101 catch t2 #0; | |
102 stack_frame_type full; | |
103 locals_map bogus, class java/lang/Object, class java/lang/Object; | |
104 stack_map class java/lang/Throwable; | |
105 astore 4; | |
106 endtry t2; | |
107 invokestatic Method ThreadLocalTransaction.clearThreadLocalTransaction:"()V"; | |
108 aload 4; | |
109 athrow; | |
110 L107: stack_frame_type full; | |
111 locals_map class HandlerInTry, class java/lang/Object, null; | |
112 return; | |
113 } | |
114 | |
115 } // end Class HandlerInTry |