345 |
345 |
346 // runtime resolving from attached method |
346 // runtime resolving from attached method |
347 static void resolve_invoke(CallInfo& result, Handle& recv, |
347 static void resolve_invoke(CallInfo& result, Handle& recv, |
348 const methodHandle& attached_method, |
348 const methodHandle& attached_method, |
349 Bytecodes::Code byte, TRAPS); |
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); |
350 }; |
364 }; |
351 #endif // SHARE_VM_INTERPRETER_LINKRESOLVER_HPP |
365 #endif // SHARE_VM_INTERPRETER_LINKRESOLVER_HPP |