Lines Matching refs:Type

35     private final Type STRING_TYPE;
36 private final Type CLASS_TYPE;
37 private final Type THROWABLE_TYPE;
76 frame.push(Type.UNINIT);
85 frame.push(Type.INTEGER);
89 frame.push(Type.LONG);
90 frame.push(Type.TOP);
95 frame.push(Type.FLOAT);
99 frame.push(Type.DOUBLE);
100 frame.push(Type.TOP);
104 frame.push(Type.INTEGER);
114 evalLoad(Type.INTEGER, iter.byteAt(pos + 1), frame, subroutine);
117 evalLoad(Type.LONG, iter.byteAt(pos + 1), frame, subroutine);
120 evalLoad(Type.FLOAT, iter.byteAt(pos + 1), frame, subroutine);
123 evalLoad(Type.DOUBLE, iter.byteAt(pos + 1), frame, subroutine);
126 evalLoad(Type.OBJECT, iter.byteAt(pos + 1), frame, subroutine);
132 evalLoad(Type.INTEGER, opcode - ILOAD_0, frame, subroutine);
138 evalLoad(Type.LONG, opcode - LLOAD_0, frame, subroutine);
144 evalLoad(Type.FLOAT, opcode - FLOAD_0, frame, subroutine);
150 evalLoad(Type.DOUBLE, opcode - DLOAD_0, frame, subroutine);
156 evalLoad(Type.OBJECT, opcode - ALOAD_0, frame, subroutine);
159 evalArrayLoad(Type.INTEGER, frame);
162 evalArrayLoad(Type.LONG, frame);
165 evalArrayLoad(Type.FLOAT, frame);
168 evalArrayLoad(Type.DOUBLE, frame);
171 evalArrayLoad(Type.OBJECT, frame);
176 evalArrayLoad(Type.INTEGER, frame);
179 evalStore(Type.INTEGER, iter.byteAt(pos + 1), frame, subroutine);
182 evalStore(Type.LONG, iter.byteAt(pos + 1), frame, subroutine);
185 evalStore(Type.FLOAT, iter.byteAt(pos + 1), frame, subroutine);
188 evalStore(Type.DOUBLE, iter.byteAt(pos + 1), frame, subroutine);
191 evalStore(Type.OBJECT, iter.byteAt(pos + 1), frame, subroutine);
197 evalStore(Type.INTEGER, opcode - ISTORE_0, frame, subroutine);
203 evalStore(Type.LONG, opcode - LSTORE_0, frame, subroutine);
209 evalStore(Type.FLOAT, opcode - FSTORE_0, frame, subroutine);
215 evalStore(Type.DOUBLE, opcode - DSTORE_0, frame, subroutine);
221 evalStore(Type.OBJECT, opcode - ASTORE_0, frame, subroutine);
224 evalArrayStore(Type.INTEGER, frame);
227 evalArrayStore(Type.LONG, frame);
230 evalArrayStore(Type.FLOAT, frame);
233 evalArrayStore(Type.DOUBLE, frame);
236 evalArrayStore(Type.OBJECT, frame);
241 evalArrayStore(Type.INTEGER, frame);
244 if (frame.pop() == Type.TOP)
252 Type type = frame.peek();
253 if (type == Type.TOP)
261 Type type = frame.peek();
262 if (type == Type.TOP)
283 Type type1 = frame.getStack(frame.getTopIndex() - 1);
284 Type type2 = frame.peek();
296 Type type1 = frame.pop();
297 Type type2 = frame.pop();
307 evalBinaryMath(Type.INTEGER, frame);
310 evalBinaryMath(Type.LONG, frame);
313 evalBinaryMath(Type.FLOAT, frame);
316 evalBinaryMath(Type.DOUBLE, frame);
319 evalBinaryMath(Type.INTEGER, frame);
322 evalBinaryMath(Type.LONG, frame);
325 evalBinaryMath(Type.FLOAT, frame);
328 evalBinaryMath(Type.DOUBLE, frame);
331 evalBinaryMath(Type.INTEGER, frame);
334 evalBinaryMath(Type.LONG, frame);
337 evalBinaryMath(Type.FLOAT, frame);
340 evalBinaryMath(Type.DOUBLE, frame);
343 evalBinaryMath(Type.INTEGER, frame);
346 evalBinaryMath(Type.LONG, frame);
349 evalBinaryMath(Type.FLOAT, frame);
352 evalBinaryMath(Type.DOUBLE, frame);
355 evalBinaryMath(Type.INTEGER, frame);
358 evalBinaryMath(Type.LONG, frame);
361 evalBinaryMath(Type.FLOAT, frame);
364 evalBinaryMath(Type.DOUBLE, frame);
369 verifyAssignable(Type.INTEGER, simplePeek(frame));
372 verifyAssignable(Type.LONG, simplePeek(frame));
375 verifyAssignable(Type.FLOAT, simplePeek(frame));
378 verifyAssignable(Type.DOUBLE, simplePeek(frame));
383 evalShift(Type.INTEGER, frame);
386 evalShift(Type.LONG, frame);
389 evalShift(Type.INTEGER, frame);
392 evalShift(Type.LONG, frame);
395 evalShift(Type.INTEGER,frame);
398 evalShift(Type.LONG, frame);
403 evalBinaryMath(Type.INTEGER, frame);
406 evalBinaryMath(Type.LONG, frame);
409 evalBinaryMath(Type.INTEGER, frame);
412 evalBinaryMath(Type.LONG, frame);
415 evalBinaryMath(Type.INTEGER, frame);
418 evalBinaryMath(Type.LONG, frame);
423 verifyAssignable(Type.INTEGER, frame.getLocal(index));
424 access(index, Type.INTEGER, subroutine);
430 verifyAssignable(Type.INTEGER, simplePop(frame));
431 simplePush(Type.LONG, frame);
434 verifyAssignable(Type.INTEGER, simplePop(frame));
435 simplePush(Type.FLOAT, frame);
438 verifyAssignable(Type.INTEGER, simplePop(frame));
439 simplePush(Type.DOUBLE, frame);
442 verifyAssignable(Type.LONG, simplePop(frame));
443 simplePush(Type.INTEGER, frame);
446 verifyAssignable(Type.LONG, simplePop(frame));
447 simplePush(Type.FLOAT, frame);
450 verifyAssignable(Type.LONG, simplePop(frame));
451 simplePush(Type.DOUBLE, frame);
454 verifyAssignable(Type.FLOAT, simplePop(frame));
455 simplePush(Type.INTEGER, frame);
458 verifyAssignable(Type.FLOAT, simplePop(frame));
459 simplePush(Type.LONG, frame);
462 verifyAssignable(Type.FLOAT, simplePop(frame));
463 simplePush(Type.DOUBLE, frame);
466 verifyAssignable(Type.DOUBLE, simplePop(frame));
467 simplePush(Type.INTEGER, frame);
470 verifyAssignable(Type.DOUBLE, simplePop(frame));
471 simplePush(Type.LONG, frame);
474 verifyAssignable(Type.DOUBLE, simplePop(frame));
475 simplePush(Type.FLOAT, frame);
480 verifyAssignable(Type.INTEGER, frame.peek());
483 verifyAssignable(Type.LONG, simplePop(frame));
484 verifyAssignable(Type.LONG, simplePop(frame));
485 frame.push(Type.INTEGER);
489 verifyAssignable(Type.FLOAT, simplePop(frame));
490 verifyAssignable(Type.FLOAT, simplePop(frame));
491 frame.push(Type.INTEGER);
495 verifyAssignable(Type.DOUBLE, simplePop(frame));
496 verifyAssignable(Type.DOUBLE, simplePop(frame));
497 frame.push(Type.INTEGER);
507 verifyAssignable(Type.INTEGER, simplePop(frame));
515 verifyAssignable(Type.INTEGER, simplePop(frame));
516 verifyAssignable(Type.INTEGER, simplePop(frame));
520 verifyAssignable(Type.OBJECT, simplePop(frame));
521 verifyAssignable(Type.OBJECT, simplePop(frame));
526 frame.push(Type.RETURN_ADDRESS);
529 verifyAssignable(Type.RETURN_ADDRESS, frame.getLocal(iter.byteAt(pos + 1)));
534 verifyAssignable(Type.INTEGER, simplePop(frame));
537 verifyAssignable(Type.LONG, simplePop(frame));
540 verifyAssignable(Type.FLOAT, simplePop(frame));
543 verifyAssignable(Type.DOUBLE, simplePop(frame));
548 verifyAssignable(Type.get(returnType), simplePop(frame));
587 Type array = simplePop(frame);
588 if (! array.isArray() && array != Type.UNINIT)
590 frame.push(Type.INTEGER);
597 verifyAssignable(Type.OBJECT, simplePop(frame));
601 verifyAssignable(Type.OBJECT, simplePop(frame));
602 frame.push(Type.INTEGER);
606 verifyAssignable(Type.OBJECT, simplePop(frame));
616 verifyAssignable(Type.OBJECT, simplePop(frame));
621 frame.push(Type.RETURN_ADDRESS);
626 private Type zeroExtend(Type type) {
627 if (type == Type.SHORT || type == Type.BYTE || type == Type.CHAR || type == Type.BOOLEAN)
628 return Type.INTEGER;
633 private void evalArrayLoad(Type expectedComponent, Frame frame) throws BadBytecode {
634 Type index = frame.pop();
635 Type array = frame.pop();
639 if (array == Type.UNINIT) {
640 verifyAssignable(Type.INTEGER, index);
641 if (expectedComponent == Type.OBJECT) {
642 simplePush(Type.UNINIT, frame);
649 Type component = array.getComponent();
657 verifyAssignable(Type.INTEGER, index);
661 private void evalArrayStore(Type expectedComponent, Frame frame) throws BadBytecode {
662 Type value = simplePop(frame);
663 Type index = frame.pop();
664 Type array = frame.pop();
666 if (array == Type.UNINIT) {
667 verifyAssignable(Type.INTEGER, index);
671 Type component = array.getComponent();
679 verifyAssignable(Type.INTEGER, index);
687 if (expectedComponent == Type.OBJECT) {
694 private void evalBinaryMath(Type expected, Frame frame) throws BadBytecode {
695 Type value2 = simplePop(frame);
696 Type value1 = simplePop(frame);
705 Type type = zeroExtend(typeFromDesc(desc));
708 Type objectType = resolveClassInfo(constPool.getFieldrefClassName(index));
717 Type[] types = paramTypesFromDesc(desc);
724 Type objectType = resolveClassInfo(classInfo);
727 Type returnType = returnTypeFromDesc(desc);
728 if (returnType != Type.VOID)
734 Type[] types = paramTypesFromDesc(desc);
741 Type objectType = resolveClassInfo(constPool.getMethodrefClassName(index));
745 Type returnType = returnTypeFromDesc(desc);
746 if (returnType != Type.VOID)
753 Type type;
759 type = Type.INTEGER;
762 type = Type.FLOAT;
765 type = Type.LONG;
768 type = Type.DOUBLE;
780 private void evalLoad(Type expected, int index, Frame frame, Subroutine subroutine) throws BadBytecode {
781 Type type = frame.getLocal(index);
790 verifyAssignable(Type.INTEGER, simplePop(frame));
791 Type type = null;
828 Type type = resolveClassInfo(constPool.getClassInfo(iter.u16bitAt(pos + 1)));
841 verifyAssignable(Type.INTEGER, simplePop(frame));
849 Type type = zeroExtend(typeFromDesc(desc));
854 Type objectType = resolveClassInfo(constPool.getFieldrefClassName(index));
859 private void evalShift(Type expected, Frame frame) throws BadBytecode {
860 Type value2 = simplePop(frame);
861 Type value1 = simplePop(frame);
863 verifyAssignable(Type.INTEGER, value2);
868 private void evalStore(Type expected, int index, Frame frame, Subroutine subroutine) throws BadBytecode {
869 Type type = simplePop(frame);
872 if (! (expected == Type.OBJECT && type == Type.RETURN_ADDRESS))
883 evalLoad(Type.INTEGER, index, frame, subroutine);
886 evalLoad(Type.LONG, index, frame, subroutine);
889 evalLoad(Type.FLOAT, index, frame, subroutine);
892 evalLoad(Type.DOUBLE, index, frame, subroutine);
895 evalLoad(Type.OBJECT, index, frame, subroutine);
898 evalStore(Type.INTEGER, index, frame, subroutine);
901 evalStore(Type.LONG, index, frame, subroutine);
904 evalStore(Type.FLOAT, index, frame, subroutine);
907 evalStore(Type.DOUBLE, index, frame, subroutine);
910 evalStore(Type.OBJECT, index, frame, subroutine);
913 verifyAssignable(Type.INTEGER, frame.getLocal(index));
916 verifyAssignable(Type.RETURN_ADDRESS, frame.getLocal(index));
924 private Type getType(String name) throws BadBytecode {
926 return Type.get(classPool.get(name));
932 private Type[] paramTypesFromDesc(String desc) throws BadBytecode {
943 Type[] types = new Type[classes.length];
945 types[i] = Type.get(classes[i]);
950 private Type returnTypeFromDesc(String desc) throws BadBytecode {
961 return Type.get(clazz);
964 private Type simplePeek(Frame frame) {
965 Type type = frame.peek();
966 return (type == Type.TOP) ? frame.getStack(frame.getTopIndex() - 1) : type;
969 private Type simplePop(Frame frame) {
970 Type type = frame.pop();
971 return (type == Type.TOP) ? frame.pop() : type;
974 private void simplePush(Type type, Frame frame) {
977 frame.push(Type.TOP);
980 private void access(int index, Type type, Subroutine subroutine) {
988 private void simpleSetLocal(int index, Type type, Frame frame) {
991 frame.setLocal(index + 1, Type.TOP);
994 private Type resolveClassInfo(String info) throws BadBytecode {
1010 return Type.get(clazz);
1013 private Type typeFromDesc(String desc) throws BadBytecode {
1024 return Type.get(clazz);
1027 private void verifyAssignable(Type expected, Type type) throws BadBytecode {