< prev index next >

src/hotspot/share/interpreter/linkResolver.hpp

Print this page
rev 49103 : 8197405: Improve messages of AbstractMethodErrors and IncompatibleClassChangeErrors.
Reviewed-by: coleenp, dholmes, mdoerr, njian


 330 
 331   static int vtable_index_of_interface_method(Klass* klass, const methodHandle& resolved_method);
 332 
 333   // same as above for compile-time resolution; returns vtable_index if current_klass if linked
 334   static int resolve_virtual_vtable_index  (Klass* receiver_klass,
 335                                             const LinkInfo& link_info);
 336 
 337   // static resolving for compiler (does not throw exceptions, returns null handle if unsuccessful)
 338   static methodHandle linktime_resolve_virtual_method_or_null  (const LinkInfo& link_info);
 339   static methodHandle linktime_resolve_interface_method_or_null(const LinkInfo& link_info);
 340 
 341   // runtime resolving from constant pool
 342   static void resolve_invoke(CallInfo& result, Handle recv,
 343                              const constantPoolHandle& pool, int index,
 344                              Bytecodes::Code byte, TRAPS);
 345 
 346   // runtime resolving from attached method
 347   static void resolve_invoke(CallInfo& result, Handle& recv,
 348                              const methodHandle& attached_method,
 349                              Bytecodes::Code byte, TRAPS);














 350 };
 351 #endif // SHARE_VM_INTERPRETER_LINKRESOLVER_HPP


 330 
 331   static int vtable_index_of_interface_method(Klass* klass, const methodHandle& resolved_method);
 332 
 333   // same as above for compile-time resolution; returns vtable_index if current_klass if linked
 334   static int resolve_virtual_vtable_index  (Klass* receiver_klass,
 335                                             const LinkInfo& link_info);
 336 
 337   // static resolving for compiler (does not throw exceptions, returns null handle if unsuccessful)
 338   static methodHandle linktime_resolve_virtual_method_or_null  (const LinkInfo& link_info);
 339   static methodHandle linktime_resolve_interface_method_or_null(const LinkInfo& link_info);
 340 
 341   // runtime resolving from constant pool
 342   static void resolve_invoke(CallInfo& result, Handle recv,
 343                              const constantPoolHandle& pool, int index,
 344                              Bytecodes::Code byte, TRAPS);
 345 
 346   // runtime resolving from attached method
 347   static void resolve_invoke(CallInfo& result, Handle& recv,
 348                              const methodHandle& attached_method,
 349                              Bytecodes::Code byte, TRAPS);
 350 
 351  public:
 352   // Only resolved method known.
 353   static void throw_abstract_method_error(const methodHandle& resolved_method, TRAPS) {
 354     throw_abstract_method_error(resolved_method, NULL, NULL, CHECK);
 355   }
 356   // Resolved method and receiver klass know.
 357   static void throw_abstract_method_error(const methodHandle& resolved_method, Klass *recv_klass, TRAPS) {
 358     throw_abstract_method_error(resolved_method, NULL, recv_klass, CHECK);
 359   }
 360   // Selected method is abstract.
 361   static void throw_abstract_method_error(const methodHandle& resolved_method,
 362                                           const methodHandle& selected_method,
 363                                           Klass *recv_klass, TRAPS);
 364 };
 365 #endif // SHARE_VM_INTERPRETER_LINKRESOLVER_HPP
< prev index next >