469 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 486 // Block before entering a JNI critical method 487 static void block_for_jni_critical(JavaThread* thread); 488 489 // A compiled caller has just called the interpreter, but compiled code 490 // exists. Patch the caller so he no longer calls into the interpreter. 491 static void fixup_callers_callsite(Method* moop, address ret_pc); 492 static bool should_fixup_call_destination(address destination, address entry_point, address caller_pc, Method* moop, CodeBlob* cb); 493 494 // Slow-path Locking and Unlocking 495 static void complete_monitor_locking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread); 496 static void complete_monitor_unlocking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread); 497 498 // Resolving of calls 499 static address resolve_static_call_C (JavaThread *thread); 500 static address resolve_virtual_call_C (JavaThread *thread); 501 static address resolve_opt_virtual_call_C(JavaThread *thread); 502 503 // arraycopy, the non-leaf version. (See StubRoutines for all the leaf calls.) 504 static void slow_arraycopy_C(oopDesc* src, jint src_pos, 505 oopDesc* dest, jint dest_pos, 506 jint length, JavaThread* thread); 507 508 // handle ic miss with caller being compiled code | 469 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 486 // Block before entering a JNI critical method 487 static void block_for_jni_critical(JavaThread* thread); 488 489 // Pin/Unpin object 490 static oopDesc* pin_object(JavaThread* thread, oopDesc* obj); 491 static void unpin_object(JavaThread* thread, oopDesc* obj); 492 493 // A compiled caller has just called the interpreter, but compiled code 494 // exists. Patch the caller so he no longer calls into the interpreter. 495 static void fixup_callers_callsite(Method* moop, address ret_pc); 496 static bool should_fixup_call_destination(address destination, address entry_point, address caller_pc, Method* moop, CodeBlob* cb); 497 498 // Slow-path Locking and Unlocking 499 static void complete_monitor_locking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread); 500 static void complete_monitor_unlocking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread); 501 502 // Resolving of calls 503 static address resolve_static_call_C (JavaThread *thread); 504 static address resolve_virtual_call_C (JavaThread *thread); 505 static address resolve_opt_virtual_call_C(JavaThread *thread); 506 507 // arraycopy, the non-leaf version. (See StubRoutines for all the leaf calls.) 508 static void slow_arraycopy_C(oopDesc* src, jint src_pos, 509 oopDesc* dest, jint dest_pos, 510 jint length, JavaThread* thread); 511 512 // handle ic miss with caller being compiled code |