< prev index next >

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

Print this page

        

@@ -1017,11 +1017,16 @@
         case putstatic:
             state.pop(((Symbol)data).erasure(types));
             break;
         case new_: {
             Type t = (Type)data;
-            state.push(uninitializedObject(t.tsym.erasure(types), cp-3));
+            state.push(uninitializedObject(t.tsym.erasure(types), cp - 3));
+            break;
+        }
+        case defaultvalue: {
+            Type t = (Type)data;
+            state.push(t.tsym.erasure(types));
             break;
         }
         case sipush:
             state.push(syms.intType);
             break;

@@ -1046,21 +1051,24 @@
             state.pop(2);
             break;
         case goto_:
             markDead();
             break;
+        case withfield:
+            state.pop(((Symbol)data).erasure(types));
+            break;
         case putfield:
             state.pop(((Symbol)data).erasure(types));
             state.pop(1); // object ref
             break;
         case getfield:
             state.pop(1); // object ref
             state.push(((Symbol)data).erasure(types));
             break;
         case checkcast: {
             state.pop(1); // object ref
-            Type t = types.erasure((Type)data);
+            Type t = types.erasure(data instanceof  ConstantPoolQType ? ((ConstantPoolQType)data).type: (Type)data);
             state.push(t);
             break; }
         case ldc2w:
             state.push(types.constantType((LoadableConstant)data));
             break;

@@ -2433,8 +2441,10 @@
             mnem[if_acmp_null] = "if_acmp_null";
             mnem[if_acmp_nonnull] = "if_acmp_nonnull";
             mnem[goto_w] = "goto_w";
             mnem[jsr_w] = "jsr_w";
             mnem[breakpoint] = "breakpoint";
+            mnem[defaultvalue] = "defaultvalue";
+            mnem[withfield] = "withfield";
         }
     }
 }
< prev index next >