< prev index next >

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

Print this page




 810                 break;
 811             }
 812             case DADD:
 813             case DSUB:
 814             case DMUL:
 815             case DDIV:
 816             case DREM:
 817                 state.pop2();
 818                 state.pop2();
 819                 state.push(TypeTag.D);
 820                 break;
 821             case RET:
 822                 break;
 823             case WIDE:
 824                 // must be handled by the caller.
 825                 return;
 826             case MONITORENTER:
 827             case MONITOREXIT:
 828                 state.pop();
 829                 break;
 830             case VNEW:
 831                 throw new UnsupportedOperationException("VNEW not implemented");
 832             case NEW:
 833             case VDEFAULT:
 834                 state.push(typeHelper.type((S) optValue));
 835                 break;
 836             case NEWARRAY:
 837                 state.pop();
 838                 state.push(typeHelper.arrayOf(typeHelper.fromTag((TypeTag) optValue)));
 839                 break;
 840             case ANEWARRAY:
 841                 state.pop();
 842                 state.push(typeHelper.arrayOf(typeHelper.arrayOf(typeHelper.type((S)optValue))));
 843                 break;
 844             case VBOX:
 845             case VUNBOX:
 846                 state.pop();
 847                 state.push(typeHelper.type((S) optValue));
 848                 break;
 849             case MULTIANEWARRAY:
 850                 for (int i = 0; i < (byte) ((Object[]) optValue)[1]; i++) {
 851                     state.pop();
 852                 }
 853                 state.push(typeHelper.type((S) ((Object[]) optValue)[0]));
 854                 break;
 855             case INVOKEINTERFACE:
 856             case INVOKEVIRTUAL:
 857             case INVOKESPECIAL:
 858             case INVOKESTATIC:
 859                 processInvoke(op, (T) optValue);
 860                 break;
 861             case GETSTATIC:
 862                 state.push((T) optValue);
 863                 break;
 864             case VGETFIELD:
 865             case GETFIELD:
 866                 state.pop();
 867                 state.push((T) optValue);
 868                 break;
 869             case PUTSTATIC: {
 870                 TypeTag tag = typeHelper.tag((T) optValue);
 871                 if (tag.width == 1) {
 872                     state.pop();
 873                 } else {
 874                     state.pop2();
 875                 }
 876                 break;
 877             }
 878             case PUTFIELD: {
 879                 TypeTag tag = typeHelper.tag((T) optValue);
 880                 if (tag.width == 1) {
 881                     state.pop();
 882                 } else {
 883                     state.pop2();
 884                 }




 810                 break;
 811             }
 812             case DADD:
 813             case DSUB:
 814             case DMUL:
 815             case DDIV:
 816             case DREM:
 817                 state.pop2();
 818                 state.pop2();
 819                 state.push(TypeTag.D);
 820                 break;
 821             case RET:
 822                 break;
 823             case WIDE:
 824                 // must be handled by the caller.
 825                 return;
 826             case MONITORENTER:
 827             case MONITOREXIT:
 828                 state.pop();
 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]));
 852                 break;
 853             case INVOKEINTERFACE:
 854             case INVOKEVIRTUAL:
 855             case INVOKESPECIAL:
 856             case INVOKESTATIC:
 857                 processInvoke(op, (T) optValue);
 858                 break;
 859             case GETSTATIC:
 860                 state.push((T) optValue);
 861                 break;

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


< prev index next >