177 #ifdef ASSERT |
177 #ifdef ASSERT |
178 // Ensure that this is really the case. |
178 // Ensure that this is really the case. |
179 KlassHandle object_klass = SystemDictionary::Object_klass(); |
179 KlassHandle object_klass = SystemDictionary::Object_klass(); |
180 Method * object_resolved_method = object_klass()->vtable()->method_at(index); |
180 Method * object_resolved_method = object_klass()->vtable()->method_at(index); |
181 assert(object_resolved_method->name() == resolved_method->name(), |
181 assert(object_resolved_method->name() == resolved_method->name(), |
182 err_msg("Object and interface method names should match at vtable index %d, %s != %s", |
182 "Object and interface method names should match at vtable index %d, %s != %s", |
183 index, object_resolved_method->name()->as_C_string(), resolved_method->name()->as_C_string())); |
183 index, object_resolved_method->name()->as_C_string(), resolved_method->name()->as_C_string()); |
184 assert(object_resolved_method->signature() == resolved_method->signature(), |
184 assert(object_resolved_method->signature() == resolved_method->signature(), |
185 err_msg("Object and interface method signatures should match at vtable index %d, %s != %s", |
185 "Object and interface method signatures should match at vtable index %d, %s != %s", |
186 index, object_resolved_method->signature()->as_C_string(), resolved_method->signature()->as_C_string())); |
186 index, object_resolved_method->signature()->as_C_string(), resolved_method->signature()->as_C_string()); |
187 #endif // ASSERT |
187 #endif // ASSERT |
188 |
188 |
189 kind = CallInfo::vtable_call; |
189 kind = CallInfo::vtable_call; |
190 } else { |
190 } else { |
191 // A regular interface call. |
191 // A regular interface call. |
192 kind = CallInfo::itable_call; |
192 kind = CallInfo::itable_call; |
193 index = resolved_method->itable_index(); |
193 index = resolved_method->itable_index(); |
194 } |
194 } |
195 assert(index == Method::nonvirtual_vtable_index || index >= 0, err_msg("bad index %d", index)); |
195 assert(index == Method::nonvirtual_vtable_index || index >= 0, "bad index %d", index); |
196 _call_kind = kind; |
196 _call_kind = kind; |
197 _call_index = index; |
197 _call_index = index; |
198 _resolved_appendix = Handle(); |
198 _resolved_appendix = Handle(); |
199 DEBUG_ONLY(verify()); |
199 DEBUG_ONLY(verify()); |
200 } |
200 } |
497 tty->print_cr("*** basic_signature=%s", basic_signature->as_C_string()); |
497 tty->print_cr("*** basic_signature=%s", basic_signature->as_C_string()); |
498 tty->print_cr("*** result for %s: ", vmIntrinsics::name_at(iid)); |
498 tty->print_cr("*** result for %s: ", vmIntrinsics::name_at(iid)); |
499 result->print(); |
499 result->print(); |
500 } |
500 } |
501 assert(actual_size_of_params == expected_size_of_params, |
501 assert(actual_size_of_params == expected_size_of_params, |
502 err_msg("%d != %d", actual_size_of_params, expected_size_of_params)); |
502 "%d != %d", actual_size_of_params, expected_size_of_params); |
503 #endif //ASSERT |
503 #endif //ASSERT |
504 |
504 |
505 assert(appendix_result_or_null != NULL, ""); |
505 assert(appendix_result_or_null != NULL, ""); |
506 (*appendix_result_or_null) = appendix; |
506 (*appendix_result_or_null) = appendix; |
507 (*method_type_result) = method_type; |
507 (*method_type_result) = method_type; |