src/share/vm/opto/doCall.cpp

changeset 4313
beebba0acc11
parent 4268
bb33c6fdcf0d
child 4357
ad5dd04754ee
     1.1 --- a/src/share/vm/opto/doCall.cpp	Wed Nov 21 05:57:12 2012 -0800
     1.2 +++ b/src/share/vm/opto/doCall.cpp	Mon Nov 26 17:25:11 2012 -0800
     1.3 @@ -350,7 +350,7 @@
     1.4    // Set frequently used booleans
     1.5    const bool is_virtual = bc() == Bytecodes::_invokevirtual;
     1.6    const bool is_virtual_or_interface = is_virtual || bc() == Bytecodes::_invokeinterface;
     1.7 -  const bool has_receiver = is_virtual_or_interface || bc() == Bytecodes::_invokespecial;
     1.8 +  const bool has_receiver = Bytecodes::has_receiver(bc());
     1.9  
    1.10    // Find target being called
    1.11    bool             will_link;
    1.12 @@ -380,6 +380,8 @@
    1.13    // Note:  In the absence of miranda methods, an abstract class K can perform
    1.14    // an invokevirtual directly on an interface method I.m if K implements I.
    1.15  
    1.16 +  // orig_callee is the resolved callee which's signature includes the
    1.17 +  // appendix argument.
    1.18    const int nargs = orig_callee->arg_size();
    1.19  
    1.20    // Push appendix argument (MethodType, CallSite, etc.), if one.
    1.21 @@ -572,7 +574,7 @@
    1.22        }
    1.23        // If there is going to be a trap, put it at the next bytecode:
    1.24        set_bci(iter().next_bci());
    1.25 -      do_null_assert(peek(), T_OBJECT);
    1.26 +      null_assert(peek());
    1.27        set_bci(iter().cur_bci()); // put it back
    1.28      }
    1.29    }

mercurial