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