• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 import other.Mutant;
18 
19 /*
20  * Entry point and tests that are expected to succeed.
21  */
22 public class Main {
23 
24     /**
25      * Drives tests.
26      */
main(String[] args)27     public static void main(String[] args) {
28 
29         // Test static put/get
30         testStaticInt();
31         testStaticVolatileInt();
32         testStaticWide();
33         testStaticVolatileWide();
34         testStaticObject();
35         testStaticVolatileObject();
36         testStaticBoolean();
37         testStaticByte();
38         testStaticChar();
39         testStaticShort();
40 
41         // Test field put/get
42         JumboField fieldTest = new JumboField();
43         testFieldInt(fieldTest);
44         testFieldVolatileInt(fieldTest);
45         testFieldWide(fieldTest);
46         testFieldVolatileWide(fieldTest);
47         testFieldObject(fieldTest);
48         testFieldVolatileObject(fieldTest);
49         testFieldBoolean(fieldTest);
50         testFieldByte(fieldTest);
51         testFieldChar(fieldTest);
52         testFieldShort(fieldTest);
53 
54         // Test method invokes
55         JumboMethod methodTest = new JumboMethod();
56         methodTest.testMethods();
57 
58         // Test remaining jumbo instructions
59         // const-class/jumbo, check-cast/jumbo, instance-of/jumbo,
60         // new-instance/jumbo, new-array/jumbo, filled-new-array/jumbo
61         // throw-verification-error/jumbo
62         JumboRegister registerTest = new JumboRegister();
63         registerTest.testRegisters();
64     }
65 
66     // Test sput/jumbo & sget/jumbo
testStaticInt()67     public static void testStaticInt() {
68         int putInt = 0x12345678;
69         JumboStatic.testInt = putInt;
70         int getInt = JumboStatic.testInt;
71         if (putInt != getInt) {
72             System.out.println("Static put int: " + putInt +
73                 " does not match static get int: " + getInt);
74         }
75     }
76 
77     // Test sput-wide/jumbo & sget-wide/jumbo
testStaticWide()78     public static void testStaticWide() {
79         long putWide = 0xfedcba9876543210l;
80         JumboStatic.testWide = putWide;
81         long getWide = JumboStatic.testWide;
82         if (putWide != getWide) {
83             System.out.println("Static put wide: " + putWide +
84                 " does not match static get wide: " + getWide);
85         }
86     }
87 
88     // Test sput-object/jumbo & sget-object/jumbo
testStaticObject()89     public static void testStaticObject() {
90         Object putObject = new Object();
91         JumboStatic.testObject = putObject;
92         Object getObject = JumboStatic.testObject;
93         if (putObject != getObject) {
94             System.out.println("Static put object: " + putObject +
95                 " does not match static get object: " + getObject);
96         }
97     }
98 
99     // Test sput-volatile/jumbo & sget-volatile/jumbo
testStaticVolatileInt()100     public static void testStaticVolatileInt() {
101         int putInt = 0x12345678;
102         JumboStatic.testVolatileInt = putInt;
103         int getInt = JumboStatic.testVolatileInt;
104         if (putInt != getInt) {
105             System.out.println("Static put int: " + putInt +
106                 " does not match static get int: " + getInt);
107         }
108     }
109 
110     // Test sput-wide-volatile/jumbo & sget-wide-volatile/jumbo
testStaticVolatileWide()111     public static void testStaticVolatileWide() {
112         long putWide = 0xfedcba9876543210l;
113         JumboStatic.testVolatileWide = putWide;
114         long getWide = JumboStatic.testVolatileWide;
115         if (putWide != getWide) {
116             System.out.println("Static put wide: " + putWide +
117                 " does not match static get wide: " + getWide);
118         }
119     }
120 
121     // Test sput-object-volatile/jumbo & sget-object-volatile/jumbo
testStaticVolatileObject()122     public static void testStaticVolatileObject() {
123         Object putObject = new Object();
124         JumboStatic.testVolatileObject = putObject;
125         Object getObject = JumboStatic.testVolatileObject;
126         if (putObject != getObject) {
127             System.out.println("Static put object: " + putObject +
128                 " does not match static get object: " + getObject);
129         }
130     }
131 
132     // Test sput-boolean/jumbo & sget-boolean/jumbo
testStaticBoolean()133     public static void testStaticBoolean() {
134         boolean putBoolean = true;
135         JumboStatic.testBoolean = putBoolean;
136         boolean getBoolean = JumboStatic.testBoolean;
137         if (putBoolean != getBoolean) {
138             System.out.println("Static put boolean: " + putBoolean +
139                 " does not match static get boolean: " + getBoolean);
140         }
141     }
142 
143     // Test sput-byte/jumbo & sget-byte/jumbo
testStaticByte()144     public static void testStaticByte() {
145         byte putByte = 0x6D;
146         JumboStatic.testByte = putByte;
147         byte getByte = JumboStatic.testByte;
148         if (putByte != getByte) {
149             System.out.println("Static put byte: " + putByte +
150                 " does not match static get byte: " + getByte);
151         }
152     }
153 
154     // Test sput-char/jumbo & sget-char/jumbo
testStaticChar()155     public static void testStaticChar() {
156         char putChar = 0xE5;
157         JumboStatic.testChar = putChar;
158         char getChar = JumboStatic.testChar;
159         if (putChar != getChar) {
160             System.out.println("Static put char: " + putChar +
161                 " does not match static get char: " + getChar);
162         }
163     }
164 
165     // Test sput-short/jumbo & sget-short/jumbo
testStaticShort()166     public static void testStaticShort() {
167         short putShort = 0x7A3B;
168         JumboStatic.testShort = putShort;
169         short getShort = JumboStatic.testShort;
170         if (putShort != getShort) {
171             System.out.println("Static put short: " + putShort +
172                 " does not match static get short: " + getShort);
173         }
174     }
175 
176     // Test iput/jumbo & iget/jumbo
testFieldInt(JumboField fieldTest)177     public static void testFieldInt(JumboField fieldTest) {
178         int putInt = 0x12345678;
179         fieldTest.testInt = putInt;
180         int getInt = fieldTest.testInt;
181         if (putInt != getInt) {
182             System.out.println("Field put int: " + putInt +
183                 " does not match field get int: " + getInt);
184         }
185     }
186 
187     // Test iput-wide/jumbo & iget-wide/jumbo
testFieldWide(JumboField fieldTest)188     public static void testFieldWide(JumboField fieldTest) {
189         long putWide = 0xfedcba9876543210l;
190         fieldTest.testWide = putWide;
191         long getWide = fieldTest.testWide;
192         if (putWide != getWide) {
193             System.out.println("Field put wide: " + putWide +
194                 " does not match field get wide: " + getWide);
195         }
196     }
197 
198     // Test iput-object/jumbo & iget-object/jumbo
testFieldObject(JumboField fieldTest)199     public static void testFieldObject(JumboField fieldTest) {
200         Object putObject = new Object();
201         fieldTest.testObject = putObject;
202         Object getObject = fieldTest.testObject;
203         if (putObject != getObject) {
204             System.out.println("Field put object: " + putObject +
205                 " does not match field get object: " + getObject);
206         }
207     }
208 
209     // Test iput-volatile/jumbo & iget-volatile/jumbo
testFieldVolatileInt(JumboField fieldTest)210     public static void testFieldVolatileInt(JumboField fieldTest) {
211         int putInt = 0x12345678;
212         fieldTest.testVolatileInt = putInt;
213         int getInt = fieldTest.testVolatileInt;
214         if (putInt != getInt) {
215             System.out.println("Field put int: " + putInt +
216                 " does not match field get int: " + getInt);
217         }
218     }
219 
220     // Test iput-wide-volatile/jumbo & iget-wide-volatile/jumbo
testFieldVolatileWide(JumboField fieldTest)221     public static void testFieldVolatileWide(JumboField fieldTest) {
222         long putWide = 0xfedcba9876543210l;
223         fieldTest.testVolatileWide = putWide;
224         long getWide = fieldTest.testVolatileWide;
225         if (putWide != getWide) {
226             System.out.println("Field put wide: " + putWide +
227                 " does not match field get wide: " + getWide);
228         }
229     }
230 
231     // Test iput-object-volatile/jumbo & iget-object-volatile/jumbo
testFieldVolatileObject(JumboField fieldTest)232     public static void testFieldVolatileObject(JumboField fieldTest) {
233         Object putObject = new Object();
234         fieldTest.testVolatileObject = putObject;
235         Object getObject = fieldTest.testVolatileObject;
236         if (putObject != getObject) {
237             System.out.println("Field put object: " + putObject +
238                 " does not match field get object: " + getObject);
239         }
240     }
241 
242     // Test iput-boolean/jumbo & iget-boolean/jumbo
testFieldBoolean(JumboField fieldTest)243     public static void testFieldBoolean(JumboField fieldTest) {
244         boolean putBoolean = true;
245         fieldTest.testBoolean = putBoolean;
246         boolean getBoolean = fieldTest.testBoolean;
247         if (putBoolean != getBoolean) {
248             System.out.println("Field put boolean: " + putBoolean +
249                 " does not match field get boolean: " + getBoolean);
250         }
251     }
252 
253     // Test iput-byte/jumbo & iget-byte/jumbo
testFieldByte(JumboField fieldTest)254     public static void testFieldByte(JumboField fieldTest) {
255         byte putByte = 0x6D;
256         fieldTest.testByte = putByte;
257         byte getByte = fieldTest.testByte;
258         if (putByte != getByte) {
259             System.out.println("Field put byte: " + putByte +
260                 " does not match field get byte: " + getByte);
261         }
262     }
263 
264     // Test iput-char/jumbo & iget-char/jumbo
testFieldChar(JumboField fieldTest)265     public static void testFieldChar(JumboField fieldTest) {
266         char putChar = 0xE5;
267         fieldTest.testChar = putChar;
268         char getChar = fieldTest.testChar;
269         if (putChar != getChar) {
270             System.out.println("Field put char: " + putChar +
271                 " does not match field get char: " + getChar);
272         }
273     }
274 
275     // Test iput-short/jumbo & iget-short/jumbo
testFieldShort(JumboField fieldTest)276     public static void testFieldShort(JumboField fieldTest) {
277         short putShort = 0x7A3B;
278         fieldTest.testShort = putShort;
279         short getShort = fieldTest.testShort;
280         if (putShort != getShort) {
281             System.out.println("Field put short: " + putShort +
282                 " does not match field get short: " + getShort);
283         }
284     }
285 }
286 
287 class JumboStatic {
288     static int staticInt1;
289     static int staticInt2;
290     static int staticInt3;
291     static int staticInt4;
292     static int staticInt5;
293     static int staticInt6;
294     static int staticInt7;
295     static int staticInt8;
296     static int staticInt9;
297     static int staticInt10;
298     static int staticInt11;
299     static int staticInt12;
300     static int staticInt13;
301     static int staticInt14;
302     static int staticInt15;
303     static int staticInt16;
304     static int staticInt17;
305     static int staticInt18;
306     static int staticInt19;
307     static int staticInt20;
308     static int staticInt21;
309     static int staticInt22;
310     static int staticInt23;
311     static int staticInt24;
312     static int staticInt25;
313     static int staticInt26;
314     static int staticInt27;
315     static int staticInt28;
316     static int staticInt29;
317     static int staticInt30;
318     static int staticInt31;
319     static int staticInt32;
320     static int staticInt33;
321     static int staticInt34;
322     static int staticInt35;
323     static int staticInt36;
324     static int staticInt37;
325     static int staticInt38;
326     static int staticInt39;
327     static int staticInt40;
328     static int staticInt41;
329     static int staticInt42;
330     static int staticInt43;
331     static int staticInt44;
332     static int staticInt45;
333     static int staticInt46;
334     static int staticInt47;
335     static int staticInt48;
336     static int staticInt49;
337     static int staticInt50;
338 
339     static int     testInt;
340     static long    testWide;
341     static Object  testObject;
342     static boolean testBoolean;
343     static byte    testByte;
344     static char    testChar;
345     static short   testShort;
346     static volatile int     testVolatileInt;
347     static volatile long    testVolatileWide;
348     static volatile Object  testVolatileObject;
349 }
350 
351 class JumboField {
352     int fieldInt1;
353     int fieldInt2;
354     int fieldInt3;
355     int fieldInt4;
356     int fieldInt5;
357     int fieldInt6;
358     int fieldInt7;
359     int fieldInt8;
360     int fieldInt9;
361     int fieldInt10;
362     int fieldInt11;
363     int fieldInt12;
364     int fieldInt13;
365     int fieldInt14;
366     int fieldInt15;
367     int fieldInt16;
368     int fieldInt17;
369     int fieldInt18;
370     int fieldInt19;
371     int fieldInt20;
372     int fieldInt21;
373     int fieldInt22;
374     int fieldInt23;
375     int fieldInt24;
376     int fieldInt25;
377     int fieldInt26;
378     int fieldInt27;
379     int fieldInt28;
380     int fieldInt29;
381     int fieldInt30;
382     int fieldInt31;
383     int fieldInt32;
384     int fieldInt33;
385     int fieldInt34;
386     int fieldInt35;
387     int fieldInt36;
388     int fieldInt37;
389     int fieldInt38;
390     int fieldInt39;
391     int fieldInt40;
392     int fieldInt41;
393     int fieldInt42;
394     int fieldInt43;
395     int fieldInt44;
396     int fieldInt45;
397     int fieldInt46;
398     int fieldInt47;
399     int fieldInt48;
400     int fieldInt49;
401     int fieldInt50;
402 
403     int     testInt;
404     long    testWide;
405     Object  testObject;
406     boolean testBoolean;
407     byte    testByte;
408     char    testChar;
409     short   testShort;
410     volatile int     testVolatileInt;
411     volatile long    testVolatileWide;
412     volatile Object  testVolatileObject;
413 }
414 
415 class JumboMethodSuper {
testSuper()416     void testSuper() {
417         System.out.println("Invoked super");
418     }
419 }
420 
421 interface JumboMethodInterface {
testInterface()422     void testInterface();
423 }
424 
425 class JumboMethod extends JumboMethodSuper implements JumboMethodInterface {
meth1()426     void meth1() { }
meth2()427     void meth2() { }
meth3()428     void meth3() { }
meth4()429     void meth4() { }
meth5()430     void meth5() { }
meth6()431     void meth6() { }
meth7()432     void meth7() { }
meth8()433     void meth8() { }
meth9()434     void meth9() { }
meth10()435     void meth10() { }
meth11()436     void meth11() { }
meth12()437     void meth12() { }
meth13()438     void meth13() { }
meth14()439     void meth14() { }
meth15()440     void meth15() { }
meth16()441     void meth16() { }
meth17()442     void meth17() { }
meth18()443     void meth18() { }
meth19()444     void meth19() { }
meth20()445     void meth20() { }
meth21()446     void meth21() { }
meth22()447     void meth22() { }
meth23()448     void meth23() { }
meth24()449     void meth24() { }
meth25()450     void meth25() { }
meth26()451     void meth26() { }
meth27()452     void meth27() { }
meth28()453     void meth28() { }
meth29()454     void meth29() { }
meth30()455     void meth30() { }
meth31()456     void meth31() { }
meth32()457     void meth32() { }
meth33()458     void meth33() { }
meth34()459     void meth34() { }
meth35()460     void meth35() { }
meth36()461     void meth36() { }
meth37()462     void meth37() { }
meth38()463     void meth38() { }
meth39()464     void meth39() { }
meth40()465     void meth40() { }
meth41()466     void meth41() { }
meth42()467     void meth42() { }
meth43()468     void meth43() { }
meth44()469     void meth44() { }
meth45()470     void meth45() { }
meth46()471     void meth46() { }
meth47()472     void meth47() { }
meth48()473     void meth48() { }
meth49()474     void meth49() { }
meth50()475     void meth50() { }
476 
testMethods()477     void testMethods() {
478         testVirtual();
479         super.testSuper();
480         testDirect();
481         testStatic();
482         ((JumboMethodInterface) this).testInterface();
483     }
484 
testVirtual()485     void testVirtual() {
486         System.out.println("Invoked virtual");
487     }
488 
testSuper()489     void testSuper() {
490         System.out.println("Invoked base");
491     }
492 
testDirect()493     private void testDirect() {
494         System.out.println("Invoked direct");
495     }
496 
testStatic()497     static void testStatic() {
498         System.out.println("Invoked static");
499     }
500 
testInterface()501     public void testInterface() {
502         System.out.println("Invoked interface");
503     }
504 }
505 
506 class JumboRegister {
testRegisters()507     void testRegisters() {
508         // Create a bunch of registers
509         Class c1 = Thread.class;
510         Class c2 = Thread.class;
511         Class c3 = Thread.class;
512         Class c4 = Thread.class;
513         Class c5 = Thread.class;
514         Class c6 = Thread.class;
515         Class c7 = Thread.class;
516         Class c8 = Thread.class;
517         Class c9 = Thread.class;
518         Class c10 = Thread.class;
519         Class c11 = Thread.class;
520         Class c12 = Thread.class;
521         Class c13 = Thread.class;
522         Class c14 = Thread.class;
523         Class c15 = Thread.class;
524         Class c16 = Thread.class;
525         Class c17 = Thread.class;
526         Class c18 = Thread.class;
527         Class c19 = Thread.class;
528         Class c20 = Thread.class;
529         Class c21 = Thread.class;
530         Class c22 = Thread.class;
531         Class c23 = Thread.class;
532         Class c24 = Thread.class;
533         Class c25 = Thread.class;
534         Class c26 = Thread.class;
535         Class c27 = Thread.class;
536         Class c28 = Thread.class;
537         Class c29 = Thread.class;
538         Class c30 = Thread.class;
539         Class c31 = Thread.class;
540         Class c32 = Thread.class;
541         Class c33 = Thread.class;
542         Class c34 = Thread.class;
543         Class c35 = Thread.class;
544         Class c36 = Thread.class;
545         Class c37 = Thread.class;
546         Class c38 = Thread.class;
547         Class c39 = Thread.class;
548         Class c40 = Thread.class;
549         Class c41 = Thread.class;
550         Class c42 = Thread.class;
551         Class c43 = Thread.class;
552         Class c44 = Thread.class;
553         Class c45 = Thread.class;
554         Class c46 = Thread.class;
555         Class c47 = Thread.class;
556         Class c48 = Thread.class;
557         Class c49 = Thread.class;
558         Class c50 = Thread.class;
559         Class c51 = Thread.class;
560         Class c52 = Thread.class;
561         Class c53 = Thread.class;
562         Class c54 = Thread.class;
563         Class c55 = Thread.class;
564         Class c56 = Thread.class;
565         Class c57 = Thread.class;
566         Class c58 = Thread.class;
567         Class c59 = Thread.class;
568         Class c60 = Thread.class;
569         Class c61 = Thread.class;
570         Class c62 = Thread.class;
571         Class c63 = Thread.class;
572         Class c64 = Thread.class;
573         Class c65 = Thread.class;
574         Class c66 = Thread.class;
575         Class c67 = Thread.class;
576         Class c68 = Thread.class;
577         Class c69 = Thread.class;
578         Class c70 = Thread.class;
579         Class c71 = Thread.class;
580         Class c72 = Thread.class;
581         Class c73 = Thread.class;
582         Class c74 = Thread.class;
583         Class c75 = Thread.class;
584         Class c76 = Thread.class;
585         Class c77 = Thread.class;
586         Class c78 = Thread.class;
587         Class c79 = Thread.class;
588         Class c80 = Thread.class;
589         Class c81 = Thread.class;
590         Class c82 = Thread.class;
591         Class c83 = Thread.class;
592         Class c84 = Thread.class;
593         Class c85 = Thread.class;
594         Class c86 = Thread.class;
595         Class c87 = Thread.class;
596         Class c88 = Thread.class;
597         Class c89 = Thread.class;
598         Class c90 = Thread.class;
599         Class c91 = Thread.class;
600         Class c92 = Thread.class;
601         Class c93 = Thread.class;
602         Class c94 = Thread.class;
603         Class c95 = Thread.class;
604         Class c96 = Thread.class;
605         Class c97 = Thread.class;
606         Class c98 = Thread.class;
607         Class c99 = Thread.class;
608         Class c100 = Thread.class;
609         Class c101 = Thread.class;
610         Class c102 = Thread.class;
611         Class c103 = Thread.class;
612         Class c104 = Thread.class;
613         Class c105 = Thread.class;
614         Class c106 = Thread.class;
615         Class c107 = Thread.class;
616         Class c108 = Thread.class;
617         Class c109 = Thread.class;
618         Class c110 = Thread.class;
619         Class c111 = Thread.class;
620         Class c112 = Thread.class;
621         Class c113 = Thread.class;
622         Class c114 = Thread.class;
623         Class c115 = Thread.class;
624         Class c116 = Thread.class;
625         Class c117 = Thread.class;
626         Class c118 = Thread.class;
627         Class c119 = Thread.class;
628         Class c120 = Thread.class;
629         Class c121 = Thread.class;
630         Class c122 = Thread.class;
631         Class c123 = Thread.class;
632         Class c124 = Thread.class;
633         Class c125 = Thread.class;
634         Class c126 = Thread.class;
635         Class c127 = Thread.class;
636         Class c128 = Thread.class;
637         Class c129 = Thread.class;
638         Class c130 = Thread.class;
639         Class c131 = Thread.class;
640         Class c132 = Thread.class;
641         Class c133 = Thread.class;
642         Class c134 = Thread.class;
643         Class c135 = Thread.class;
644         Class c136 = Thread.class;
645         Class c137 = Thread.class;
646         Class c138 = Thread.class;
647         Class c139 = Thread.class;
648         Class c140 = Thread.class;
649         Class c141 = Thread.class;
650         Class c142 = Thread.class;
651         Class c143 = Thread.class;
652         Class c144 = Thread.class;
653         Class c145 = Thread.class;
654         Class c146 = Thread.class;
655         Class c147 = Thread.class;
656         Class c148 = Thread.class;
657         Class c149 = Thread.class;
658         Class c150 = Thread.class;
659         Class c151 = Thread.class;
660         Class c152 = Thread.class;
661         Class c153 = Thread.class;
662         Class c154 = Thread.class;
663         Class c155 = Thread.class;
664         Class c156 = Thread.class;
665         Class c157 = Thread.class;
666         Class c158 = Thread.class;
667         Class c159 = Thread.class;
668         Class c160 = Thread.class;
669         Class c161 = Thread.class;
670         Class c162 = Thread.class;
671         Class c163 = Thread.class;
672         Class c164 = Thread.class;
673         Class c165 = Thread.class;
674         Class c166 = Thread.class;
675         Class c167 = Thread.class;
676         Class c168 = Thread.class;
677         Class c169 = Thread.class;
678         Class c170 = Thread.class;
679         Class c171 = Thread.class;
680         Class c172 = Thread.class;
681         Class c173 = Thread.class;
682         Class c174 = Thread.class;
683         Class c175 = Thread.class;
684         Class c176 = Thread.class;
685         Class c177 = Thread.class;
686         Class c178 = Thread.class;
687         Class c179 = Thread.class;
688         Class c180 = Thread.class;
689         Class c181 = Thread.class;
690         Class c182 = Thread.class;
691         Class c183 = Thread.class;
692         Class c184 = Thread.class;
693         Class c185 = Thread.class;
694         Class c186 = Thread.class;
695         Class c187 = Thread.class;
696         Class c188 = Thread.class;
697         Class c189 = Thread.class;
698         Class c190 = Thread.class;
699         Class c191 = Thread.class;
700         Class c192 = Thread.class;
701         Class c193 = Thread.class;
702         Class c194 = Thread.class;
703         Class c195 = Thread.class;
704         Class c196 = Thread.class;
705         Class c197 = Thread.class;
706         Class c198 = Thread.class;
707         Class c199 = Thread.class;
708         Class c200 = Thread.class;
709         Class c201 = Thread.class;
710         Class c202 = Thread.class;
711         Class c203 = Thread.class;
712         Class c204 = Thread.class;
713         Class c205 = Thread.class;
714         Class c206 = Thread.class;
715         Class c207 = Thread.class;
716         Class c208 = Thread.class;
717         Class c209 = Thread.class;
718         Class c210 = Thread.class;
719         Class c211 = Thread.class;
720         Class c212 = Thread.class;
721         Class c213 = Thread.class;
722         Class c214 = Thread.class;
723         Class c215 = Thread.class;
724         Class c216 = Thread.class;
725         Class c217 = Thread.class;
726         Class c218 = Thread.class;
727         Class c219 = Thread.class;
728         Class c220 = Thread.class;
729         Class c221 = Thread.class;
730         Class c222 = Thread.class;
731         Class c223 = Thread.class;
732         Class c224 = Thread.class;
733         Class c225 = Thread.class;
734         Class c226 = Thread.class;
735         Class c227 = Thread.class;
736         Class c228 = Thread.class;
737         Class c229 = Thread.class;
738         Class c230 = Thread.class;
739         Class c231 = Thread.class;
740         Class c232 = Thread.class;
741         Class c233 = Thread.class;
742         Class c234 = Thread.class;
743         Class c235 = Thread.class;
744         Class c236 = Thread.class;
745         Class c237 = Thread.class;
746         Class c238 = Thread.class;
747         Class c239 = Thread.class;
748         Class c240 = Thread.class;
749         Class c241 = Thread.class;
750         Class c242 = Thread.class;
751         Class c243 = Thread.class;
752         Class c244 = Thread.class;
753         Class c245 = Thread.class;
754         Class c246 = Thread.class;
755         Class c247 = Thread.class;
756         Class c248 = Thread.class;
757         Class c249 = Thread.class;
758         Class c250 = Thread.class;
759         Class c251 = Thread.class;
760         Class c252 = Thread.class;
761         Class c253 = Thread.class;
762         Class c254 = Thread.class;
763         Class c255 = Thread.class;
764 
765         // Test const-class/jumbo
766         Class c256 = Thread.class;
767 
768         // Test check-cast/jumbo
769 
770         // Test instance-of/jumbo
771         boolean b1 = c1 instanceof Object;
772         if (!b1) System.out.println("instance-of/jumbo returned wrong result");
773 
774         // Test new-instance/jumbo
775         Object o1 = new Object();
776 
777         // Test new-array/jumbo
778         int[] a1 = new int[10];
779         a1[0] = 1;
780         a1[1] = 2;
781         a1[2] = 3;
782         a1[3] = 4;
783         a1[4] = 5;
784         a1[5] = 6;
785         a1[6] = 7;
786         a1[7] = 8;
787         a1[8] = 9;
788         a1[9] = 10;
789 
790         // Test filled-new-array/jumbo
791 
792         // Test throw-verification-error/jumbo
793         try {
794             MaybeAbstract ma = new MaybeAbstract();
795             System.err.println("ERROR: MaybeAbstract succeeded unexpectedly");
796         } catch (InstantiationError ie) {
797             System.out.println("Got expected InstantationError");
798         } catch (Exception ex) {
799             System.err.println("Got unexpected MaybeAbstract failure");
800         }
801         testMissingStuff();
802 
803         // Do something with those registers to force other ops to be jumbo
804         useRegs(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10);
805         useRegs(c11, c12, c13, c14, c15, c16, c17, c18, c19, c20);
806         useRegs(c21, c22, c23, c24, c25, c26, c27, c28, c29, c30);
807         useRegs(c31, c32, c33, c34, c35, c36, c37, c38, c39, c40);
808         useRegs(c41, c42, c43, c44, c45, c46, c47, c48, c49, c50);
809         useRegs(c51, c52, c53, c54, c55, c56, c57, c58, c59, c60);
810         useRegs(c61, c62, c63, c64, c65, c66, c67, c68, c69, c70);
811         useRegs(c71, c72, c73, c74, c75, c76, c77, c78, c79, c80);
812         useRegs(c81, c82, c83, c84, c85, c86, c87, c88, c89, c90);
813         useRegs(c91, c92, c93, c94, c95, c96, c97, c98, c99, c100);
814         useRegs(c101, c102, c103, c104, c105, c106, c107, c108, c109, c110);
815         useRegs(c111, c112, c113, c114, c115, c116, c117, c118, c119, c120);
816         useRegs(c121, c122, c123, c124, c125, c126, c127, c128, c129, c130);
817         useRegs(c131, c132, c133, c134, c135, c136, c137, c138, c139, c140);
818         useRegs(c141, c142, c143, c144, c145, c146, c147, c148, c149, c150);
819         useRegs(c151, c152, c153, c154, c155, c156, c157, c158, c159, c160);
820         useRegs(c161, c162, c163, c164, c165, c166, c167, c168, c169, c170);
821         useRegs(c171, c172, c173, c174, c175, c176, c177, c178, c179, c180);
822         useRegs(c181, c182, c183, c184, c185, c186, c187, c188, c189, c190);
823         useRegs(c191, c192, c193, c194, c195, c196, c197, c198, c199, c200);
824         useRegs(c201, c202, c203, c204, c205, c206, c207, c208, c209, c210);
825         useRegs(c211, c212, c213, c214, c215, c216, c217, c218, c219, c220);
826         useRegs(c221, c222, c223, c224, c225, c226, c227, c228, c229, c230);
827         useRegs(c231, c232, c233, c234, c235, c236, c237, c238, c239, c240);
828         useRegs(c241, c242, c243, c244, c245, c246, c247, c248, c249, c250);
829         useRegs(c251, c252, c253, c254, c255, c256, c256, c256, c256, c256);
830 
831         useRegs(b1);
832         useRegs(o1);
833         useRegs(a1);
834     }
835 
836     // Trigger more jumbo verification errors
testMissingStuff()837     static void testMissingStuff() {
838         Mutant mutant = new Mutant();
839 
840         try {
841             int x = mutant.disappearingField;
842         } catch (NoSuchFieldError nsfe) {
843             System.out.println("Got expected NoSuchFieldError");
844         }
845 
846         try {
847             int y = Mutant.disappearingStaticField;
848         } catch (NoSuchFieldError nsfe) {
849             System.out.println("Got expected NoSuchFieldError");
850         }
851 
852         try {
853             mutant.disappearingMethod();
854         } catch (NoSuchMethodError nsme) {
855             System.out.println("Got expected NoSuchMethodError");
856         }
857 
858         try {
859             Mutant.disappearingStaticMethod();
860         } catch (NoSuchMethodError nsme) {
861             System.out.println("Got expected NoSuchMethodError");
862         }
863     }
864 
useRegs(Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7, Object o8, Object o9, Object o10)865     void useRegs(Object o1, Object o2, Object o3, Object o4, Object o5,
866         Object o6, Object o7, Object o8, Object o9, Object o10) {
867     }
868 
useRegs(Object o1)869     void useRegs(Object o1) { }
useRegs(boolean b1)870     void useRegs(boolean b1) { }
871 }
872