1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/*
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * you may not use this file except in compliance with the License.
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * You may obtain a copy of the License at
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License.
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage com.android.dx.cf.code;
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport com.android.dx.util.Hex;
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/**
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constants and utility methods for dealing with bytecode arrays at an
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * opcode level.
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class ByteOps {
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    // one constant per opcode
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int NOP = 0x00;
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ACONST_NULL = 0x01;
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ICONST_M1 = 0x02;
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ICONST_0 = 0x03;
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ICONST_1 = 0x04;
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ICONST_2 = 0x05;
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ICONST_3 = 0x06;
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ICONST_4 = 0x07;
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ICONST_5 = 0x08;
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LCONST_0 = 0x09;
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LCONST_1 = 0x0a;
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FCONST_0 = 0x0b;
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FCONST_1 = 0x0c;
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FCONST_2 = 0x0d;
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DCONST_0 = 0x0e;
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DCONST_1 = 0x0f;
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int BIPUSH = 0x10;
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int SIPUSH = 0x11;
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LDC = 0x12;
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LDC_W = 0x13;
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LDC2_W = 0x14;
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ILOAD = 0x15;
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LLOAD = 0x16;
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FLOAD = 0x17;
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DLOAD = 0x18;
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ALOAD = 0x19;
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ILOAD_0 = 0x1a;
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ILOAD_1 = 0x1b;
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ILOAD_2 = 0x1c;
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ILOAD_3 = 0x1d;
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LLOAD_0 = 0x1e;
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LLOAD_1 = 0x1f;
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LLOAD_2 = 0x20;
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LLOAD_3 = 0x21;
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FLOAD_0 = 0x22;
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FLOAD_1 = 0x23;
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FLOAD_2 = 0x24;
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FLOAD_3 = 0x25;
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DLOAD_0 = 0x26;
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DLOAD_1 = 0x27;
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DLOAD_2 = 0x28;
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DLOAD_3 = 0x29;
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ALOAD_0 = 0x2a;
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ALOAD_1 = 0x2b;
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ALOAD_2 = 0x2c;
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ALOAD_3 = 0x2d;
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IALOAD = 0x2e;
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LALOAD = 0x2f;
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FALOAD = 0x30;
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DALOAD = 0x31;
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int AALOAD = 0x32;
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int BALOAD = 0x33;
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int CALOAD = 0x34;
80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int SALOAD = 0x35;
81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ISTORE = 0x36;
82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LSTORE = 0x37;
83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FSTORE = 0x38;
84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DSTORE = 0x39;
85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ASTORE = 0x3a;
86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ISTORE_0 = 0x3b;
87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ISTORE_1 = 0x3c;
88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ISTORE_2 = 0x3d;
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ISTORE_3 = 0x3e;
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LSTORE_0 = 0x3f;
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LSTORE_1 = 0x40;
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LSTORE_2 = 0x41;
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LSTORE_3 = 0x42;
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FSTORE_0 = 0x43;
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FSTORE_1 = 0x44;
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FSTORE_2 = 0x45;
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FSTORE_3 = 0x46;
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DSTORE_0 = 0x47;
99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DSTORE_1 = 0x48;
100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DSTORE_2 = 0x49;
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DSTORE_3 = 0x4a;
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ASTORE_0 = 0x4b;
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ASTORE_1 = 0x4c;
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ASTORE_2 = 0x4d;
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ASTORE_3 = 0x4e;
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IASTORE = 0x4f;
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LASTORE = 0x50;
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FASTORE = 0x51;
109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DASTORE = 0x52;
110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int AASTORE = 0x53;
111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int BASTORE = 0x54;
112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int CASTORE = 0x55;
113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int SASTORE = 0x56;
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int POP = 0x57;
115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int POP2 = 0x58;
116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DUP = 0x59;
117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DUP_X1 = 0x5a;
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DUP_X2 = 0x5b;
119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DUP2 = 0x5c;
120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DUP2_X1 = 0x5d;
121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DUP2_X2 = 0x5e;
122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int SWAP = 0x5f;
123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IADD = 0x60;
124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LADD = 0x61;
125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FADD = 0x62;
126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DADD = 0x63;
127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ISUB = 0x64;
128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LSUB = 0x65;
129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FSUB = 0x66;
130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DSUB = 0x67;
131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IMUL = 0x68;
132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LMUL = 0x69;
133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMUL = 0x6a;
134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DMUL = 0x6b;
135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IDIV = 0x6c;
136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LDIV = 0x6d;
137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FDIV = 0x6e;
138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DDIV = 0x6f;
139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IREM = 0x70;
140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LREM = 0x71;
141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FREM = 0x72;
142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DREM = 0x73;
143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int INEG = 0x74;
144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LNEG = 0x75;
145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FNEG = 0x76;
146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DNEG = 0x77;
147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ISHL = 0x78;
148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LSHL = 0x79;
149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ISHR = 0x7a;
150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LSHR = 0x7b;
151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IUSHR = 0x7c;
152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LUSHR = 0x7d;
153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IAND = 0x7e;
154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LAND = 0x7f;
155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IOR = 0x80;
156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LOR = 0x81;
157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IXOR = 0x82;
158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LXOR = 0x83;
159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IINC = 0x84;
160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int I2L = 0x85;
161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int I2F = 0x86;
162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int I2D = 0x87;
163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int L2I = 0x88;
164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int L2F = 0x89;
165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int L2D = 0x8a;
166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int F2I = 0x8b;
167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int F2L = 0x8c;
168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int F2D = 0x8d;
169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int D2I = 0x8e;
170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int D2L = 0x8f;
171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int D2F = 0x90;
172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int I2B = 0x91;
173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int I2C = 0x92;
174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int I2S = 0x93;
175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LCMP = 0x94;
176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FCMPL = 0x95;
177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FCMPG = 0x96;
178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DCMPL = 0x97;
179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DCMPG = 0x98;
180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IFEQ = 0x99;
181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IFNE = 0x9a;
182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IFLT = 0x9b;
183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IFGE = 0x9c;
184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IFGT = 0x9d;
185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IFLE = 0x9e;
186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IF_ICMPEQ = 0x9f;
187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IF_ICMPNE = 0xa0;
188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IF_ICMPLT = 0xa1;
189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IF_ICMPGE = 0xa2;
190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IF_ICMPGT = 0xa3;
191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IF_ICMPLE = 0xa4;
192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IF_ACMPEQ = 0xa5;
193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IF_ACMPNE = 0xa6;
194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int GOTO = 0xa7;
195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int JSR = 0xa8;
196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int RET = 0xa9;
197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int TABLESWITCH = 0xaa;
198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LOOKUPSWITCH = 0xab;
199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IRETURN = 0xac;
200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int LRETURN = 0xad;
201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FRETURN = 0xae;
202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int DRETURN = 0xaf;
203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ARETURN = 0xb0;
204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int RETURN = 0xb1;
205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int GETSTATIC = 0xb2;
206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int PUTSTATIC = 0xb3;
207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int GETFIELD = 0xb4;
208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int PUTFIELD = 0xb5;
209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int INVOKEVIRTUAL = 0xb6;
210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int INVOKESPECIAL = 0xb7;
211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int INVOKESTATIC = 0xb8;
212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int INVOKEINTERFACE = 0xb9;
2135ca383d7373cf7c54706b8e70d534deee8d2e3addelphinemartin    public static final int INVOKEDYNAMIC = 0xba;
214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int NEW = 0xbb;
215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int NEWARRAY = 0xbc;
216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ANEWARRAY = 0xbd;
217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ARRAYLENGTH = 0xbe;
218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int ATHROW = 0xbf;
219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int CHECKCAST = 0xc0;
220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int INSTANCEOF = 0xc1;
221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int MONITORENTER = 0xc2;
222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int MONITOREXIT = 0xc3;
223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int WIDE = 0xc4;
224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int MULTIANEWARRAY = 0xc5;
225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IFNULL = 0xc6;
226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int IFNONNULL = 0xc7;
227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int GOTO_W = 0xc8;
228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int JSR_W = 0xc9;
229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    // a constant for each valid argument to "newarray"
231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int NEWARRAY_BOOLEAN = 4;
233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int NEWARRAY_CHAR = 5;
234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int NEWARRAY_FLOAT = 6;
235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int NEWARRAY_DOUBLE = 7;
236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int NEWARRAY_BYTE = 8;
237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int NEWARRAY_SHORT = 9;
238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int NEWARRAY_INT = 10;
239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int NEWARRAY_LONG = 11;
240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    // a constant for each possible instruction format
242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /** invalid */
244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_INVALID = 0;
245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
24699409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "-": {@code op} */
247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_NO_ARGS = 1;
248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
24999409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "0": {@code op}; implies {@code max_locals >= 1} */
250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_NO_ARGS_LOCALS_1 = 2;
251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
25299409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "1": {@code op}; implies {@code max_locals >= 2} */
253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_NO_ARGS_LOCALS_2 = 3;
254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
25599409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "2": {@code op}; implies {@code max_locals >= 3} */
256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_NO_ARGS_LOCALS_3 = 4;
257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
25899409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "3": {@code op}; implies {@code max_locals >= 4} */
259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_NO_ARGS_LOCALS_4 = 5;
260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
26199409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "4": {@code op}; implies {@code max_locals >= 5} */
262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_NO_ARGS_LOCALS_5 = 6;
263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
26499409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "b": {@code op target target} */
265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_BRANCH = 7;
266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
26799409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "c": {@code op target target target target} */
268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_WIDE_BRANCH = 8;
269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
27099409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "p": {@code op #cpi #cpi}; constant restricted as specified */
271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_CPI = 9;
272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
27499409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project     * "l": {@code op local}; category-1 local; implies
27599409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project     * {@code max_locals} is at least two more than the given
276de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro     * local number
277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_LOCAL_1 = 10;
279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
28199409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project     * "m": {@code op local}; category-2 local; implies
28299409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project     * {@code max_locals} is at least two more than the given
283de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro     * local number
284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_LOCAL_2 = 11;
286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
28899409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project     * "y": {@code op #byte} ({@code bipush} and
289de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro     * {@code newarray})
290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_LITERAL_BYTE = 12;
292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
29399409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "I": {@code invokeinterface cpi cpi count 0} */
294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_INVOKEINTERFACE = 13;
295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
29699409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "L": {@code ldc #cpi}; constant restricted as specified */
297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_LDC = 14;
298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
29999409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "S": {@code sipush #byte #byte} */
300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_SIPUSH = 15;
301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
30299409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "T": {@code tableswitch ...} */
303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_TABLESWITCH = 16;
304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
30599409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "U": {@code lookupswitch ...} */
306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_LOOKUPSWITCH = 17;
307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
30899409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "M": {@code multianewarray cpi cpi dims} */
309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_MULTIANEWARRAY = 18;
310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
31199409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "W": {@code wide ...} */
312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_WIDE = 19;
313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /** mask for the bits representing the opcode format */
315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int FMT_MASK = 0x1f;
316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
31799409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "I": flag bit for valid cp type for {@code Integer} */
318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int CPOK_Integer = 0x20;
319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
32099409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "F": flag bit for valid cp type for {@code Float} */
321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int CPOK_Float = 0x40;
322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
32399409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "J": flag bit for valid cp type for {@code Long} */
324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int CPOK_Long = 0x80;
325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
32699409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "D": flag bit for valid cp type for {@code Double} */
327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int CPOK_Double = 0x100;
328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
32999409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "c": flag bit for valid cp type for {@code Class} */
330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int CPOK_Class = 0x200;
331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
33299409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "s": flag bit for valid cp type for {@code String} */
333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int CPOK_String = 0x400;
334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
33599409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "f": flag bit for valid cp type for {@code Fieldref} */
336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int CPOK_Fieldref = 0x800;
337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
33899409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "m": flag bit for valid cp type for {@code Methodref} */
339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int CPOK_Methodref = 0x1000;
340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
34199409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** "i": flag bit for valid cp type for {@code InterfaceMethodref} */
342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static final int CPOK_InterfaceMethodref = 0x2000;
343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
34599409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project     * {@code non-null;} map from opcodes to format or'ed with allowed constant
346de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro     * pool types
347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private static final int[] OPCODE_INFO = new int[256];
349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
35099409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** {@code non-null;} map from opcodes to their names */
351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private static final String[] OPCODE_NAMES = new String[256];
352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
35399409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project    /** {@code non-null;} bigass string describing all the opcodes */
354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private static final String OPCODE_DETAILS =
355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "00 - nop;" +
356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "01 - aconst_null;" +
357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "02 - iconst_m1;" +
358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "03 - iconst_0;" +
359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "04 - iconst_1;" +
360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "05 - iconst_2;" +
361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "06 - iconst_3;" +
362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "07 - iconst_4;" +
363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "08 - iconst_5;" +
364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "09 - lconst_0;" +
365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "0a - lconst_1;" +
366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "0b - fconst_0;" +
367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "0c - fconst_1;" +
368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "0d - fconst_2;" +
369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "0e - dconst_0;" +
370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "0f - dconst_1;" +
371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "10 y bipush;" +
372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "11 S sipush;" +
373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "12 L:IFcs ldc;" +
374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "13 p:IFcs ldc_w;" +
375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "14 p:DJ ldc2_w;" +
376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "15 l iload;" +
377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "16 m lload;" +
378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "17 l fload;" +
379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "18 m dload;" +
380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "19 l aload;" +
381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "1a 0 iload_0;" +
382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "1b 1 iload_1;" +
383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "1c 2 iload_2;" +
384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "1d 3 iload_3;" +
385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "1e 1 lload_0;" +
386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "1f 2 lload_1;" +
387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "20 3 lload_2;" +
388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "21 4 lload_3;" +
389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "22 0 fload_0;" +
390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "23 1 fload_1;" +
391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "24 2 fload_2;" +
392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "25 3 fload_3;" +
393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "26 1 dload_0;" +
394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "27 2 dload_1;" +
395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "28 3 dload_2;" +
396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "29 4 dload_3;" +
397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "2a 0 aload_0;" +
398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "2b 1 aload_1;" +
399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "2c 2 aload_2;" +
400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "2d 3 aload_3;" +
401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "2e - iaload;" +
402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "2f - laload;" +
403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "30 - faload;" +
404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "31 - daload;" +
405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "32 - aaload;" +
406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "33 - baload;" +
407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "34 - caload;" +
408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "35 - saload;" +
409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "36 - istore;" +
410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "37 - lstore;" +
411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "38 - fstore;" +
412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "39 - dstore;" +
413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "3a - astore;" +
414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "3b 0 istore_0;" +
415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "3c 1 istore_1;" +
416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "3d 2 istore_2;" +
417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "3e 3 istore_3;" +
418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "3f 1 lstore_0;" +
419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "40 2 lstore_1;" +
420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "41 3 lstore_2;" +
421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "42 4 lstore_3;" +
422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "43 0 fstore_0;" +
423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "44 1 fstore_1;" +
424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "45 2 fstore_2;" +
425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "46 3 fstore_3;" +
426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "47 1 dstore_0;" +
427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "48 2 dstore_1;" +
428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "49 3 dstore_2;" +
429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "4a 4 dstore_3;" +
430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "4b 0 astore_0;" +
431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "4c 1 astore_1;" +
432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "4d 2 astore_2;" +
433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "4e 3 astore_3;" +
434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "4f - iastore;" +
435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "50 - lastore;" +
436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "51 - fastore;" +
437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "52 - dastore;" +
438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "53 - aastore;" +
439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "54 - bastore;" +
440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "55 - castore;" +
441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "56 - sastore;" +
442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "57 - pop;" +
443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "58 - pop2;" +
444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "59 - dup;" +
445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "5a - dup_x1;" +
446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "5b - dup_x2;" +
447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "5c - dup2;" +
448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "5d - dup2_x1;" +
449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "5e - dup2_x2;" +
450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "5f - swap;" +
451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "60 - iadd;" +
452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "61 - ladd;" +
453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "62 - fadd;" +
454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "63 - dadd;" +
455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "64 - isub;" +
456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "65 - lsub;" +
457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "66 - fsub;" +
458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "67 - dsub;" +
459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "68 - imul;" +
460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "69 - lmul;" +
461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "6a - fmul;" +
462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "6b - dmul;" +
463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "6c - idiv;" +
464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "6d - ldiv;" +
465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "6e - fdiv;" +
466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "6f - ddiv;" +
467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "70 - irem;" +
468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "71 - lrem;" +
469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "72 - frem;" +
470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "73 - drem;" +
471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "74 - ineg;" +
472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "75 - lneg;" +
473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "76 - fneg;" +
474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "77 - dneg;" +
475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "78 - ishl;" +
476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "79 - lshl;" +
477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "7a - ishr;" +
478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "7b - lshr;" +
479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "7c - iushr;" +
480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "7d - lushr;" +
481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "7e - iand;" +
482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "7f - land;" +
483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "80 - ior;" +
484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "81 - lor;" +
485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "82 - ixor;" +
486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "83 - lxor;" +
487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "84 l iinc;" +
488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "85 - i2l;" +
489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "86 - i2f;" +
490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "87 - i2d;" +
491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "88 - l2i;" +
492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "89 - l2f;" +
493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "8a - l2d;" +
494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "8b - f2i;" +
495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "8c - f2l;" +
496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "8d - f2d;" +
497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "8e - d2i;" +
498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "8f - d2l;" +
499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "90 - d2f;" +
500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "91 - i2b;" +
501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "92 - i2c;" +
502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "93 - i2s;" +
503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "94 - lcmp;" +
504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "95 - fcmpl;" +
505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "96 - fcmpg;" +
506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "97 - dcmpl;" +
507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "98 - dcmpg;" +
508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "99 b ifeq;" +
509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "9a b ifne;" +
510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "9b b iflt;" +
511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "9c b ifge;" +
512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "9d b ifgt;" +
513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "9e b ifle;" +
514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "9f b if_icmpeq;" +
515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "a0 b if_icmpne;" +
516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "a1 b if_icmplt;" +
517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "a2 b if_icmpge;" +
518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "a3 b if_icmpgt;" +
519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "a4 b if_icmple;" +
520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "a5 b if_acmpeq;" +
521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "a6 b if_acmpne;" +
522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "a7 b goto;" +
523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "a8 b jsr;" +
524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "a9 l ret;" +
525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "aa T tableswitch;" +
526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "ab U lookupswitch;" +
527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "ac - ireturn;" +
528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "ad - lreturn;" +
529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "ae - freturn;" +
530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "af - dreturn;" +
531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "b0 - areturn;" +
532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "b1 - return;" +
533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "b2 p:f getstatic;" +
534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "b3 p:f putstatic;" +
535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "b4 p:f getfield;" +
536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "b5 p:f putfield;" +
537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "b6 p:m invokevirtual;" +
538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "b7 p:m invokespecial;" +
539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "b8 p:m invokestatic;" +
540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "b9 I:i invokeinterface;" +
541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "bb p:c new;" +
542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "bc y newarray;" +
543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "bd p:c anewarray;" +
544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "be - arraylength;" +
545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "bf - athrow;" +
546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "c0 p:c checkcast;" +
547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "c1 p:c instanceof;" +
548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "c2 - monitorenter;" +
549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "c3 - monitorexit;" +
550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "c4 W wide;" +
551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "c5 M:c multianewarray;" +
552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "c6 b ifnull;" +
553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "c7 b ifnonnull;" +
554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "c8 c goto_w;" +
555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        "c9 c jsr_w;";
556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    static {
558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Set up OPCODE_INFO and OPCODE_NAMES.
559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String s = OPCODE_DETAILS;
560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int len = s.length();
561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < len; /*i*/) {
563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            int idx = (Character.digit(s.charAt(i), 16) << 4) |
564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Character.digit(s.charAt(i + 1), 16);
565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            int info;
566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            switch (s.charAt(i + 3)) {
567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case '-': info = FMT_NO_ARGS; break;
568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case '0': info = FMT_NO_ARGS_LOCALS_1; break;
569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case '1': info = FMT_NO_ARGS_LOCALS_2; break;
570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case '2': info = FMT_NO_ARGS_LOCALS_3; break;
571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case '3': info = FMT_NO_ARGS_LOCALS_4; break;
572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case '4': info = FMT_NO_ARGS_LOCALS_5; break;
573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'b': info = FMT_BRANCH; break;
574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'c': info = FMT_WIDE_BRANCH; break;
575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'p': info = FMT_CPI; break;
576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'l': info = FMT_LOCAL_1; break;
577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'm': info = FMT_LOCAL_2; break;
578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'y': info = FMT_LITERAL_BYTE; break;
579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'I': info = FMT_INVOKEINTERFACE; break;
580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'L': info = FMT_LDC; break;
581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'S': info = FMT_SIPUSH; break;
582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'T': info = FMT_TABLESWITCH; break;
583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'U': info = FMT_LOOKUPSWITCH; break;
584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'M': info = FMT_MULTIANEWARRAY; break;
585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'W': info = FMT_WIDE; break;
586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                default: info = FMT_INVALID; break;
587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            i += 5;
590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (s.charAt(i - 1) == ':') {
591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                inner:
592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                for (;;) {
593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    switch (s.charAt(i)) {
594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        case 'I': info |= CPOK_Integer; break;
595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        case 'F': info |= CPOK_Float; break;
596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        case 'J': info |= CPOK_Long; break;
597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        case 'D': info |= CPOK_Double; break;
598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        case 'c': info |= CPOK_Class; break;
599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        case 's': info |= CPOK_String; break;
600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        case 'f': info |= CPOK_Fieldref; break;
601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        case 'm': info |= CPOK_Methodref; break;
602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        case 'i': info |= CPOK_InterfaceMethodref; break;
603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        default: break inner;
604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    }
605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    i++;
606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                i++;
608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            int endAt = s.indexOf(';', i);
611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            OPCODE_INFO[idx] = info;
612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            OPCODE_NAMES[idx] = s.substring(i, endAt);
613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            i = endAt + 1;
614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * This class is uninstantiable.
619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private ByteOps() {
621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // This space intentionally left blank.
622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Gets the name of the given opcode.
626de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro     *
62799409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project     * @param opcode {@code >= 0, <= 255;} the opcode
62899409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project     * @return {@code non-null;} its name
629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static String opName(int opcode) {
631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String result = OPCODE_NAMES[opcode];
632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (result == null) {
634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            result = "unused_" + Hex.u1(opcode);
635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            OPCODE_NAMES[opcode] = result;
636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return result;
639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Gets the format and allowed cp types of the given opcode.
643de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro     *
64499409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project     * @param opcode {@code >= 0, <= 255;} the opcode
645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return its format and allowed cp types
646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static int opInfo(int opcode) {
648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return OPCODE_INFO[opcode];
649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
651