< prev index next >
src/share/vm/prims/whitebox.cpp
Print this page
rev 12504 : [mq]: whitebox
rev 12506 : [mq]: list_phases
*** 353,362 ****
--- 353,399 ----
WB_ENTRY(jlong, WB_GetHeapAlignment(JNIEnv* env, jobject o))
size_t alignment = Universe::heap()->collector_policy()->heap_alignment();
return (jlong)alignment;
WB_END
+ WB_ENTRY(jboolean, WB_SupportsConcurrentGCPhaseControl(JNIEnv* env, jobject o))
+ return Universe::heap()->supports_concurrent_phase_control();
+ WB_END
+
+ WB_ENTRY(jobjectArray, WB_GetConcurrentGCPhases(JNIEnv* env, jobject o))
+ const char* const* phases = Universe::heap()->concurrent_phases();
+ jint nphases = 0;
+ for ( ; phases[nphases] != NULL; ++nphases) ;
+
+ ResourceMark rm(thread);
+ ThreadToNativeFromVM ttn(thread);
+ jclass clazz = env->FindClass(vmSymbols::java_lang_Object()->as_C_string());
+ CHECK_JNI_EXCEPTION_(env, NULL);
+
+ jobjectArray result = env->NewObjectArray(nphases, clazz, NULL);
+ CHECK_JNI_EXCEPTION_(env, NULL);
+
+ // If push fails, return with pending exception.
+ if (env->PushLocalFrame(nphases) < 0) return NULL;
+ for (jint i = 0; i < nphases; ++i) {
+ jstring phase = env->NewStringUTF(phases[i]);
+ CHECK_JNI_EXCEPTION_(env, NULL);
+ env->SetObjectArrayElement(result, i, phase);
+ CHECK_JNI_EXCEPTION_(env, NULL);
+ }
+ env->PopLocalFrame(NULL);
+
+ return result;
+ WB_END
+
+ WB_ENTRY(jboolean, WB_RequestConcurrentGCPhase(JNIEnv* env, jobject o, jstring name))
+ Handle h_name(THREAD, JNIHandles::resolve(name));
+ ResourceMark rm;
+ const char* c_name = java_lang_String::as_utf8_string(h_name());
+ return Universe::heap()->request_concurrent_phase(c_name);
+ WB_END
+
#if INCLUDE_ALL_GCS
WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj))
G1CollectedHeap* g1 = G1CollectedHeap::heap();
oop result = JNIHandles::resolve(obj);
const HeapRegion* hr = g1->heap_region_containing(result);
*** 1903,1912 ****
--- 1940,1954 ----
(void*)&WB_AddCompilerDirective },
{CC"removeCompilerDirective", CC"(I)V", (void*)&WB_RemoveCompilerDirective },
{CC"currentGC", CC"()I", (void*)&WB_CurrentGC},
{CC"allSupportedGC", CC"()I", (void*)&WB_AllSupportedGC},
{CC"gcSelectedByErgo", CC"()Z", (void*)&WB_GCSelectedByErgo},
+ {CC"supportsConcurrentGCPhaseControl", CC"()Z", (void*)&WB_SupportsConcurrentGCPhaseControl},
+ {CC"getConcurrentGCPhases", CC"()[Ljava/lang/String;",
+ (void*)&WB_GetConcurrentGCPhases},
+ {CC"requestConcurrentGCPhase0", CC"(Ljava/lang/String;)Z",
+ (void*)&WB_RequestConcurrentGCPhase},
};
#undef CC
JVM_ENTRY(void, JVM_RegisterWhiteBoxMethods(JNIEnv* env, jclass wbclass))
< prev index next >