2676 CompileBroker::handle_full_code_cache(); |
2676 CompileBroker::handle_full_code_cache(); |
2677 } |
2677 } |
2678 return nm; |
2678 return nm; |
2679 } |
2679 } |
2680 |
2680 |
|
2681 JRT_ENTRY_NO_ASYNC(void, SharedRuntime::block_for_jni_critical(JavaThread* thread)) |
|
2682 assert(thread == JavaThread::current(), "must be"); |
|
2683 // The code is about to enter a JNI lazy critical native method and |
|
2684 // _needs_gc is true, so if this thread is already in a critical |
|
2685 // section then just return, otherwise this thread should block |
|
2686 // until needs_gc has been cleared. |
|
2687 if (thread->in_critical()) { |
|
2688 return; |
|
2689 } |
|
2690 // Lock and unlock a critical section to give the system a chance to block |
|
2691 GC_locker::lock_critical(thread); |
|
2692 GC_locker::unlock_critical(thread); |
|
2693 JRT_END |
|
2694 |
2681 #ifdef HAVE_DTRACE_H |
2695 #ifdef HAVE_DTRACE_H |
2682 // Create a dtrace nmethod for this method. The wrapper converts the |
2696 // Create a dtrace nmethod for this method. The wrapper converts the |
2683 // java compiled calling convention to the native convention, makes a dummy call |
2697 // java compiled calling convention to the native convention, makes a dummy call |
2684 // (actually nops for the size of the call instruction, which become a trap if |
2698 // (actually nops for the size of the call instruction, which become a trap if |
2685 // probe is enabled). The returns to the caller. Since this all looks like a |
2699 // probe is enabled). The returns to the caller. Since this all looks like a |