3133 typeArrayOop s_value = java_lang_String::value(s);
3134 memcpy(buf, s_value->char_at_addr(s_offset+start), sizeof(jchar)*len);
3135 }
3136 }
3137 JNI_END
3138
3139 DT_VOID_RETURN_MARK_DECL(GetStringUTFRegion
3140 , HOTSPOT_JNI_GETSTRINGUTFREGION_RETURN());
3141
3142 JNI_ENTRY(void, jni_GetStringUTFRegion(JNIEnv *env, jstring string, jsize start, jsize len, char *buf))
3143 JNIWrapper("GetStringUTFRegion");
3144 HOTSPOT_JNI_GETSTRINGUTFREGION_ENTRY(env, string, start, len, buf);
3145 DT_VOID_RETURN_MARK(GetStringUTFRegion);
3146 oop s = JNIHandles::resolve_non_null(string);
3147 int s_len = java_lang_String::length(s);
3148 if (start < 0 || len < 0 || start + len > s_len) {
3149 THROW(vmSymbols::java_lang_StringIndexOutOfBoundsException());
3150 } else {
3151 //%note jni_7
3152 if (len > 0) {
3153 ResourceMark rm(THREAD);
3154 char *utf_region = java_lang_String::as_utf8_string(s, start, len);
3155 int utf_len = (int)strlen(utf_region);
3156 memcpy(buf, utf_region, utf_len);
3157 buf[utf_len] = 0;
3158 } else {
3159 // JDK null-terminates the buffer even in len is zero
3160 if (buf != NULL) {
3161 buf[0] = 0;
3162 }
3163 }
3164 }
3165 JNI_END
3166
3167
3168 JNI_ENTRY(void*, jni_GetPrimitiveArrayCritical(JNIEnv *env, jarray array, jboolean *isCopy))
3169 JNIWrapper("GetPrimitiveArrayCritical");
3170 HOTSPOT_JNI_GETPRIMITIVEARRAYCRITICAL_ENTRY(env, array, (uintptr_t *) isCopy);
3171 GC_locker::lock_critical(thread);
3172 if (isCopy != NULL) {
3173 *isCopy = JNI_FALSE;
3174 }
3175 oop a = JNIHandles::resolve_non_null(array);
3176 assert(a->is_array(), "just checking");
3177 BasicType type;
3863 #include "utilities/ostream.hpp"
3864 #if INCLUDE_VM_STRUCTS
3865 #include "runtime/vmStructs.hpp"
3866 #endif
3867
3868 #define run_unit_test(unit_test_function_call) \
3869 tty->print_cr("Running test: " #unit_test_function_call); \
3870 unit_test_function_call
3871
3872 // Forward declaration
3873 void TestReservedSpace_test();
3874 void TestReserveMemorySpecial_test();
3875 void TestVirtualSpace_test();
3876 void TestMetaspaceAux_test();
3877 void TestMetachunk_test();
3878 void TestVirtualSpaceNode_test();
3879 void TestNewSize_test();
3880 void TestOldSize_test();
3881 void TestKlass_test();
3882 void TestBitMap_test();
3883 #if INCLUDE_ALL_GCS
3884 void TestOldFreeSpaceCalculation_test();
3885 void TestG1BiasedArray_test();
3886 void TestBufferingOopClosure_test();
3887 void TestCodeCacheRemSet_test();
3888 #endif
3889
3890 void execute_internal_vm_tests() {
3891 if (ExecuteInternalVMTests) {
3892 tty->print_cr("Running internal VM tests");
3893 run_unit_test(TestReservedSpace_test());
3894 run_unit_test(TestReserveMemorySpecial_test());
3895 run_unit_test(TestVirtualSpace_test());
3896 run_unit_test(TestMetaspaceAux_test());
3897 run_unit_test(TestMetachunk_test());
3898 run_unit_test(TestVirtualSpaceNode_test());
3899 run_unit_test(GlobalDefinitions::test_globals());
3900 run_unit_test(GCTimerAllTest::all());
3901 run_unit_test(arrayOopDesc::test_max_array_length());
3902 run_unit_test(CollectedHeap::test_is_in());
3903 run_unit_test(QuickSort::test_quick_sort());
3904 run_unit_test(AltHashing::test_alt_hash());
3905 run_unit_test(test_loggc_filename());
3906 run_unit_test(TestNewSize_test());
3907 run_unit_test(TestOldSize_test());
3908 run_unit_test(TestKlass_test());
3909 run_unit_test(TestBitMap_test());
3910 #if INCLUDE_VM_STRUCTS
3911 run_unit_test(VMStructs::test());
3912 #endif
3913 #if INCLUDE_ALL_GCS
3914 run_unit_test(TestOldFreeSpaceCalculation_test());
3915 run_unit_test(TestG1BiasedArray_test());
3916 run_unit_test(HeapRegionRemSet::test_prt());
3917 run_unit_test(TestBufferingOopClosure_test());
3918 run_unit_test(TestCodeCacheRemSet_test());
3919 #endif
3920 tty->print_cr("All internal VM tests passed");
3921 }
3922 }
3923
3924 #undef run_unit_test
3925
3926 #endif
3927
3928 DT_RETURN_MARK_DECL(CreateJavaVM, jint
3929 , HOTSPOT_JNI_CREATEJAVAVM_RETURN(_ret_ref));
|
3133 typeArrayOop s_value = java_lang_String::value(s);
3134 memcpy(buf, s_value->char_at_addr(s_offset+start), sizeof(jchar)*len);
3135 }
3136 }
3137 JNI_END
3138
3139 DT_VOID_RETURN_MARK_DECL(GetStringUTFRegion
3140 , HOTSPOT_JNI_GETSTRINGUTFREGION_RETURN());
3141
3142 JNI_ENTRY(void, jni_GetStringUTFRegion(JNIEnv *env, jstring string, jsize start, jsize len, char *buf))
3143 JNIWrapper("GetStringUTFRegion");
3144 HOTSPOT_JNI_GETSTRINGUTFREGION_ENTRY(env, string, start, len, buf);
3145 DT_VOID_RETURN_MARK(GetStringUTFRegion);
3146 oop s = JNIHandles::resolve_non_null(string);
3147 int s_len = java_lang_String::length(s);
3148 if (start < 0 || len < 0 || start + len > s_len) {
3149 THROW(vmSymbols::java_lang_StringIndexOutOfBoundsException());
3150 } else {
3151 //%note jni_7
3152 if (len > 0) {
3153 // Assume the buffer is large enough as the JNI spec. does not require user error checking
3154 java_lang_String::as_utf8_string(s, start, len, buf, INT_MAX);
3155 // as_utf8_string null-terminates the result string
3156 } else {
3157 // JDK null-terminates the buffer even in len is zero
3158 if (buf != NULL) {
3159 buf[0] = 0;
3160 }
3161 }
3162 }
3163 JNI_END
3164
3165
3166 JNI_ENTRY(void*, jni_GetPrimitiveArrayCritical(JNIEnv *env, jarray array, jboolean *isCopy))
3167 JNIWrapper("GetPrimitiveArrayCritical");
3168 HOTSPOT_JNI_GETPRIMITIVEARRAYCRITICAL_ENTRY(env, array, (uintptr_t *) isCopy);
3169 GC_locker::lock_critical(thread);
3170 if (isCopy != NULL) {
3171 *isCopy = JNI_FALSE;
3172 }
3173 oop a = JNIHandles::resolve_non_null(array);
3174 assert(a->is_array(), "just checking");
3175 BasicType type;
3861 #include "utilities/ostream.hpp"
3862 #if INCLUDE_VM_STRUCTS
3863 #include "runtime/vmStructs.hpp"
3864 #endif
3865
3866 #define run_unit_test(unit_test_function_call) \
3867 tty->print_cr("Running test: " #unit_test_function_call); \
3868 unit_test_function_call
3869
3870 // Forward declaration
3871 void TestReservedSpace_test();
3872 void TestReserveMemorySpecial_test();
3873 void TestVirtualSpace_test();
3874 void TestMetaspaceAux_test();
3875 void TestMetachunk_test();
3876 void TestVirtualSpaceNode_test();
3877 void TestNewSize_test();
3878 void TestOldSize_test();
3879 void TestKlass_test();
3880 void TestBitMap_test();
3881 void TestAsUtf8();
3882 #if INCLUDE_ALL_GCS
3883 void TestOldFreeSpaceCalculation_test();
3884 void TestG1BiasedArray_test();
3885 void TestBufferingOopClosure_test();
3886 void TestCodeCacheRemSet_test();
3887 #endif
3888
3889 void execute_internal_vm_tests() {
3890 if (ExecuteInternalVMTests) {
3891 tty->print_cr("Running internal VM tests");
3892 run_unit_test(TestReservedSpace_test());
3893 run_unit_test(TestReserveMemorySpecial_test());
3894 run_unit_test(TestVirtualSpace_test());
3895 run_unit_test(TestMetaspaceAux_test());
3896 run_unit_test(TestMetachunk_test());
3897 run_unit_test(TestVirtualSpaceNode_test());
3898 run_unit_test(GlobalDefinitions::test_globals());
3899 run_unit_test(GCTimerAllTest::all());
3900 run_unit_test(arrayOopDesc::test_max_array_length());
3901 run_unit_test(CollectedHeap::test_is_in());
3902 run_unit_test(QuickSort::test_quick_sort());
3903 run_unit_test(AltHashing::test_alt_hash());
3904 run_unit_test(test_loggc_filename());
3905 run_unit_test(TestNewSize_test());
3906 run_unit_test(TestOldSize_test());
3907 run_unit_test(TestKlass_test());
3908 run_unit_test(TestBitMap_test());
3909 run_unit_test(TestAsUtf8());
3910 #if INCLUDE_VM_STRUCTS
3911 run_unit_test(VMStructs::test());
3912 #endif
3913 #if INCLUDE_ALL_GCS
3914 run_unit_test(TestOldFreeSpaceCalculation_test());
3915 run_unit_test(TestG1BiasedArray_test());
3916 run_unit_test(HeapRegionRemSet::test_prt());
3917 run_unit_test(TestBufferingOopClosure_test());
3918 run_unit_test(TestCodeCacheRemSet_test());
3919 #endif
3920 tty->print_cr("All internal VM tests passed");
3921 }
3922 }
3923
3924 #undef run_unit_test
3925
3926 #endif
3927
3928 DT_RETURN_MARK_DECL(CreateJavaVM, jint
3929 , HOTSPOT_JNI_CREATEJAVAVM_RETURN(_ret_ref));
|