1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.bcel.generic;
20
21 import org.apache.bcel.ExceptionConst;
22
23
24
25
26 public abstract class ArrayInstruction extends Instruction implements ExceptionThrower, TypedInstruction {
27
28
29
30
31 ArrayInstruction() {
32 }
33
34
35
36
37 protected ArrayInstruction(final short opcode) {
38 super(opcode, (short) 1);
39 }
40
41 @Override
42 public Class<?>[] getExceptions() {
43 return ExceptionConst.createExceptions(ExceptionConst.EXCS.EXCS_ARRAY_EXCEPTION);
44 }
45
46
47
48
49 @Override
50 public Type getType(final ConstantPoolGen cp) {
51 final short opcode = super.getOpcode();
52 switch (opcode) {
53 case org.apache.bcel.Const.IALOAD:
54 case org.apache.bcel.Const.IASTORE:
55 return Type.INT;
56 case org.apache.bcel.Const.CALOAD:
57 case org.apache.bcel.Const.CASTORE:
58 return Type.CHAR;
59 case org.apache.bcel.Const.BALOAD:
60 case org.apache.bcel.Const.BASTORE:
61 return Type.BYTE;
62 case org.apache.bcel.Const.SALOAD:
63 case org.apache.bcel.Const.SASTORE:
64 return Type.SHORT;
65 case org.apache.bcel.Const.LALOAD:
66 case org.apache.bcel.Const.LASTORE:
67 return Type.LONG;
68 case org.apache.bcel.Const.DALOAD:
69 case org.apache.bcel.Const.DASTORE:
70 return Type.DOUBLE;
71 case org.apache.bcel.Const.FALOAD:
72 case org.apache.bcel.Const.FASTORE:
73 return Type.FLOAT;
74 case org.apache.bcel.Const.AALOAD:
75 case org.apache.bcel.Const.AASTORE:
76 return Type.OBJECT;
77 default:
78 throw new ClassGenException("Unknown case in switch" + opcode);
79 }
80 }
81 }