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
|