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