< prev index next >

jdk/src/java.base/share/classes/jdk/experimental/bytecode/TypedCodeBuilder.java

Print this page
rev 14083 : vwithfield class/field access


 807             }
 808             case DADD:
 809             case DSUB:
 810             case DMUL:
 811             case DDIV:
 812             case DREM:
 813                 state.pop2();
 814                 state.pop2();
 815                 state.push(TypeTag.D);
 816                 break;
 817             case RET:
 818                 break;
 819             case WIDE:
 820                 // must be handled by the caller.
 821                 return;
 822             case MONITORENTER:
 823             case MONITOREXIT:
 824                 state.pop();
 825                 break;
 826             case VNEW:



 827             case NEW:

 828                 state.push(typeHelper.type((S) optValue));
 829                 break;
 830             case NEWARRAY:
 831                 state.pop();
 832                 state.push(typeHelper.arrayOf(typeHelper.fromTag((TypeTag) optValue)));
 833                 break;
 834             case ANEWARRAY:
 835                 state.pop();
 836                 state.push(typeHelper.arrayOf(typeHelper.arrayOf(typeHelper.type((S)optValue))));
 837                 break;
 838             case VBOX:
 839             case VUNBOX:
 840                 state.pop();
 841                 state.push(typeHelper.type((S) optValue));
 842                 break;
 843             case MULTIANEWARRAY:
 844                 for (int i = 0; i < (byte) ((Object[]) optValue)[1]; i++) {
 845                     state.pop();
 846                 }
 847                 state.push(typeHelper.type((S) ((Object[]) optValue)[0]));


 860                 state.pop();
 861                 state.push((T) optValue);
 862                 break;
 863             case PUTSTATIC: {
 864                 TypeTag tag = typeHelper.tag((T) optValue);
 865                 if (tag.width == 1) {
 866                     state.pop();
 867                 } else {
 868                     state.pop2();
 869                 }
 870                 break;
 871             }
 872             case PUTFIELD: {
 873                 TypeTag tag = typeHelper.tag((T) optValue);
 874                 if (tag.width == 1) {
 875                     state.pop();
 876                 } else {
 877                     state.pop2();
 878                 }
 879                 state.pop();










 880                 break;
 881             }
 882             case BIPUSH:
 883             case SIPUSH:
 884                 state.push(TypeTag.I);
 885                 break;
 886             case LDC:
 887             case LDC_W:
 888             case LDC2_W:
 889                 state.push(ldcType(optValue));
 890                 break;
 891             case IF_ACMPEQ:
 892             case IF_ICMPEQ:
 893             case IF_ACMPNE:
 894             case IF_ICMPGE:
 895             case IF_ICMPGT:
 896             case IF_ICMPLE:
 897             case IF_ICMPLT:
 898             case IF_ICMPNE:
 899                 state.pop();




 807             }
 808             case DADD:
 809             case DSUB:
 810             case DMUL:
 811             case DDIV:
 812             case DREM:
 813                 state.pop2();
 814                 state.pop2();
 815                 state.push(TypeTag.D);
 816                 break;
 817             case RET:
 818                 break;
 819             case WIDE:
 820                 // must be handled by the caller.
 821                 return;
 822             case MONITORENTER:
 823             case MONITOREXIT:
 824                 state.pop();
 825                 break;
 826             case VNEW:
 827                 throw new UnsupportedOperationException("VNEW not implemented");
 828                 //processVnew(op, (T) optValue);
 829                 //break;
 830             case NEW:
 831             case VDEFAULT:
 832                 state.push(typeHelper.type((S) optValue));
 833                 break;
 834             case NEWARRAY:
 835                 state.pop();
 836                 state.push(typeHelper.arrayOf(typeHelper.fromTag((TypeTag) optValue)));
 837                 break;
 838             case ANEWARRAY:
 839                 state.pop();
 840                 state.push(typeHelper.arrayOf(typeHelper.arrayOf(typeHelper.type((S)optValue))));
 841                 break;
 842             case VBOX:
 843             case VUNBOX:
 844                 state.pop();
 845                 state.push(typeHelper.type((S) optValue));
 846                 break;
 847             case MULTIANEWARRAY:
 848                 for (int i = 0; i < (byte) ((Object[]) optValue)[1]; i++) {
 849                     state.pop();
 850                 }
 851                 state.push(typeHelper.type((S) ((Object[]) optValue)[0]));


 864                 state.pop();
 865                 state.push((T) optValue);
 866                 break;
 867             case PUTSTATIC: {
 868                 TypeTag tag = typeHelper.tag((T) optValue);
 869                 if (tag.width == 1) {
 870                     state.pop();
 871                 } else {
 872                     state.pop2();
 873                 }
 874                 break;
 875             }
 876             case PUTFIELD: {
 877                 TypeTag tag = typeHelper.tag((T) optValue);
 878                 if (tag.width == 1) {
 879                     state.pop();
 880                 } else {
 881                     state.pop2();
 882                 }
 883                 state.pop();
 884                 break;
 885             }
 886             case VWITHFIELD: {
 887                 TypeTag tag = typeHelper.tag((T) optValue);
 888                 if (tag.width == 1) {
 889                     state.pop();
 890                 } else {
 891                     state.pop2();
 892                 }
 893                 // state.pop(); state.push();
 894                 break;
 895             }
 896             case BIPUSH:
 897             case SIPUSH:
 898                 state.push(TypeTag.I);
 899                 break;
 900             case LDC:
 901             case LDC_W:
 902             case LDC2_W:
 903                 state.push(ldcType(optValue));
 904                 break;
 905             case IF_ACMPEQ:
 906             case IF_ICMPEQ:
 907             case IF_ACMPNE:
 908             case IF_ICMPGE:
 909             case IF_ICMPGT:
 910             case IF_ICMPLE:
 911             case IF_ICMPLT:
 912             case IF_ICMPNE:
 913                 state.pop();


< prev index next >