< prev index next >

src/hotspot/share/interpreter/linkResolver.hpp

Print this page

280   static void resolve_invokehandle   (CallInfo& result,
281                                       const constantPoolHandle& pool, int index, TRAPS);
282  public:
283   // constant pool resolving
284   static void check_klass_accessibility(Klass* ref_klass, Klass* sel_klass, TRAPS);
285 
286   // static resolving calls (will not run any Java code);
287   // used only from Bytecode_invoke::static_target
288   static Method* resolve_method_statically(Bytecodes::Code code,
289                                            const constantPoolHandle& pool,
290                                            int index, TRAPS);
291 
292   static void resolve_continuation_enter(CallInfo& callinfo, TRAPS);
293 
294   static void resolve_field_access(fieldDescriptor& result,
295                                    const constantPoolHandle& pool,
296                                    int index,
297                                    const methodHandle& method,
298                                    Bytecodes::Code byte,
299                                    bool initialize_class, TRAPS);
300   static void resolve_field_access(fieldDescriptor& result,
301                                    const constantPoolHandle& pool,
302                                    int index,
303                                    const methodHandle& method,
304                                    Bytecodes::Code byte, TRAPS) {
305     resolve_field_access(result, pool, index, method, byte,
306                          /* initialize_class*/true, THREAD);
307   }
308   static void resolve_field(fieldDescriptor& result, const LinkInfo& link_info,
309                             Bytecodes::Code access_kind,
310                             bool initialize_class, TRAPS);
311 
312   static void resolve_static_call   (CallInfo& result,
313                                      const LinkInfo& link_info,
314                                      bool initialize_klass, TRAPS);
315   static void resolve_special_call  (CallInfo& result,
316                                      Handle recv,
317                                      const LinkInfo& link_info,
318                                      TRAPS);
319   static void resolve_virtual_call  (CallInfo& result, Handle recv, Klass* recv_klass,
320                                      const LinkInfo& link_info,
321                                      bool check_null_and_abstract, TRAPS);
322   static void resolve_interface_call(CallInfo& result, Handle recv, Klass* recv_klass,
323                                      const LinkInfo& link_info,
324                                      bool check_null_and_abstract, TRAPS);
325   static void resolve_handle_call   (CallInfo& result,
326                                      const LinkInfo& link_info, TRAPS);
327   static void resolve_dynamic_call  (CallInfo& result,
328                                      BootstrapInfo& bootstrap_specifier, TRAPS);
329 
330   static void cds_resolve_virtual_call  (CallInfo& result, const LinkInfo& link_info, TRAPS);
331   static void cds_resolve_interface_call(CallInfo& result, const LinkInfo& link_info, TRAPS);

332   static void cds_resolve_special_call  (CallInfo& result, const LinkInfo& link_info, TRAPS);
333 
334   // same as above for compile-time resolution; but returns null handle instead of throwing
335   // an exception on error also, does not initialize klass (i.e., no side effects)
336   static Method* resolve_virtual_call_or_null(Klass* receiver_klass,
337                                               const LinkInfo& link_info);
338   static Method* resolve_interface_call_or_null(Klass* receiver_klass,
339                                                 const LinkInfo& link_info);
340   static Method* resolve_static_call_or_null(const LinkInfo& link_info);
341   static Method* resolve_special_call_or_null(const LinkInfo& link_info);
342 
343   static int vtable_index_of_interface_method(Klass* klass, const methodHandle& resolved_method);
344 
345   // same as above for compile-time resolution; returns vtable_index if current_klass if linked
346   static int resolve_virtual_vtable_index  (Klass* receiver_klass,
347                                             const LinkInfo& link_info);
348 
349   // static resolving for compiler (does not throw exceptions, returns null handle if unsuccessful)
350   static Method* linktime_resolve_virtual_method_or_null  (const LinkInfo& link_info);
351   static Method* linktime_resolve_interface_method_or_null(const LinkInfo& link_info);

280   static void resolve_invokehandle   (CallInfo& result,
281                                       const constantPoolHandle& pool, int index, TRAPS);
282  public:
283   // constant pool resolving
284   static void check_klass_accessibility(Klass* ref_klass, Klass* sel_klass, TRAPS);
285 
286   // static resolving calls (will not run any Java code);
287   // used only from Bytecode_invoke::static_target
288   static Method* resolve_method_statically(Bytecodes::Code code,
289                                            const constantPoolHandle& pool,
290                                            int index, TRAPS);
291 
292   static void resolve_continuation_enter(CallInfo& callinfo, TRAPS);
293 
294   static void resolve_field_access(fieldDescriptor& result,
295                                    const constantPoolHandle& pool,
296                                    int index,
297                                    const methodHandle& method,
298                                    Bytecodes::Code byte,
299                                    bool initialize_class, TRAPS);








300   static void resolve_field(fieldDescriptor& result, const LinkInfo& link_info,
301                             Bytecodes::Code access_kind,
302                             bool initialize_class, TRAPS);
303 
304   static void resolve_static_call   (CallInfo& result,
305                                      const LinkInfo& link_info,
306                                      bool initialize_klass, TRAPS);
307   static void resolve_special_call  (CallInfo& result,
308                                      Handle recv,
309                                      const LinkInfo& link_info,
310                                      TRAPS);
311   static void resolve_virtual_call  (CallInfo& result, Handle recv, Klass* recv_klass,
312                                      const LinkInfo& link_info,
313                                      bool check_null_and_abstract, TRAPS);
314   static void resolve_interface_call(CallInfo& result, Handle recv, Klass* recv_klass,
315                                      const LinkInfo& link_info,
316                                      bool check_null_and_abstract, TRAPS);
317   static void resolve_handle_call   (CallInfo& result,
318                                      const LinkInfo& link_info, TRAPS);
319   static void resolve_dynamic_call  (CallInfo& result,
320                                      BootstrapInfo& bootstrap_specifier, TRAPS);
321 
322   static void cds_resolve_virtual_call  (CallInfo& result, const LinkInfo& link_info, TRAPS);
323   static void cds_resolve_interface_call(CallInfo& result, const LinkInfo& link_info, TRAPS);
324   static void cds_resolve_static_call   (CallInfo& result, const LinkInfo& link_info, TRAPS);
325   static void cds_resolve_special_call  (CallInfo& result, const LinkInfo& link_info, TRAPS);
326 
327   // same as above for compile-time resolution; but returns null handle instead of throwing
328   // an exception on error also, does not initialize klass (i.e., no side effects)
329   static Method* resolve_virtual_call_or_null(Klass* receiver_klass,
330                                               const LinkInfo& link_info);
331   static Method* resolve_interface_call_or_null(Klass* receiver_klass,
332                                                 const LinkInfo& link_info);
333   static Method* resolve_static_call_or_null(const LinkInfo& link_info);
334   static Method* resolve_special_call_or_null(const LinkInfo& link_info);
335 
336   static int vtable_index_of_interface_method(Klass* klass, const methodHandle& resolved_method);
337 
338   // same as above for compile-time resolution; returns vtable_index if current_klass if linked
339   static int resolve_virtual_vtable_index  (Klass* receiver_klass,
340                                             const LinkInfo& link_info);
341 
342   // static resolving for compiler (does not throw exceptions, returns null handle if unsuccessful)
343   static Method* linktime_resolve_virtual_method_or_null  (const LinkInfo& link_info);
344   static Method* linktime_resolve_interface_method_or_null(const LinkInfo& link_info);
< prev index next >