< prev index next >

src/hotspot/share/c1/c1_GraphBuilder.cpp

Print this page
rev 59103 : imported patch hotspot

*** 2079,2105 **** code == Bytecodes::_invokeinterface; Values* args = state()->pop_arguments(target->arg_size_no_receiver() + patching_appendix_arg); Value recv = has_receiver ? apop() : NULL; int vtable_index = Method::invalid_vtable_index; - #ifdef SPARC - // Currently only supported on Sparc. - // The UseInlineCaches only controls dispatch to invokevirtuals for - // loaded classes which we weren't able to statically bind. - if (!UseInlineCaches && target->is_loaded() && code == Bytecodes::_invokevirtual - && !target->can_be_statically_bound()) { - // Find a vtable index if one is available - // For arrays, callee_holder is Object. Resolving the call with - // Object would allow an illegal call to finalize() on an - // array. We use holder instead: illegal calls to finalize() won't - // be compiled as vtable calls (IC call resolution will catch the - // illegal call) and the few legal calls on array types won't be - // either. - vtable_index = target->resolve_vtable_index(calling_klass, holder); - } - #endif - // A null check is required here (when there is a receiver) for any of the following cases // - invokespecial, always need a null check. // - invokevirtual, when the target is final and loaded. Calls to final targets will become optimized // and require null checking. If the target is loaded a null check is emitted here. // If the target isn't loaded the null check must happen after the call resolution. We achieve that --- 2079,2088 ----
< prev index next >