< prev index next >

src/hotspot/share/interpreter/linkResolver.hpp

Print this page

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

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

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








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