Print this page
rev 1082 : [mq]: indy.compiler.patch

Split Close
Expand all
Collapse all
          --- old/src/share/vm/opto/graphKit.cpp
          +++ new/src/share/vm/opto/graphKit.cpp
↓ open down ↓ 973 lines elided ↑ open up ↑
 974  974        }
 975  975      }
 976  976      break;
 977  977  
 978  978    case Bytecodes::_invokevirtual:
 979  979    case Bytecodes::_invokespecial:
 980  980    case Bytecodes::_invokestatic:
 981  981    case Bytecodes::_invokedynamic:
 982  982    case Bytecodes::_invokeinterface:
 983  983      {
 984      -      bool is_static = (depth == 0);
 985  984        bool ignore;
 986  985        ciBytecodeStream iter(method());
 987  986        iter.reset_to_bci(bci());
 988  987        iter.next();
 989  988        ciMethod* method = iter.get_method(ignore);
 990  989        inputs = method->arg_size_no_receiver();
 991      -      if (!is_static)  inputs += 1;
      990 +      // Add a receiver argument, maybe:
      991 +      if (code != Bytecodes::_invokestatic &&
      992 +          code != Bytecodes::_invokedynamic)
      993 +        inputs += 1;
      994 +      // (Do not use ciMethod::arg_size(), because
      995 +      // it might be an unloaded method, which doesn't
      996 +      // know whether it is static or not.)
 992  997        int size = method->return_type()->size();
 993  998        depth = size - inputs;
 994  999      }
 995 1000      break;
 996 1001  
 997 1002    case Bytecodes::_multianewarray:
 998 1003      {
 999 1004        ciBytecodeStream iter(method());
1000 1005        iter.reset_to_bci(bci());
1001 1006        iter.next();
↓ open down ↓ 2520 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX