KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > jdo > api > persistence > enhancer > classfile > InsnSingle


1 /*
2  * The contents of this file are subject to the terms
3  * of the Common Development and Distribution License
4  * (the License). You may not use this file except in
5  * compliance with the License.
6  *
7  * You can obtain a copy of the license at
8  * https://glassfish.dev.java.net/public/CDDLv1.0.html or
9  * glassfish/bootstrap/legal/CDDLv1.0.txt.
10  * See the License for the specific language governing
11  * permissions and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL
14  * Header Notice in each file and include the License file
15  * at glassfish/bootstrap/legal/CDDLv1.0.txt.
16  * If applicable, add the following below the CDDL Header,
17  * with the fields enclosed by brackets [] replaced by
18  * you own identifying information:
19  * "Portions Copyrighted [year] [name of copyright owner]"
20  *
21  * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
22  */

23
24
25 package com.sun.jdo.api.persistence.enhancer.classfile;
26
27 import java.io.PrintStream JavaDoc;
28
29 /**
30  * A java VM instruction which takes no immediate operands.
31  */

32
33 public class InsnSingle extends Insn {
34
35   public int nStackArgs() {
36     return VMOp.ops[opcode()].nStackArgs();
37   }
38
39   public int nStackResults() {
40     return VMOp.ops[opcode()].nStackResults();
41   }
42
43   /**
44    * What are the types of the stack operands ?
45    */

46   public String JavaDoc argTypes() {
47     return VMOp.ops[opcode()].argTypes();
48   }
49
50   /**
51    * What are the types of the stack results?
52    */

53   public String JavaDoc resultTypes() {
54     return VMOp.ops[opcode()].resultTypes();
55   }
56
57   public boolean branches() {
58     switch (opcode()) {
59     case opc_ireturn:
60     case opc_lreturn:
61     case opc_freturn:
62     case opc_dreturn:
63     case opc_areturn:
64     case opc_return:
65     case opc_athrow:
66       return true;
67     default:
68       return false;
69     }
70   }
71
72
73   /* package local methods */
74
75   void print (PrintStream JavaDoc out, int indent) {
76     ClassPrint.spaces(out, indent);
77     out.println(offset() + " " + opName(opcode()));//NOI18N
78
}
79
80   int store(byte[] buf, int index) {
81     buf[index] = (byte) opcode();
82     return index+1;
83   }
84
85   int size() {
86     return 1;
87   }
88
89   /* Construct an instruction. The opcode must be one which requires
90      no operands */

91
92   InsnSingle(int theOpcode) {
93     this(theOpcode, NO_OFFSET);
94   }
95
96   /* The no-check constructor */
97
98   InsnSingle(int theOpcode, int theOffset) {
99     super(theOpcode, theOffset);
100
101     switch (theOpcode) {
102     case opc_nop:
103     case opc_aconst_null:
104     case opc_iconst_m1:
105     case opc_iconst_0:
106     case opc_iconst_1:
107     case opc_iconst_2:
108     case opc_iconst_3:
109     case opc_iconst_4:
110     case opc_iconst_5:
111     case opc_lconst_0:
112     case opc_lconst_1:
113     case opc_fconst_0:
114     case opc_fconst_1:
115     case opc_fconst_2:
116     case opc_dconst_0:
117     case opc_dconst_1:
118     case opc_iload_0:
119     case opc_iload_1:
120     case opc_iload_2:
121     case opc_iload_3:
122     case opc_lload_0:
123     case opc_lload_1:
124     case opc_lload_2:
125     case opc_lload_3:
126     case opc_fload_0:
127     case opc_fload_1:
128     case opc_fload_2:
129     case opc_fload_3:
130     case opc_dload_0:
131     case opc_dload_1:
132     case opc_dload_2:
133     case opc_dload_3:
134     case opc_aload_0:
135     case opc_aload_1:
136     case opc_aload_2:
137     case opc_aload_3:
138     case opc_iaload:
139     case opc_laload:
140     case opc_faload:
141     case opc_daload:
142     case opc_aaload:
143     case opc_baload:
144     case opc_caload:
145     case opc_saload:
146     case opc_istore_0:
147     case opc_istore_1:
148     case opc_istore_2:
149     case opc_istore_3:
150     case opc_lstore_0:
151     case opc_lstore_1:
152     case opc_lstore_2:
153     case opc_lstore_3:
154     case opc_fstore_0:
155     case opc_fstore_1:
156     case opc_fstore_2:
157     case opc_fstore_3:
158     case opc_dstore_0:
159     case opc_dstore_1:
160     case opc_dstore_2:
161     case opc_dstore_3:
162     case opc_astore_0:
163     case opc_astore_1:
164     case opc_astore_2:
165     case opc_astore_3:
166     case opc_iastore:
167     case opc_lastore:
168     case opc_fastore:
169     case opc_dastore:
170     case opc_aastore:
171     case opc_bastore:
172     case opc_castore:
173     case opc_sastore:
174     case opc_pop:
175     case opc_pop2:
176     case opc_dup:
177     case opc_dup_x1:
178     case opc_dup_x2:
179     case opc_dup2:
180     case opc_dup2_x1:
181     case opc_dup2_x2:
182     case opc_swap:
183     case opc_iadd:
184     case opc_ladd:
185     case opc_fadd:
186     case opc_dadd:
187     case opc_isub:
188     case opc_lsub:
189     case opc_fsub:
190     case opc_dsub:
191     case opc_imul:
192     case opc_lmul:
193     case opc_fmul:
194     case opc_dmul:
195     case opc_idiv:
196     case opc_ldiv:
197     case opc_fdiv:
198     case opc_ddiv:
199     case opc_irem:
200     case opc_lrem:
201     case opc_frem:
202     case opc_drem:
203     case opc_ineg:
204     case opc_lneg:
205     case opc_fneg:
206     case opc_dneg:
207     case opc_ishl:
208     case opc_lshl:
209     case opc_ishr:
210     case opc_lshr:
211     case opc_iushr:
212     case opc_lushr:
213     case opc_iand:
214     case opc_land:
215     case opc_ior:
216     case opc_lor:
217     case opc_ixor:
218     case opc_lxor:
219     case opc_i2l:
220     case opc_i2f:
221     case opc_i2d:
222     case opc_l2i:
223     case opc_l2f:
224     case opc_l2d:
225     case opc_f2i:
226     case opc_f2l:
227     case opc_f2d:
228     case opc_d2i:
229     case opc_d2l:
230     case opc_d2f:
231     case opc_i2b:
232     case opc_i2c:
233     case opc_i2s:
234     case opc_lcmp:
235     case opc_fcmpl:
236     case opc_fcmpg:
237     case opc_dcmpl:
238     case opc_dcmpg:
239     case opc_ireturn:
240     case opc_lreturn:
241     case opc_freturn:
242     case opc_dreturn:
243     case opc_areturn:
244     case opc_return:
245     case opc_xxxunusedxxx:
246     case opc_arraylength:
247     case opc_athrow:
248     case opc_monitorenter:
249     case opc_monitorexit:
250       break;
251
252     default:
253         throw new InsnError ("attempt to create an " + opName(opcode()) +//NOI18N
254
" without specifying the required operands");//NOI18N
255
}
256   }
257 }
258
Popular Tags