< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java

Print this page




 986     public void emitop1w(int op, int od1, int od2) {
 987         if (od1 > 0xFF || od2 < -128 || od2 > 127) {
 988             emitop(wide);
 989             emitop(op);
 990             emit2(od1);
 991             emit2(od2);
 992         } else {
 993             emitop(op);
 994             emit1(od1);
 995             emit1(od2);
 996         }
 997         if (!alive) return;
 998         switch (op) {
 999         case iinc:
1000             break;
1001         default:
1002             throw new AssertionError(mnem(op));
1003         }
1004     }
1005 
1006     /** Emit a vnew opcode.
1007      */
1008     public void emitVnew(Type type, int od, int argsize) {
1009         emitop(vnew);
1010         if (!alive) return;
1011         emit2(od);
1012         state.pop(argsize);
1013         state.push(type);
1014     }
1015 
1016     /** Emit an opcode with a two-byte operand field.
1017      */
1018     public void emitop2(int op, int od) {
1019         emitop(op);
1020         if (!alive) return;
1021         emit2(od);
1022         switch (op) {
1023         case getstatic:
1024             state.push(((Symbol)(pool.pool[od])).erasure(types));
1025             break;
1026         case putstatic:
1027             state.pop(((Symbol)(pool.pool[od])).erasure(types));
1028             break;
1029         case vnew:
1030         case new_:
1031             Symbol sym;
1032             if (pool.pool[od] instanceof UniqueType) {
1033                 // Required by change in Gen.makeRef to allow
1034                 // annotated types.
1035                 // TODO: is this needed anywhere else?
1036                 sym = ((UniqueType)(pool.pool[od])).type.tsym;
1037             } else {
1038                 sym = (Symbol)(pool.pool[od]);
1039             }
1040             state.push(uninitializedObject(sym.erasure(types), cp-3));
1041             break;
1042         case vdefault:
1043             if (pool.pool[od] instanceof UniqueType) {
1044                 // Required by change in Gen.makeRef to allow
1045                 // annotated types.
1046                 // TODO: is this needed anywhere else?
1047                 sym = ((UniqueType)(pool.pool[od])).type.tsym;
1048             } else {
1049                 sym = (Symbol)(pool.pool[od]);




 986     public void emitop1w(int op, int od1, int od2) {
 987         if (od1 > 0xFF || od2 < -128 || od2 > 127) {
 988             emitop(wide);
 989             emitop(op);
 990             emit2(od1);
 991             emit2(od2);
 992         } else {
 993             emitop(op);
 994             emit1(od1);
 995             emit1(od2);
 996         }
 997         if (!alive) return;
 998         switch (op) {
 999         case iinc:
1000             break;
1001         default:
1002             throw new AssertionError(mnem(op));
1003         }
1004     }
1005 










1006     /** Emit an opcode with a two-byte operand field.
1007      */
1008     public void emitop2(int op, int od) {
1009         emitop(op);
1010         if (!alive) return;
1011         emit2(od);
1012         switch (op) {
1013         case getstatic:
1014             state.push(((Symbol)(pool.pool[od])).erasure(types));
1015             break;
1016         case putstatic:
1017             state.pop(((Symbol)(pool.pool[od])).erasure(types));
1018             break;

1019         case new_:
1020             Symbol sym;
1021             if (pool.pool[od] instanceof UniqueType) {
1022                 // Required by change in Gen.makeRef to allow
1023                 // annotated types.
1024                 // TODO: is this needed anywhere else?
1025                 sym = ((UniqueType)(pool.pool[od])).type.tsym;
1026             } else {
1027                 sym = (Symbol)(pool.pool[od]);
1028             }
1029             state.push(uninitializedObject(sym.erasure(types), cp-3));
1030             break;
1031         case vdefault:
1032             if (pool.pool[od] instanceof UniqueType) {
1033                 // Required by change in Gen.makeRef to allow
1034                 // annotated types.
1035                 // TODO: is this needed anywhere else?
1036                 sym = ((UniqueType)(pool.pool[od])).type.tsym;
1037             } else {
1038                 sym = (Symbol)(pool.pool[od]);


< prev index next >