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 }