470 // Generate a native wrapper for a given method. The method takes arguments
471 // in the Java compiled code convention, marshals them to the native
472 // convention (handlizes oops, etc), transitions to native, makes the call,
473 // returns to java state (possibly blocking), unhandlizes any result and
474 // returns.
475 //
476 // The wrapper may contain special-case code if the given method
477 // is a JNI critical method, or a compiled method handle adapter,
478 // such as _invokeBasic, _linkToVirtual, etc.
479 static nmethod* generate_native_wrapper(MacroAssembler* masm,
480 const methodHandle& method,
481 int compile_id,
482 BasicType* sig_bt,
483 VMRegPair* regs,
484 BasicType ret_type,
485 address critical_entry);
486
487 // Block before entering a JNI critical method
488 static void block_for_jni_critical(JavaThread* thread);
489
490 // A compiled caller has just called the interpreter, but compiled code
491 // exists. Patch the caller so he no longer calls into the interpreter.
492 static void fixup_callers_callsite(Method* moop, address ret_pc);
493 static bool should_fixup_call_destination(address destination, address entry_point, address caller_pc, Method* moop, CodeBlob* cb);
494
495 // Slow-path Locking and Unlocking
496 static void complete_monitor_locking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread);
497 static void complete_monitor_unlocking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread);
498
499 // Resolving of calls
500 static address resolve_static_call_C (JavaThread *thread);
501 static address resolve_virtual_call_C (JavaThread *thread);
502 static address resolve_opt_virtual_call_C(JavaThread *thread);
503
504 // arraycopy, the non-leaf version. (See StubRoutines for all the leaf calls.)
505 static void slow_arraycopy_C(oopDesc* src, jint src_pos,
506 oopDesc* dest, jint dest_pos,
507 jint length, JavaThread* thread);
508
509 // handle ic miss with caller being compiled code
|
470 // Generate a native wrapper for a given method. The method takes arguments
471 // in the Java compiled code convention, marshals them to the native
472 // convention (handlizes oops, etc), transitions to native, makes the call,
473 // returns to java state (possibly blocking), unhandlizes any result and
474 // returns.
475 //
476 // The wrapper may contain special-case code if the given method
477 // is a JNI critical method, or a compiled method handle adapter,
478 // such as _invokeBasic, _linkToVirtual, etc.
479 static nmethod* generate_native_wrapper(MacroAssembler* masm,
480 const methodHandle& method,
481 int compile_id,
482 BasicType* sig_bt,
483 VMRegPair* regs,
484 BasicType ret_type,
485 address critical_entry);
486
487 // Block before entering a JNI critical method
488 static void block_for_jni_critical(JavaThread* thread);
489
490 // Pin/Unpin object
491 static oopDesc* pin_object(JavaThread* thread, oopDesc* obj);
492 static void unpin_object(JavaThread* thread, oopDesc* obj);
493
494 // A compiled caller has just called the interpreter, but compiled code
495 // exists. Patch the caller so he no longer calls into the interpreter.
496 static void fixup_callers_callsite(Method* moop, address ret_pc);
497 static bool should_fixup_call_destination(address destination, address entry_point, address caller_pc, Method* moop, CodeBlob* cb);
498
499 // Slow-path Locking and Unlocking
500 static void complete_monitor_locking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread);
501 static void complete_monitor_unlocking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread);
502
503 // Resolving of calls
504 static address resolve_static_call_C (JavaThread *thread);
505 static address resolve_virtual_call_C (JavaThread *thread);
506 static address resolve_opt_virtual_call_C(JavaThread *thread);
507
508 // arraycopy, the non-leaf version. (See StubRoutines for all the leaf calls.)
509 static void slow_arraycopy_C(oopDesc* src, jint src_pos,
510 oopDesc* dest, jint dest_pos,
511 jint length, JavaThread* thread);
512
513 // handle ic miss with caller being compiled code
|