src/hotspot/share/shark/sharkBlock.cpp
changeset 47701 be620a591379
parent 47519 b1f360639517
parent 47700 c6d2381c6932
child 47702 cf8310446245
child 55762 e947a3a50a95
child 55767 8e22715afabc
child 55771 164d1a901f6e
equal deleted inserted replaced
47519:b1f360639517 47701:be620a591379
     1 /*
       
     2  * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
       
     3  * Copyright 2008, 2009, 2010 Red Hat, Inc.
       
     4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     5  *
       
     6  * This code is free software; you can redistribute it and/or modify it
       
     7  * under the terms of the GNU General Public License version 2 only, as
       
     8  * published by the Free Software Foundation.
       
     9  *
       
    10  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    13  * version 2 for more details (a copy is included in the LICENSE file that
       
    14  * accompanied this code).
       
    15  *
       
    16  * You should have received a copy of the GNU General Public License version
       
    17  * 2 along with this work; if not, write to the Free Software Foundation,
       
    18  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    19  *
       
    20  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    21  * or visit www.oracle.com if you need additional information or have any
       
    22  * questions.
       
    23  *
       
    24  */
       
    25 
       
    26 #include "precompiled.hpp"
       
    27 #include "interpreter/bytecodes.hpp"
       
    28 #include "shark/llvmHeaders.hpp"
       
    29 #include "shark/llvmValue.hpp"
       
    30 #include "shark/sharkBlock.hpp"
       
    31 #include "shark/sharkBuilder.hpp"
       
    32 #include "shark/sharkConstant.hpp"
       
    33 #include "shark/sharkState.hpp"
       
    34 #include "shark/sharkValue.hpp"
       
    35 #include "shark/shark_globals.hpp"
       
    36 #include "utilities/debug.hpp"
       
    37 
       
    38 using namespace llvm;
       
    39 
       
    40 void SharkBlock::parse_bytecode(int start, int limit) {
       
    41   SharkValue *a, *b, *c, *d;
       
    42   int i;
       
    43 
       
    44   // Ensure the current state is initialized before we emit any code,
       
    45   // so that any setup code for the state is at the start of the block
       
    46   current_state();
       
    47 
       
    48   // Parse the bytecodes
       
    49   iter()->reset_to_bci(start);
       
    50   while (iter()->next_bci() < limit) {
       
    51     NOT_PRODUCT(a = b = c = d = NULL);
       
    52     iter()->next();
       
    53 
       
    54     if (SharkTraceBytecodes)
       
    55       tty->print_cr("%4d: %s", bci(), Bytecodes::name(bc()));
       
    56 
       
    57     if (has_trap() && trap_bci() == bci()) {
       
    58       do_trap(trap_request());
       
    59       return;
       
    60     }
       
    61 
       
    62     if (UseLoopSafepoints) {
       
    63       // XXX if a lcmp is followed by an if_?? then C2 maybe-inserts
       
    64       // the safepoint before the lcmp rather than before the if.
       
    65       // Maybe we should do this too.  See parse2.cpp for details.
       
    66       switch (bc()) {
       
    67       case Bytecodes::_goto:
       
    68       case Bytecodes::_ifnull:
       
    69       case Bytecodes::_ifnonnull:
       
    70       case Bytecodes::_if_acmpeq:
       
    71       case Bytecodes::_if_acmpne:
       
    72       case Bytecodes::_ifeq:
       
    73       case Bytecodes::_ifne:
       
    74       case Bytecodes::_iflt:
       
    75       case Bytecodes::_ifle:
       
    76       case Bytecodes::_ifgt:
       
    77       case Bytecodes::_ifge:
       
    78       case Bytecodes::_if_icmpeq:
       
    79       case Bytecodes::_if_icmpne:
       
    80       case Bytecodes::_if_icmplt:
       
    81       case Bytecodes::_if_icmple:
       
    82       case Bytecodes::_if_icmpgt:
       
    83       case Bytecodes::_if_icmpge:
       
    84         if (iter()->get_dest() <= bci())
       
    85           maybe_add_backedge_safepoint();
       
    86         break;
       
    87 
       
    88       case Bytecodes::_goto_w:
       
    89         if (iter()->get_far_dest() <= bci())
       
    90           maybe_add_backedge_safepoint();
       
    91         break;
       
    92 
       
    93       case Bytecodes::_tableswitch:
       
    94       case Bytecodes::_lookupswitch:
       
    95         if (switch_default_dest() <= bci()) {
       
    96           maybe_add_backedge_safepoint();
       
    97           break;
       
    98         }
       
    99         int len = switch_table_length();
       
   100         for (int i = 0; i < len; i++) {
       
   101           if (switch_dest(i) <= bci()) {
       
   102             maybe_add_backedge_safepoint();
       
   103             break;
       
   104           }
       
   105         }
       
   106         break;
       
   107       }
       
   108     }
       
   109 
       
   110     switch (bc()) {
       
   111     case Bytecodes::_nop:
       
   112       break;
       
   113 
       
   114     case Bytecodes::_aconst_null:
       
   115       push(SharkValue::null());
       
   116       break;
       
   117 
       
   118     case Bytecodes::_iconst_m1:
       
   119       push(SharkValue::jint_constant(-1));
       
   120       break;
       
   121     case Bytecodes::_iconst_0:
       
   122       push(SharkValue::jint_constant(0));
       
   123       break;
       
   124     case Bytecodes::_iconst_1:
       
   125       push(SharkValue::jint_constant(1));
       
   126       break;
       
   127     case Bytecodes::_iconst_2:
       
   128       push(SharkValue::jint_constant(2));
       
   129       break;
       
   130     case Bytecodes::_iconst_3:
       
   131       push(SharkValue::jint_constant(3));
       
   132       break;
       
   133     case Bytecodes::_iconst_4:
       
   134       push(SharkValue::jint_constant(4));
       
   135       break;
       
   136     case Bytecodes::_iconst_5:
       
   137       push(SharkValue::jint_constant(5));
       
   138       break;
       
   139 
       
   140     case Bytecodes::_lconst_0:
       
   141       push(SharkValue::jlong_constant(0));
       
   142       break;
       
   143     case Bytecodes::_lconst_1:
       
   144       push(SharkValue::jlong_constant(1));
       
   145       break;
       
   146 
       
   147     case Bytecodes::_fconst_0:
       
   148       push(SharkValue::jfloat_constant(0));
       
   149       break;
       
   150     case Bytecodes::_fconst_1:
       
   151       push(SharkValue::jfloat_constant(1));
       
   152       break;
       
   153     case Bytecodes::_fconst_2:
       
   154       push(SharkValue::jfloat_constant(2));
       
   155       break;
       
   156 
       
   157     case Bytecodes::_dconst_0:
       
   158       push(SharkValue::jdouble_constant(0));
       
   159       break;
       
   160     case Bytecodes::_dconst_1:
       
   161       push(SharkValue::jdouble_constant(1));
       
   162       break;
       
   163 
       
   164     case Bytecodes::_bipush:
       
   165       push(SharkValue::jint_constant(iter()->get_constant_u1()));
       
   166       break;
       
   167     case Bytecodes::_sipush:
       
   168       push(SharkValue::jint_constant(iter()->get_constant_u2()));
       
   169       break;
       
   170 
       
   171     case Bytecodes::_ldc:
       
   172     case Bytecodes::_ldc_w:
       
   173     case Bytecodes::_ldc2_w: {
       
   174       SharkConstant* constant = SharkConstant::for_ldc(iter());
       
   175       assert(constant->is_loaded(), "trap should handle unloaded classes");
       
   176       push(constant->value(builder()));
       
   177       break;
       
   178     }
       
   179     case Bytecodes::_iload_0:
       
   180     case Bytecodes::_lload_0:
       
   181     case Bytecodes::_fload_0:
       
   182     case Bytecodes::_dload_0:
       
   183     case Bytecodes::_aload_0:
       
   184       push(local(0));
       
   185       break;
       
   186     case Bytecodes::_iload_1:
       
   187     case Bytecodes::_lload_1:
       
   188     case Bytecodes::_fload_1:
       
   189     case Bytecodes::_dload_1:
       
   190     case Bytecodes::_aload_1:
       
   191       push(local(1));
       
   192       break;
       
   193     case Bytecodes::_iload_2:
       
   194     case Bytecodes::_lload_2:
       
   195     case Bytecodes::_fload_2:
       
   196     case Bytecodes::_dload_2:
       
   197     case Bytecodes::_aload_2:
       
   198       push(local(2));
       
   199       break;
       
   200     case Bytecodes::_iload_3:
       
   201     case Bytecodes::_lload_3:
       
   202     case Bytecodes::_fload_3:
       
   203     case Bytecodes::_dload_3:
       
   204     case Bytecodes::_aload_3:
       
   205       push(local(3));
       
   206       break;
       
   207     case Bytecodes::_iload:
       
   208     case Bytecodes::_lload:
       
   209     case Bytecodes::_fload:
       
   210     case Bytecodes::_dload:
       
   211     case Bytecodes::_aload:
       
   212       push(local(iter()->get_index()));
       
   213       break;
       
   214 
       
   215     case Bytecodes::_baload:
       
   216       do_aload(T_BYTE);
       
   217       break;
       
   218     case Bytecodes::_caload:
       
   219       do_aload(T_CHAR);
       
   220       break;
       
   221     case Bytecodes::_saload:
       
   222       do_aload(T_SHORT);
       
   223       break;
       
   224     case Bytecodes::_iaload:
       
   225       do_aload(T_INT);
       
   226       break;
       
   227     case Bytecodes::_laload:
       
   228       do_aload(T_LONG);
       
   229       break;
       
   230     case Bytecodes::_faload:
       
   231       do_aload(T_FLOAT);
       
   232       break;
       
   233     case Bytecodes::_daload:
       
   234       do_aload(T_DOUBLE);
       
   235       break;
       
   236     case Bytecodes::_aaload:
       
   237       do_aload(T_OBJECT);
       
   238       break;
       
   239 
       
   240     case Bytecodes::_istore_0:
       
   241     case Bytecodes::_lstore_0:
       
   242     case Bytecodes::_fstore_0:
       
   243     case Bytecodes::_dstore_0:
       
   244     case Bytecodes::_astore_0:
       
   245       set_local(0, pop());
       
   246       break;
       
   247     case Bytecodes::_istore_1:
       
   248     case Bytecodes::_lstore_1:
       
   249     case Bytecodes::_fstore_1:
       
   250     case Bytecodes::_dstore_1:
       
   251     case Bytecodes::_astore_1:
       
   252       set_local(1, pop());
       
   253       break;
       
   254     case Bytecodes::_istore_2:
       
   255     case Bytecodes::_lstore_2:
       
   256     case Bytecodes::_fstore_2:
       
   257     case Bytecodes::_dstore_2:
       
   258     case Bytecodes::_astore_2:
       
   259       set_local(2, pop());
       
   260       break;
       
   261     case Bytecodes::_istore_3:
       
   262     case Bytecodes::_lstore_3:
       
   263     case Bytecodes::_fstore_3:
       
   264     case Bytecodes::_dstore_3:
       
   265     case Bytecodes::_astore_3:
       
   266       set_local(3, pop());
       
   267       break;
       
   268     case Bytecodes::_istore:
       
   269     case Bytecodes::_lstore:
       
   270     case Bytecodes::_fstore:
       
   271     case Bytecodes::_dstore:
       
   272     case Bytecodes::_astore:
       
   273       set_local(iter()->get_index(), pop());
       
   274       break;
       
   275 
       
   276     case Bytecodes::_bastore:
       
   277       do_astore(T_BYTE);
       
   278       break;
       
   279     case Bytecodes::_castore:
       
   280       do_astore(T_CHAR);
       
   281       break;
       
   282     case Bytecodes::_sastore:
       
   283       do_astore(T_SHORT);
       
   284       break;
       
   285     case Bytecodes::_iastore:
       
   286       do_astore(T_INT);
       
   287       break;
       
   288     case Bytecodes::_lastore:
       
   289       do_astore(T_LONG);
       
   290       break;
       
   291     case Bytecodes::_fastore:
       
   292       do_astore(T_FLOAT);
       
   293       break;
       
   294     case Bytecodes::_dastore:
       
   295       do_astore(T_DOUBLE);
       
   296       break;
       
   297     case Bytecodes::_aastore:
       
   298       do_astore(T_OBJECT);
       
   299       break;
       
   300 
       
   301     case Bytecodes::_pop:
       
   302       xpop();
       
   303       break;
       
   304     case Bytecodes::_pop2:
       
   305       xpop();
       
   306       xpop();
       
   307       break;
       
   308     case Bytecodes::_swap:
       
   309       a = xpop();
       
   310       b = xpop();
       
   311       xpush(a);
       
   312       xpush(b);
       
   313       break;
       
   314     case Bytecodes::_dup:
       
   315       a = xpop();
       
   316       xpush(a);
       
   317       xpush(a);
       
   318       break;
       
   319     case Bytecodes::_dup_x1:
       
   320       a = xpop();
       
   321       b = xpop();
       
   322       xpush(a);
       
   323       xpush(b);
       
   324       xpush(a);
       
   325       break;
       
   326     case Bytecodes::_dup_x2:
       
   327       a = xpop();
       
   328       b = xpop();
       
   329       c = xpop();
       
   330       xpush(a);
       
   331       xpush(c);
       
   332       xpush(b);
       
   333       xpush(a);
       
   334       break;
       
   335     case Bytecodes::_dup2:
       
   336       a = xpop();
       
   337       b = xpop();
       
   338       xpush(b);
       
   339       xpush(a);
       
   340       xpush(b);
       
   341       xpush(a);
       
   342       break;
       
   343     case Bytecodes::_dup2_x1:
       
   344       a = xpop();
       
   345       b = xpop();
       
   346       c = xpop();
       
   347       xpush(b);
       
   348       xpush(a);
       
   349       xpush(c);
       
   350       xpush(b);
       
   351       xpush(a);
       
   352       break;
       
   353     case Bytecodes::_dup2_x2:
       
   354       a = xpop();
       
   355       b = xpop();
       
   356       c = xpop();
       
   357       d = xpop();
       
   358       xpush(b);
       
   359       xpush(a);
       
   360       xpush(d);
       
   361       xpush(c);
       
   362       xpush(b);
       
   363       xpush(a);
       
   364       break;
       
   365 
       
   366     case Bytecodes::_arraylength:
       
   367       do_arraylength();
       
   368       break;
       
   369 
       
   370     case Bytecodes::_getfield:
       
   371       do_getfield();
       
   372       break;
       
   373     case Bytecodes::_getstatic:
       
   374       do_getstatic();
       
   375       break;
       
   376     case Bytecodes::_putfield:
       
   377       do_putfield();
       
   378       break;
       
   379     case Bytecodes::_putstatic:
       
   380       do_putstatic();
       
   381       break;
       
   382 
       
   383     case Bytecodes::_iadd:
       
   384       b = pop();
       
   385       a = pop();
       
   386       push(SharkValue::create_jint(
       
   387         builder()->CreateAdd(a->jint_value(), b->jint_value()), false));
       
   388       break;
       
   389     case Bytecodes::_isub:
       
   390       b = pop();
       
   391       a = pop();
       
   392       push(SharkValue::create_jint(
       
   393         builder()->CreateSub(a->jint_value(), b->jint_value()), false));
       
   394       break;
       
   395     case Bytecodes::_imul:
       
   396       b = pop();
       
   397       a = pop();
       
   398       push(SharkValue::create_jint(
       
   399         builder()->CreateMul(a->jint_value(), b->jint_value()), false));
       
   400       break;
       
   401     case Bytecodes::_idiv:
       
   402       do_idiv();
       
   403       break;
       
   404     case Bytecodes::_irem:
       
   405       do_irem();
       
   406       break;
       
   407     case Bytecodes::_ineg:
       
   408       a = pop();
       
   409       push(SharkValue::create_jint(
       
   410         builder()->CreateNeg(a->jint_value()), a->zero_checked()));
       
   411       break;
       
   412     case Bytecodes::_ishl:
       
   413       b = pop();
       
   414       a = pop();
       
   415       push(SharkValue::create_jint(
       
   416         builder()->CreateShl(
       
   417           a->jint_value(),
       
   418           builder()->CreateAnd(
       
   419             b->jint_value(), LLVMValue::jint_constant(0x1f))), false));
       
   420       break;
       
   421     case Bytecodes::_ishr:
       
   422       b = pop();
       
   423       a = pop();
       
   424       push(SharkValue::create_jint(
       
   425         builder()->CreateAShr(
       
   426           a->jint_value(),
       
   427           builder()->CreateAnd(
       
   428             b->jint_value(), LLVMValue::jint_constant(0x1f))), false));
       
   429       break;
       
   430     case Bytecodes::_iushr:
       
   431       b = pop();
       
   432       a = pop();
       
   433       push(SharkValue::create_jint(
       
   434         builder()->CreateLShr(
       
   435           a->jint_value(),
       
   436           builder()->CreateAnd(
       
   437             b->jint_value(), LLVMValue::jint_constant(0x1f))), false));
       
   438       break;
       
   439     case Bytecodes::_iand:
       
   440       b = pop();
       
   441       a = pop();
       
   442       push(SharkValue::create_jint(
       
   443         builder()->CreateAnd(a->jint_value(), b->jint_value()), false));
       
   444       break;
       
   445     case Bytecodes::_ior:
       
   446       b = pop();
       
   447       a = pop();
       
   448       push(SharkValue::create_jint(
       
   449         builder()->CreateOr(a->jint_value(), b->jint_value()),
       
   450         a->zero_checked() && b->zero_checked()));
       
   451       break;
       
   452     case Bytecodes::_ixor:
       
   453       b = pop();
       
   454       a = pop();
       
   455       push(SharkValue::create_jint(
       
   456         builder()->CreateXor(a->jint_value(), b->jint_value()), false));
       
   457       break;
       
   458 
       
   459     case Bytecodes::_ladd:
       
   460       b = pop();
       
   461       a = pop();
       
   462       push(SharkValue::create_jlong(
       
   463         builder()->CreateAdd(a->jlong_value(), b->jlong_value()), false));
       
   464       break;
       
   465     case Bytecodes::_lsub:
       
   466       b = pop();
       
   467       a = pop();
       
   468       push(SharkValue::create_jlong(
       
   469         builder()->CreateSub(a->jlong_value(), b->jlong_value()), false));
       
   470       break;
       
   471     case Bytecodes::_lmul:
       
   472       b = pop();
       
   473       a = pop();
       
   474       push(SharkValue::create_jlong(
       
   475         builder()->CreateMul(a->jlong_value(), b->jlong_value()), false));
       
   476       break;
       
   477     case Bytecodes::_ldiv:
       
   478       do_ldiv();
       
   479       break;
       
   480     case Bytecodes::_lrem:
       
   481       do_lrem();
       
   482       break;
       
   483     case Bytecodes::_lneg:
       
   484       a = pop();
       
   485       push(SharkValue::create_jlong(
       
   486         builder()->CreateNeg(a->jlong_value()), a->zero_checked()));
       
   487       break;
       
   488     case Bytecodes::_lshl:
       
   489       b = pop();
       
   490       a = pop();
       
   491       push(SharkValue::create_jlong(
       
   492         builder()->CreateShl(
       
   493           a->jlong_value(),
       
   494           builder()->CreateIntCast(
       
   495             builder()->CreateAnd(
       
   496               b->jint_value(), LLVMValue::jint_constant(0x3f)),
       
   497             SharkType::jlong_type(), true)), false));
       
   498       break;
       
   499     case Bytecodes::_lshr:
       
   500       b = pop();
       
   501       a = pop();
       
   502       push(SharkValue::create_jlong(
       
   503         builder()->CreateAShr(
       
   504           a->jlong_value(),
       
   505           builder()->CreateIntCast(
       
   506             builder()->CreateAnd(
       
   507               b->jint_value(), LLVMValue::jint_constant(0x3f)),
       
   508             SharkType::jlong_type(), true)), false));
       
   509       break;
       
   510     case Bytecodes::_lushr:
       
   511       b = pop();
       
   512       a = pop();
       
   513       push(SharkValue::create_jlong(
       
   514         builder()->CreateLShr(
       
   515           a->jlong_value(),
       
   516           builder()->CreateIntCast(
       
   517             builder()->CreateAnd(
       
   518               b->jint_value(), LLVMValue::jint_constant(0x3f)),
       
   519             SharkType::jlong_type(), true)), false));
       
   520       break;
       
   521     case Bytecodes::_land:
       
   522       b = pop();
       
   523       a = pop();
       
   524       push(SharkValue::create_jlong(
       
   525         builder()->CreateAnd(a->jlong_value(), b->jlong_value()), false));
       
   526       break;
       
   527     case Bytecodes::_lor:
       
   528       b = pop();
       
   529       a = pop();
       
   530       push(SharkValue::create_jlong(
       
   531         builder()->CreateOr(a->jlong_value(), b->jlong_value()),
       
   532         a->zero_checked() && b->zero_checked()));
       
   533       break;
       
   534     case Bytecodes::_lxor:
       
   535       b = pop();
       
   536       a = pop();
       
   537       push(SharkValue::create_jlong(
       
   538         builder()->CreateXor(a->jlong_value(), b->jlong_value()), false));
       
   539       break;
       
   540 
       
   541     case Bytecodes::_fadd:
       
   542       b = pop();
       
   543       a = pop();
       
   544       push(SharkValue::create_jfloat(
       
   545         builder()->CreateFAdd(a->jfloat_value(), b->jfloat_value())));
       
   546       break;
       
   547     case Bytecodes::_fsub:
       
   548       b = pop();
       
   549       a = pop();
       
   550       push(SharkValue::create_jfloat(
       
   551         builder()->CreateFSub(a->jfloat_value(), b->jfloat_value())));
       
   552       break;
       
   553     case Bytecodes::_fmul:
       
   554       b = pop();
       
   555       a = pop();
       
   556       push(SharkValue::create_jfloat(
       
   557         builder()->CreateFMul(a->jfloat_value(), b->jfloat_value())));
       
   558       break;
       
   559     case Bytecodes::_fdiv:
       
   560       b = pop();
       
   561       a = pop();
       
   562       push(SharkValue::create_jfloat(
       
   563         builder()->CreateFDiv(a->jfloat_value(), b->jfloat_value())));
       
   564       break;
       
   565     case Bytecodes::_frem:
       
   566       b = pop();
       
   567       a = pop();
       
   568       push(SharkValue::create_jfloat(
       
   569         builder()->CreateFRem(a->jfloat_value(), b->jfloat_value())));
       
   570       break;
       
   571     case Bytecodes::_fneg:
       
   572       a = pop();
       
   573       push(SharkValue::create_jfloat(
       
   574         builder()->CreateFNeg(a->jfloat_value())));
       
   575       break;
       
   576 
       
   577     case Bytecodes::_dadd:
       
   578       b = pop();
       
   579       a = pop();
       
   580       push(SharkValue::create_jdouble(
       
   581         builder()->CreateFAdd(a->jdouble_value(), b->jdouble_value())));
       
   582       break;
       
   583     case Bytecodes::_dsub:
       
   584       b = pop();
       
   585       a = pop();
       
   586       push(SharkValue::create_jdouble(
       
   587         builder()->CreateFSub(a->jdouble_value(), b->jdouble_value())));
       
   588       break;
       
   589     case Bytecodes::_dmul:
       
   590       b = pop();
       
   591       a = pop();
       
   592       push(SharkValue::create_jdouble(
       
   593         builder()->CreateFMul(a->jdouble_value(), b->jdouble_value())));
       
   594       break;
       
   595     case Bytecodes::_ddiv:
       
   596       b = pop();
       
   597       a = pop();
       
   598       push(SharkValue::create_jdouble(
       
   599         builder()->CreateFDiv(a->jdouble_value(), b->jdouble_value())));
       
   600       break;
       
   601     case Bytecodes::_drem:
       
   602       b = pop();
       
   603       a = pop();
       
   604       push(SharkValue::create_jdouble(
       
   605         builder()->CreateFRem(a->jdouble_value(), b->jdouble_value())));
       
   606       break;
       
   607     case Bytecodes::_dneg:
       
   608       a = pop();
       
   609       push(SharkValue::create_jdouble(
       
   610         builder()->CreateFNeg(a->jdouble_value())));
       
   611       break;
       
   612 
       
   613     case Bytecodes::_iinc:
       
   614       i = iter()->get_index();
       
   615       set_local(
       
   616         i,
       
   617         SharkValue::create_jint(
       
   618           builder()->CreateAdd(
       
   619             LLVMValue::jint_constant(iter()->get_iinc_con()),
       
   620             local(i)->jint_value()), false));
       
   621       break;
       
   622 
       
   623     case Bytecodes::_lcmp:
       
   624       do_lcmp();
       
   625       break;
       
   626 
       
   627     case Bytecodes::_fcmpl:
       
   628       do_fcmp(false, false);
       
   629       break;
       
   630     case Bytecodes::_fcmpg:
       
   631       do_fcmp(false, true);
       
   632       break;
       
   633     case Bytecodes::_dcmpl:
       
   634       do_fcmp(true, false);
       
   635       break;
       
   636     case Bytecodes::_dcmpg:
       
   637       do_fcmp(true, true);
       
   638       break;
       
   639 
       
   640     case Bytecodes::_i2l:
       
   641       a = pop();
       
   642       push(SharkValue::create_jlong(
       
   643         builder()->CreateIntCast(
       
   644           a->jint_value(), SharkType::jlong_type(), true), a->zero_checked()));
       
   645       break;
       
   646     case Bytecodes::_i2f:
       
   647       push(SharkValue::create_jfloat(
       
   648         builder()->CreateSIToFP(
       
   649           pop()->jint_value(), SharkType::jfloat_type())));
       
   650       break;
       
   651     case Bytecodes::_i2d:
       
   652       push(SharkValue::create_jdouble(
       
   653         builder()->CreateSIToFP(
       
   654           pop()->jint_value(), SharkType::jdouble_type())));
       
   655       break;
       
   656 
       
   657     case Bytecodes::_l2i:
       
   658       push(SharkValue::create_jint(
       
   659         builder()->CreateIntCast(
       
   660           pop()->jlong_value(), SharkType::jint_type(), true), false));
       
   661       break;
       
   662     case Bytecodes::_l2f:
       
   663       push(SharkValue::create_jfloat(
       
   664         builder()->CreateSIToFP(
       
   665           pop()->jlong_value(), SharkType::jfloat_type())));
       
   666       break;
       
   667     case Bytecodes::_l2d:
       
   668       push(SharkValue::create_jdouble(
       
   669         builder()->CreateSIToFP(
       
   670           pop()->jlong_value(), SharkType::jdouble_type())));
       
   671       break;
       
   672 
       
   673     case Bytecodes::_f2i:
       
   674       push(SharkValue::create_jint(
       
   675         builder()->CreateCall(
       
   676           builder()->f2i(), pop()->jfloat_value()), false));
       
   677       break;
       
   678     case Bytecodes::_f2l:
       
   679       push(SharkValue::create_jlong(
       
   680         builder()->CreateCall(
       
   681           builder()->f2l(), pop()->jfloat_value()), false));
       
   682       break;
       
   683     case Bytecodes::_f2d:
       
   684       push(SharkValue::create_jdouble(
       
   685         builder()->CreateFPExt(
       
   686           pop()->jfloat_value(), SharkType::jdouble_type())));
       
   687       break;
       
   688 
       
   689     case Bytecodes::_d2i:
       
   690       push(SharkValue::create_jint(
       
   691         builder()->CreateCall(
       
   692           builder()->d2i(), pop()->jdouble_value()), false));
       
   693       break;
       
   694     case Bytecodes::_d2l:
       
   695       push(SharkValue::create_jlong(
       
   696         builder()->CreateCall(
       
   697           builder()->d2l(), pop()->jdouble_value()), false));
       
   698       break;
       
   699     case Bytecodes::_d2f:
       
   700       push(SharkValue::create_jfloat(
       
   701         builder()->CreateFPTrunc(
       
   702           pop()->jdouble_value(), SharkType::jfloat_type())));
       
   703       break;
       
   704 
       
   705     case Bytecodes::_i2b:
       
   706       push(SharkValue::create_jint(
       
   707         builder()->CreateAShr(
       
   708           builder()->CreateShl(
       
   709             pop()->jint_value(),
       
   710             LLVMValue::jint_constant(24)),
       
   711           LLVMValue::jint_constant(24)), false));
       
   712       break;
       
   713     case Bytecodes::_i2c:
       
   714       push(SharkValue::create_jint(
       
   715         builder()->CreateAnd(
       
   716             pop()->jint_value(),
       
   717             LLVMValue::jint_constant(0xffff)), false));
       
   718       break;
       
   719     case Bytecodes::_i2s:
       
   720       push(SharkValue::create_jint(
       
   721         builder()->CreateAShr(
       
   722           builder()->CreateShl(
       
   723             pop()->jint_value(),
       
   724             LLVMValue::jint_constant(16)),
       
   725           LLVMValue::jint_constant(16)), false));
       
   726       break;
       
   727 
       
   728     case Bytecodes::_return:
       
   729       do_return(T_VOID);
       
   730       break;
       
   731     case Bytecodes::_ireturn:
       
   732       do_return(T_INT);
       
   733       break;
       
   734     case Bytecodes::_lreturn:
       
   735       do_return(T_LONG);
       
   736       break;
       
   737     case Bytecodes::_freturn:
       
   738       do_return(T_FLOAT);
       
   739       break;
       
   740     case Bytecodes::_dreturn:
       
   741       do_return(T_DOUBLE);
       
   742       break;
       
   743     case Bytecodes::_areturn:
       
   744       do_return(T_OBJECT);
       
   745       break;
       
   746 
       
   747     case Bytecodes::_athrow:
       
   748       do_athrow();
       
   749       break;
       
   750 
       
   751     case Bytecodes::_goto:
       
   752     case Bytecodes::_goto_w:
       
   753       do_goto();
       
   754       break;
       
   755 
       
   756     case Bytecodes::_jsr:
       
   757     case Bytecodes::_jsr_w:
       
   758       do_jsr();
       
   759       break;
       
   760 
       
   761     case Bytecodes::_ret:
       
   762       do_ret();
       
   763       break;
       
   764 
       
   765     case Bytecodes::_ifnull:
       
   766       do_if(ICmpInst::ICMP_EQ, SharkValue::null(), pop());
       
   767       break;
       
   768     case Bytecodes::_ifnonnull:
       
   769       do_if(ICmpInst::ICMP_NE, SharkValue::null(), pop());
       
   770       break;
       
   771     case Bytecodes::_if_acmpeq:
       
   772       b = pop();
       
   773       a = pop();
       
   774       do_if(ICmpInst::ICMP_EQ, b, a);
       
   775       break;
       
   776     case Bytecodes::_if_acmpne:
       
   777       b = pop();
       
   778       a = pop();
       
   779       do_if(ICmpInst::ICMP_NE, b, a);
       
   780       break;
       
   781     case Bytecodes::_ifeq:
       
   782       do_if(ICmpInst::ICMP_EQ, SharkValue::jint_constant(0), pop());
       
   783       break;
       
   784     case Bytecodes::_ifne:
       
   785       do_if(ICmpInst::ICMP_NE, SharkValue::jint_constant(0), pop());
       
   786       break;
       
   787     case Bytecodes::_iflt:
       
   788       do_if(ICmpInst::ICMP_SLT, SharkValue::jint_constant(0), pop());
       
   789       break;
       
   790     case Bytecodes::_ifle:
       
   791       do_if(ICmpInst::ICMP_SLE, SharkValue::jint_constant(0), pop());
       
   792       break;
       
   793     case Bytecodes::_ifgt:
       
   794       do_if(ICmpInst::ICMP_SGT, SharkValue::jint_constant(0), pop());
       
   795       break;
       
   796     case Bytecodes::_ifge:
       
   797       do_if(ICmpInst::ICMP_SGE, SharkValue::jint_constant(0), pop());
       
   798       break;
       
   799     case Bytecodes::_if_icmpeq:
       
   800       b = pop();
       
   801       a = pop();
       
   802       do_if(ICmpInst::ICMP_EQ, b, a);
       
   803       break;
       
   804     case Bytecodes::_if_icmpne:
       
   805       b = pop();
       
   806       a = pop();
       
   807       do_if(ICmpInst::ICMP_NE, b, a);
       
   808       break;
       
   809     case Bytecodes::_if_icmplt:
       
   810       b = pop();
       
   811       a = pop();
       
   812       do_if(ICmpInst::ICMP_SLT, b, a);
       
   813       break;
       
   814     case Bytecodes::_if_icmple:
       
   815       b = pop();
       
   816       a = pop();
       
   817       do_if(ICmpInst::ICMP_SLE, b, a);
       
   818       break;
       
   819     case Bytecodes::_if_icmpgt:
       
   820       b = pop();
       
   821       a = pop();
       
   822       do_if(ICmpInst::ICMP_SGT, b, a);
       
   823       break;
       
   824     case Bytecodes::_if_icmpge:
       
   825       b = pop();
       
   826       a = pop();
       
   827       do_if(ICmpInst::ICMP_SGE, b, a);
       
   828       break;
       
   829 
       
   830     case Bytecodes::_tableswitch:
       
   831     case Bytecodes::_lookupswitch:
       
   832       do_switch();
       
   833       break;
       
   834 
       
   835     case Bytecodes::_invokestatic:
       
   836     case Bytecodes::_invokespecial:
       
   837     case Bytecodes::_invokevirtual:
       
   838     case Bytecodes::_invokeinterface:
       
   839       do_call();
       
   840       break;
       
   841 
       
   842     case Bytecodes::_instanceof:
       
   843       // This is a very common construct:
       
   844       //
       
   845       //  if (object instanceof Klass) {
       
   846       //    something = (Klass) object;
       
   847       //    ...
       
   848       //  }
       
   849       //
       
   850       // which gets compiled to something like this:
       
   851       //
       
   852       //  28: aload 9
       
   853       //  30: instanceof <Class Klass>
       
   854       //  33: ifeq 52
       
   855       //  36: aload 9
       
   856       //  38: checkcast <Class Klass>
       
   857       //
       
   858       // Handling both bytecodes at once allows us
       
   859       // to eliminate the checkcast.
       
   860       if (iter()->next_bci() < limit &&
       
   861           (iter()->next_bc() == Bytecodes::_ifeq ||
       
   862            iter()->next_bc() == Bytecodes::_ifne) &&
       
   863           (!UseLoopSafepoints ||
       
   864            iter()->next_get_dest() > iter()->next_bci())) {
       
   865         if (maybe_do_instanceof_if()) {
       
   866           iter()->next();
       
   867           if (SharkTraceBytecodes)
       
   868             tty->print_cr("%4d: %s", bci(), Bytecodes::name(bc()));
       
   869           break;
       
   870         }
       
   871       }
       
   872       // fall through
       
   873     case Bytecodes::_checkcast:
       
   874       do_instance_check();
       
   875       break;
       
   876 
       
   877     case Bytecodes::_new:
       
   878       do_new();
       
   879       break;
       
   880     case Bytecodes::_newarray:
       
   881       do_newarray();
       
   882       break;
       
   883     case Bytecodes::_anewarray:
       
   884       do_anewarray();
       
   885       break;
       
   886     case Bytecodes::_multianewarray:
       
   887       do_multianewarray();
       
   888       break;
       
   889 
       
   890     case Bytecodes::_monitorenter:
       
   891       do_monitorenter();
       
   892       break;
       
   893     case Bytecodes::_monitorexit:
       
   894       do_monitorexit();
       
   895       break;
       
   896 
       
   897     default:
       
   898       ShouldNotReachHere();
       
   899     }
       
   900   }
       
   901 }
       
   902 
       
   903 SharkState* SharkBlock::initial_current_state() {
       
   904   return entry_state()->copy();
       
   905 }
       
   906 
       
   907 int SharkBlock::switch_default_dest() {
       
   908   return iter()->get_dest_table(0);
       
   909 }
       
   910 
       
   911 int SharkBlock::switch_table_length() {
       
   912   switch(bc()) {
       
   913   case Bytecodes::_tableswitch:
       
   914     return iter()->get_int_table(2) - iter()->get_int_table(1) + 1;
       
   915 
       
   916   case Bytecodes::_lookupswitch:
       
   917     return iter()->get_int_table(1);
       
   918 
       
   919   default:
       
   920     ShouldNotReachHere();
       
   921   }
       
   922 }
       
   923 
       
   924 int SharkBlock::switch_key(int i) {
       
   925   switch(bc()) {
       
   926   case Bytecodes::_tableswitch:
       
   927     return iter()->get_int_table(1) + i;
       
   928 
       
   929   case Bytecodes::_lookupswitch:
       
   930     return iter()->get_int_table(2 + 2 * i);
       
   931 
       
   932   default:
       
   933     ShouldNotReachHere();
       
   934   }
       
   935 }
       
   936 
       
   937 int SharkBlock::switch_dest(int i) {
       
   938   switch(bc()) {
       
   939   case Bytecodes::_tableswitch:
       
   940     return iter()->get_dest_table(i + 3);
       
   941 
       
   942   case Bytecodes::_lookupswitch:
       
   943     return iter()->get_dest_table(2 + 2 * i + 1);
       
   944 
       
   945   default:
       
   946     ShouldNotReachHere();
       
   947   }
       
   948 }
       
   949 
       
   950 void SharkBlock::do_div_or_rem(bool is_long, bool is_rem) {
       
   951   SharkValue *sb = pop();
       
   952   SharkValue *sa = pop();
       
   953 
       
   954   check_divide_by_zero(sb);
       
   955 
       
   956   Value *a, *b, *p, *q;
       
   957   if (is_long) {
       
   958     a = sa->jlong_value();
       
   959     b = sb->jlong_value();
       
   960     p = LLVMValue::jlong_constant(0x8000000000000000LL);
       
   961     q = LLVMValue::jlong_constant(-1);
       
   962   }
       
   963   else {
       
   964     a = sa->jint_value();
       
   965     b = sb->jint_value();
       
   966     p = LLVMValue::jint_constant(0x80000000);
       
   967     q = LLVMValue::jint_constant(-1);
       
   968   }
       
   969 
       
   970   BasicBlock *ip           = builder()->GetBlockInsertionPoint();
       
   971   BasicBlock *special_case = builder()->CreateBlock(ip, "special_case");
       
   972   BasicBlock *general_case = builder()->CreateBlock(ip, "general_case");
       
   973   BasicBlock *done         = builder()->CreateBlock(ip, "done");
       
   974 
       
   975   builder()->CreateCondBr(
       
   976     builder()->CreateAnd(
       
   977       builder()->CreateICmpEQ(a, p),
       
   978       builder()->CreateICmpEQ(b, q)),
       
   979     special_case, general_case);
       
   980 
       
   981   builder()->SetInsertPoint(special_case);
       
   982   Value *special_result;
       
   983   if (is_rem) {
       
   984     if (is_long)
       
   985       special_result = LLVMValue::jlong_constant(0);
       
   986     else
       
   987       special_result = LLVMValue::jint_constant(0);
       
   988   }
       
   989   else {
       
   990     special_result = a;
       
   991   }
       
   992   builder()->CreateBr(done);
       
   993 
       
   994   builder()->SetInsertPoint(general_case);
       
   995   Value *general_result;
       
   996   if (is_rem)
       
   997     general_result = builder()->CreateSRem(a, b);
       
   998   else
       
   999     general_result = builder()->CreateSDiv(a, b);
       
  1000   builder()->CreateBr(done);
       
  1001 
       
  1002   builder()->SetInsertPoint(done);
       
  1003   PHINode *result;
       
  1004   if (is_long)
       
  1005     result = builder()->CreatePHI(SharkType::jlong_type(), 0, "result");
       
  1006   else
       
  1007     result = builder()->CreatePHI(SharkType::jint_type(), 0, "result");
       
  1008   result->addIncoming(special_result, special_case);
       
  1009   result->addIncoming(general_result, general_case);
       
  1010 
       
  1011   if (is_long)
       
  1012     push(SharkValue::create_jlong(result, false));
       
  1013   else
       
  1014     push(SharkValue::create_jint(result, false));
       
  1015 }
       
  1016 
       
  1017 void SharkBlock::do_field_access(bool is_get, bool is_field) {
       
  1018   bool will_link;
       
  1019   ciField *field = iter()->get_field(will_link);
       
  1020   assert(will_link, "typeflow responsibility");
       
  1021   assert(is_field != field->is_static(), "mismatch");
       
  1022 
       
  1023   // Pop the value off the stack where necessary
       
  1024   SharkValue *value = NULL;
       
  1025   if (!is_get)
       
  1026     value = pop();
       
  1027 
       
  1028   // Find the object we're accessing, if necessary
       
  1029   Value *object = NULL;
       
  1030   if (is_field) {
       
  1031     SharkValue *value = pop();
       
  1032     check_null(value);
       
  1033     object = value->generic_value();
       
  1034   }
       
  1035   if (is_get && field->is_constant() && field->is_static()) {
       
  1036     SharkConstant *constant = SharkConstant::for_field(iter());
       
  1037     if (constant->is_loaded())
       
  1038       value = constant->value(builder());
       
  1039   }
       
  1040   if (!is_get || value == NULL) {
       
  1041     if (!is_field) {
       
  1042       object = builder()->CreateInlineOop(field->holder()->java_mirror());
       
  1043     }
       
  1044     BasicType   basic_type = field->type()->basic_type();
       
  1045     Type *stack_type = SharkType::to_stackType(basic_type);
       
  1046     Type *field_type = SharkType::to_arrayType(basic_type);
       
  1047     Type *type = field_type;
       
  1048     if (field->is_volatile()) {
       
  1049       if (field_type == SharkType::jfloat_type()) {
       
  1050         type = SharkType::jint_type();
       
  1051       } else if (field_type == SharkType::jdouble_type()) {
       
  1052         type = SharkType::jlong_type();
       
  1053       }
       
  1054     }
       
  1055     Value *addr = builder()->CreateAddressOfStructEntry(
       
  1056       object, in_ByteSize(field->offset_in_bytes()),
       
  1057       PointerType::getUnqual(type),
       
  1058       "addr");
       
  1059 
       
  1060     // Do the access
       
  1061     if (is_get) {
       
  1062       Value* field_value;
       
  1063       if (field->is_volatile()) {
       
  1064         field_value = builder()->CreateAtomicLoad(addr);
       
  1065         field_value = builder()->CreateBitCast(field_value, field_type);
       
  1066       } else {
       
  1067         field_value = builder()->CreateLoad(addr);
       
  1068       }
       
  1069       if (field_type != stack_type) {
       
  1070         field_value = builder()->CreateIntCast(
       
  1071           field_value, stack_type, basic_type != T_CHAR);
       
  1072       }
       
  1073 
       
  1074       value = SharkValue::create_generic(field->type(), field_value, false);
       
  1075     }
       
  1076     else {
       
  1077       Value *field_value = value->generic_value();
       
  1078 
       
  1079       if (field_type != stack_type) {
       
  1080         field_value = builder()->CreateIntCast(
       
  1081           field_value, field_type, basic_type != T_CHAR);
       
  1082       }
       
  1083 
       
  1084       if (field->is_volatile()) {
       
  1085         field_value = builder()->CreateBitCast(field_value, type);
       
  1086         builder()->CreateAtomicStore(field_value, addr);
       
  1087       } else {
       
  1088         builder()->CreateStore(field_value, addr);
       
  1089       }
       
  1090 
       
  1091       if (!field->type()->is_primitive_type()) {
       
  1092         builder()->CreateUpdateBarrierSet(oopDesc::bs(), addr);
       
  1093       }
       
  1094     }
       
  1095   }
       
  1096 
       
  1097   // Push the value onto the stack where necessary
       
  1098   if (is_get)
       
  1099     push(value);
       
  1100 }
       
  1101 
       
  1102 void SharkBlock::do_lcmp() {
       
  1103   Value *b = pop()->jlong_value();
       
  1104   Value *a = pop()->jlong_value();
       
  1105 
       
  1106   BasicBlock *ip   = builder()->GetBlockInsertionPoint();
       
  1107   BasicBlock *ne   = builder()->CreateBlock(ip, "lcmp_ne");
       
  1108   BasicBlock *lt   = builder()->CreateBlock(ip, "lcmp_lt");
       
  1109   BasicBlock *gt   = builder()->CreateBlock(ip, "lcmp_gt");
       
  1110   BasicBlock *done = builder()->CreateBlock(ip, "done");
       
  1111 
       
  1112   BasicBlock *eq = builder()->GetInsertBlock();
       
  1113   builder()->CreateCondBr(builder()->CreateICmpEQ(a, b), done, ne);
       
  1114 
       
  1115   builder()->SetInsertPoint(ne);
       
  1116   builder()->CreateCondBr(builder()->CreateICmpSLT(a, b), lt, gt);
       
  1117 
       
  1118   builder()->SetInsertPoint(lt);
       
  1119   builder()->CreateBr(done);
       
  1120 
       
  1121   builder()->SetInsertPoint(gt);
       
  1122   builder()->CreateBr(done);
       
  1123 
       
  1124   builder()->SetInsertPoint(done);
       
  1125   PHINode *result = builder()->CreatePHI(SharkType::jint_type(), 0, "result");
       
  1126   result->addIncoming(LLVMValue::jint_constant(-1), lt);
       
  1127   result->addIncoming(LLVMValue::jint_constant(0),  eq);
       
  1128   result->addIncoming(LLVMValue::jint_constant(1),  gt);
       
  1129 
       
  1130   push(SharkValue::create_jint(result, false));
       
  1131 }
       
  1132 
       
  1133 void SharkBlock::do_fcmp(bool is_double, bool unordered_is_greater) {
       
  1134   Value *a, *b;
       
  1135   if (is_double) {
       
  1136     b = pop()->jdouble_value();
       
  1137     a = pop()->jdouble_value();
       
  1138   }
       
  1139   else {
       
  1140     b = pop()->jfloat_value();
       
  1141     a = pop()->jfloat_value();
       
  1142   }
       
  1143 
       
  1144   BasicBlock *ip      = builder()->GetBlockInsertionPoint();
       
  1145   BasicBlock *ordered = builder()->CreateBlock(ip, "ordered");
       
  1146   BasicBlock *ge      = builder()->CreateBlock(ip, "fcmp_ge");
       
  1147   BasicBlock *lt      = builder()->CreateBlock(ip, "fcmp_lt");
       
  1148   BasicBlock *eq      = builder()->CreateBlock(ip, "fcmp_eq");
       
  1149   BasicBlock *gt      = builder()->CreateBlock(ip, "fcmp_gt");
       
  1150   BasicBlock *done    = builder()->CreateBlock(ip, "done");
       
  1151 
       
  1152   builder()->CreateCondBr(
       
  1153     builder()->CreateFCmpUNO(a, b),
       
  1154     unordered_is_greater ? gt : lt, ordered);
       
  1155 
       
  1156   builder()->SetInsertPoint(ordered);
       
  1157   builder()->CreateCondBr(builder()->CreateFCmpULT(a, b), lt, ge);
       
  1158 
       
  1159   builder()->SetInsertPoint(ge);
       
  1160   builder()->CreateCondBr(builder()->CreateFCmpUGT(a, b), gt, eq);
       
  1161 
       
  1162   builder()->SetInsertPoint(lt);
       
  1163   builder()->CreateBr(done);
       
  1164 
       
  1165   builder()->SetInsertPoint(gt);
       
  1166   builder()->CreateBr(done);
       
  1167 
       
  1168   builder()->SetInsertPoint(eq);
       
  1169   builder()->CreateBr(done);
       
  1170 
       
  1171   builder()->SetInsertPoint(done);
       
  1172   PHINode *result = builder()->CreatePHI(SharkType::jint_type(), 0, "result");
       
  1173   result->addIncoming(LLVMValue::jint_constant(-1), lt);
       
  1174   result->addIncoming(LLVMValue::jint_constant(0),  eq);
       
  1175   result->addIncoming(LLVMValue::jint_constant(1),  gt);
       
  1176 
       
  1177   push(SharkValue::create_jint(result, false));
       
  1178 }
       
  1179 
       
  1180 void SharkBlock::emit_IR() {
       
  1181   ShouldNotCallThis();
       
  1182 }
       
  1183 
       
  1184 SharkState* SharkBlock::entry_state() {
       
  1185   ShouldNotCallThis();
       
  1186 }
       
  1187 
       
  1188 void SharkBlock::do_zero_check(SharkValue* value) {
       
  1189   ShouldNotCallThis();
       
  1190 }
       
  1191 
       
  1192 void SharkBlock::maybe_add_backedge_safepoint() {
       
  1193   ShouldNotCallThis();
       
  1194 }
       
  1195 
       
  1196 bool SharkBlock::has_trap() {
       
  1197   return false;
       
  1198 }
       
  1199 
       
  1200 int SharkBlock::trap_request() {
       
  1201   ShouldNotCallThis();
       
  1202 }
       
  1203 
       
  1204 int SharkBlock::trap_bci() {
       
  1205   ShouldNotCallThis();
       
  1206 }
       
  1207 
       
  1208 void SharkBlock::do_trap(int trap_request) {
       
  1209   ShouldNotCallThis();
       
  1210 }
       
  1211 
       
  1212 void SharkBlock::do_arraylength() {
       
  1213   ShouldNotCallThis();
       
  1214 }
       
  1215 
       
  1216 void SharkBlock::do_aload(BasicType basic_type) {
       
  1217   ShouldNotCallThis();
       
  1218 }
       
  1219 
       
  1220 void SharkBlock::do_astore(BasicType basic_type) {
       
  1221   ShouldNotCallThis();
       
  1222 }
       
  1223 
       
  1224 void SharkBlock::do_return(BasicType type) {
       
  1225   ShouldNotCallThis();
       
  1226 }
       
  1227 
       
  1228 void SharkBlock::do_athrow() {
       
  1229   ShouldNotCallThis();
       
  1230 }
       
  1231 
       
  1232 void SharkBlock::do_goto() {
       
  1233   ShouldNotCallThis();
       
  1234 }
       
  1235 
       
  1236 void SharkBlock::do_jsr() {
       
  1237   ShouldNotCallThis();
       
  1238 }
       
  1239 
       
  1240 void SharkBlock::do_ret() {
       
  1241   ShouldNotCallThis();
       
  1242 }
       
  1243 
       
  1244 void SharkBlock::do_if(ICmpInst::Predicate p, SharkValue* b, SharkValue* a) {
       
  1245   ShouldNotCallThis();
       
  1246 }
       
  1247 
       
  1248 void SharkBlock::do_switch() {
       
  1249   ShouldNotCallThis();
       
  1250 }
       
  1251 
       
  1252 void SharkBlock::do_call() {
       
  1253   ShouldNotCallThis();
       
  1254 }
       
  1255 
       
  1256 void SharkBlock::do_instance_check() {
       
  1257   ShouldNotCallThis();
       
  1258 }
       
  1259 
       
  1260 bool SharkBlock::maybe_do_instanceof_if() {
       
  1261   ShouldNotCallThis();
       
  1262 }
       
  1263 
       
  1264 void SharkBlock::do_new() {
       
  1265   ShouldNotCallThis();
       
  1266 }
       
  1267 
       
  1268 void SharkBlock::do_newarray() {
       
  1269   ShouldNotCallThis();
       
  1270 }
       
  1271 
       
  1272 void SharkBlock::do_anewarray() {
       
  1273   ShouldNotCallThis();
       
  1274 }
       
  1275 
       
  1276 void SharkBlock::do_multianewarray() {
       
  1277   ShouldNotCallThis();
       
  1278 }
       
  1279 
       
  1280 void SharkBlock::do_monitorenter() {
       
  1281   ShouldNotCallThis();
       
  1282 }
       
  1283 
       
  1284 void SharkBlock::do_monitorexit() {
       
  1285   ShouldNotCallThis();
       
  1286 }