< prev index next >

src/share/vm/prims/jniCheck.cpp

Print this page
rev 13037 : 8181147: JNI_GetStringPlatformChars should have a fast path for UTF-8
Reviewed-by: shade, chegar, erikj

@@ -1512,10 +1512,40 @@
            (const jchar*) guarded.release_for_freeing());
     }
     functionExit(thr);
 JNI_END
 
+JNI_ENTRY_CHECKED(const jbyte*,
+  checked_jni_GetStringBytesCritical(JNIEnv *env,
+                                     jstring string,
+                                     jint* len,
+                                     jbyte *encoding,
+                                     jboolean *isCopy))
+    functionEnterCritical(thr);
+    IN_VM(
+      checkString(thr, string);
+    )
+    const jbyte *result = UNCHECKED()->GetStringBytesCritical(env, string, len, encoding, isCopy);
+    functionExit(thr);
+    return result;
+JNI_END
+
+JNI_ENTRY_CHECKED(void,
+  checked_jni_ReleaseStringBytesCritical(JNIEnv *env,
+                                    jstring str,
+                                    const jbyte *bytes))
+    functionEnterCriticalExceptionAllowed(thr);
+    IN_VM(
+      checkString(thr, str);
+    )
+    /* The Hotspot JNI code does not use the parameters, so just check the
+     * string parameter as a minor sanity check
+     */
+    UNCHECKED()->ReleaseStringBytesCritical(env, str, bytes);
+    functionExit(thr);
+JNI_END
+
 JNI_ENTRY_CHECKED(jstring,
   checked_jni_NewStringUTF(JNIEnv *env,
                            const char *utf))
     functionEnter(thr);
     jstring result = UNCHECKED()->NewStringUTF(env,utf);

@@ -2195,10 +2225,12 @@
 
     checked_jni_NewString,
     checked_jni_GetStringLength,
     checked_jni_GetStringChars,
     checked_jni_ReleaseStringChars,
+    checked_jni_GetStringBytesCritical,
+    checked_jni_ReleaseStringBytesCritical,
 
     checked_jni_NewStringUTF,
     checked_jni_GetStringUTFLength,
     checked_jni_GetStringUTFChars,
     checked_jni_ReleaseStringUTFChars,
< prev index next >