Source Code Cross Referenced for InstructionSequenceConstants.java in  » Development » proguard » proguard » optimize » peephole » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Development » proguard » proguard.optimize.peephole 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


0001:        /*
0002:         * ProGuard -- shrinking, optimization, obfuscation, and preverification
0003:         *             of Java bytecode.
0004:         *
0005:         * Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
0006:         *
0007:         * This program is free software; you can redistribute it and/or modify it
0008:         * under the terms of the GNU General Public License as published by the Free
0009:         * Software Foundation; either version 2 of the License, or (at your option)
0010:         * any later version.
0011:         *
0012:         * This program is distributed in the hope that it will be useful, but WITHOUT
0013:         * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0014:         * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
0015:         * more details.
0016:         *
0017:         * You should have received a copy of the GNU General Public License along
0018:         * with this program; if not, write to the Free Software Foundation, Inc.,
0019:         * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
0020:         */
0021:        package proguard.optimize.peephole;
0022:
0023:        import proguard.classfile.constant.*;
0024:        import proguard.classfile.instruction.*;
0025:        import proguard.classfile.util.InstructionSequenceMatcher;
0026:
0027:        /**
0028:         * This class contains a set of instruction sequences and their suggested
0029:         * replacements.
0030:         *
0031:         * @see InstructionSequencesReplacer
0032:         * @author Eric Lafortune
0033:         */
0034:        public class InstructionSequenceConstants {
0035:            public static final int X = InstructionSequenceMatcher.X;
0036:            public static final int Y = InstructionSequenceMatcher.Y;
0037:            public static final int Z = InstructionSequenceMatcher.Z;
0038:
0039:            public static final int A = InstructionSequenceMatcher.A;
0040:            public static final int B = InstructionSequenceMatcher.B;
0041:            public static final int C = InstructionSequenceMatcher.C;
0042:            public static final int D = InstructionSequenceMatcher.D;
0043:
0044:            private static final int I_32768 = 0;
0045:            private static final int I_65536 = 1;
0046:            private static final int I_16777216 = 2;
0047:
0048:            //  private static final int I_0x000000ff
0049:            private static final int I_0x0000ff00 = 3;
0050:            private static final int I_0x00ff0000 = 4;
0051:            private static final int I_0xff000000 = 5;
0052:            private static final int I_0x0000ffff = 6;
0053:            private static final int I_0xffff0000 = 7;
0054:
0055:            private static final int L_M1 = 8;
0056:            private static final int L_2 = 9;
0057:            private static final int L_4 = 10;
0058:            private static final int L_8 = 11;
0059:            private static final int L_16 = 12;
0060:            private static final int L_32 = 13;
0061:            private static final int L_64 = 14;
0062:            private static final int L_128 = 15;
0063:            private static final int L_256 = 16;
0064:            private static final int L_512 = 17;
0065:            private static final int L_1024 = 18;
0066:            private static final int L_2048 = 19;
0067:            private static final int L_4096 = 20;
0068:            private static final int L_8192 = 21;
0069:            private static final int L_16384 = 22;
0070:            private static final int L_32768 = 23;
0071:            private static final int L_65536 = 24;
0072:            private static final int L_16777216 = 25;
0073:            private static final int L_4294967296 = 26;
0074:
0075:            private static final int L_0x00000000ffffffff = 27;
0076:            private static final int L_0xffffffff00000000 = 28;
0077:
0078:            private static final int F_M1 = 29;
0079:
0080:            private static final int D_M1 = 30;
0081:
0082:            private static final int FIELD_I = 31;
0083:            private static final int FIELD_L = 32;
0084:            private static final int FIELD_F = 33;
0085:            private static final int FIELD_D = 34;
0086:
0087:            private static final int NAME_AND_TYPE_I = 35;
0088:            private static final int NAME_AND_TYPE_L = 36;
0089:            private static final int NAME_AND_TYPE_F = 37;
0090:            private static final int NAME_AND_TYPE_D = 38;
0091:
0092:            private static final int TYPE_I = 39;
0093:            private static final int TYPE_L = 40;
0094:            private static final int TYPE_F = 41;
0095:            private static final int TYPE_D = 42;
0096:
0097:            public static final Constant[] PATTERN_CONSTANTS = new Constant[] {
0098:                    new IntegerConstant(32768), new IntegerConstant(65536),
0099:                    new IntegerConstant(16777216),
0100:
0101:                    new IntegerConstant(0x0000ff00),
0102:                    new IntegerConstant(0x00ff0000),
0103:                    new IntegerConstant(0xff000000),
0104:                    new IntegerConstant(0x0000ffff),
0105:                    new IntegerConstant(0xffff0000),
0106:
0107:                    new LongConstant(-1L), new LongConstant(2L),
0108:                    new LongConstant(4L), new LongConstant(8L),
0109:                    new LongConstant(16L), new LongConstant(32L),
0110:                    new LongConstant(64L), new LongConstant(128L),
0111:                    new LongConstant(256L), new LongConstant(512L),
0112:                    new LongConstant(1024L), new LongConstant(2048L),
0113:                    new LongConstant(4096L), new LongConstant(8192L),
0114:                    new LongConstant(16384L), new LongConstant(32768L),
0115:                    new LongConstant(65536L), new LongConstant(16777216L),
0116:                    new LongConstant(4294967296L),
0117:
0118:                    new LongConstant(0x00000000ffffffffL),
0119:                    new LongConstant(0xffffffff00000000L),
0120:
0121:                    new FloatConstant(-1f),
0122:
0123:                    new DoubleConstant(-1d),
0124:
0125:                    new FieldrefConstant(X, NAME_AND_TYPE_I, null, null),
0126:                    new FieldrefConstant(X, NAME_AND_TYPE_L, null, null),
0127:                    new FieldrefConstant(X, NAME_AND_TYPE_F, null, null),
0128:                    new FieldrefConstant(X, NAME_AND_TYPE_D, null, null),
0129:
0130:                    new NameAndTypeConstant(Y, TYPE_I),
0131:                    new NameAndTypeConstant(Y, TYPE_L),
0132:                    new NameAndTypeConstant(Y, TYPE_F),
0133:                    new NameAndTypeConstant(Y, TYPE_D),
0134:
0135:                    new Utf8Constant("I"), new Utf8Constant("J"),
0136:                    new Utf8Constant("F"), new Utf8Constant("D"), };
0137:
0138:            public static final Instruction[][][] INSTRUCTION_SEQUENCES = new Instruction[][][] {
0139:                    { // nop = nothing
0140:                    { new SimpleInstruction(InstructionConstants.OP_NOP), }, {
0141:                    // Nothing.
0142:                            }, },
0143:                    { // i = i = nothing
0144:                            {
0145:                                    new VariableInstruction(
0146:                                            InstructionConstants.OP_ILOAD, X),
0147:                                    new VariableInstruction(
0148:                                            InstructionConstants.OP_ISTORE, X), },
0149:                            {
0150:                            // Nothing.
0151:                            }, },
0152:                    { // l = l = nothing
0153:                            {
0154:                                    new VariableInstruction(
0155:                                            InstructionConstants.OP_LLOAD, X),
0156:                                    new VariableInstruction(
0157:                                            InstructionConstants.OP_LSTORE, X), },
0158:                            {
0159:                            // Nothing.
0160:                            }, },
0161:                    { // f = f = nothing
0162:                            {
0163:                                    new VariableInstruction(
0164:                                            InstructionConstants.OP_FLOAD, X),
0165:                                    new VariableInstruction(
0166:                                            InstructionConstants.OP_FSTORE, X), },
0167:                            {
0168:                            // Nothing.
0169:                            }, },
0170:                    { // d = d = nothing
0171:                            {
0172:                                    new VariableInstruction(
0173:                                            InstructionConstants.OP_DLOAD, X),
0174:                                    new VariableInstruction(
0175:                                            InstructionConstants.OP_DSTORE, X), },
0176:                            {
0177:                            // Nothing.
0178:                            }, },
0179:                    { // a = a = nothing
0180:                            {
0181:                                    new VariableInstruction(
0182:                                            InstructionConstants.OP_ALOAD, X),
0183:                                    new VariableInstruction(
0184:                                            InstructionConstants.OP_ASTORE, X), },
0185:                            {
0186:                            // Nothing.
0187:                            }, },
0188:                    { // istore/istore = pop/istore
0189:                            {
0190:                                    new VariableInstruction(
0191:                                            InstructionConstants.OP_ISTORE, X),
0192:                                    new VariableInstruction(
0193:                                            InstructionConstants.OP_ISTORE, X), },
0194:                            {
0195:                                    new SimpleInstruction(
0196:                                            InstructionConstants.OP_POP),
0197:                                    new VariableInstruction(
0198:                                            InstructionConstants.OP_ISTORE, X), }, },
0199:                    { // lstore/lstore = pop2/lstore
0200:                            {
0201:                                    new VariableInstruction(
0202:                                            InstructionConstants.OP_LSTORE, X),
0203:                                    new VariableInstruction(
0204:                                            InstructionConstants.OP_LSTORE, X), },
0205:                            {
0206:                                    new SimpleInstruction(
0207:                                            InstructionConstants.OP_POP2),
0208:                                    new VariableInstruction(
0209:                                            InstructionConstants.OP_LSTORE, X), }, },
0210:                    { // fstore/fstore = pop/fstore
0211:                            {
0212:                                    new VariableInstruction(
0213:                                            InstructionConstants.OP_FSTORE, X),
0214:                                    new VariableInstruction(
0215:                                            InstructionConstants.OP_FSTORE, X), },
0216:                            {
0217:                                    new SimpleInstruction(
0218:                                            InstructionConstants.OP_POP),
0219:                                    new VariableInstruction(
0220:                                            InstructionConstants.OP_FSTORE, X), }, },
0221:                    { // dstore/dstore = pop2/dstore
0222:                            {
0223:                                    new VariableInstruction(
0224:                                            InstructionConstants.OP_DSTORE, X),
0225:                                    new VariableInstruction(
0226:                                            InstructionConstants.OP_DSTORE, X), },
0227:                            {
0228:                                    new SimpleInstruction(
0229:                                            InstructionConstants.OP_POP2),
0230:                                    new VariableInstruction(
0231:                                            InstructionConstants.OP_DSTORE, X), }, },
0232:                    { // astore/astore = pop/astore
0233:                            {
0234:                                    new VariableInstruction(
0235:                                            InstructionConstants.OP_ASTORE, X),
0236:                                    new VariableInstruction(
0237:                                            InstructionConstants.OP_ASTORE, X), },
0238:                            {
0239:                                    new SimpleInstruction(
0240:                                            InstructionConstants.OP_POP),
0241:                                    new VariableInstruction(
0242:                                            InstructionConstants.OP_ASTORE, X), }, },
0243:                    { // istore/iload = dup/istore
0244:                            {
0245:                                    new VariableInstruction(
0246:                                            InstructionConstants.OP_ISTORE, X),
0247:                                    new VariableInstruction(
0248:                                            InstructionConstants.OP_ILOAD, X), },
0249:                            {
0250:                                    new SimpleInstruction(
0251:                                            InstructionConstants.OP_DUP),
0252:                                    new VariableInstruction(
0253:                                            InstructionConstants.OP_ISTORE, X), }, },
0254:                    { // lstore/lload = dup2/lstore
0255:                            {
0256:                                    new VariableInstruction(
0257:                                            InstructionConstants.OP_LSTORE, X),
0258:                                    new VariableInstruction(
0259:                                            InstructionConstants.OP_LLOAD, X), },
0260:                            {
0261:                                    new SimpleInstruction(
0262:                                            InstructionConstants.OP_DUP2),
0263:                                    new VariableInstruction(
0264:                                            InstructionConstants.OP_LSTORE, X), }, },
0265:                    { // fstore/fload = dup/fstore
0266:                            {
0267:                                    new VariableInstruction(
0268:                                            InstructionConstants.OP_FSTORE, X),
0269:                                    new VariableInstruction(
0270:                                            InstructionConstants.OP_FLOAD, X), },
0271:                            {
0272:                                    new SimpleInstruction(
0273:                                            InstructionConstants.OP_DUP),
0274:                                    new VariableInstruction(
0275:                                            InstructionConstants.OP_FSTORE, X), }, },
0276:                    { // dstore/dload = dup2/dstore
0277:                            {
0278:                                    new VariableInstruction(
0279:                                            InstructionConstants.OP_DSTORE, X),
0280:                                    new VariableInstruction(
0281:                                            InstructionConstants.OP_DLOAD, X), },
0282:                            {
0283:                                    new SimpleInstruction(
0284:                                            InstructionConstants.OP_DUP2),
0285:                                    new VariableInstruction(
0286:                                            InstructionConstants.OP_DSTORE, X), }, },
0287:                    { // astore/aload = dup/astore
0288:                            {
0289:                                    new VariableInstruction(
0290:                                            InstructionConstants.OP_ASTORE, X),
0291:                                    new VariableInstruction(
0292:                                            InstructionConstants.OP_ALOAD, X), },
0293:                            {
0294:                                    new SimpleInstruction(
0295:                                            InstructionConstants.OP_DUP),
0296:                                    new VariableInstruction(
0297:                                            InstructionConstants.OP_ASTORE, X), }, },
0298:                    { // c + i = i + c
0299:                            {
0300:                                    new SimpleInstruction(
0301:                                            InstructionConstants.OP_ICONST_0, A),
0302:                                    new VariableInstruction(
0303:                                            InstructionConstants.OP_ILOAD, X),
0304:                                    new SimpleInstruction(
0305:                                            InstructionConstants.OP_IADD), },
0306:                            {
0307:                                    new VariableInstruction(
0308:                                            InstructionConstants.OP_ILOAD, X),
0309:                                    new SimpleInstruction(
0310:                                            InstructionConstants.OP_ICONST_0, A),
0311:                                    new SimpleInstruction(
0312:                                            InstructionConstants.OP_IADD), }, },
0313:                    { // b + i = i + b
0314:                            {
0315:                                    new SimpleInstruction(
0316:                                            InstructionConstants.OP_BIPUSH, A),
0317:                                    new VariableInstruction(
0318:                                            InstructionConstants.OP_ILOAD, X),
0319:                                    new SimpleInstruction(
0320:                                            InstructionConstants.OP_IADD), },
0321:                            {
0322:                                    new VariableInstruction(
0323:                                            InstructionConstants.OP_ILOAD, X),
0324:                                    new SimpleInstruction(
0325:                                            InstructionConstants.OP_BIPUSH, A),
0326:                                    new SimpleInstruction(
0327:                                            InstructionConstants.OP_IADD), }, },
0328:                    { // s + i = i + s
0329:                            {
0330:                                    new SimpleInstruction(
0331:                                            InstructionConstants.OP_SIPUSH, A),
0332:                                    new VariableInstruction(
0333:                                            InstructionConstants.OP_ILOAD, X),
0334:                                    new SimpleInstruction(
0335:                                            InstructionConstants.OP_IADD), },
0336:                            {
0337:                                    new VariableInstruction(
0338:                                            InstructionConstants.OP_ILOAD, X),
0339:                                    new SimpleInstruction(
0340:                                            InstructionConstants.OP_SIPUSH, A),
0341:                                    new SimpleInstruction(
0342:                                            InstructionConstants.OP_IADD), }, },
0343:                    { // c + i = i + c
0344:                            {
0345:                                    new ConstantInstruction(
0346:                                            InstructionConstants.OP_LDC, A),
0347:                                    new VariableInstruction(
0348:                                            InstructionConstants.OP_ILOAD, X),
0349:                                    new SimpleInstruction(
0350:                                            InstructionConstants.OP_IADD), },
0351:                            {
0352:                                    new VariableInstruction(
0353:                                            InstructionConstants.OP_ILOAD, X),
0354:                                    new ConstantInstruction(
0355:                                            InstructionConstants.OP_LDC, A),
0356:                                    new SimpleInstruction(
0357:                                            InstructionConstants.OP_IADD), }, },
0358:                    { // c * i = i * c
0359:                            {
0360:                                    new SimpleInstruction(
0361:                                            InstructionConstants.OP_ICONST_0, A),
0362:                                    new VariableInstruction(
0363:                                            InstructionConstants.OP_ILOAD, X),
0364:                                    new SimpleInstruction(
0365:                                            InstructionConstants.OP_IMUL), },
0366:                            {
0367:                                    new VariableInstruction(
0368:                                            InstructionConstants.OP_ILOAD, X),
0369:                                    new SimpleInstruction(
0370:                                            InstructionConstants.OP_ICONST_0, A),
0371:                                    new SimpleInstruction(
0372:                                            InstructionConstants.OP_IMUL), }, },
0373:                    { // b * i = i * b
0374:                            {
0375:                                    new SimpleInstruction(
0376:                                            InstructionConstants.OP_BIPUSH, A),
0377:                                    new VariableInstruction(
0378:                                            InstructionConstants.OP_ILOAD, X),
0379:                                    new SimpleInstruction(
0380:                                            InstructionConstants.OP_IMUL), },
0381:                            {
0382:                                    new VariableInstruction(
0383:                                            InstructionConstants.OP_ILOAD, X),
0384:                                    new SimpleInstruction(
0385:                                            InstructionConstants.OP_BIPUSH, A),
0386:                                    new SimpleInstruction(
0387:                                            InstructionConstants.OP_IMUL), }, },
0388:                    { // s * i = i * s
0389:                            {
0390:                                    new SimpleInstruction(
0391:                                            InstructionConstants.OP_SIPUSH, A),
0392:                                    new VariableInstruction(
0393:                                            InstructionConstants.OP_ILOAD, X),
0394:                                    new SimpleInstruction(
0395:                                            InstructionConstants.OP_IMUL), },
0396:                            {
0397:                                    new VariableInstruction(
0398:                                            InstructionConstants.OP_ILOAD, X),
0399:                                    new SimpleInstruction(
0400:                                            InstructionConstants.OP_SIPUSH, A),
0401:                                    new SimpleInstruction(
0402:                                            InstructionConstants.OP_IMUL), }, },
0403:                    { // c * i = i * c
0404:                            {
0405:                                    new ConstantInstruction(
0406:                                            InstructionConstants.OP_LDC, A),
0407:                                    new VariableInstruction(
0408:                                            InstructionConstants.OP_ILOAD, X),
0409:                                    new SimpleInstruction(
0410:                                            InstructionConstants.OP_IMUL), },
0411:                            {
0412:                                    new VariableInstruction(
0413:                                            InstructionConstants.OP_ILOAD, X),
0414:                                    new ConstantInstruction(
0415:                                            InstructionConstants.OP_LDC, A),
0416:                                    new SimpleInstruction(
0417:                                            InstructionConstants.OP_IMUL), }, },
0418:                    { // c + l = l + c
0419:                            {
0420:                                    new SimpleInstruction(
0421:                                            InstructionConstants.OP_LCONST_0, A),
0422:                                    new VariableInstruction(
0423:                                            InstructionConstants.OP_LLOAD, X),
0424:                                    new SimpleInstruction(
0425:                                            InstructionConstants.OP_LADD), },
0426:                            {
0427:                                    new VariableInstruction(
0428:                                            InstructionConstants.OP_LLOAD, X),
0429:                                    new SimpleInstruction(
0430:                                            InstructionConstants.OP_LCONST_0, A),
0431:                                    new SimpleInstruction(
0432:                                            InstructionConstants.OP_LADD), }, },
0433:                    { // c + l = l + c
0434:                            {
0435:                                    new ConstantInstruction(
0436:                                            InstructionConstants.OP_LDC2_W, A),
0437:                                    new VariableInstruction(
0438:                                            InstructionConstants.OP_LLOAD, X),
0439:                                    new SimpleInstruction(
0440:                                            InstructionConstants.OP_LADD), },
0441:                            {
0442:                                    new VariableInstruction(
0443:                                            InstructionConstants.OP_LLOAD, X),
0444:                                    new ConstantInstruction(
0445:                                            InstructionConstants.OP_LDC2_W, A),
0446:                                    new SimpleInstruction(
0447:                                            InstructionConstants.OP_LADD), }, },
0448:                    { // c * l = l * c
0449:                            {
0450:                                    new SimpleInstruction(
0451:                                            InstructionConstants.OP_LCONST_0, A),
0452:                                    new VariableInstruction(
0453:                                            InstructionConstants.OP_LLOAD, X),
0454:                                    new SimpleInstruction(
0455:                                            InstructionConstants.OP_LMUL), },
0456:                            {
0457:                                    new VariableInstruction(
0458:                                            InstructionConstants.OP_LLOAD, X),
0459:                                    new SimpleInstruction(
0460:                                            InstructionConstants.OP_LCONST_0, A),
0461:                                    new SimpleInstruction(
0462:                                            InstructionConstants.OP_LMUL), }, },
0463:                    { // c + f = f + c
0464:                            {
0465:                                    new SimpleInstruction(
0466:                                            InstructionConstants.OP_FCONST_0, A),
0467:                                    new VariableInstruction(
0468:                                            InstructionConstants.OP_FLOAD, X),
0469:                                    new SimpleInstruction(
0470:                                            InstructionConstants.OP_FADD), },
0471:                            {
0472:                                    new VariableInstruction(
0473:                                            InstructionConstants.OP_FLOAD, X),
0474:                                    new SimpleInstruction(
0475:                                            InstructionConstants.OP_FCONST_0, A),
0476:                                    new SimpleInstruction(
0477:                                            InstructionConstants.OP_FADD), }, },
0478:                    { // c + f = f + c
0479:                            {
0480:                                    new ConstantInstruction(
0481:                                            InstructionConstants.OP_LDC, A),
0482:                                    new VariableInstruction(
0483:                                            InstructionConstants.OP_FLOAD, X),
0484:                                    new SimpleInstruction(
0485:                                            InstructionConstants.OP_FADD), },
0486:                            {
0487:                                    new VariableInstruction(
0488:                                            InstructionConstants.OP_FLOAD, X),
0489:                                    new ConstantInstruction(
0490:                                            InstructionConstants.OP_LDC, A),
0491:                                    new SimpleInstruction(
0492:                                            InstructionConstants.OP_FADD), }, },
0493:                    { // c * f = f * c
0494:                            {
0495:                                    new SimpleInstruction(
0496:                                            InstructionConstants.OP_FCONST_0, A),
0497:                                    new VariableInstruction(
0498:                                            InstructionConstants.OP_FLOAD, X),
0499:                                    new SimpleInstruction(
0500:                                            InstructionConstants.OP_FMUL), },
0501:                            {
0502:                                    new VariableInstruction(
0503:                                            InstructionConstants.OP_FLOAD, X),
0504:                                    new SimpleInstruction(
0505:                                            InstructionConstants.OP_FCONST_0, A),
0506:                                    new SimpleInstruction(
0507:                                            InstructionConstants.OP_FMUL), }, },
0508:                    { // c * f = f * c
0509:                            {
0510:                                    new ConstantInstruction(
0511:                                            InstructionConstants.OP_LDC, A),
0512:                                    new VariableInstruction(
0513:                                            InstructionConstants.OP_FLOAD, X),
0514:                                    new SimpleInstruction(
0515:                                            InstructionConstants.OP_LMUL), },
0516:                            {
0517:                                    new VariableInstruction(
0518:                                            InstructionConstants.OP_FLOAD, X),
0519:                                    new ConstantInstruction(
0520:                                            InstructionConstants.OP_LDC, A),
0521:                                    new SimpleInstruction(
0522:                                            InstructionConstants.OP_LMUL), }, },
0523:                    { // c + d = d + c
0524:                            {
0525:                                    new SimpleInstruction(
0526:                                            InstructionConstants.OP_DCONST_0, A),
0527:                                    new VariableInstruction(
0528:                                            InstructionConstants.OP_DLOAD, X),
0529:                                    new SimpleInstruction(
0530:                                            InstructionConstants.OP_DADD), },
0531:                            {
0532:                                    new VariableInstruction(
0533:                                            InstructionConstants.OP_DLOAD, X),
0534:                                    new SimpleInstruction(
0535:                                            InstructionConstants.OP_DCONST_0, A),
0536:                                    new SimpleInstruction(
0537:                                            InstructionConstants.OP_DADD), }, },
0538:                    { // c + d = d + c
0539:                            {
0540:                                    new ConstantInstruction(
0541:                                            InstructionConstants.OP_LDC2_W, A),
0542:                                    new VariableInstruction(
0543:                                            InstructionConstants.OP_DLOAD, X),
0544:                                    new SimpleInstruction(
0545:                                            InstructionConstants.OP_DADD), },
0546:                            {
0547:                                    new VariableInstruction(
0548:                                            InstructionConstants.OP_DLOAD, X),
0549:                                    new ConstantInstruction(
0550:                                            InstructionConstants.OP_LDC2_W, A),
0551:                                    new SimpleInstruction(
0552:                                            InstructionConstants.OP_DADD), }, },
0553:                    { // c * d = d * c
0554:                            {
0555:                                    new SimpleInstruction(
0556:                                            InstructionConstants.OP_DCONST_0, A),
0557:                                    new VariableInstruction(
0558:                                            InstructionConstants.OP_DLOAD, X),
0559:                                    new SimpleInstruction(
0560:                                            InstructionConstants.OP_DMUL), },
0561:                            {
0562:                                    new VariableInstruction(
0563:                                            InstructionConstants.OP_DLOAD, X),
0564:                                    new SimpleInstruction(
0565:                                            InstructionConstants.OP_DCONST_0, A),
0566:                                    new SimpleInstruction(
0567:                                            InstructionConstants.OP_DMUL), }, },
0568:                    { // c * d = d * c
0569:                            {
0570:                                    new ConstantInstruction(
0571:                                            InstructionConstants.OP_LDC2_W, A),
0572:                                    new VariableInstruction(
0573:                                            InstructionConstants.OP_DLOAD, X),
0574:                                    new SimpleInstruction(
0575:                                            InstructionConstants.OP_DMUL), },
0576:                            {
0577:                                    new VariableInstruction(
0578:                                            InstructionConstants.OP_DLOAD, X),
0579:                                    new ConstantInstruction(
0580:                                            InstructionConstants.OP_LDC2_W, A),
0581:                                    new SimpleInstruction(
0582:                                            InstructionConstants.OP_DMUL), }, },
0583:                    { // i = i + c = i += c
0584:                            {
0585:                                    new VariableInstruction(
0586:                                            InstructionConstants.OP_ILOAD, X),
0587:                                    new SimpleInstruction(
0588:                                            InstructionConstants.OP_ICONST_0, A),
0589:                                    new SimpleInstruction(
0590:                                            InstructionConstants.OP_IADD),
0591:                                    new VariableInstruction(
0592:                                            InstructionConstants.OP_ISTORE, X), },
0593:                            { new VariableInstruction(
0594:                                    InstructionConstants.OP_IINC, X, A), }, },
0595:                    { // i = i + b = i += b
0596:                            {
0597:                                    new VariableInstruction(
0598:                                            InstructionConstants.OP_ILOAD, X),
0599:                                    new SimpleInstruction(
0600:                                            InstructionConstants.OP_BIPUSH, A),
0601:                                    new SimpleInstruction(
0602:                                            InstructionConstants.OP_IADD),
0603:                                    new VariableInstruction(
0604:                                            InstructionConstants.OP_ISTORE, X), },
0605:                            { new VariableInstruction(
0606:                                    InstructionConstants.OP_IINC, X, A), }, },
0607:                    { // i = i + s = i += s
0608:                            {
0609:                                    new VariableInstruction(
0610:                                            InstructionConstants.OP_ILOAD, X),
0611:                                    new SimpleInstruction(
0612:                                            InstructionConstants.OP_SIPUSH, A),
0613:                                    new SimpleInstruction(
0614:                                            InstructionConstants.OP_IADD),
0615:                                    new VariableInstruction(
0616:                                            InstructionConstants.OP_ISTORE, X), },
0617:                            { new VariableInstruction(
0618:                                    InstructionConstants.OP_IINC, X, A), }, },
0619:                    { // i = i - -1 = i++
0620:                            {
0621:                                    new VariableInstruction(
0622:                                            InstructionConstants.OP_ILOAD, X),
0623:                                    new SimpleInstruction(
0624:                                            InstructionConstants.OP_ICONST_M1),
0625:                                    new SimpleInstruction(
0626:                                            InstructionConstants.OP_ISUB),
0627:                                    new VariableInstruction(
0628:                                            InstructionConstants.OP_ISTORE, X), },
0629:                            { new VariableInstruction(
0630:                                    InstructionConstants.OP_IINC, X, 1), }, },
0631:                    { // i = i - 1 = i--
0632:                            {
0633:                                    new VariableInstruction(
0634:                                            InstructionConstants.OP_ILOAD, X),
0635:                                    new SimpleInstruction(
0636:                                            InstructionConstants.OP_ICONST_1),
0637:                                    new SimpleInstruction(
0638:                                            InstructionConstants.OP_ISUB),
0639:                                    new VariableInstruction(
0640:                                            InstructionConstants.OP_ISTORE, X), },
0641:                            { new VariableInstruction(
0642:                                    InstructionConstants.OP_IINC, X, -1), }, },
0643:                    { // i = i - 2 = i -= 2
0644:                            {
0645:                                    new VariableInstruction(
0646:                                            InstructionConstants.OP_ILOAD, X),
0647:                                    new SimpleInstruction(
0648:                                            InstructionConstants.OP_ICONST_2),
0649:                                    new SimpleInstruction(
0650:                                            InstructionConstants.OP_ISUB),
0651:                                    new VariableInstruction(
0652:                                            InstructionConstants.OP_ISTORE, X), },
0653:                            { new VariableInstruction(
0654:                                    InstructionConstants.OP_IINC, X, -2), }, },
0655:                    { // i = i - 3 = i -= 3
0656:                            {
0657:                                    new VariableInstruction(
0658:                                            InstructionConstants.OP_ILOAD, X),
0659:                                    new SimpleInstruction(
0660:                                            InstructionConstants.OP_ICONST_3),
0661:                                    new SimpleInstruction(
0662:                                            InstructionConstants.OP_ISUB),
0663:                                    new VariableInstruction(
0664:                                            InstructionConstants.OP_ISTORE, X), },
0665:                            { new VariableInstruction(
0666:                                    InstructionConstants.OP_IINC, X, -3), }, },
0667:                    { // i = i - 4 = i -= 4
0668:                            {
0669:                                    new VariableInstruction(
0670:                                            InstructionConstants.OP_ILOAD, X),
0671:                                    new SimpleInstruction(
0672:                                            InstructionConstants.OP_ICONST_4),
0673:                                    new SimpleInstruction(
0674:                                            InstructionConstants.OP_ISUB),
0675:                                    new VariableInstruction(
0676:                                            InstructionConstants.OP_ISTORE, X), },
0677:                            { new VariableInstruction(
0678:                                    InstructionConstants.OP_IINC, X, -4), }, },
0679:                    { // i = i - 5 = i -= 5
0680:                            {
0681:                                    new VariableInstruction(
0682:                                            InstructionConstants.OP_ILOAD, X),
0683:                                    new SimpleInstruction(
0684:                                            InstructionConstants.OP_ICONST_5),
0685:                                    new SimpleInstruction(
0686:                                            InstructionConstants.OP_ISUB),
0687:                                    new VariableInstruction(
0688:                                            InstructionConstants.OP_ISTORE, X), },
0689:                            { new VariableInstruction(
0690:                                    InstructionConstants.OP_IINC, X, -5), }, },
0691:                    { // ... + 0 = ...
0692:                            {
0693:                                    new SimpleInstruction(
0694:                                            InstructionConstants.OP_ICONST_0),
0695:                                    new SimpleInstruction(
0696:                                            InstructionConstants.OP_IADD), }, {
0697:                            // Nothing.
0698:                            }, },
0699:                    { // ... + 0L = ...
0700:                            {
0701:                                    new SimpleInstruction(
0702:                                            InstructionConstants.OP_LCONST_0),
0703:                                    new SimpleInstruction(
0704:                                            InstructionConstants.OP_LADD), }, {
0705:                            // Nothing.
0706:                            }, },
0707:                    { // ... + 0f = ...
0708:                            {
0709:                                    new SimpleInstruction(
0710:                                            InstructionConstants.OP_FCONST_0),
0711:                                    new SimpleInstruction(
0712:                                            InstructionConstants.OP_FADD), }, {
0713:                            // Nothing.
0714:                            }, },
0715:                    { // ... + 0d = ...
0716:                            {
0717:                                    new SimpleInstruction(
0718:                                            InstructionConstants.OP_DCONST_0),
0719:                                    new SimpleInstruction(
0720:                                            InstructionConstants.OP_DADD), }, {
0721:                            // Nothing.
0722:                            }, },
0723:                    { // ... - 0 = ...
0724:                            {
0725:                                    new SimpleInstruction(
0726:                                            InstructionConstants.OP_ICONST_0),
0727:                                    new SimpleInstruction(
0728:                                            InstructionConstants.OP_ISUB), }, {
0729:                            // Nothing.
0730:                            }, },
0731:                    { // ... - 0L = ...
0732:                            {
0733:                                    new SimpleInstruction(
0734:                                            InstructionConstants.OP_LCONST_0),
0735:                                    new SimpleInstruction(
0736:                                            InstructionConstants.OP_LSUB), }, {
0737:                            // Nothing.
0738:                            }, },
0739:                    { // ... - 0f = ...
0740:                            {
0741:                                    new SimpleInstruction(
0742:                                            InstructionConstants.OP_FCONST_0),
0743:                                    new SimpleInstruction(
0744:                                            InstructionConstants.OP_FSUB), }, {
0745:                            // Nothing.
0746:                            }, },
0747:                    { // ... - 0d = ...
0748:                            {
0749:                                    new SimpleInstruction(
0750:                                            InstructionConstants.OP_DCONST_0),
0751:                                    new SimpleInstruction(
0752:                                            InstructionConstants.OP_DSUB), }, {
0753:                            // Nothing.
0754:                            }, },
0755:                    { // ... * -1 = -...
0756:                            {
0757:                                    new SimpleInstruction(
0758:                                            InstructionConstants.OP_ICONST_M1),
0759:                                    new SimpleInstruction(
0760:                                            InstructionConstants.OP_IMUL), },
0761:                            { new SimpleInstruction(
0762:                                    InstructionConstants.OP_INEG), }, },
0763:                    { // ... * 0 = 0
0764:                            {
0765:                                    new SimpleInstruction(
0766:                                            InstructionConstants.OP_ICONST_0),
0767:                                    new SimpleInstruction(
0768:                                            InstructionConstants.OP_IMUL), },
0769:                            {
0770:                                    new SimpleInstruction(
0771:                                            InstructionConstants.OP_POP),
0772:                                    new SimpleInstruction(
0773:                                            InstructionConstants.OP_ICONST_0), }, },
0774:                    { // ... * 1 = ...
0775:                            {
0776:                                    new SimpleInstruction(
0777:                                            InstructionConstants.OP_ICONST_1),
0778:                                    new SimpleInstruction(
0779:                                            InstructionConstants.OP_IMUL), }, {
0780:                            // Nothing.
0781:                            }, },
0782:                    { // ... * 2 = ... << 1
0783:                            {
0784:                                    new SimpleInstruction(
0785:                                            InstructionConstants.OP_ICONST_2),
0786:                                    new SimpleInstruction(
0787:                                            InstructionConstants.OP_IMUL), },
0788:                            {
0789:                                    new SimpleInstruction(
0790:                                            InstructionConstants.OP_ICONST_1),
0791:                                    new SimpleInstruction(
0792:                                            InstructionConstants.OP_ISHL), }, },
0793:                    { // ... * 4 = ... << 2
0794:                            {
0795:                                    new SimpleInstruction(
0796:                                            InstructionConstants.OP_ICONST_4),
0797:                                    new SimpleInstruction(
0798:                                            InstructionConstants.OP_IMUL), },
0799:                            {
0800:                                    new SimpleInstruction(
0801:                                            InstructionConstants.OP_ICONST_2),
0802:                                    new SimpleInstruction(
0803:                                            InstructionConstants.OP_ISHL), }, },
0804:                    { // ... * 8 = ... << 3
0805:                            {
0806:                                    new SimpleInstruction(
0807:                                            InstructionConstants.OP_BIPUSH, 8),
0808:                                    new SimpleInstruction(
0809:                                            InstructionConstants.OP_IMUL), },
0810:                            {
0811:                                    new SimpleInstruction(
0812:                                            InstructionConstants.OP_ICONST_3),
0813:                                    new SimpleInstruction(
0814:                                            InstructionConstants.OP_ISHL), }, },
0815:                    { // ... * 16 = ... << 4
0816:                            {
0817:                                    new SimpleInstruction(
0818:                                            InstructionConstants.OP_BIPUSH, 16),
0819:                                    new SimpleInstruction(
0820:                                            InstructionConstants.OP_IMUL), },
0821:                            {
0822:                                    new SimpleInstruction(
0823:                                            InstructionConstants.OP_BIPUSH, 4),
0824:                                    new SimpleInstruction(
0825:                                            InstructionConstants.OP_ISHL), }, },
0826:                    { // ... * 32 = ... << 5
0827:                            {
0828:                                    new SimpleInstruction(
0829:                                            InstructionConstants.OP_BIPUSH, 32),
0830:                                    new SimpleInstruction(
0831:                                            InstructionConstants.OP_IMUL), },
0832:                            {
0833:                                    new SimpleInstruction(
0834:                                            InstructionConstants.OP_BIPUSH, 5),
0835:                                    new SimpleInstruction(
0836:                                            InstructionConstants.OP_ISHL), }, },
0837:                    { // ... * 64 = ... << 6
0838:                            {
0839:                                    new SimpleInstruction(
0840:                                            InstructionConstants.OP_BIPUSH, 64),
0841:                                    new SimpleInstruction(
0842:                                            InstructionConstants.OP_IMUL), },
0843:                            {
0844:                                    new SimpleInstruction(
0845:                                            InstructionConstants.OP_BIPUSH, 6),
0846:                                    new SimpleInstruction(
0847:                                            InstructionConstants.OP_ISHL), }, },
0848:                    { // ... * 128 = ... << 7
0849:                            {
0850:                                    new SimpleInstruction(
0851:                                            InstructionConstants.OP_SIPUSH, 128),
0852:                                    new SimpleInstruction(
0853:                                            InstructionConstants.OP_IMUL), },
0854:                            {
0855:                                    new SimpleInstruction(
0856:                                            InstructionConstants.OP_BIPUSH, 7),
0857:                                    new SimpleInstruction(
0858:                                            InstructionConstants.OP_ISHL), }, },
0859:                    { // ... * 256 = ... << 8
0860:                            {
0861:                                    new SimpleInstruction(
0862:                                            InstructionConstants.OP_SIPUSH, 256),
0863:                                    new SimpleInstruction(
0864:                                            InstructionConstants.OP_IMUL), },
0865:                            {
0866:                                    new SimpleInstruction(
0867:                                            InstructionConstants.OP_BIPUSH, 8),
0868:                                    new SimpleInstruction(
0869:                                            InstructionConstants.OP_ISHL), }, },
0870:                    { // ... * 512 = ... << 9
0871:                            {
0872:                                    new SimpleInstruction(
0873:                                            InstructionConstants.OP_SIPUSH, 512),
0874:                                    new SimpleInstruction(
0875:                                            InstructionConstants.OP_IMUL), },
0876:                            {
0877:                                    new SimpleInstruction(
0878:                                            InstructionConstants.OP_BIPUSH, 9),
0879:                                    new SimpleInstruction(
0880:                                            InstructionConstants.OP_ISHL), }, },
0881:                    { // ... * 1024 = ... << 10
0882:                            {
0883:                                    new SimpleInstruction(
0884:                                            InstructionConstants.OP_SIPUSH,
0885:                                            1024),
0886:                                    new SimpleInstruction(
0887:                                            InstructionConstants.OP_IMUL), },
0888:                            {
0889:                                    new SimpleInstruction(
0890:                                            InstructionConstants.OP_BIPUSH, 10),
0891:                                    new SimpleInstruction(
0892:                                            InstructionConstants.OP_ISHL), }, },
0893:                    { // ... * 2048 = ... << 11
0894:                            {
0895:                                    new SimpleInstruction(
0896:                                            InstructionConstants.OP_SIPUSH,
0897:                                            2048),
0898:                                    new SimpleInstruction(
0899:                                            InstructionConstants.OP_IMUL), },
0900:                            {
0901:                                    new SimpleInstruction(
0902:                                            InstructionConstants.OP_BIPUSH, 11),
0903:                                    new SimpleInstruction(
0904:                                            InstructionConstants.OP_ISHL), }, },
0905:                    { // ... * 4096 = ... << 12
0906:                            {
0907:                                    new SimpleInstruction(
0908:                                            InstructionConstants.OP_SIPUSH,
0909:                                            4096),
0910:                                    new SimpleInstruction(
0911:                                            InstructionConstants.OP_IMUL), },
0912:                            {
0913:                                    new SimpleInstruction(
0914:                                            InstructionConstants.OP_BIPUSH, 12),
0915:                                    new SimpleInstruction(
0916:                                            InstructionConstants.OP_ISHL), }, },
0917:                    { // ... * 8192 = ... << 13
0918:                            {
0919:                                    new SimpleInstruction(
0920:                                            InstructionConstants.OP_SIPUSH,
0921:                                            8192),
0922:                                    new SimpleInstruction(
0923:                                            InstructionConstants.OP_IMUL), },
0924:                            {
0925:                                    new SimpleInstruction(
0926:                                            InstructionConstants.OP_BIPUSH, 13),
0927:                                    new SimpleInstruction(
0928:                                            InstructionConstants.OP_ISHL), }, },
0929:                    { // ... * 16384 = ... << 14
0930:                            {
0931:                                    new SimpleInstruction(
0932:                                            InstructionConstants.OP_SIPUSH,
0933:                                            16384),
0934:                                    new SimpleInstruction(
0935:                                            InstructionConstants.OP_IMUL), },
0936:                            {
0937:                                    new SimpleInstruction(
0938:                                            InstructionConstants.OP_BIPUSH, 14),
0939:                                    new SimpleInstruction(
0940:                                            InstructionConstants.OP_ISHL), }, },
0941:                    { // ... * 32768 = ... << 15
0942:                            {
0943:                                    new ConstantInstruction(
0944:                                            InstructionConstants.OP_LDC,
0945:                                            I_32768),
0946:                                    new SimpleInstruction(
0947:                                            InstructionConstants.OP_IMUL), },
0948:                            {
0949:                                    new SimpleInstruction(
0950:                                            InstructionConstants.OP_BIPUSH, 15),
0951:                                    new SimpleInstruction(
0952:                                            InstructionConstants.OP_ISHL), }, },
0953:                    { // ... * 65536 = ... << 16
0954:                            {
0955:                                    new ConstantInstruction(
0956:                                            InstructionConstants.OP_LDC,
0957:                                            I_65536),
0958:                                    new SimpleInstruction(
0959:                                            InstructionConstants.OP_IMUL), },
0960:                            {
0961:                                    new SimpleInstruction(
0962:                                            InstructionConstants.OP_BIPUSH, 16),
0963:                                    new SimpleInstruction(
0964:                                            InstructionConstants.OP_ISHL), }, },
0965:                    { // ... * 16777216 = ... << 24
0966:                            {
0967:                                    new ConstantInstruction(
0968:                                            InstructionConstants.OP_LDC,
0969:                                            I_16777216),
0970:                                    new SimpleInstruction(
0971:                                            InstructionConstants.OP_IMUL), },
0972:                            {
0973:                                    new SimpleInstruction(
0974:                                            InstructionConstants.OP_BIPUSH, 24),
0975:                                    new SimpleInstruction(
0976:                                            InstructionConstants.OP_ISHL), }, },
0977:                    { // ... * -1L = -...
0978:                            {
0979:                                    new ConstantInstruction(
0980:                                            InstructionConstants.OP_LDC2_W,
0981:                                            L_M1),
0982:                                    new SimpleInstruction(
0983:                                            InstructionConstants.OP_LMUL), },
0984:                            { new SimpleInstruction(
0985:                                    InstructionConstants.OP_LNEG), }, },
0986:                    { // ... * 0L = 0L
0987:                            {
0988:                                    new SimpleInstruction(
0989:                                            InstructionConstants.OP_LCONST_0),
0990:                                    new SimpleInstruction(
0991:                                            InstructionConstants.OP_LMUL), },
0992:                            {
0993:                                    new SimpleInstruction(
0994:                                            InstructionConstants.OP_POP2),
0995:                                    new SimpleInstruction(
0996:                                            InstructionConstants.OP_LCONST_0), }, },
0997:                    { // ... * 1L = ...
0998:                            {
0999:                                    new SimpleInstruction(
1000:                                            InstructionConstants.OP_LCONST_1),
1001:                                    new SimpleInstruction(
1002:                                            InstructionConstants.OP_LMUL), }, {
1003:                            // Nothing.
1004:                            }, },
1005:                    { // ... * 2L = ... << 1
1006:                            {
1007:                                    new ConstantInstruction(
1008:                                            InstructionConstants.OP_LDC2_W, L_2),
1009:                                    new SimpleInstruction(
1010:                                            InstructionConstants.OP_LMUL), },
1011:                            {
1012:                                    new SimpleInstruction(
1013:                                            InstructionConstants.OP_ICONST_1),
1014:                                    new SimpleInstruction(
1015:                                            InstructionConstants.OP_LSHL), }, },
1016:                    { // ... * 4L = ... << 2
1017:                            {
1018:                                    new ConstantInstruction(
1019:                                            InstructionConstants.OP_LDC2_W, L_4),
1020:                                    new SimpleInstruction(
1021:                                            InstructionConstants.OP_LMUL), },
1022:                            {
1023:                                    new SimpleInstruction(
1024:                                            InstructionConstants.OP_ICONST_2),
1025:                                    new SimpleInstruction(
1026:                                            InstructionConstants.OP_LSHL), }, },
1027:                    { // ... * 8L = ... << 3
1028:                            {
1029:                                    new ConstantInstruction(
1030:                                            InstructionConstants.OP_LDC2_W, L_8),
1031:                                    new SimpleInstruction(
1032:                                            InstructionConstants.OP_LMUL), },
1033:                            {
1034:                                    new SimpleInstruction(
1035:                                            InstructionConstants.OP_ICONST_3),
1036:                                    new SimpleInstruction(
1037:                                            InstructionConstants.OP_LSHL), }, },
1038:                    { // ... * 16L = ... << 4
1039:                            {
1040:                                    new ConstantInstruction(
1041:                                            InstructionConstants.OP_LDC2_W,
1042:                                            L_16),
1043:                                    new SimpleInstruction(
1044:                                            InstructionConstants.OP_LMUL), },
1045:                            {
1046:                                    new SimpleInstruction(
1047:                                            InstructionConstants.OP_BIPUSH, 4),
1048:                                    new SimpleInstruction(
1049:                                            InstructionConstants.OP_LSHL), }, },
1050:                    { // ... * 32L = ... << 5
1051:                            {
1052:                                    new ConstantInstruction(
1053:                                            InstructionConstants.OP_LDC2_W,
1054:                                            L_32),
1055:                                    new SimpleInstruction(
1056:                                            InstructionConstants.OP_LMUL), },
1057:                            {
1058:                                    new SimpleInstruction(
1059:                                            InstructionConstants.OP_BIPUSH, 5),
1060:                                    new SimpleInstruction(
1061:                                            InstructionConstants.OP_LSHL), }, },
1062:                    { // ... * 64L = ... << 6
1063:                            {
1064:                                    new ConstantInstruction(
1065:                                            InstructionConstants.OP_LDC2_W,
1066:                                            L_64),
1067:                                    new SimpleInstruction(
1068:                                            InstructionConstants.OP_LMUL), },
1069:                            {
1070:                                    new SimpleInstruction(
1071:                                            InstructionConstants.OP_BIPUSH, 6),
1072:                                    new SimpleInstruction(
1073:                                            InstructionConstants.OP_LSHL), }, },
1074:                    { // ... * 128L = ... << 7
1075:                            {
1076:                                    new ConstantInstruction(
1077:                                            InstructionConstants.OP_LDC2_W,
1078:                                            L_128),
1079:                                    new SimpleInstruction(
1080:                                            InstructionConstants.OP_LMUL), },
1081:                            {
1082:                                    new SimpleInstruction(
1083:                                            InstructionConstants.OP_BIPUSH, 7),
1084:                                    new SimpleInstruction(
1085:                                            InstructionConstants.OP_LSHL), }, },
1086:                    { // ... * 256L = ... << 8
1087:                            {
1088:                                    new ConstantInstruction(
1089:                                            InstructionConstants.OP_LDC2_W,
1090:                                            L_256),
1091:                                    new SimpleInstruction(
1092:                                            InstructionConstants.OP_LMUL), },
1093:                            {
1094:                                    new SimpleInstruction(
1095:                                            InstructionConstants.OP_BIPUSH, 8),
1096:                                    new SimpleInstruction(
1097:                                            InstructionConstants.OP_LSHL), }, },
1098:                    { // ... * 512L = ... << 9
1099:                            {
1100:                                    new ConstantInstruction(
1101:                                            InstructionConstants.OP_LDC2_W,
1102:                                            L_512),
1103:                                    new SimpleInstruction(
1104:                                            InstructionConstants.OP_LMUL), },
1105:                            {
1106:                                    new SimpleInstruction(
1107:                                            InstructionConstants.OP_BIPUSH, 9),
1108:                                    new SimpleInstruction(
1109:                                            InstructionConstants.OP_LSHL), }, },
1110:                    { // ... * 1024L = ... << 10
1111:                            {
1112:                                    new ConstantInstruction(
1113:                                            InstructionConstants.OP_LDC2_W,
1114:                                            L_1024),
1115:                                    new SimpleInstruction(
1116:                                            InstructionConstants.OP_LMUL), },
1117:                            {
1118:                                    new SimpleInstruction(
1119:                                            InstructionConstants.OP_BIPUSH, 10),
1120:                                    new SimpleInstruction(
1121:                                            InstructionConstants.OP_LSHL), }, },
1122:                    { // ... * 2048L = ... << 11
1123:                            {
1124:                                    new ConstantInstruction(
1125:                                            InstructionConstants.OP_LDC2_W,
1126:                                            L_2048),
1127:                                    new SimpleInstruction(
1128:                                            InstructionConstants.OP_LMUL), },
1129:                            {
1130:                                    new SimpleInstruction(
1131:                                            InstructionConstants.OP_BIPUSH, 11),
1132:                                    new SimpleInstruction(
1133:                                            InstructionConstants.OP_LSHL), }, },
1134:                    { // ... * 4096L = ... << 12
1135:                            {
1136:                                    new ConstantInstruction(
1137:                                            InstructionConstants.OP_LDC2_W,
1138:                                            L_4096),
1139:                                    new SimpleInstruction(
1140:                                            InstructionConstants.OP_LMUL), },
1141:                            {
1142:                                    new SimpleInstruction(
1143:                                            InstructionConstants.OP_BIPUSH, 12),
1144:                                    new SimpleInstruction(
1145:                                            InstructionConstants.OP_LSHL), }, },
1146:                    { // ... * 8192L = ... << 13
1147:                            {
1148:                                    new ConstantInstruction(
1149:                                            InstructionConstants.OP_LDC2_W,
1150:                                            L_8192),
1151:                                    new SimpleInstruction(
1152:                                            InstructionConstants.OP_LMUL), },
1153:                            {
1154:                                    new SimpleInstruction(
1155:                                            InstructionConstants.OP_BIPUSH, 13),
1156:                                    new SimpleInstruction(
1157:                                            InstructionConstants.OP_LSHL), }, },
1158:                    { // ... * 16384L = ... << 14
1159:                            {
1160:                                    new ConstantInstruction(
1161:                                            InstructionConstants.OP_LDC2_W,
1162:                                            L_16384),
1163:                                    new SimpleInstruction(
1164:                                            InstructionConstants.OP_LMUL), },
1165:                            {
1166:                                    new SimpleInstruction(
1167:                                            InstructionConstants.OP_BIPUSH, 14),
1168:                                    new SimpleInstruction(
1169:                                            InstructionConstants.OP_LSHL), }, },
1170:                    { // ... * 32768L = ... << 15
1171:                            {
1172:                                    new ConstantInstruction(
1173:                                            InstructionConstants.OP_LDC2_W,
1174:                                            L_32768),
1175:                                    new SimpleInstruction(
1176:                                            InstructionConstants.OP_LMUL), },
1177:                            {
1178:                                    new SimpleInstruction(
1179:                                            InstructionConstants.OP_BIPUSH, 15),
1180:                                    new SimpleInstruction(
1181:                                            InstructionConstants.OP_LSHL), }, },
1182:                    { // ... * 65536LL = ... << 16
1183:                            {
1184:                                    new ConstantInstruction(
1185:                                            InstructionConstants.OP_LDC2_W,
1186:                                            L_65536),
1187:                                    new SimpleInstruction(
1188:                                            InstructionConstants.OP_LMUL), },
1189:                            {
1190:                                    new SimpleInstruction(
1191:                                            InstructionConstants.OP_BIPUSH, 16),
1192:                                    new SimpleInstruction(
1193:                                            InstructionConstants.OP_LSHL), }, },
1194:                    { // ... * 16777216L = ... << 24
1195:                            {
1196:                                    new ConstantInstruction(
1197:                                            InstructionConstants.OP_LDC2_W,
1198:                                            L_16777216),
1199:                                    new SimpleInstruction(
1200:                                            InstructionConstants.OP_LMUL), },
1201:                            {
1202:                                    new SimpleInstruction(
1203:                                            InstructionConstants.OP_BIPUSH, 24),
1204:                                    new SimpleInstruction(
1205:                                            InstructionConstants.OP_LSHL), }, },
1206:                    { // ... * 4294967296L = ... << 32
1207:                            {
1208:                                    new ConstantInstruction(
1209:                                            InstructionConstants.OP_LDC2_W,
1210:                                            L_4294967296),
1211:                                    new SimpleInstruction(
1212:                                            InstructionConstants.OP_LMUL), },
1213:                            {
1214:                                    new SimpleInstruction(
1215:                                            InstructionConstants.OP_BIPUSH, 32),
1216:                                    new SimpleInstruction(
1217:                                            InstructionConstants.OP_LSHL), }, },
1218:                    { // ... * -1f = -...
1219:                            {
1220:                                    new ConstantInstruction(
1221:                                            InstructionConstants.OP_LDC, F_M1),
1222:                                    new SimpleInstruction(
1223:                                            InstructionConstants.OP_FMUL), },
1224:                            { new SimpleInstruction(
1225:                                    InstructionConstants.OP_FNEG), }, },
1226:                    //        {   // ... * 0f = 0f (or NaN)
1227:                    //            {
1228:                    //                new SimpleInstruction(InstructionConstants.OP_FCONST_0),
1229:                    //                new SimpleInstruction(InstructionConstants.OP_FMUL),
1230:                    //            },{
1231:                    //                new SimpleInstruction(InstructionConstants.OP_POP),
1232:                    //                new SimpleInstruction(InstructionConstants.OP_FCONST_0),
1233:                    //            },
1234:                    //        },
1235:                    { // ... * 1f = ...
1236:                            {
1237:                                    new SimpleInstruction(
1238:                                            InstructionConstants.OP_FCONST_1),
1239:                                    new SimpleInstruction(
1240:                                            InstructionConstants.OP_FMUL), }, {
1241:                            // Nothing.
1242:                            }, },
1243:                    { // ... * -1d = -...
1244:                            {
1245:                                    new ConstantInstruction(
1246:                                            InstructionConstants.OP_LDC2_W,
1247:                                            D_M1),
1248:                                    new SimpleInstruction(
1249:                                            InstructionConstants.OP_DMUL), },
1250:                            { new SimpleInstruction(
1251:                                    InstructionConstants.OP_DNEG), }, },
1252:                    //        {   // ... * 0d = 0d (or NaN)
1253:                    //            {
1254:                    //                new SimpleInstruction(InstructionConstants.OP_DCONST_0),
1255:                    //                new SimpleInstruction(InstructionConstants.OP_DMUL),
1256:                    //            },{
1257:                    //                new SimpleInstruction(InstructionConstants.OP_POP2),
1258:                    //                new SimpleInstruction(InstructionConstants.OP_DCONST_0),
1259:                    //            },
1260:                    //        },
1261:                    { // ... * 1d = ...
1262:                            {
1263:                                    new SimpleInstruction(
1264:                                            InstructionConstants.OP_DCONST_1),
1265:                                    new SimpleInstruction(
1266:                                            InstructionConstants.OP_DMUL), }, {
1267:                            // Nothing.
1268:                            }, },
1269:                    { // ... / -1 = -...
1270:                            {
1271:                                    new SimpleInstruction(
1272:                                            InstructionConstants.OP_ICONST_M1),
1273:                                    new SimpleInstruction(
1274:                                            InstructionConstants.OP_IDIV), },
1275:                            { new SimpleInstruction(
1276:                                    InstructionConstants.OP_INEG), }, },
1277:                    { // ... / 1 = ...
1278:                            {
1279:                                    new SimpleInstruction(
1280:                                            InstructionConstants.OP_ICONST_1),
1281:                                    new SimpleInstruction(
1282:                                            InstructionConstants.OP_IDIV), }, {
1283:                            // Nothing.
1284:                            }, },
1285:                    //        {   // ... / 2 = ... >> 1
1286:                    //            {
1287:                    //                new SimpleInstruction(InstructionConstants.OP_ICONST_2),
1288:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1289:                    //            },{
1290:                    //                new SimpleInstruction(InstructionConstants.OP_ICONST_1),
1291:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1292:                    //            },
1293:                    //        },
1294:                    //        {   // ... / 4 = ... >> 2
1295:                    //            {
1296:                    //                new SimpleInstruction(InstructionConstants.OP_ICONST_4),
1297:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1298:                    //            },{
1299:                    //                new SimpleInstruction(InstructionConstants.OP_ICONST_2),
1300:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1301:                    //            },
1302:                    //        },
1303:                    //        {   // ... / 8 = ... >> 3
1304:                    //            {
1305:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
1306:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1307:                    //            },{
1308:                    //                new SimpleInstruction(InstructionConstants.OP_ICONST_3),
1309:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1310:                    //            },
1311:                    //        },
1312:                    //        {   // ... / 16 = ... >> 4
1313:                    //            {
1314:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
1315:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1316:                    //            },{
1317:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 4),
1318:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1319:                    //            },
1320:                    //        },
1321:                    //        {   // ... / 32 = ... >> 5
1322:                    //            {
1323:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
1324:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1325:                    //            },{
1326:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 5),
1327:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1328:                    //            },
1329:                    //        },
1330:                    //        {   // ... / 64 = ... >> 6
1331:                    //            {
1332:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 64),
1333:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1334:                    //            },{
1335:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 6),
1336:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1337:                    //            },
1338:                    //        },
1339:                    //        {   // ... / 128 = ... >> 7
1340:                    //            {
1341:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 128),
1342:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1343:                    //            },{
1344:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 7),
1345:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1346:                    //            },
1347:                    //        },
1348:                    //        {   // ... / 256 = ... >> 8
1349:                    //            {
1350:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 256),
1351:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1352:                    //            },{
1353:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
1354:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1355:                    //            },
1356:                    //        },
1357:                    //        {   // ... / 512 = ... >> 9
1358:                    //            {
1359:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 512),
1360:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1361:                    //            },{
1362:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 9),
1363:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1364:                    //            },
1365:                    //        },
1366:                    //        {   // ... / 1024 = ... >> 10
1367:                    //            {
1368:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 1024),
1369:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1370:                    //            },{
1371:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 10),
1372:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1373:                    //            },
1374:                    //        },
1375:                    //        {   // ... / 2048 = ... >> 11
1376:                    //            {
1377:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 2048),
1378:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1379:                    //            },{
1380:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 11),
1381:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1382:                    //            },
1383:                    //        },
1384:                    //        {   // ... / 4096 = ... >> 12
1385:                    //            {
1386:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 4096),
1387:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1388:                    //            },{
1389:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 12),
1390:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1391:                    //            },
1392:                    //        },
1393:                    //        {   // ... / 8192 = ... >> 13
1394:                    //            {
1395:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 8192),
1396:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1397:                    //            },{
1398:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 13),
1399:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1400:                    //            },
1401:                    //        },
1402:                    //        {   // ... / 16384 = ... >> 14
1403:                    //            {
1404:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 16384),
1405:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1406:                    //            },{
1407:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 14),
1408:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1409:                    //            },
1410:                    //        },
1411:                    //        {   // ... / 32768 = ... >> 15
1412:                    //            {
1413:                    //                new ConstantInstruction(InstructionConstants.OP_LDC, I_32768),
1414:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1415:                    //            },{
1416:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 15),
1417:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1418:                    //            },
1419:                    //        },
1420:                    //        {   // ... / 65536 = ... >> 16
1421:                    //            {
1422:                    //                new ConstantInstruction(InstructionConstants.OP_LDC, I_65536),
1423:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1424:                    //            },{
1425:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
1426:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1427:                    //            },
1428:                    //        },
1429:                    //        {   // ... / 16777216 = ... >> 24
1430:                    //            {
1431:                    //                new ConstantInstruction(InstructionConstants.OP_LDC, I_16777216),
1432:                    //                new SimpleInstruction(InstructionConstants.OP_IDIV),
1433:                    //            },{
1434:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
1435:                    //                new SimpleInstruction(InstructionConstants.OP_ISHR),
1436:                    //            },
1437:                    //        },
1438:                    { // ... / -1L = -...
1439:                            {
1440:                                    new ConstantInstruction(
1441:                                            InstructionConstants.OP_LDC2_W,
1442:                                            L_M1),
1443:                                    new SimpleInstruction(
1444:                                            InstructionConstants.OP_LDIV), },
1445:                            { new SimpleInstruction(
1446:                                    InstructionConstants.OP_LNEG), }, },
1447:                    { // ... / 1L = ...
1448:                            {
1449:                                    new SimpleInstruction(
1450:                                            InstructionConstants.OP_LCONST_1),
1451:                                    new SimpleInstruction(
1452:                                            InstructionConstants.OP_LDIV), }, {
1453:                            // Nothing.
1454:                            }, },
1455:                    //        {   // ... / 2L = ... >> 1
1456:                    //            {
1457:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_2),
1458:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1459:                    //            },{
1460:                    //                new SimpleInstruction(InstructionConstants.OP_ICONST_1),
1461:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1462:                    //            },
1463:                    //        },
1464:                    //        {   // ... / 4L = ... >> 2
1465:                    //            {
1466:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_4),
1467:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1468:                    //            },{
1469:                    //                new SimpleInstruction(InstructionConstants.OP_ICONST_2),
1470:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1471:                    //            },
1472:                    //        },
1473:                    //        {   // ... / 8L = ... >> 3
1474:                    //            {
1475:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_8),
1476:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1477:                    //            },{
1478:                    //                new SimpleInstruction(InstructionConstants.OP_ICONST_3),
1479:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1480:                    //            },
1481:                    //        },
1482:                    //        {   // ... / 16L = ... >> 4
1483:                    //            {
1484:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_16),
1485:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1486:                    //            },{
1487:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 4),
1488:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1489:                    //            },
1490:                    //        },
1491:                    //        {   // ... / 32L = ... >> 5
1492:                    //            {
1493:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_32),
1494:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1495:                    //            },{
1496:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 5),
1497:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1498:                    //            },
1499:                    //        },
1500:                    //        {   // ... / 64L = ... >> 6
1501:                    //            {
1502:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_64),
1503:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1504:                    //            },{
1505:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 6),
1506:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1507:                    //            },
1508:                    //        },
1509:                    //        {   // ... / 128L = ... >> 7
1510:                    //            {
1511:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_128),
1512:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1513:                    //            },{
1514:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 7),
1515:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1516:                    //            },
1517:                    //        },
1518:                    //        {   // ... / 256L = ... >> 8
1519:                    //            {
1520:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_256),
1521:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1522:                    //            },{
1523:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
1524:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1525:                    //            },
1526:                    //        },
1527:                    //        {   // ... / 512L = ... >> 9
1528:                    //            {
1529:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_512),
1530:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1531:                    //            },{
1532:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 9),
1533:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1534:                    //            },
1535:                    //        },
1536:                    //        {   // ... / 1024L = ... >> 10
1537:                    //            {
1538:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_1024),
1539:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1540:                    //            },{
1541:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 10),
1542:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1543:                    //            },
1544:                    //        },
1545:                    //        {   // ... / 2048L = ... >> 11
1546:                    //            {
1547:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_2048),
1548:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1549:                    //            },{
1550:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 11),
1551:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1552:                    //            },
1553:                    //        },
1554:                    //        {   // ... / 4096L = ... >> 12
1555:                    //            {
1556:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_4096),
1557:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1558:                    //            },{
1559:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 12),
1560:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1561:                    //            },
1562:                    //        },
1563:                    //        {   // ... / 8192L = ... >> 13
1564:                    //            {
1565:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_8192),
1566:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1567:                    //            },{
1568:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 13),
1569:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1570:                    //            },
1571:                    //        },
1572:                    //        {   // ... / 16384L = ... >> 14
1573:                    //            {
1574:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_16384),
1575:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1576:                    //            },{
1577:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 14),
1578:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1579:                    //            },
1580:                    //        },
1581:                    //        {   // ... / 32768L = ... >> 15
1582:                    //            {
1583:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_32768),
1584:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1585:                    //            },{
1586:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 15),
1587:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1588:                    //            },
1589:                    //        },
1590:                    //        {   // ... / 65536LL = ... >> 16
1591:                    //            {
1592:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_65536),
1593:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1594:                    //            },{
1595:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
1596:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1597:                    //            },
1598:                    //        },
1599:                    //        {   // ... / 16777216L = ... >> 24
1600:                    //            {
1601:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_16777216),
1602:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1603:                    //            },{
1604:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
1605:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1606:                    //            },
1607:                    //        },
1608:                    //        {   // ... / 4294967296L = ... >> 32
1609:                    //            {
1610:                    //                new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_4294967296),
1611:                    //                new SimpleInstruction(InstructionConstants.OP_LDIV),
1612:                    //            },{
1613:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
1614:                    //                new SimpleInstruction(InstructionConstants.OP_LSHR),
1615:                    //            },
1616:                    //        },
1617:                    { // ... / -1f = -...
1618:                            {
1619:                                    new ConstantInstruction(
1620:                                            InstructionConstants.OP_LDC, F_M1),
1621:                                    new SimpleInstruction(
1622:                                            InstructionConstants.OP_FDIV), },
1623:                            { new SimpleInstruction(
1624:                                    InstructionConstants.OP_FNEG), }, },
1625:                    { // ... / 1f = ...
1626:                            {
1627:                                    new SimpleInstruction(
1628:                                            InstructionConstants.OP_FCONST_1),
1629:                                    new SimpleInstruction(
1630:                                            InstructionConstants.OP_FDIV), }, {
1631:                            // Nothing.
1632:                            }, },
1633:                    { // ... / -1d = -...
1634:                            {
1635:                                    new ConstantInstruction(
1636:                                            InstructionConstants.OP_LDC2_W,
1637:                                            D_M1),
1638:                                    new SimpleInstruction(
1639:                                            InstructionConstants.OP_DDIV), },
1640:                            { new SimpleInstruction(
1641:                                    InstructionConstants.OP_DNEG), }, },
1642:                    { // ... / 1d = ...
1643:                            {
1644:                                    new SimpleInstruction(
1645:                                            InstructionConstants.OP_DCONST_1),
1646:                                    new SimpleInstruction(
1647:                                            InstructionConstants.OP_DDIV), }, {
1648:                            // Nothing.
1649:                            }, },
1650:                    { // ... % 1 = 0
1651:                            {
1652:                                    new SimpleInstruction(
1653:                                            InstructionConstants.OP_ICONST_1),
1654:                                    new SimpleInstruction(
1655:                                            InstructionConstants.OP_IREM), },
1656:                            {
1657:                                    new SimpleInstruction(
1658:                                            InstructionConstants.OP_POP),
1659:                                    new SimpleInstruction(
1660:                                            InstructionConstants.OP_ICONST_0), }, },
1661:                    //        {   // ... % 2 = ... & 0x1
1662:                    //            {
1663:                    //                new SimpleInstruction(InstructionConstants.OP_ICONST_2),
1664:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1665:                    //            },{
1666:                    //                new SimpleInstruction(InstructionConstants.OP_ICONST_1),
1667:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1668:                    //            },
1669:                    //        },
1670:                    //        {   // ... % 4 = ... & 0x3
1671:                    //            {
1672:                    //                new SimpleInstruction(InstructionConstants.OP_ICONST_4),
1673:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1674:                    //            },{
1675:                    //                new SimpleInstruction(InstructionConstants.OP_ICONST_3),
1676:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1677:                    //            },
1678:                    //        },
1679:                    //        {   // ... % 8 = ... & 0x07
1680:                    //            {
1681:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
1682:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1683:                    //            },{
1684:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 0x07),
1685:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1686:                    //            },
1687:                    //        },
1688:                    //        {   // ... % 16 = ... & 0x0f
1689:                    //            {
1690:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
1691:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1692:                    //            },{
1693:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 0x0f),
1694:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1695:                    //            },
1696:                    //        },
1697:                    //        {   // ... % 32 = ... & 0x1f
1698:                    //            {
1699:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
1700:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1701:                    //            },{
1702:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 0x1f),
1703:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1704:                    //            },
1705:                    //        },
1706:                    //        {   // ... % 64 = ... & 0x3f
1707:                    //            {
1708:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 64),
1709:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1710:                    //            },{
1711:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 0x3f),
1712:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1713:                    //            },
1714:                    //        },
1715:                    //        {   // ... % 128 = ... & 0x7f
1716:                    //            {
1717:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 128),
1718:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1719:                    //            },{
1720:                    //                new SimpleInstruction(InstructionConstants.OP_BIPUSH, 0x7f),
1721:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1722:                    //            },
1723:                    //        },
1724:                    //        {   // ... % 256 = ... & 0x00ff
1725:                    //            {
1726:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 256),
1727:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1728:                    //            },{
1729:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x00ff),
1730:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1731:                    //            },
1732:                    //        },
1733:                    //        {   // ... % 512 = ... & 0x01ff
1734:                    //            {
1735:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 512),
1736:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1737:                    //            },{
1738:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x01ff),
1739:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1740:                    //            },
1741:                    //        },
1742:                    //        {   // ... % 1024 = ... & 0x03ff
1743:                    //            {
1744:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 1024),
1745:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1746:                    //            },{
1747:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x03ff),
1748:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1749:                    //            },
1750:                    //        },
1751:                    //        {   // ... % 2048 = ... & 0x07ff
1752:                    //            {
1753:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 2048),
1754:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1755:                    //            },{
1756:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x07ff),
1757:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1758:                    //            },
1759:                    //        },
1760:                    //        {   // ... % 4096 = ... & 0x0fff
1761:                    //            {
1762:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 4096),
1763:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1764:                    //            },{
1765:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x0fff),
1766:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1767:                    //            },
1768:                    //        },
1769:                    //        {   // ... % 8192 = ... & 0x1fff
1770:                    //            {
1771:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 8192),
1772:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1773:                    //            },{
1774:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x1fff),
1775:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1776:                    //            },
1777:                    //        },
1778:                    //        {   // ... % 16384 = ... & 0x3fff
1779:                    //            {
1780:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 16384),
1781:                    //                new SimpleInstruction(InstructionConstants.OP_IREM),
1782:                    //            },{
1783:                    //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x3fff),
1784:                    //                new SimpleInstruction(InstructionConstants.OP_IAND),
1785:                    //            },
1786:                    //        },
1787:                    { // ... % 1L = 0L
1788:                            {
1789:                                    new SimpleInstruction(
1790:                                            InstructionConstants.OP_LCONST_1),
1791:                                    new SimpleInstruction(
1792:                                            InstructionConstants.OP_LREM), },
1793:                            {
1794:                                    new SimpleInstruction(
1795:                                            InstructionConstants.OP_POP2),
1796:                                    new SimpleInstruction(
1797:                                            InstructionConstants.OP_LCONST_0), }, },
1798:                    //        {   // ... % 1f = 0f
1799:                    //            {
1800:                    //                new SimpleInstruction(InstructionConstants.OP_FCONST_1),
1801:                    //                new SimpleInstruction(InstructionConstants.OP_FREM),
1802:                    //            },{
1803:                    //                new SimpleInstruction(InstructionConstants.OP_POP),
1804:                    //                new SimpleInstruction(InstructionConstants.OP_FCONST_0),
1805:                    //            },
1806:                    //        },
1807:                    //        {   // ... % 1d = 0d
1808:                    //            {
1809:                    //                new SimpleInstruction(InstructionConstants.OP_DCONST_1),
1810:                    //                new SimpleInstruction(InstructionConstants.OP_DREM),
1811:                    //            },{
1812:                    //                new SimpleInstruction(InstructionConstants.OP_POP2),
1813:                    //                new SimpleInstruction(InstructionConstants.OP_DCONST_0),
1814:                    //            },
1815:                    //        },
1816:                    { // -(-...) = ...
1817:                            {
1818:                                    new SimpleInstruction(
1819:                                            InstructionConstants.OP_INEG),
1820:                                    new SimpleInstruction(
1821:                                            InstructionConstants.OP_INEG), }, {
1822:                            // Nothing.
1823:                            }, },
1824:                    { // -(-...) = ...
1825:                            {
1826:                                    new SimpleInstruction(
1827:                                            InstructionConstants.OP_LNEG),
1828:                                    new SimpleInstruction(
1829:                                            InstructionConstants.OP_LNEG), }, {
1830:                            // Nothing.
1831:                            }, },
1832:                    { // -(-...) = ...
1833:                            {
1834:                                    new SimpleInstruction(
1835:                                            InstructionConstants.OP_FNEG),
1836:                                    new SimpleInstruction(
1837:                                            InstructionConstants.OP_FNEG), }, {
1838:                            // Nothing.
1839:                            }, },
1840:                    { // -(-...) = ...
1841:                            {
1842:                                    new SimpleInstruction(
1843:                                            InstructionConstants.OP_DNEG),
1844:                                    new SimpleInstruction(
1845:                                            InstructionConstants.OP_DNEG), }, {
1846:                            // Nothing.
1847:                            }, },
1848:                    { // +(-...) = -...
1849:                            {
1850:                                    new SimpleInstruction(
1851:                                            InstructionConstants.OP_INEG),
1852:                                    new SimpleInstruction(
1853:                                            InstructionConstants.OP_IADD), },
1854:                            { new SimpleInstruction(
1855:                                    InstructionConstants.OP_ISUB), }, },
1856:                    { // +(-...) = -...
1857:                            {
1858:                                    new SimpleInstruction(
1859:                                            InstructionConstants.OP_LNEG),
1860:                                    new SimpleInstruction(
1861:                                            InstructionConstants.OP_LADD), },
1862:                            { new SimpleInstruction(
1863:                                    InstructionConstants.OP_LSUB), }, },
1864:                    { // +(-...) = -...
1865:                            {
1866:                                    new SimpleInstruction(
1867:                                            InstructionConstants.OP_FNEG),
1868:                                    new SimpleInstruction(
1869:                                            InstructionConstants.OP_FADD), },
1870:                            { new SimpleInstruction(
1871:                                    InstructionConstants.OP_FSUB), }, },
1872:                    { // +(-...) = -...
1873:                            {
1874:                                    new SimpleInstruction(
1875:                                            InstructionConstants.OP_DNEG),
1876:                                    new SimpleInstruction(
1877:                                            InstructionConstants.OP_DADD), },
1878:                            { new SimpleInstruction(
1879:                                    InstructionConstants.OP_DSUB), }, },
1880:                    { // ... << 0 = ...
1881:                            {
1882:                                    new SimpleInstruction(
1883:                                            InstructionConstants.OP_ICONST_0),
1884:                                    new SimpleInstruction(
1885:                                            InstructionConstants.OP_ISHL), }, {
1886:                            // Nothing.
1887:                            }, },
1888:                    { // ... << 0 = ...
1889:                            {
1890:                                    new SimpleInstruction(
1891:                                            InstructionConstants.OP_ICONST_0),
1892:                                    new SimpleInstruction(
1893:                                            InstructionConstants.OP_LSHL), }, {
1894:                            // Nothing.
1895:                            }, },
1896:                    { // ... >> 0 = ...
1897:                            {
1898:                                    new SimpleInstruction(
1899:                                            InstructionConstants.OP_ICONST_0),
1900:                                    new SimpleInstruction(
1901:                                            InstructionConstants.OP_ISHR), }, {
1902:                            // Nothing.
1903:                            }, },
1904:                    { // ... >> 0 = ...
1905:                            {
1906:                                    new SimpleInstruction(
1907:                                            InstructionConstants.OP_ICONST_0),
1908:                                    new SimpleInstruction(
1909:                                            InstructionConstants.OP_LSHR), }, {
1910:                            // Nothing.
1911:                            }, },
1912:                    { // ... >>> 0 = ...
1913:                            {
1914:                                    new SimpleInstruction(
1915:                                            InstructionConstants.OP_ICONST_0),
1916:                                    new SimpleInstruction(
1917:                                            InstructionConstants.OP_IUSHR), },
1918:                            {
1919:                            // Nothing.
1920:                            }, },
1921:                    { // ... >>> 0 = ...
1922:                            {
1923:                                    new SimpleInstruction(
1924:                                            InstructionConstants.OP_ICONST_0),
1925:                                    new SimpleInstruction(
1926:                                            InstructionConstants.OP_LUSHR), },
1927:                            {
1928:                            // Nothing.
1929:                            }, },
1930:                    { // ... & -1 = ...
1931:                            {
1932:                                    new SimpleInstruction(
1933:                                            InstructionConstants.OP_ICONST_M1),
1934:                                    new SimpleInstruction(
1935:                                            InstructionConstants.OP_IAND), }, {
1936:                            // Nothing.
1937:                            }, },
1938:                    { // ... & 0 = 0
1939:                            {
1940:                                    new SimpleInstruction(
1941:                                            InstructionConstants.OP_ICONST_0),
1942:                                    new SimpleInstruction(
1943:                                            InstructionConstants.OP_IAND), },
1944:                            {
1945:                                    new SimpleInstruction(
1946:                                            InstructionConstants.OP_POP),
1947:                                    new SimpleInstruction(
1948:                                            InstructionConstants.OP_ICONST_0), }, },
1949:                    { // ... & -1L = ...
1950:                            {
1951:                                    new ConstantInstruction(
1952:                                            InstructionConstants.OP_LDC2_W,
1953:                                            L_M1),
1954:                                    new SimpleInstruction(
1955:                                            InstructionConstants.OP_LAND), }, {
1956:                            // Nothing.
1957:                            }, },
1958:                    { // ... & 0L = 0L
1959:                            {
1960:                                    new SimpleInstruction(
1961:                                            InstructionConstants.OP_LCONST_0),
1962:                                    new SimpleInstruction(
1963:                                            InstructionConstants.OP_LAND), },
1964:                            {
1965:                                    new SimpleInstruction(
1966:                                            InstructionConstants.OP_POP2),
1967:                                    new SimpleInstruction(
1968:                                            InstructionConstants.OP_LCONST_0), }, },
1969:                    { // ... | -1 = -1
1970:                            {
1971:                                    new SimpleInstruction(
1972:                                            InstructionConstants.OP_ICONST_M1),
1973:                                    new SimpleInstruction(
1974:                                            InstructionConstants.OP_IOR), },
1975:                            {
1976:                                    new SimpleInstruction(
1977:                                            InstructionConstants.OP_POP),
1978:                                    new SimpleInstruction(
1979:                                            InstructionConstants.OP_ICONST_M1), }, },
1980:                    { // ... | 0 = ...
1981:                            {
1982:                                    new SimpleInstruction(
1983:                                            InstructionConstants.OP_ICONST_0),
1984:                                    new SimpleInstruction(
1985:                                            InstructionConstants.OP_IOR), }, {
1986:                            // Nothing.
1987:                            }, },
1988:                    { // ... | -1L = -1L
1989:                            {
1990:                                    new ConstantInstruction(
1991:                                            InstructionConstants.OP_LDC2_W,
1992:                                            L_M1),
1993:                                    new SimpleInstruction(
1994:                                            InstructionConstants.OP_LAND), },
1995:                            {
1996:                                    new SimpleInstruction(
1997:                                            InstructionConstants.OP_POP2),
1998:                                    new ConstantInstruction(
1999:                                            InstructionConstants.OP_LDC2_W,
2000:                                            L_M1), }, },
2001:                    { // ... | 0L = ...
2002:                            {
2003:                                    new SimpleInstruction(
2004:                                            InstructionConstants.OP_LCONST_0),
2005:                                    new SimpleInstruction(
2006:                                            InstructionConstants.OP_LOR), }, {
2007:                            // Nothing.
2008:                            }, },
2009:                    { // ... ^ 0 = ...
2010:                            {
2011:                                    new SimpleInstruction(
2012:                                            InstructionConstants.OP_ICONST_0),
2013:                                    new SimpleInstruction(
2014:                                            InstructionConstants.OP_IXOR), }, {
2015:                            // Nothing.
2016:                            }, },
2017:                    { // ... ^ 0L = ...
2018:                            {
2019:                                    new SimpleInstruction(
2020:                                            InstructionConstants.OP_LCONST_0),
2021:                                    new SimpleInstruction(
2022:                                            InstructionConstants.OP_LXOR), }, {
2023:                            // Nothing.
2024:                            }, },
2025:                    { // (... & 0x0000ff00) >> 8 = (... >> 8) & 0xff
2026:                            {
2027:                                    new ConstantInstruction(
2028:                                            InstructionConstants.OP_LDC,
2029:                                            I_0x0000ff00),
2030:                                    new SimpleInstruction(
2031:                                            InstructionConstants.OP_IAND),
2032:                                    new SimpleInstruction(
2033:                                            InstructionConstants.OP_BIPUSH, 8),
2034:                                    new SimpleInstruction(
2035:                                            InstructionConstants.OP_ISHR), },
2036:                            {
2037:                                    new SimpleInstruction(
2038:                                            InstructionConstants.OP_BIPUSH, 8),
2039:                                    new SimpleInstruction(
2040:                                            InstructionConstants.OP_ISHR),
2041:                                    new SimpleInstruction(
2042:                                            InstructionConstants.OP_SIPUSH,
2043:                                            0xff),
2044:                                    new SimpleInstruction(
2045:                                            InstructionConstants.OP_IAND), }, },
2046:                    { // (... & 0x0000ff00) >>> 8 = (... >>> 8) & 0xff
2047:                            {
2048:                                    new ConstantInstruction(
2049:                                            InstructionConstants.OP_LDC,
2050:                                            I_0x0000ff00),
2051:                                    new SimpleInstruction(
2052:                                            InstructionConstants.OP_IAND),
2053:                                    new SimpleInstruction(
2054:                                            InstructionConstants.OP_BIPUSH, 8),
2055:                                    new SimpleInstruction(
2056:                                            InstructionConstants.OP_IUSHR), },
2057:                            {
2058:                                    new SimpleInstruction(
2059:                                            InstructionConstants.OP_BIPUSH, 8),
2060:                                    new SimpleInstruction(
2061:                                            InstructionConstants.OP_IUSHR),
2062:                                    new SimpleInstruction(
2063:                                            InstructionConstants.OP_SIPUSH,
2064:                                            0xff),
2065:                                    new SimpleInstruction(
2066:                                            InstructionConstants.OP_IAND), }, },
2067:                    { // (... & 0x00ff0000) >> 16 = (... >> 16) & 0xff
2068:                            {
2069:                                    new ConstantInstruction(
2070:                                            InstructionConstants.OP_LDC,
2071:                                            I_0x00ff0000),
2072:                                    new SimpleInstruction(
2073:                                            InstructionConstants.OP_IAND),
2074:                                    new SimpleInstruction(
2075:                                            InstructionConstants.OP_BIPUSH, 16),
2076:                                    new SimpleInstruction(
2077:                                            InstructionConstants.OP_ISHR), },
2078:                            {
2079:                                    new SimpleInstruction(
2080:                                            InstructionConstants.OP_BIPUSH, 16),
2081:                                    new SimpleInstruction(
2082:                                            InstructionConstants.OP_ISHR),
2083:                                    new SimpleInstruction(
2084:                                            InstructionConstants.OP_SIPUSH,
2085:                                            0xff),
2086:                                    new SimpleInstruction(
2087:                                            InstructionConstants.OP_IAND), }, },
2088:                    { // (... & 0x00ff0000) >>> 16 = (... >>> 16) & 0xff
2089:                            {
2090:                                    new ConstantInstruction(
2091:                                            InstructionConstants.OP_LDC,
2092:                                            I_0x00ff0000),
2093:                                    new SimpleInstruction(
2094:                                            InstructionConstants.OP_IAND),
2095:                                    new SimpleInstruction(
2096:                                            InstructionConstants.OP_BIPUSH, 16),
2097:                                    new SimpleInstruction(
2098:                                            InstructionConstants.OP_IUSHR), },
2099:                            {
2100:                                    new SimpleInstruction(
2101:                                            InstructionConstants.OP_BIPUSH, 16),
2102:                                    new SimpleInstruction(
2103:                                            InstructionConstants.OP_IUSHR),
2104:                                    new SimpleInstruction(
2105:                                            InstructionConstants.OP_SIPUSH,
2106:                                            0xff),
2107:                                    new SimpleInstruction(
2108:                                            InstructionConstants.OP_IAND), }, },
2109:                    { // (... & 0xff000000) >> 24 = ... >> 24
2110:                            {
2111:                                    new ConstantInstruction(
2112:                                            InstructionConstants.OP_LDC,
2113:                                            I_0xff000000),
2114:                                    new SimpleInstruction(
2115:                                            InstructionConstants.OP_IAND),
2116:                                    new SimpleInstruction(
2117:                                            InstructionConstants.OP_BIPUSH, 24),
2118:                                    new SimpleInstruction(
2119:                                            InstructionConstants.OP_ISHR), },
2120:                            {
2121:                                    new SimpleInstruction(
2122:                                            InstructionConstants.OP_BIPUSH, 24),
2123:                                    new SimpleInstruction(
2124:                                            InstructionConstants.OP_ISHR), }, },
2125:                    { // (... & 0xffff0000) >> 16 = ... >> 16
2126:                            {
2127:                                    new ConstantInstruction(
2128:                                            InstructionConstants.OP_LDC,
2129:                                            I_0xffff0000),
2130:                                    new SimpleInstruction(
2131:                                            InstructionConstants.OP_IAND),
2132:                                    new SimpleInstruction(
2133:                                            InstructionConstants.OP_BIPUSH, 16),
2134:                                    new SimpleInstruction(
2135:                                            InstructionConstants.OP_ISHR), },
2136:                            {
2137:                                    new SimpleInstruction(
2138:                                            InstructionConstants.OP_BIPUSH, 16),
2139:                                    new SimpleInstruction(
2140:                                            InstructionConstants.OP_ISHR), }, },
2141:                    { // (... & 0xffff0000) >>> 16 = ... >>> 16
2142:                            {
2143:                                    new ConstantInstruction(
2144:                                            InstructionConstants.OP_LDC,
2145:                                            I_0xffff0000),
2146:                                    new SimpleInstruction(
2147:                                            InstructionConstants.OP_IAND),
2148:                                    new SimpleInstruction(
2149:                                            InstructionConstants.OP_BIPUSH, 16),
2150:                                    new SimpleInstruction(
2151:                                            InstructionConstants.OP_IUSHR), },
2152:                            {
2153:                                    new SimpleInstruction(
2154:                                            InstructionConstants.OP_BIPUSH, 16),
2155:                                    new SimpleInstruction(
2156:                                            InstructionConstants.OP_IUSHR), }, },
2157:                    { // (... >> 24) & 0xff = ... >>> 24
2158:                            {
2159:                                    new SimpleInstruction(
2160:                                            InstructionConstants.OP_BIPUSH, 24),
2161:                                    new SimpleInstruction(
2162:                                            InstructionConstants.OP_ISHR),
2163:                                    new SimpleInstruction(
2164:                                            InstructionConstants.OP_SIPUSH,
2165:                                            0xff),
2166:                                    new SimpleInstruction(
2167:                                            InstructionConstants.OP_IAND), },
2168:                            {
2169:                                    new SimpleInstruction(
2170:                                            InstructionConstants.OP_BIPUSH, 24),
2171:                                    new SimpleInstruction(
2172:                                            InstructionConstants.OP_IUSHR), }, },
2173:                    { // (... >>> 24) & 0xff = ... >>> 24
2174:                            {
2175:                                    new SimpleInstruction(
2176:                                            InstructionConstants.OP_BIPUSH, 24),
2177:                                    new SimpleInstruction(
2178:                                            InstructionConstants.OP_IUSHR),
2179:                                    new SimpleInstruction(
2180:                                            InstructionConstants.OP_SIPUSH,
2181:                                            0xff),
2182:                                    new SimpleInstruction(
2183:                                            InstructionConstants.OP_IAND), },
2184:                            {
2185:                                    new SimpleInstruction(
2186:                                            InstructionConstants.OP_BIPUSH, 24),
2187:                                    new SimpleInstruction(
2188:                                            InstructionConstants.OP_IUSHR), }, },
2189:                    { // (byte)(... & 0x000000ff) = (byte)...
2190:                            {
2191:                                    new SimpleInstruction(
2192:                                            InstructionConstants.OP_SIPUSH,
2193:                                            0xff),
2194:                                    new SimpleInstruction(
2195:                                            InstructionConstants.OP_IAND),
2196:                                    new SimpleInstruction(
2197:                                            InstructionConstants.OP_I2B), },
2198:                            { new SimpleInstruction(InstructionConstants.OP_I2B), }, },
2199:                    { // (char)(... & 0x0000ffff) = (char)...
2200:                            {
2201:                                    new ConstantInstruction(
2202:                                            InstructionConstants.OP_LDC,
2203:                                            I_0x0000ffff),
2204:                                    new SimpleInstruction(
2205:                                            InstructionConstants.OP_IAND),
2206:                                    new SimpleInstruction(
2207:                                            InstructionConstants.OP_I2C), },
2208:                            { new SimpleInstruction(InstructionConstants.OP_I2C), }, },
2209:                    { // (short)(... & 0x0000ffff) = (short)...
2210:                            {
2211:                                    new ConstantInstruction(
2212:                                            InstructionConstants.OP_LDC,
2213:                                            I_0x0000ffff),
2214:                                    new SimpleInstruction(
2215:                                            InstructionConstants.OP_IAND),
2216:                                    new SimpleInstruction(
2217:                                            InstructionConstants.OP_I2S), },
2218:                            { new SimpleInstruction(InstructionConstants.OP_I2S), }, },
2219:                    { // (byte)(... >> 24) = ... >> 24
2220:                            {
2221:                                    new SimpleInstruction(
2222:                                            InstructionConstants.OP_BIPUSH, 24),
2223:                                    new SimpleInstruction(
2224:                                            InstructionConstants.OP_ISHR),
2225:                                    new SimpleInstruction(
2226:                                            InstructionConstants.OP_I2B), },
2227:                            {
2228:                                    new SimpleInstruction(
2229:                                            InstructionConstants.OP_BIPUSH, 24),
2230:                                    new SimpleInstruction(
2231:                                            InstructionConstants.OP_ISHR), }, },
2232:                    { // (byte)(... >>> 24) = ... >> 24
2233:                            {
2234:                                    new SimpleInstruction(
2235:                                            InstructionConstants.OP_BIPUSH, 24),
2236:                                    new SimpleInstruction(
2237:                                            InstructionConstants.OP_IUSHR),
2238:                                    new SimpleInstruction(
2239:                                            InstructionConstants.OP_I2B), },
2240:                            {
2241:                                    new SimpleInstruction(
2242:                                            InstructionConstants.OP_BIPUSH, 24),
2243:                                    new SimpleInstruction(
2244:                                            InstructionConstants.OP_ISHR), }, },
2245:                    { // (char)(... >> 16) = ... >>> 16
2246:                            {
2247:                                    new SimpleInstruction(
2248:                                            InstructionConstants.OP_BIPUSH, 16),
2249:                                    new SimpleInstruction(
2250:                                            InstructionConstants.OP_ISHR),
2251:                                    new SimpleInstruction(
2252:                                            InstructionConstants.OP_I2C), },
2253:                            {
2254:                                    new SimpleInstruction(
2255:                                            InstructionConstants.OP_BIPUSH, 16),
2256:                                    new SimpleInstruction(
2257:                                            InstructionConstants.OP_IUSHR), }, },
2258:                    { // (char)(... >>> 16) = ... >>> 16
2259:                            {
2260:                                    new SimpleInstruction(
2261:                                            InstructionConstants.OP_BIPUSH, 16),
2262:                                    new SimpleInstruction(
2263:                                            InstructionConstants.OP_IUSHR),
2264:                                    new SimpleInstruction(
2265:                                            InstructionConstants.OP_I2C), },
2266:                            {
2267:                                    new SimpleInstruction(
2268:                                            InstructionConstants.OP_BIPUSH, 16),
2269:                                    new SimpleInstruction(
2270:                                            InstructionConstants.OP_IUSHR), }, },
2271:                    { // (short)(... >> 16) = ... >> 16
2272:                            {
2273:                                    new SimpleInstruction(
2274:                                            InstructionConstants.OP_BIPUSH, 16),
2275:                                    new SimpleInstruction(
2276:                                            InstructionConstants.OP_ISHR),
2277:                                    new SimpleInstruction(
2278:                                            InstructionConstants.OP_I2S), },
2279:                            {
2280:                                    new SimpleInstruction(
2281:                                            InstructionConstants.OP_BIPUSH, 16),
2282:                                    new SimpleInstruction(
2283:                                            InstructionConstants.OP_ISHR), }, },
2284:                    { // (short)(... >>> 16) = ... >> 16
2285:                            {
2286:                                    new SimpleInstruction(
2287:                                            InstructionConstants.OP_BIPUSH, 16),
2288:                                    new SimpleInstruction(
2289:                                            InstructionConstants.OP_IUSHR),
2290:                                    new SimpleInstruction(
2291:                                            InstructionConstants.OP_I2S), },
2292:                            {
2293:                                    new SimpleInstruction(
2294:                                            InstructionConstants.OP_BIPUSH, 16),
2295:                                    new SimpleInstruction(
2296:                                            InstructionConstants.OP_ISHR), }, },
2297:                    { // ... << 24 >> 24 = (byte)...
2298:                            {
2299:                                    new SimpleInstruction(
2300:                                            InstructionConstants.OP_BIPUSH, 24),
2301:                                    new SimpleInstruction(
2302:                                            InstructionConstants.OP_ISHL),
2303:                                    new SimpleInstruction(
2304:                                            InstructionConstants.OP_BIPUSH, 24),
2305:                                    new SimpleInstruction(
2306:                                            InstructionConstants.OP_ISHR), },
2307:                            { new SimpleInstruction(InstructionConstants.OP_I2B), }, },
2308:                    { // ... << 16 >>> 16 = (char)...
2309:                            {
2310:                                    new SimpleInstruction(
2311:                                            InstructionConstants.OP_BIPUSH, 16),
2312:                                    new SimpleInstruction(
2313:                                            InstructionConstants.OP_ISHL),
2314:                                    new SimpleInstruction(
2315:                                            InstructionConstants.OP_BIPUSH, 16),
2316:                                    new SimpleInstruction(
2317:                                            InstructionConstants.OP_IUSHR), },
2318:                            { new SimpleInstruction(InstructionConstants.OP_I2C), }, },
2319:                    { // ... << 16 >> 16 = (short)...
2320:                            {
2321:                                    new SimpleInstruction(
2322:                                            InstructionConstants.OP_BIPUSH, 16),
2323:                                    new SimpleInstruction(
2324:                                            InstructionConstants.OP_ISHL),
2325:                                    new SimpleInstruction(
2326:                                            InstructionConstants.OP_BIPUSH, 16),
2327:                                    new SimpleInstruction(
2328:                                            InstructionConstants.OP_ISHR), },
2329:                            { new SimpleInstruction(InstructionConstants.OP_I2S), }, },
2330:                    { // ... << 32 >> 32 = (long)(int)...
2331:                            {
2332:                                    new SimpleInstruction(
2333:                                            InstructionConstants.OP_BIPUSH, 32),
2334:                                    new SimpleInstruction(
2335:                                            InstructionConstants.OP_LSHL),
2336:                                    new SimpleInstruction(
2337:                                            InstructionConstants.OP_BIPUSH, 32),
2338:                                    new SimpleInstruction(
2339:                                            InstructionConstants.OP_LSHR), },
2340:                            {
2341:                                    new SimpleInstruction(
2342:                                            InstructionConstants.OP_L2I),
2343:                                    new SimpleInstruction(
2344:                                            InstructionConstants.OP_I2L), }, },
2345:                    { // (int)(... & 0x00000000ffffffffL) = (int)...
2346:                            {
2347:                                    new ConstantInstruction(
2348:                                            InstructionConstants.OP_LDC2_W,
2349:                                            L_0x00000000ffffffff),
2350:                                    new SimpleInstruction(
2351:                                            InstructionConstants.OP_LAND),
2352:                                    new SimpleInstruction(
2353:                                            InstructionConstants.OP_L2I), },
2354:                            { new SimpleInstruction(InstructionConstants.OP_L2I), }, },
2355:                    { // (... & 0xffffffff00000000L) >> 32 = ... >> 32
2356:                            {
2357:                                    new ConstantInstruction(
2358:                                            InstructionConstants.OP_LDC2_W,
2359:                                            L_0xffffffff00000000),
2360:                                    new SimpleInstruction(
2361:                                            InstructionConstants.OP_LAND),
2362:                                    new SimpleInstruction(
2363:                                            InstructionConstants.OP_BIPUSH, 32),
2364:                                    new SimpleInstruction(
2365:                                            InstructionConstants.OP_LSHR), },
2366:                            {
2367:                                    new SimpleInstruction(
2368:                                            InstructionConstants.OP_BIPUSH, 32),
2369:                                    new SimpleInstruction(
2370:                                            InstructionConstants.OP_LSHR), }, },
2371:                    { // (... & 0xffffffff00000000L) >>> 32 = ... >>> 32
2372:                            {
2373:                                    new ConstantInstruction(
2374:                                            InstructionConstants.OP_LDC2_W,
2375:                                            L_0xffffffff00000000),
2376:                                    new SimpleInstruction(
2377:                                            InstructionConstants.OP_LAND),
2378:                                    new SimpleInstruction(
2379:                                            InstructionConstants.OP_BIPUSH, 32),
2380:                                    new SimpleInstruction(
2381:                                            InstructionConstants.OP_LUSHR), },
2382:                            {
2383:                                    new SimpleInstruction(
2384:                                            InstructionConstants.OP_BIPUSH, 32),
2385:                                    new SimpleInstruction(
2386:                                            InstructionConstants.OP_LUSHR), }, },
2387:                    { // ... += 0 = nothing
2388:                            { new VariableInstruction(
2389:                                    InstructionConstants.OP_IINC, X, 0), }, {
2390:                            // Nothing.
2391:                            }, },
2392:                    { // getfield/putfield = nothing
2393:                            {
2394:                                    new VariableInstruction(
2395:                                            InstructionConstants.OP_ALOAD, X),
2396:                                    new VariableInstruction(
2397:                                            InstructionConstants.OP_ALOAD, X),
2398:                                    new ConstantInstruction(
2399:                                            InstructionConstants.OP_GETFIELD, Y),
2400:                                    new ConstantInstruction(
2401:                                            InstructionConstants.OP_PUTFIELD, Y), },
2402:                            {
2403:                            // Nothing.
2404:                            }, },
2405:                    //        {   // putfield_L/putfield_L = pop2_x1/putfield
2406:                    //            {
2407:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2408:                    //                // ...
2409:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_L),
2410:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2411:                    //                // ...
2412:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_L),
2413:                    //            },{
2414:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2415:                    //                // ...
2416:                    //                new SimpleInstruction(InstructionConstants.OP_POP2),
2417:                    //                // ...
2418:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_L),
2419:                    //            },
2420:                    //        },
2421:                    //        {   // putfield_D/putfield_D = pop2_x1/putfield
2422:                    //            {
2423:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2424:                    //                // ...
2425:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_D),
2426:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2427:                    //                // ...
2428:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_D),
2429:                    //            },{
2430:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2431:                    //                // ...
2432:                    //                new SimpleInstruction(InstructionConstants.OP_POP2),
2433:                    //                // ...
2434:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_D),
2435:                    //            },
2436:                    //        },
2437:                    //        {   // putfield/putfield = pop_x1/putfield
2438:                    //            {
2439:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2440:                    //                // ...
2441:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, Y),
2442:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2443:                    //                // ...
2444:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, Y),
2445:                    //            },{
2446:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2447:                    //                // ...
2448:                    //                new SimpleInstruction(InstructionConstants.OP_POP),
2449:                    //                // ...
2450:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, Y),
2451:                    //            },
2452:                    //        },
2453:                    //        {   // putfield_L/getfield_L = dup2_x1/putfield
2454:                    //            {
2455:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2456:                    //                // ...
2457:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_L),
2458:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2459:                    //                new ConstantInstruction(InstructionConstants.OP_GETFIELD, FIELD_L),
2460:                    //            },{
2461:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2462:                    //                // ...
2463:                    //                new SimpleInstruction(InstructionConstants.OP_DUP2_X1),
2464:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_L),
2465:                    //            },
2466:                    //        },
2467:                    //        {   // putfield_D/getfield_D = dup2_x1/putfield
2468:                    //            {
2469:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2470:                    //                // ...
2471:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_D),
2472:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2473:                    //                new ConstantInstruction(InstructionConstants.OP_GETFIELD, FIELD_D),
2474:                    //            },{
2475:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2476:                    //                // ...
2477:                    //                new SimpleInstruction(InstructionConstants.OP_DUP2_X1),
2478:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_D),
2479:                    //            },
2480:                    //        },
2481:                    //        {   // putfield/getfield = dup_x1/putfield
2482:                    //            {
2483:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2484:                    //                // ...
2485:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, Y),
2486:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2487:                    //                new ConstantInstruction(InstructionConstants.OP_GETFIELD, Y),
2488:                    //            },{
2489:                    //                new VariableInstruction(InstructionConstants.OP_ALOAD, X),
2490:                    //                // ...
2491:                    //                new SimpleInstruction(InstructionConstants.OP_DUP_X1),
2492:                    //                new ConstantInstruction(InstructionConstants.OP_PUTFIELD, Y),
2493:                    //            },
2494:                    //        },
2495:                    { // getstatic/putstatic = nothing
2496:                            {
2497:                                    new ConstantInstruction(
2498:                                            InstructionConstants.OP_GETSTATIC,
2499:                                            X),
2500:                                    new ConstantInstruction(
2501:                                            InstructionConstants.OP_PUTSTATIC,
2502:                                            X), }, {
2503:                            // Nothing.
2504:                            }, },
2505:                    { // putstatic_L/putstatic_L = pop2/putstatic
2506:                            {
2507:                                    new ConstantInstruction(
2508:                                            InstructionConstants.OP_PUTSTATIC,
2509:                                            FIELD_L),
2510:                                    new ConstantInstruction(
2511:                                            InstructionConstants.OP_PUTSTATIC,
2512:                                            FIELD_L), },
2513:                            {
2514:                                    new SimpleInstruction(
2515:                                            InstructionConstants.OP_POP2),
2516:                                    new ConstantInstruction(
2517:                                            InstructionConstants.OP_PUTSTATIC,
2518:                                            FIELD_L), }, },
2519:                    { // putstatic_D/putstatic_D = pop2/putstatic
2520:                            {
2521:                                    new ConstantInstruction(
2522:                                            InstructionConstants.OP_PUTSTATIC,
2523:                                            FIELD_D),
2524:                                    new ConstantInstruction(
2525:                                            InstructionConstants.OP_PUTSTATIC,
2526:                                            FIELD_D), },
2527:                            {
2528:                                    new SimpleInstruction(
2529:                                            InstructionConstants.OP_POP2),
2530:                                    new ConstantInstruction(
2531:                                            InstructionConstants.OP_PUTSTATIC,
2532:                                            FIELD_D), }, },
2533:                    { // putstatic/putstatic = pop/putstatic
2534:                            {
2535:                                    new ConstantInstruction(
2536:                                            InstructionConstants.OP_PUTSTATIC,
2537:                                            X),
2538:                                    new ConstantInstruction(
2539:                                            InstructionConstants.OP_PUTSTATIC,
2540:                                            X), },
2541:                            {
2542:                                    new SimpleInstruction(
2543:                                            InstructionConstants.OP_POP),
2544:                                    new ConstantInstruction(
2545:                                            InstructionConstants.OP_PUTSTATIC,
2546:                                            X), }, },
2547:                    { // putstatic_L/getstatic_L = dup2/putstatic
2548:                            {
2549:                                    new ConstantInstruction(
2550:                                            InstructionConstants.OP_PUTSTATIC,
2551:                                            FIELD_L),
2552:                                    new ConstantInstruction(
2553:                                            InstructionConstants.OP_GETSTATIC,
2554:                                            FIELD_L), },
2555:                            {
2556:                                    new SimpleInstruction(
2557:                                            InstructionConstants.OP_DUP2),
2558:                                    new ConstantInstruction(
2559:                                            InstructionConstants.OP_PUTSTATIC,
2560:                                            FIELD_L), }, },
2561:                    { // putstatic_D/getstatic_D = dup2/putstatic
2562:                            {
2563:                                    new ConstantInstruction(
2564:                                            InstructionConstants.OP_PUTSTATIC,
2565:                                            FIELD_D),
2566:                                    new ConstantInstruction(
2567:                                            InstructionConstants.OP_GETSTATIC,
2568:                                            FIELD_D), },
2569:                            {
2570:                                    new SimpleInstruction(
2571:                                            InstructionConstants.OP_DUP2),
2572:                                    new ConstantInstruction(
2573:                                            InstructionConstants.OP_PUTSTATIC,
2574:                                            FIELD_D), }, },
2575:                    { // putstatic/getstatic = dup/putstatic
2576:                            {
2577:                                    new ConstantInstruction(
2578:                                            InstructionConstants.OP_PUTSTATIC,
2579:                                            X),
2580:                                    new ConstantInstruction(
2581:                                            InstructionConstants.OP_GETSTATIC,
2582:                                            X), },
2583:                            {
2584:                                    new SimpleInstruction(
2585:                                            InstructionConstants.OP_DUP),
2586:                                    new ConstantInstruction(
2587:                                            InstructionConstants.OP_PUTSTATIC,
2588:                                            X), }, },
2589:                    { // (byte)(byte)... = (byte)...
2590:                            {
2591:                                    new SimpleInstruction(
2592:                                            InstructionConstants.OP_I2B),
2593:                                    new SimpleInstruction(
2594:                                            InstructionConstants.OP_I2B), },
2595:                            { new SimpleInstruction(InstructionConstants.OP_I2B), }, },
2596:                    { // (byte)(char)... = (byte)...
2597:                            {
2598:                                    new SimpleInstruction(
2599:                                            InstructionConstants.OP_I2C),
2600:                                    new SimpleInstruction(
2601:                                            InstructionConstants.OP_I2B), },
2602:                            { new SimpleInstruction(InstructionConstants.OP_I2B), }, },
2603:                    { // (byte)(short)... = (byte)...
2604:                            {
2605:                                    new SimpleInstruction(
2606:                                            InstructionConstants.OP_I2S),
2607:                                    new SimpleInstruction(
2608:                                            InstructionConstants.OP_I2B), },
2609:                            { new SimpleInstruction(InstructionConstants.OP_I2B), }, },
2610:                    { // (char)(char)... = (char)...
2611:                            {
2612:                                    new SimpleInstruction(
2613:                                            InstructionConstants.OP_I2C),
2614:                                    new SimpleInstruction(
2615:                                            InstructionConstants.OP_I2C), },
2616:                            { new SimpleInstruction(InstructionConstants.OP_I2C), }, },
2617:                    { // (char)(short)... = (char)...
2618:                            {
2619:                                    new SimpleInstruction(
2620:                                            InstructionConstants.OP_I2S),
2621:                                    new SimpleInstruction(
2622:                                            InstructionConstants.OP_I2C), },
2623:                            { new SimpleInstruction(InstructionConstants.OP_I2C), }, },
2624:                    { // (short)(byte)... = (byte)...
2625:                            {
2626:                                    new SimpleInstruction(
2627:                                            InstructionConstants.OP_I2B),
2628:                                    new SimpleInstruction(
2629:                                            InstructionConstants.OP_I2S), },
2630:                            { new SimpleInstruction(InstructionConstants.OP_I2B), }, },
2631:                    { // (short)(char)... = (short)...
2632:                            {
2633:                                    new SimpleInstruction(
2634:                                            InstructionConstants.OP_I2C),
2635:                                    new SimpleInstruction(
2636:                                            InstructionConstants.OP_I2S), },
2637:                            { new SimpleInstruction(InstructionConstants.OP_I2S), }, },
2638:                    { // (short)(short)... = (short)...
2639:                            {
2640:                                    new SimpleInstruction(
2641:                                            InstructionConstants.OP_I2S),
2642:                                    new SimpleInstruction(
2643:                                            InstructionConstants.OP_I2S), },
2644:                            { new SimpleInstruction(InstructionConstants.OP_I2S), }, },
2645:                    { // (int)(long)... = ...
2646:                            {
2647:                                    new SimpleInstruction(
2648:                                            InstructionConstants.OP_I2L),
2649:                                    new SimpleInstruction(
2650:                                            InstructionConstants.OP_L2I), }, {
2651:                            // Nothing.
2652:                            }, },
2653:                    // Not handled correctly in all cases by VMs prior to Java 6...
2654:                    //        {   // (byte)bytes[...] = bytes[...]
2655:                    //            {
2656:                    //                new SimpleInstruction(InstructionConstants.OP_BALOAD),
2657:                    //                new SimpleInstruction(InstructionConstants.OP_I2B),
2658:                    //            },{
2659:                    //                new SimpleInstruction(InstructionConstants.OP_BALOAD),
2660:                    //            },
2661:                    //        },
2662:                    //        {   // (short)bytes[...] = bytes[...]
2663:                    //            {
2664:                    //                 new SimpleInstruction(InstructionConstants.OP_BALOAD),
2665:                    //                 new SimpleInstruction(InstructionConstants.OP_I2S),
2666:                    //             },{
2667:                    //                new SimpleInstruction(InstructionConstants.OP_BALOAD),
2668:                    //            },
2669:                    //        },
2670:                    //        {   // (char)chars[...] = chars[...]
2671:                    //            {
2672:                    //                new SimpleInstruction(InstructionConstants.OP_CALOAD),
2673:                    //                new SimpleInstruction(InstructionConstants.OP_I2C),
2674:                    //            },{
2675:                    //                new SimpleInstruction(InstructionConstants.OP_CALOAD),
2676:                    //            },
2677:                    //        },
2678:                    //        {   // (short)shorts[...] = shorts[...]
2679:                    //            {
2680:                    //                new SimpleInstruction(InstructionConstants.OP_SALOAD),
2681:                    //                new SimpleInstruction(InstructionConstants.OP_I2S),
2682:                    //            },{
2683:                    //                new SimpleInstruction(InstructionConstants.OP_SALOAD),
2684:                    //            },
2685:                    //        },
2686:                    //        {   // bytes[...] = (byte)... = bytes[...] = ...
2687:                    //            {
2688:                    //                new SimpleInstruction(InstructionConstants.OP_I2B),
2689:                    //                new SimpleInstruction(InstructionConstants.OP_BASTORE),
2690:                    //            },{
2691:                    //                new SimpleInstruction(InstructionConstants.OP_BASTORE),
2692:                    //            },
2693:                    //        },
2694:                    //        {   // chars[...] = (char)... = chars[...] = ...
2695:                    //            {
2696:                    //                new SimpleInstruction(InstructionConstants.OP_I2C),
2697:                    //                new SimpleInstruction(InstructionConstants.OP_CASTORE),
2698:                    //            },{
2699:                    //                new SimpleInstruction(InstructionConstants.OP_CASTORE),
2700:                    //            },
2701:                    //        },
2702:                    //        {   // shorts[...] = (short)... = shorts[...] = ...
2703:                    //            {
2704:                    //                new SimpleInstruction(InstructionConstants.OP_I2S),
2705:                    //                new SimpleInstruction(InstructionConstants.OP_SASTORE),
2706:                    //            },{
2707:                    //                new SimpleInstruction(InstructionConstants.OP_SASTORE),
2708:                    //            },
2709:                    //        },
2710:                    { // goto +3 = nothing
2711:                            { new BranchInstruction(
2712:                                    InstructionConstants.OP_GOTO, 3), }, {
2713:                            // Nothing.
2714:                            }, },
2715:                    { // ifeq +3 = pop
2716:                            { new BranchInstruction(
2717:                                    InstructionConstants.OP_IFEQ, 3), },
2718:                            { new SimpleInstruction(InstructionConstants.OP_POP), }, },
2719:                    { // ifne +3 = pop
2720:                            { new BranchInstruction(
2721:                                    InstructionConstants.OP_IFNE, 3), },
2722:                            { new SimpleInstruction(InstructionConstants.OP_POP), }, },
2723:                    { // iflt +3 = pop
2724:                            { new BranchInstruction(
2725:                                    InstructionConstants.OP_IFLT, 3), },
2726:                            { new SimpleInstruction(InstructionConstants.OP_POP), }, },
2727:                    { // ifge +3 = pop
2728:                            { new BranchInstruction(
2729:                                    InstructionConstants.OP_IFGE, 3), },
2730:                            { new SimpleInstruction(InstructionConstants.OP_POP), }, },
2731:                    { // ifgt +3 = pop
2732:                            { new BranchInstruction(
2733:                                    InstructionConstants.OP_IFGT, 3), },
2734:                            { new SimpleInstruction(InstructionConstants.OP_POP), }, },
2735:                    { // ifle +3 = pop
2736:                            { new BranchInstruction(
2737:                                    InstructionConstants.OP_IFLE, 3), },
2738:                            { new SimpleInstruction(InstructionConstants.OP_POP), }, },
2739:                    { // ificmpeq +3 = pop2
2740:                            { new BranchInstruction(
2741:                                    InstructionConstants.OP_IFICMPEQ, 3), },
2742:                            { new SimpleInstruction(
2743:                                    InstructionConstants.OP_POP2), }, },
2744:                    { // ificmpne +3 = pop2
2745:                            { new BranchInstruction(
2746:                                    InstructionConstants.OP_IFICMPNE, 3), },
2747:                            { new SimpleInstruction(
2748:                                    InstructionConstants.OP_POP2), }, },
2749:                    { // ificmplt +3 = pop2
2750:                            { new BranchInstruction(
2751:                                    InstructionConstants.OP_IFICMPLT, 3), },
2752:                            { new SimpleInstruction(
2753:                                    InstructionConstants.OP_POP2), }, },
2754:                    { // ificmpge +3 = pop2
2755:                            { new BranchInstruction(
2756:                                    InstructionConstants.OP_IFICMPGE, 3), },
2757:                            { new SimpleInstruction(
2758:                                    InstructionConstants.OP_POP2), }, },
2759:                    { // ificmpgt +3 = pop2
2760:                            { new BranchInstruction(
2761:                                    InstructionConstants.OP_IFICMPGT, 3), },
2762:                            { new SimpleInstruction(
2763:                                    InstructionConstants.OP_POP2), }, },
2764:                    { // ificmple +3 = pop2
2765:                            { new BranchInstruction(
2766:                                    InstructionConstants.OP_IFICMPLE, 3), },
2767:                            { new SimpleInstruction(
2768:                                    InstructionConstants.OP_POP2), }, },
2769:                    { // ifacmpeq +3 = pop2
2770:                            { new BranchInstruction(
2771:                                    InstructionConstants.OP_IFACMPEQ, 3), },
2772:                            { new SimpleInstruction(
2773:                                    InstructionConstants.OP_POP2), }, },
2774:                    { // ifacmpne +3 = pop2
2775:                            { new BranchInstruction(
2776:                                    InstructionConstants.OP_IFACMPNE, 3), },
2777:                            { new SimpleInstruction(
2778:                                    InstructionConstants.OP_POP2), }, },
2779:                    { // ifnull +3 = pop
2780:                            { new BranchInstruction(
2781:                                    InstructionConstants.OP_IFNULL, 3), },
2782:                            { new SimpleInstruction(InstructionConstants.OP_POP), }, },
2783:                    { // ifnonnull +3 = pop
2784:                            { new BranchInstruction(
2785:                                    InstructionConstants.OP_IFNONNULL, 3), },
2786:                            { new SimpleInstruction(InstructionConstants.OP_POP), }, },
2787:                    { // if (... == 0) = ifeq
2788:                            {
2789:                                    new SimpleInstruction(
2790:                                            InstructionConstants.OP_ICONST_0),
2791:                                    new BranchInstruction(
2792:                                            InstructionConstants.OP_IFICMPEQ, X), },
2793:                            { new BranchInstruction(
2794:                                    InstructionConstants.OP_IFEQ, X), }, },
2795:                    { // if (... != 0) = ifne
2796:                            {
2797:                                    new SimpleInstruction(
2798:                                            InstructionConstants.OP_ICONST_0),
2799:                                    new BranchInstruction(
2800:                                            InstructionConstants.OP_IFICMPNE, X), },
2801:                            { new BranchInstruction(
2802:                                    InstructionConstants.OP_IFNE, X), }, },
2803:                    { // if (... < 0) = iflt
2804:                            {
2805:                                    new SimpleInstruction(
2806:                                            InstructionConstants.OP_ICONST_0),
2807:                                    new BranchInstruction(
2808:                                            InstructionConstants.OP_IFICMPLT, X), },
2809:                            { new BranchInstruction(
2810:                                    InstructionConstants.OP_IFLT, X), }, },
2811:                    { // if (... >= 0) = ifge
2812:                            {
2813:                                    new SimpleInstruction(
2814:                                            InstructionConstants.OP_ICONST_0),
2815:                                    new BranchInstruction(
2816:                                            InstructionConstants.OP_IFICMPGE, X), },
2817:                            { new BranchInstruction(
2818:                                    InstructionConstants.OP_IFGE, X), }, },
2819:                    { // if (... > 0) = ifgt
2820:                            {
2821:                                    new SimpleInstruction(
2822:                                            InstructionConstants.OP_ICONST_0),
2823:                                    new BranchInstruction(
2824:                                            InstructionConstants.OP_IFICMPGT, X), },
2825:                            { new BranchInstruction(
2826:                                    InstructionConstants.OP_IFGT, X), }, },
2827:                    { // if (... <= 0) = ifle
2828:                            {
2829:                                    new SimpleInstruction(
2830:                                            InstructionConstants.OP_ICONST_0),
2831:                                    new BranchInstruction(
2832:                                            InstructionConstants.OP_IFICMPLE, X), },
2833:                            { new BranchInstruction(
2834:                                    InstructionConstants.OP_IFLE, X), }, },
2835:                    { // if (... == null) = ifnull
2836:                            {
2837:                                    new SimpleInstruction(
2838:                                            InstructionConstants.OP_ACONST_NULL),
2839:                                    new BranchInstruction(
2840:                                            InstructionConstants.OP_IFACMPEQ, X), },
2841:                            { new BranchInstruction(
2842:                                    InstructionConstants.OP_IFNULL, X), }, },
2843:                    { // if (... != null) = ifnonnull
2844:                            {
2845:                                    new SimpleInstruction(
2846:                                            InstructionConstants.OP_ACONST_NULL),
2847:                                    new BranchInstruction(
2848:                                            InstructionConstants.OP_IFACMPNE, X), },
2849:                            { new BranchInstruction(
2850:                                    InstructionConstants.OP_IFNONNULL, X), }, },
2851:                    { // iconst_0/ifeq = goto
2852:                            {
2853:                                    new SimpleInstruction(
2854:                                            InstructionConstants.OP_ICONST_0),
2855:                                    new BranchInstruction(
2856:                                            InstructionConstants.OP_IFEQ, X), },
2857:                            { new BranchInstruction(
2858:                                    InstructionConstants.OP_GOTO, X), }, },
2859:                    { // iconst/ifeq = nothing
2860:                            {
2861:                                    new SimpleInstruction(
2862:                                            InstructionConstants.OP_ICONST_0, A),
2863:                                    new BranchInstruction(
2864:                                            InstructionConstants.OP_IFEQ, X), },
2865:                            {
2866:                            // Nothing.
2867:                            }, },
2868:                    { // bipush/ifeq = nothing
2869:                            {
2870:                                    new SimpleInstruction(
2871:                                            InstructionConstants.OP_BIPUSH, A),
2872:                                    new BranchInstruction(
2873:                                            InstructionConstants.OP_IFEQ, X), },
2874:                            {
2875:                            // Nothing.
2876:                            }, },
2877:                    { // sipush/ifeq = nothing
2878:                            {
2879:                                    new SimpleInstruction(
2880:                                            InstructionConstants.OP_SIPUSH, A),
2881:                                    new BranchInstruction(
2882:                                            InstructionConstants.OP_IFEQ, X), },
2883:                            {
2884:                            // Nothing.
2885:                            }, },
2886:                    { // iconst_0/ifne = nothing
2887:                            {
2888:                                    new SimpleInstruction(
2889:                                            InstructionConstants.OP_ICONST_0),
2890:                                    new BranchInstruction(
2891:                                            InstructionConstants.OP_IFNE, X), },
2892:                            {
2893:                            // Nothing.
2894:                            }, },
2895:                    { // iconst/ifne = goto
2896:                            {
2897:                                    new SimpleInstruction(
2898:                                            InstructionConstants.OP_ICONST_0, A),
2899:                                    new BranchInstruction(
2900:                                            InstructionConstants.OP_IFNE, X), },
2901:                            { new BranchInstruction(
2902:                                    InstructionConstants.OP_GOTO, X), }, },
2903:                    { // bipush/ifne = goto
2904:                            {
2905:                                    new SimpleInstruction(
2906:                                            InstructionConstants.OP_BIPUSH, A),
2907:                                    new BranchInstruction(
2908:                                            InstructionConstants.OP_IFNE, X), },
2909:                            { new BranchInstruction(
2910:                                    InstructionConstants.OP_GOTO, X), }, },
2911:                    { // sipush/ifne = goto
2912:                            {
2913:                                    new SimpleInstruction(
2914:                                            InstructionConstants.OP_SIPUSH, A),
2915:                                    new BranchInstruction(
2916:                                            InstructionConstants.OP_IFNE, X), },
2917:                            { new BranchInstruction(
2918:                                    InstructionConstants.OP_GOTO, X), }, },
2919:                    { // iconst_0/iflt = nothing
2920:                            {
2921:                                    new SimpleInstruction(
2922:                                            InstructionConstants.OP_ICONST_0),
2923:                                    new BranchInstruction(
2924:                                            InstructionConstants.OP_IFLT, X), },
2925:                            {
2926:                            // Nothing.
2927:                            }, },
2928:                    { // iconst_0/ifge = goto
2929:                            {
2930:                                    new SimpleInstruction(
2931:                                            InstructionConstants.OP_ICONST_0),
2932:                                    new BranchInstruction(
2933:                                            InstructionConstants.OP_IFGE, X), },
2934:                            { new BranchInstruction(
2935:                                    InstructionConstants.OP_GOTO, X), }, },
2936:                    { // iconst_0/ifgt = nothing
2937:                            {
2938:                                    new SimpleInstruction(
2939:                                            InstructionConstants.OP_ICONST_0),
2940:                                    new BranchInstruction(
2941:                                            InstructionConstants.OP_IFGT, X), },
2942:                            {
2943:                            // Nothing.
2944:                            }, },
2945:                    { // iconst_0/ifle = goto
2946:                            {
2947:                                    new SimpleInstruction(
2948:                                            InstructionConstants.OP_ICONST_0),
2949:                                    new BranchInstruction(
2950:                                            InstructionConstants.OP_IFLE, X), },
2951:                            { new BranchInstruction(
2952:                                    InstructionConstants.OP_GOTO, X), }, },
2953:                    { // aconst_null/ifnull = goto
2954:                            {
2955:                                    new SimpleInstruction(
2956:                                            InstructionConstants.OP_ACONST_NULL),
2957:                                    new BranchInstruction(
2958:                                            InstructionConstants.OP_IFNULL, X), },
2959:                            { new BranchInstruction(
2960:                                    InstructionConstants.OP_GOTO, X), }, },
2961:                    { // aconst_null/ifnonnul = nothing
2962:                            {
2963:                                    new SimpleInstruction(
2964:                                            InstructionConstants.OP_ACONST_NULL),
2965:                                    new BranchInstruction(
2966:                                            InstructionConstants.OP_IFNONNULL,
2967:                                            X), }, {
2968:                            // Nothing.
2969:                            }, },
2970:                    { // ifeq/goto = ifne
2971:                            {
2972:                                    new BranchInstruction(
2973:                                            InstructionConstants.OP_IFEQ, 6),
2974:                                    new BranchInstruction(
2975:                                            InstructionConstants.OP_GOTO, X), },
2976:                            { new BranchInstruction(
2977:                                    InstructionConstants.OP_IFNE, X), }, },
2978:                    { // ifne/goto = ifeq
2979:                            {
2980:                                    new BranchInstruction(
2981:                                            InstructionConstants.OP_IFNE, 6),
2982:                                    new BranchInstruction(
2983:                                            InstructionConstants.OP_GOTO, X), },
2984:                            { new BranchInstruction(
2985:                                    InstructionConstants.OP_IFEQ, X), }, },
2986:                    { // iflt/goto = ifge
2987:                            {
2988:                                    new BranchInstruction(
2989:                                            InstructionConstants.OP_IFLT, 6),
2990:                                    new BranchInstruction(
2991:                                            InstructionConstants.OP_GOTO, X), },
2992:                            { new BranchInstruction(
2993:                                    InstructionConstants.OP_IFGE, X), }, },
2994:                    { // ifge/goto = iflt
2995:                            {
2996:                                    new BranchInstruction(
2997:                                            InstructionConstants.OP_IFGE, 6),
2998:                                    new BranchInstruction(
2999:                                            InstructionConstants.OP_GOTO, X), },
3000:                            { new BranchInstruction(
3001:                                    InstructionConstants.OP_IFLT, X), }, },
3002:                    { // ifgt/goto = ifle
3003:                            {
3004:                                    new BranchInstruction(
3005:                                            InstructionConstants.OP_IFGT, 6),
3006:                                    new BranchInstruction(
3007:                                            InstructionConstants.OP_GOTO, X), },
3008:                            { new BranchInstruction(
3009:                                    InstructionConstants.OP_IFLE, X), }, },
3010:                    { // ifle/goto = ifgt
3011:                            {
3012:                                    new BranchInstruction(
3013:                                            InstructionConstants.OP_IFLE, 6),
3014:                                    new BranchInstruction(
3015:                                            InstructionConstants.OP_GOTO, X), },
3016:                            { new BranchInstruction(
3017:                                    InstructionConstants.OP_IFGT, X), }, },
3018:                    { // ificmpeq/goto = ificmpne
3019:                            {
3020:                                    new BranchInstruction(
3021:                                            InstructionConstants.OP_IFICMPEQ, 6),
3022:                                    new BranchInstruction(
3023:                                            InstructionConstants.OP_GOTO, X), },
3024:                            { new BranchInstruction(
3025:                                    InstructionConstants.OP_IFICMPNE, X), }, },
3026:                    { // ificmpne/goto = ificmpeq
3027:                            {
3028:                                    new BranchInstruction(
3029:                                            InstructionConstants.OP_IFICMPNE, 6),
3030:                                    new BranchInstruction(
3031:                                            InstructionConstants.OP_GOTO, X), },
3032:                            { new BranchInstruction(
3033:                                    InstructionConstants.OP_IFICMPEQ, X), }, },
3034:                    { // ificmplt/goto = ificmpge
3035:                            {
3036:                                    new BranchInstruction(
3037:                                            InstructionConstants.OP_IFICMPLT, 6),
3038:                                    new BranchInstruction(
3039:                                            InstructionConstants.OP_GOTO, X), },
3040:                            { new BranchInstruction(
3041:                                    InstructionConstants.OP_IFICMPGE, X), }, },
3042:                    { // ificmpge/goto = ificmplt
3043:                            {
3044:                                    new BranchInstruction(
3045:                                            InstructionConstants.OP_IFICMPGE, 6),
3046:                                    new BranchInstruction(
3047:                                            InstructionConstants.OP_GOTO, X), },
3048:                            { new BranchInstruction(
3049:                                    InstructionConstants.OP_IFICMPLT, X), }, },
3050:                    { // ificmpgt/goto = ificmple
3051:                            {
3052:                                    new BranchInstruction(
3053:                                            InstructionConstants.OP_IFICMPGT, 6),
3054:                                    new BranchInstruction(
3055:                                            InstructionConstants.OP_GOTO, X), },
3056:                            { new BranchInstruction(
3057:                                    InstructionConstants.OP_IFICMPLE, X), }, },
3058:                    { // ificmple/goto = ificmpgt
3059:                            {
3060:                                    new BranchInstruction(
3061:                                            InstructionConstants.OP_IFICMPLE, 6),
3062:                                    new BranchInstruction(
3063:                                            InstructionConstants.OP_GOTO, X), },
3064:                            { new BranchInstruction(
3065:                                    InstructionConstants.OP_IFICMPGT, X), }, },
3066:                    { // ifacmpeq/goto = ifacmpne
3067:                            {
3068:                                    new BranchInstruction(
3069:                                            InstructionConstants.OP_IFACMPEQ, 6),
3070:                                    new BranchInstruction(
3071:                                            InstructionConstants.OP_GOTO, X), },
3072:                            { new BranchInstruction(
3073:                                    InstructionConstants.OP_IFACMPNE, X), }, },
3074:                    { // ifacmpne/goto = ifacmpeq
3075:                            {
3076:                                    new BranchInstruction(
3077:                                            InstructionConstants.OP_IFACMPNE, 6),
3078:                                    new BranchInstruction(
3079:                                            InstructionConstants.OP_GOTO, X), },
3080:                            { new BranchInstruction(
3081:                                    InstructionConstants.OP_IFACMPEQ, X), }, },
3082:                    { // ifnull/goto = ifnonnull
3083:                            {
3084:                                    new BranchInstruction(
3085:                                            InstructionConstants.OP_IFNULL, 6),
3086:                                    new BranchInstruction(
3087:                                            InstructionConstants.OP_GOTO, X), },
3088:                            { new BranchInstruction(
3089:                                    InstructionConstants.OP_IFNONNULL, X), }, },
3090:                    { // ifnonnull/goto = ifnull
3091:                            {
3092:                                    new BranchInstruction(
3093:                                            InstructionConstants.OP_IFNONNULL,
3094:                                            6),
3095:                                    new BranchInstruction(
3096:                                            InstructionConstants.OP_GOTO, X), },
3097:                            { new BranchInstruction(
3098:                                    InstructionConstants.OP_IFNULL, X), }, },
3099:                    //        {   // switch (...) { default: ... } = pop/goto ...
3100:                    //            {
3101:                    //                new TableSwitchInstruction(InstructionConstants.OP_TABLESWITCH, A, X, Y, 0, new int[0]),
3102:                    //            },{
3103:                    //                new SimpleInstruction(InstructionConstants.OP_POP),
3104:                    //                new BranchInstruction(InstructionConstants.OP_GOTO, A),
3105:                    //            },
3106:                    //        },
3107:                    //        {   // switch (...) { default: ... } = pop/goto ...
3108:                    //            {
3109:                    //                new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, A, 0, new int[0], new int[0]),
3110:                    //            },{
3111:                    //                new SimpleInstruction(InstructionConstants.OP_POP),
3112:                    //                new BranchInstruction(InstructionConstants.OP_GOTO, A),
3113:                    //            },
3114:                    //        },
3115:                    { // switch (...) { case/case/default: ... } = switch (...) { case/default: ... }
3116:                            { new LookUpSwitchInstruction(
3117:                                    InstructionConstants.OP_LOOKUPSWITCH, A,
3118:                                    new int[] { X, Y }, new int[] { A, B }), },
3119:                            { new LookUpSwitchInstruction(
3120:                                    InstructionConstants.OP_LOOKUPSWITCH, A,
3121:                                    new int[] { Y }, new int[] { B }), }, },
3122:                    { // switch (...) { case/case/default: ... } = switch (...) { case/default: ... }
3123:                            { new LookUpSwitchInstruction(
3124:                                    InstructionConstants.OP_LOOKUPSWITCH, B,
3125:                                    new int[] { X, Y }, new int[] { A, B }), },
3126:                            { new LookUpSwitchInstruction(
3127:                                    InstructionConstants.OP_LOOKUPSWITCH, B,
3128:                                    new int[] { X }, new int[] { A }), }, },
3129:                    { // switch (...) { case/case/case/default: ... } = switch (...) { case/case/default: ... }
3130:                            { new LookUpSwitchInstruction(
3131:                                    InstructionConstants.OP_LOOKUPSWITCH, A,
3132:                                    new int[] { X, Y, Z },
3133:                                    new int[] { A, B, C }), },
3134:                            { new LookUpSwitchInstruction(
3135:                                    InstructionConstants.OP_LOOKUPSWITCH, A,
3136:                                    new int[] { Y, Z }, new int[] { B, C }), }, },
3137:                    { // switch (...) { case/case/case/default: ... } = switch (...) { case/case/default: ... }
3138:                            { new LookUpSwitchInstruction(
3139:                                    InstructionConstants.OP_LOOKUPSWITCH, B,
3140:                                    new int[] { X, Y, Z },
3141:                                    new int[] { A, B, C }), },
3142:                            { new LookUpSwitchInstruction(
3143:                                    InstructionConstants.OP_LOOKUPSWITCH, B,
3144:                                    new int[] { X, Z }, new int[] { A, C }), }, },
3145:                    { // switch (...) { case/case/case/default: ... } = switch (...) { case/case/default: ... }
3146:                            { new LookUpSwitchInstruction(
3147:                                    InstructionConstants.OP_LOOKUPSWITCH, C,
3148:                                    new int[] { X, Y, Z },
3149:                                    new int[] { A, B, C }), },
3150:                            { new LookUpSwitchInstruction(
3151:                                    InstructionConstants.OP_LOOKUPSWITCH, C,
3152:                                    new int[] { X, Y }, new int[] { A, B }), }, },
3153:            //        {   // switch (...) { case ...: ...  default:  ... }
3154:            //            // = if (... == ...) ... else ...
3155:            //            {
3156:            //                new TableSwitchInstruction(InstructionConstants.OP_TABLESWITCH, A, X, Y, 1, new int[] { B }),
3157:            //            },{
3158:            //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, X),
3159:            //                new BranchInstruction(InstructionConstants.OP_IFICMPNE, A),
3160:            //                new BranchInstruction(InstructionConstants.OP_GOTO, B),
3161:            //            },
3162:            //        },
3163:            //        {   // switch (...) { case ...: ...  default:  ... }
3164:            //            // = if (... == ...) ... else ...
3165:            //            {
3166:            //                new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, A, 1, new int[] { X }, new int[] { B }),
3167:            //            },{
3168:            //                new SimpleInstruction(InstructionConstants.OP_SIPUSH, X),
3169:            //                new BranchInstruction(InstructionConstants.OP_IFICMPNE, A),
3170:            //                new BranchInstruction(InstructionConstants.OP_GOTO, B),
3171:            //            },
3172:            //        }
3173:            };
3174:        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.