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]); |