array commands without check added
authorcacao <none@none>
Tue, 24 Nov 1998 14:07:51 +0000 (14:07 +0000)
committercacao <none@none>
Tue, 24 Nov 1998 14:07:51 +0000 (14:07 +0000)
alpha/asmpart.c
alpha/ngen.c
jit/jitdef.h
jit/reg.c
jit/stack.c
src/vm/jit/stack.c

index ac62d1cf6b62445a8f30a4e56aedece03f07667d..a6ce31b909b81159865fd011d9bc0d8fe392a0ec 100644 (file)
@@ -186,7 +186,7 @@ call_name:
 
        .align  3
        .quad   0                         /* catch type all                       */
-       .quad   calljava_xhandler         /* end pc                               */
+       .quad   calljava_xhandler         /* handler pc                           */
        .quad   calljava_xhandler         /* end pc                               */
        .quad   asm_calljavamethod        /* start pc                             */
        .long   1                         /* extable size                         */
@@ -569,7 +569,7 @@ empty_table:
 ex_already_cleared:
        ldl     t0,IsSync(pv)         /* t0 = SyncOffset                          */
        beq     t0,no_monitor_exit    /* if zero no monitorexit                   */
-       addq    sp,t0,t0              /* add Offset to stackptr                   */
+       addq    sp,t0,t0              /* add stackptr to Offset                   */
        ldq     a0,-8(t0)             /* load monitorexit pointer                 */
 
        lda     sp,-7*8(sp)           /* allocate stack                           */
@@ -652,7 +652,7 @@ ex_flt2:
        addq    t0,pv,pv              /* compute update address                   */
        br      ex_stack_loop
 
-       .end    asm_handle_exception
+       .end    asm_handle_nat_exception
 
 
 /********************* function asm_builtin_monitorenter ***********************
@@ -694,7 +694,7 @@ nb_monitorexit:
        ldq     xptr,proto_java_lang_NullPointerException
        lda     xpc,-4(ra)                /* faulting address is return adress - 4*/
        br      asm_handle_nat_exception
