< prev index next >

src/share/vm/prims/whitebox.cpp

Print this page

        

@@ -275,10 +275,72 @@
 
   return wb_stress_virtual_space_resize((size_t) reserved_space_size,
                                         (size_t) magnitude, (size_t) iterations);
 WB_END
 
+WB_ENTRY(jboolean, WB_SupportsSerialGC(JNIEnv* env, jobject o, jobject obj))
+  return true;
+WB_END
+
+WB_ENTRY(jboolean, WB_SupportsParallelGC(JNIEnv* env, jobject o, jobject obj))
+#if INCLUDE_ALL_GCS
+  return true;
+#else
+  return false;
+#endif // INCLUDE_ALL_GCS
+WB_END
+
+WB_ENTRY(jboolean, WB_SupportsConcMarkSweepGC(JNIEnv* env, jobject o, jobject obj))
+#if INCLUDE_ALL_GCS
+  return true;
+#else
+  return false;
+#endif // INCLUDE_ALL_GCS
+WB_END
+
+WB_ENTRY(jboolean, WB_SupportsG1GC(JNIEnv* env, jobject o, jobject obj))
+#if INCLUDE_ALL_GCS
+  return true;
+#else
+  return false;
+#endif // INCLUDE_ALL_GCS
+WB_END
+
+WB_ENTRY(jboolean, WB_GcSelectedByErgo0(JNIEnv* env, jobject o, jobject obj))
+  if (UseSerialGC) {
+    return FLAG_IS_ERGO(UseSerialGC);
+  }
+  if (UseParallelGC) {
+    return FLAG_IS_ERGO(UseParallelGC);
+  }
+  if (UseParallelOldGC) {
+    return FLAG_IS_ERGO(UseParallelOldGC);
+  }
+  if (UseConcMarkSweepGC) {
+    return FLAG_IS_ERGO(UseConcMarkSweepGC);
+  }
+  if (UseG1GC) {
+    return FLAG_IS_ERGO(UseG1GC);
+  }
+  return false; // should not reach here
+WB_END
+
+WB_ENTRY(jstring, WB_GetGC(JNIEnv* env, jobject o))
+  const char* gc = "unknown";
+  if (UseSerialGC) {
+    gc = "Serial";
+  } else if (UseParallelGC | UseParallelOldGC) {
+    gc = "Parallel";
+  } else if (UseConcMarkSweepGC) {
+    gc = "ConcMarkSweep";
+  } else if (UseG1GC) {
+    gc = "G1";
+  }
+  jstring gc_string = env->NewStringUTF(gc);
+  return gc_string;
+WB_END
+
 WB_ENTRY(jboolean, WB_isObjectInOldGen(JNIEnv* env, jobject o, jobject obj))
   oop p = JNIHandles::resolve(obj);
 #if INCLUDE_ALL_GCS
   if (UseG1GC) {
     G1CollectedHeap* g1 = G1CollectedHeap::heap();

@@ -1756,10 +1818,18 @@
   {CC"areSharedStringsIgnored",           CC"()Z",    (void*)&WB_AreSharedStringsIgnored },
   {CC"clearInlineCaches",  CC"()V",                   (void*)&WB_ClearInlineCaches },
   {CC"addCompilerDirective",    CC"(Ljava/lang/String;)I",
                                                       (void*)&WB_AddCompilerDirective },
   {CC"removeCompilerDirective", CC"(I)V",             (void*)&WB_RemoveCompilerDirective },
+
+  {CC"getGC",     CC"()Ljava/lang/String;",  (void*)&WB_GetGC},
+  {CC"gcSelectedByErgo0", CC"()Z",           (void*)&WB_GcSelectedByErgo0},
+  {CC"supportsSerialGC", CC"()Z",            (void*)&WB_SupportsSerialGC},
+  {CC"supportsParallelGC", CC"()Z",          (void*)&WB_SupportsParallelGC},
+  {CC"supportsConcMarkSweepGC", CC"()Z",     (void*)&WB_SupportsConcMarkSweepGC},
+  {CC"supportsG1GC", CC"()Z",                (void*)&WB_SupportsG1GC},
+
 };
 
 #undef CC
 
 JVM_ENTRY(void, JVM_RegisterWhiteBoxMethods(JNIEnv* env, jclass wbclass))
< prev index next >