< prev index next >

src/hotspot/share/interpreter/linkResolver.hpp

Print this page

318   static Method* resolve_special_call_or_null(const LinkInfo& link_info);
319 
320   static int vtable_index_of_interface_method(Klass* klass, const methodHandle& resolved_method);
321 
322   // same as above for compile-time resolution; returns vtable_index if current_klass if linked
323   static int resolve_virtual_vtable_index  (Klass* receiver_klass,
324                                             const LinkInfo& link_info);
325 
326   // static resolving for compiler (does not throw exceptions, returns null handle if unsuccessful)
327   static Method* linktime_resolve_virtual_method_or_null  (const LinkInfo& link_info);
328   static Method* linktime_resolve_interface_method_or_null(const LinkInfo& link_info);
329 
330   // runtime resolving from constant pool
331   static void resolve_invoke(CallInfo& result, Handle recv,
332                              const constantPoolHandle& pool, int index,
333                              Bytecodes::Code byte, TRAPS);
334 
335   // runtime resolving from attached method
336   static void resolve_invoke(CallInfo& result, Handle& recv,
337                              const methodHandle& attached_method,
338                              Bytecodes::Code byte, TRAPS);
339 
340  public:
341   // Only resolved method known.
342   static void throw_abstract_method_error(const methodHandle& resolved_method, TRAPS) {
343     throw_abstract_method_error(resolved_method, methodHandle(), NULL, CHECK);
344   }
345   // Resolved method and receiver klass know.
346   static void throw_abstract_method_error(const methodHandle& resolved_method, Klass *recv_klass, TRAPS) {
347     throw_abstract_method_error(resolved_method, methodHandle(), recv_klass, CHECK);
348   }
349   // Selected method is abstract.
350   static void throw_abstract_method_error(const methodHandle& resolved_method,
351                                           const methodHandle& selected_method,
352                                           Klass *recv_klass, TRAPS);
353 };
354 #endif // SHARE_INTERPRETER_LINKRESOLVER_HPP

318   static Method* resolve_special_call_or_null(const LinkInfo& link_info);
319 
320   static int vtable_index_of_interface_method(Klass* klass, const methodHandle& resolved_method);
321 
322   // same as above for compile-time resolution; returns vtable_index if current_klass if linked
323   static int resolve_virtual_vtable_index  (Klass* receiver_klass,
324                                             const LinkInfo& link_info);
325 
326   // static resolving for compiler (does not throw exceptions, returns null handle if unsuccessful)
327   static Method* linktime_resolve_virtual_method_or_null  (const LinkInfo& link_info);
328   static Method* linktime_resolve_interface_method_or_null(const LinkInfo& link_info);
329 
330   // runtime resolving from constant pool
331   static void resolve_invoke(CallInfo& result, Handle recv,
332                              const constantPoolHandle& pool, int index,
333                              Bytecodes::Code byte, TRAPS);
334 
335   // runtime resolving from attached method
336   static void resolve_invoke(CallInfo& result, Handle& recv,
337                              const methodHandle& attached_method,
338                              Bytecodes::Code byte, bool check_null_and_abstract, TRAPS);
339 
340  public:
341   // Only resolved method known.
342   static void throw_abstract_method_error(const methodHandle& resolved_method, TRAPS) {
343     throw_abstract_method_error(resolved_method, methodHandle(), NULL, CHECK);
344   }
345   // Resolved method and receiver klass know.
346   static void throw_abstract_method_error(const methodHandle& resolved_method, Klass *recv_klass, TRAPS) {
347     throw_abstract_method_error(resolved_method, methodHandle(), recv_klass, CHECK);
348   }
349   // Selected method is abstract.
350   static void throw_abstract_method_error(const methodHandle& resolved_method,
351                                           const methodHandle& selected_method,
352                                           Klass *recv_klass, TRAPS);
353 };
354 #endif // SHARE_INTERPRETER_LINKRESOLVER_HPP
< prev index next >