< prev index next >

src/share/vm/opto/doCall.cpp

Print this page
rev 10512 : value type calling convention

*** 560,570 **** int vtable_index = Method::invalid_vtable_index; bool call_does_dispatch = false; // Speculative type of the receiver if any ciKlass* speculative_receiver_type = NULL; ! if (is_virtual_or_interface || is_direct) { Node* receiver_node = stack(sp() - nargs); const TypeOopPtr* receiver_type = _gvn.type(receiver_node)->isa_oopptr(); // call_does_dispatch and vtable_index are out-parameters. They might be changed. // For arrays, klass below is Object. When vtable calls are used, // resolving the call with Object would allow an illegal call to --- 560,570 ---- int vtable_index = Method::invalid_vtable_index; bool call_does_dispatch = false; // Speculative type of the receiver if any ciKlass* speculative_receiver_type = NULL; ! if (is_virtual_or_interface) { Node* receiver_node = stack(sp() - nargs); const TypeOopPtr* receiver_type = _gvn.type(receiver_node)->isa_oopptr(); // call_does_dispatch and vtable_index are out-parameters. They might be changed. // For arrays, klass below is Object. When vtable calls are used, // resolving the call with Object would allow an illegal call to
*** 1021,1043 **** Node* adr2 = basic_plus_adr(adr1, adr1, in_bytes(Method::compiled_invocation_counter_offset())); increment_counter(adr2); } } else if (is_inline) { switch (bc()) { - case Bytecodes::_invokedirect: case Bytecodes::_invokevirtual: increment_counter(SharedRuntime::nof_inlined_calls_addr()); break; case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_inlined_interface_calls_addr()); break; case Bytecodes::_invokestatic: case Bytecodes::_invokedynamic: case Bytecodes::_invokespecial: increment_counter(SharedRuntime::nof_inlined_static_calls_addr()); break; default: fatal("unexpected call bytecode"); } } else { switch (bc()) { - case Bytecodes::_invokedirect: case Bytecodes::_invokevirtual: increment_counter(SharedRuntime::nof_normal_calls_addr()); break; case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_interface_calls_addr()); break; case Bytecodes::_invokestatic: case Bytecodes::_invokedynamic: case Bytecodes::_invokespecial: increment_counter(SharedRuntime::nof_static_calls_addr()); break; default: fatal("unexpected call bytecode"); } --- 1021,1043 ---- Node* adr2 = basic_plus_adr(adr1, adr1, in_bytes(Method::compiled_invocation_counter_offset())); increment_counter(adr2); } } else if (is_inline) { switch (bc()) { case Bytecodes::_invokevirtual: increment_counter(SharedRuntime::nof_inlined_calls_addr()); break; case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_inlined_interface_calls_addr()); break; + case Bytecodes::_invokedirect: case Bytecodes::_invokestatic: case Bytecodes::_invokedynamic: case Bytecodes::_invokespecial: increment_counter(SharedRuntime::nof_inlined_static_calls_addr()); break; default: fatal("unexpected call bytecode"); } } else { switch (bc()) { case Bytecodes::_invokevirtual: increment_counter(SharedRuntime::nof_normal_calls_addr()); break; case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_interface_calls_addr()); break; + case Bytecodes::_invokedirect: case Bytecodes::_invokestatic: case Bytecodes::_invokedynamic: case Bytecodes::_invokespecial: increment_counter(SharedRuntime::nof_static_calls_addr()); break; default: fatal("unexpected call bytecode"); }
< prev index next >