-       .end    asm_builtin_monitorenter
+       .end    asm_builtin_monitorexit
 
 
 /************************ function asm_builtin_idiv ****************************
@@ -938,7 +938,7 @@ asm_perform_threadswitch:
        ldt     sf6, 104(sp)
        ldt     sf7, 112(sp)
        ldq     ra, 120(sp)
-       mov     ra, t12
+       mov     ra, pv
        addq    sp, 128, sp
        jmp     zero,(ra)
        .end    asm_perform_threadswitch
index 0a4c7616b14e5da2ed0782c3fe182f5312882a9c..17c0608d9888be02ebc9743220b774beb9ecdecd 100644 (file)
@@ -2120,6 +2120,230 @@ static void gen_mcode()
                        break;
 
 
+               /* optimized memory operations ****************************************/
+
+               case ICMD_OPT_AALOAD:     /* ..., arrayref, index  ==> ..., value     */
+
+                       var_to_reg_int(s1, src->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src, REG_ITMP2);
+                       d = reg_of_var(iptr->dst, REG_ITMP3);
+                       M_SAADDQ(s2, s1, REG_ITMP1);
+                       M_ALD( d, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+                       store_reg_to_var_int(iptr->dst, d);
+                       break;
+
+               case ICMD_OPT_LALOAD:     /* ..., arrayref, index  ==> ..., value     */
+
+                       var_to_reg_int(s1, src->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src, REG_ITMP2);
+                       d = reg_of_var(iptr->dst, REG_ITMP3);
+                       M_S8ADDQ(s2, s1, REG_ITMP1);
+                       M_LLD(d, REG_ITMP1, OFFSET(java_longarray, data[0]));
+                       store_reg_to_var_int(iptr->dst, d);
+                       break;
+
+               case ICMD_OPT_IALOAD:     /* ..., arrayref, index  ==> ..., value     */
+
+                       var_to_reg_int(s1, src->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src, REG_ITMP2);
+                       d = reg_of_var(iptr->dst, REG_ITMP3);
+                       M_S4ADDQ(s2, s1, REG_ITMP1);
+                       M_ILD(d, REG_ITMP1, OFFSET(java_intarray, data[0]));
+                       store_reg_to_var_int(iptr->dst, d);
+                       break;
+
+               case ICMD_OPT_FALOAD:     /* ..., arrayref, index  ==> ..., value     */
+
+                       var_to_reg_int(s1, src->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src, REG_ITMP2);
+                       d = reg_of_var(iptr->dst, REG_FTMP3);
+                       M_S4ADDQ(s2, s1, REG_ITMP1);
+                       M_FLD(d, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+                       store_reg_to_var_flt(iptr->dst, d);
+                       break;
+
+               case ICMD_OPT_DALOAD:     /* ..., arrayref, index  ==> ..., value     */
+
+                       var_to_reg_int(s1, src->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src, REG_ITMP2);
+                       d = reg_of_var(iptr->dst, REG_FTMP3);
+                       M_S8ADDQ(s2, s1, REG_ITMP1);
+                       M_DLD(d, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+                       store_reg_to_var_flt(iptr->dst, d);
+                       break;
+
+               case ICMD_OPT_CALOAD:     /* ..., arrayref, index  ==> ..., value     */
+
+                       var_to_reg_int(s1, src->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src, REG_ITMP2);
+                       d = reg_of_var(iptr->dst, REG_ITMP3);
+                       if (has_ext_instr_set) {
+                               M_LADD(s2, s1, REG_ITMP1);
+                               M_LADD(s2, REG_ITMP1, REG_ITMP1);
+                               M_SLDU(d, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                               }
+                       else {
+                               M_LADD (s2, s1, REG_ITMP1);
+                               M_LADD (s2, REG_ITMP1, REG_ITMP1);
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                               M_LDA  (REG_ITMP1, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                               M_EXTWL(REG_ITMP2, REG_ITMP1, d);
+                               }
+                       store_reg_to_var_int(iptr->dst, d);
+                       break;                  
+
+               case ICMD_OPT_SALOAD:     /* ..., arrayref, index  ==> ..., value     */
+
+                       var_to_reg_int(s1, src->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src, REG_ITMP2);
+                       d = reg_of_var(iptr->dst, REG_ITMP3);
+                       if (has_ext_instr_set) {
+                               M_LADD(s2, s1, REG_ITMP1);
+                               M_LADD(s2, REG_ITMP1, REG_ITMP1);
+                               M_SLDU( d, REG_ITMP1, OFFSET (java_shortarray, data[0]));
+                               M_SSEXT(d, d);
+                               }
+                       else {
+                               M_LADD(s2, s1, REG_ITMP1);
+                               M_LADD(s2, REG_ITMP1, REG_ITMP1);
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray, data[0])+2);
+                               M_EXTQH(REG_ITMP2, REG_ITMP1, d);
+                               M_SRA_IMM(d, 48, d);
+                               }
+                       store_reg_to_var_int(iptr->dst, d);
+                       break;
+
+               case ICMD_OPT_BALOAD:     /* ..., arrayref, index  ==> ..., value     */
+
+                       var_to_reg_int(s1, src->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src, REG_ITMP2);
+                       d = reg_of_var(iptr->dst, REG_ITMP3);
+                       if (has_ext_instr_set) {
+                               M_LADD   (s2, s1, REG_ITMP1);
+                               M_BLDU   (d, REG_ITMP1, OFFSET (java_shortarray, data[0]));
+                               M_BSEXT  (d, d);
+                               }
+                       else {
+                               M_LADD(s2, s1, REG_ITMP1);
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray, data[0])+1);
+                               M_EXTQH(REG_ITMP2, REG_ITMP1, d);
+                               M_SRA_IMM(d, 56, d);
+                               }
+                       store_reg_to_var_int(iptr->dst, d);
+                       break;
+
+
+               case ICMD_OPT_AASTORE:    /* ..., arrayref, index, value  ==> ...     */
+
+                       var_to_reg_int(s1, src->prev->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src->prev, REG_ITMP2);
+                       var_to_reg_int(s3, src, REG_ITMP3);
+                       M_SAADDQ(s2, s1, REG_ITMP1);
+                       M_AST   (s3, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+                       break;
+
+               case ICMD_OPT_LASTORE:    /* ..., arrayref, index, value  ==> ...     */
+
+                       var_to_reg_int(s1, src->prev->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src->prev, REG_ITMP2);
+                       var_to_reg_int(s3, src, REG_ITMP3);
+                       M_S8ADDQ(s2, s1, REG_ITMP1);
+                       M_LST   (s3, REG_ITMP1, OFFSET(java_longarray, data[0]));
+                       break;
+
+               case ICMD_OPT_IASTORE:    /* ..., arrayref, index, value  ==> ...     */
+
+                       var_to_reg_int(s1, src->prev->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src->prev, REG_ITMP2);
+                       var_to_reg_int(s3, src, REG_ITMP3);
+                       M_S4ADDQ(s2, s1, REG_ITMP1);
+                       M_IST   (s3, REG_ITMP1, OFFSET(java_intarray, data[0]));
+                       break;
+
+               case ICMD_OPT_FASTORE:    /* ..., arrayref, index, value  ==> ...     */
+
+                       var_to_reg_int(s1, src->prev->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src->prev, REG_ITMP2);
+                       var_to_reg_flt(s3, src, REG_FTMP3);
+                       M_S4ADDQ(s2, s1, REG_ITMP1);
+                       M_FST   (s3, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+                       break;
+
+               case ICMD_OPT_DASTORE:    /* ..., arrayref, index, value  ==> ...     */
+
+                       var_to_reg_int(s1, src->prev->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src->prev, REG_ITMP2);
+                       var_to_reg_flt(s3, src, REG_FTMP3);
+                       M_S8ADDQ(s2, s1, REG_ITMP1);
+                       M_DST   (s3, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+                       break;
+
+               case ICMD_OPT_CASTORE:    /* ..., arrayref, index, value  ==> ...     */
+
+                       var_to_reg_int(s1, src->prev->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src->prev, REG_ITMP2);
+                       var_to_reg_int(s3, src, REG_ITMP3);
+                       if (has_ext_instr_set) {
+                               M_LADD(s2, s1, REG_ITMP1);
+                               M_LADD(s2, REG_ITMP1, REG_ITMP1);
+                               M_SST (s3, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                               }
+                       else {
+                               M_LADD (s2, s1, REG_ITMP1);
+                               M_LADD (s2, REG_ITMP1, REG_ITMP1);
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                               M_LDA  (REG_ITMP1, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                               M_INSWL(s3, REG_ITMP1, REG_ITMP3);
+                               M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
+                               M_OR   (REG_ITMP2, REG_ITMP3, REG_ITMP2);
+                               M_LST_U(REG_ITMP2, REG_ITMP1, 0);
+                               }
+                       break;
+
+               case ICMD_OPT_SASTORE:    /* ..., arrayref, index, value  ==> ...     */
+
+                       var_to_reg_int(s1, src->prev->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src->prev, REG_ITMP2);
+                       var_to_reg_int(s3, src, REG_ITMP3);
+                       if (has_ext_instr_set) {
+                               M_LADD(s2, s1, REG_ITMP1);
+                               M_LADD(s2, REG_ITMP1, REG_ITMP1);
+                               M_SST (s3, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+                               }
+                       else {
+                               M_LADD (s2, s1, REG_ITMP1);
+                               M_LADD (s2, REG_ITMP1, REG_ITMP1);
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+                               M_LDA  (REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+                               M_INSWL(s3, REG_ITMP1, REG_ITMP3);
+                               M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
+                               M_OR   (REG_ITMP2, REG_ITMP3, REG_ITMP2);
+                               M_LST_U(REG_ITMP2, REG_ITMP1, 0);
+                               }
+                       break;
+
+               case ICMD_OPT_BASTORE:    /* ..., arrayref, index, value  ==> ...     */
+
+                       var_to_reg_int(s1, src->prev->prev, REG_ITMP1);
+                       var_to_reg_int(s2, src->prev, REG_ITMP2);
+                       var_to_reg_int(s3, src, REG_ITMP3);
+                       if (has_ext_instr_set) {
+                               M_LADD(s2, s1, REG_ITMP1);
+                               M_BST (s3, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                               }
+                       else {
+                               M_LADD (s2, s1, REG_ITMP1);
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                               M_LDA  (REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                               M_INSBL(s3, REG_ITMP1, REG_ITMP3);
+                               M_MSKBL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
+                               M_OR   (REG_ITMP2, REG_ITMP3, REG_ITMP2);
+                               M_LST_U(REG_ITMP2, REG_ITMP1, 0);
+                               }
+                       break;
+
                case ICMD_PUTSTATIC:  /* ..., value  ==> ...                          */
                                      /* op1 = type, val.a = field address            */
 
index ae092f1a0517a0ff2648d1f95469790233dd0879..8867aad02ff5673160036bf2239a889776eb5144 100644 (file)
@@ -743,8 +743,40 @@ static int jcommandsize[256] = {
 #define JAVA_BREAKPOINT       202
         1,
 
-            1,1,1,1,1,1,1,1,            /* unused */
-        1,1,1,1,1,1,1,1,1,1,
+#define ICMD_OPT_IALOAD       203
+        1,
+#define ICMD_OPT_LALOAD       204
+        1,
+#define ICMD_OPT_FALOAD       205
+        1,
+#define ICMD_OPT_DALOAD       206
+        1,
+#define ICMD_OPT_AALOAD       207
+        1,
+#define ICMD_OPT_BALOAD       208
+        1,
+#define ICMD_OPT_CALOAD       209
+        1,
+#define ICMD_OPT_SALOAD       210
+        1,
+
+#define ICMD_OPT_IASTORE      211
+        1,
+#define ICMD_OPT_LASTORE      212
+        1,
+#define ICMD_OPT_FASTORE      213
+        1,
+#define ICMD_OPT_DASTORE      214
+        1,
+#define ICMD_OPT_AASTORE      215
+        1,
+#define ICMD_OPT_BASTORE      216
+        1,
+#define ICMD_OPT_CASTORE      217
+        1,
+#define ICMD_OPT_SASTORE      218
+        1,
+                        1,1,            /* unused */
         1,1,1,1,1,1,1,1,1,1,
         1,1,1,1,1,1,1,1,1,1,
         1,1,1,1,1,1,1,1,1,1,
@@ -1074,10 +1106,24 @@ static char *icmd_names[256] = {
        "UNDEF201     ", /* JSR_W       201 */
        "UNDEF202     ", /* BREAKPOINT  202 */
 
-                             "UNDEF203","UNDEF204","UNDEF205",
-       "UNDEF206","UNDEF207","UNDEF208","UNDEF209","UNDEF210",
-       "UNDEF","UNDEF","UNDEF","UNDEF","UNDEF",
-       "UNDEF216","UNDEF217","UNDEF218","UNDEF219","UNDEF220",
+       "OPT_IALOAD   ", /*             203 */
+       "OPT_LALOAD   ", /*             204 */
+       "OPT_FALOAD   ", /*             205 */
+       "OPT_DALOAD   ", /*             206 */
+       "OPT_AALOAD   ", /*             207 */
+       "OPT_BALOAD   ", /*             208 */
+       "OPT_CALOAD   ", /*             209 */
+       "OPT_SALOAD   ", /*             210 */
+       "OPT_IASTORE  ", /*             211 */
+       "OPT_LASTORE  ", /*             212 */
+       "OPT_FASTORE  ", /*             213 */
+       "OPT_DASTORE  ", /*             214 */
+       "OPT_AASTORE  ", /*             215 */
+       "OPT_BASTORE  ", /*             216 */
+       "OPT_CASTORE  ", /*             217 */
+       "OPT_SASTORE  ", /*             218 */
+
+                            "UNDEF219","UNDEF220",
        "UNDEF","UNDEF","UNDEF","UNDEF","UNDEF",
        "UNDEF226","UNDEF227","UNDEF228","UNDEF229","UNDEF230",
        "UNDEF","UNDEF","UNDEF","UNDEF","UNDEF",
index 5838bced60d6a34601197adbe375c2d287b4a3f3..ad187c7d35e1d664cfea7a44a2120b341c36ea03 100644 (file)
--- a/jit/reg.c
+++ b/jit/reg.c
@@ -635,6 +635,16 @@ static void allocate_scratch_registers()
                                        case ICMD_BALOAD:
                                        case ICMD_CALOAD:
                                        case ICMD_SALOAD:
+
+                                       case ICMD_OPT_IALOAD:
+                                       case ICMD_OPT_LALOAD:
+                                       case ICMD_OPT_FALOAD:
+                                       case ICMD_OPT_DALOAD:
+                                       case ICMD_OPT_AALOAD:
+
+                                       case ICMD_OPT_BALOAD:
+                                       case ICMD_OPT_CALOAD:
+                                       case ICMD_OPT_SALOAD:
                                                reg_free_temp(src);
                                                reg_free_temp(src->prev);
                                                reg_new_temp(dst);
@@ -651,6 +661,16 @@ static void allocate_scratch_registers()
                                        case ICMD_BASTORE:
                                        case ICMD_CASTORE:
                                        case ICMD_SASTORE:
+
+                                       case ICMD_OPT_IASTORE:
+                                       case ICMD_OPT_LASTORE:
+                                       case ICMD_OPT_FASTORE:
+                                       case ICMD_OPT_DASTORE:
+                                       case ICMD_OPT_AASTORE:
+
+                                       case ICMD_OPT_BASTORE:
+                                       case ICMD_OPT_CASTORE:
+                                       case ICMD_OPT_SASTORE:
                                                reg_free_temp(src);
                                                reg_free_temp(src->prev);
                                                reg_free_temp(src->prev->prev);
index cd5f44240676086ccc705ec11dcd410cd667e536..6061f6eaac5d8f0f171a1f341ac89e02e34189ea 100644 (file)
@@ -724,6 +724,11 @@ icmd_lconst_lcmp_tail:
                                                case ICMD_AALOAD:
                                                        COUNT(count_check_null);
                                                        COUNT(count_check_bound);
+                                               case ICMD_OPT_IALOAD:
+                                               case ICMD_OPT_LALOAD:
+                                               case ICMD_OPT_FALOAD:
+                                               case ICMD_OPT_DALOAD:
+                                               case ICMD_OPT_AALOAD:
                                                        COUNT(count_pcmd_mem);
                                                        OP2IAT_1(opcode-ICMD_IALOAD);
                                                        break;
@@ -733,6 +738,9 @@ icmd_lconst_lcmp_tail:
                                                case ICMD_SALOAD:
                                                        COUNT(count_check_null);
                                                        COUNT(count_check_bound);
+                                               case ICMD_OPT_BALOAD:
+                                               case ICMD_OPT_CALOAD:
+                                               case ICMD_OPT_SALOAD:
                                                        COUNT(count_pcmd_mem);
                                                        OP2IAT_1(TYPE_INT);
                                                        break;
@@ -810,6 +818,11 @@ icmd_lconst_lcmp_tail:
                                                case ICMD_AASTORE:
                                                        COUNT(count_check_null);
                                                        COUNT(count_check_bound);
+                                               case ICMD_OPT_IASTORE:
+                                               case ICMD_OPT_LASTORE:
+                                               case ICMD_OPT_FASTORE:
+                                               case ICMD_OPT_DASTORE:
+                                               case ICMD_OPT_AASTORE:
                                                        COUNT(count_pcmd_mem);
                                                        OP3TIA_0(opcode-ICMD_IASTORE);
                                                        break;
@@ -819,6 +832,9 @@ icmd_lconst_lcmp_tail:
                                                        COUNT(count_check_null);
                                                        COUNT(count_check_bound);
                                                        COUNT(count_pcmd_mem);
+                                               case ICMD_OPT_BASTORE:
+                                               case ICMD_OPT_CASTORE:
+                                               case ICMD_OPT_SASTORE:
                                                        OP3TIA_0(TYPE_INT);
                                                        break;
 
index cd5f44240676086ccc705ec11dcd410cd667e536..6061f6eaac5d8f0f171a1f341ac89e02e34189ea 100644 (file)
@@ -724,6 +724,11 @@ icmd_lconst_lcmp_tail:
                                                case ICMD_AALOAD:
                                                        COUNT(count_check_null);
                                                        COUNT(count_check_bound);
+                                               case ICMD_OPT_IALOAD:
+                                               case ICMD_OPT_LALOAD:
+                                               case ICMD_OPT_FALOAD:
+                                               case ICMD_OPT_DALOAD:
+                                               case ICMD_OPT_AALOAD:
                                                        COUNT(count_pcmd_mem);
                                                        OP2IAT_1(opcode-ICMD_IALOAD);
                                                        break;
@@ -733,6 +738,9 @@ icmd_lconst_lcmp_tail:
                                                case ICMD_SALOAD:
                                                        COUNT(count_check_null);
                                                        COUNT(count_check_bound);
+                                               case ICMD_OPT_BALOAD:
+                                               case ICMD_OPT_CALOAD:
+                                               case ICMD_OPT_SALOAD:
                                                        COUNT(count_pcmd_mem);
                                                        OP2IAT_1(TYPE_INT);
                                                        break;
@@ -810,6 +818,11 @@ icmd_lconst_lcmp_tail:
                                                case ICMD_AASTORE:
                                                        COUNT(count_check_null);
                                                        COUNT(count_check_bound);
+                                               case ICMD_OPT_IASTORE:
+                                               case ICMD_OPT_LASTORE:
+                                               case ICMD_OPT_FASTORE:
+                                               case ICMD_OPT_DASTORE:
+                                               case ICMD_OPT_AASTORE:
                                                        COUNT(count_pcmd_mem);
                                                        OP3TIA_0(opcode-ICMD_IASTORE);
                                                        break;
@@ -819,6 +832,9 @@ icmd_lconst_lcmp_tail:
                                                        COUNT(count_check_null);
                                                        COUNT(count_check_bound);
                                                        COUNT(count_pcmd_mem);
+                                               case ICMD_OPT_BASTORE:
+                                               case ICMD_OPT_CASTORE:
+                                               case ICMD_OPT_SASTORE:
                                                        OP3TIA_0(TYPE_INT);
                                                        break;