Mercurial > hg > truffle
comparison src/share/vm/prims/jni.cpp @ 13086:096c224171c4
Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 20 Nov 2013 00:10:38 +0100 |
parents | 359f7e70ae7f 1d1ea10fe09f |
children | b00553202ec2 |
comparison
equal
deleted
inserted
replaced
12782:92b7ec34ddfa | 13086:096c224171c4 |
---|---|
1592 } else { | 1592 } else { |
1593 m = NULL; | 1593 m = NULL; |
1594 } | 1594 } |
1595 } else { | 1595 } else { |
1596 m = klass->lookup_method(name, signature); | 1596 m = klass->lookup_method(name, signature); |
1597 // Look up interfaces | 1597 if (m == NULL && klass->oop_is_instance()) { |
1598 if (m == NULL && klass->oop_is_instance()) { | 1598 m = InstanceKlass::cast(klass())->lookup_method_in_ordered_interfaces(name, signature); |
1599 m = InstanceKlass::cast(klass())->lookup_method_in_all_interfaces(name, | |
1600 signature); | |
1601 } | 1599 } |
1602 } | 1600 } |
1603 if (m == NULL || (m->is_static() != is_static)) { | 1601 if (m == NULL || (m->is_static() != is_static)) { |
1604 THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(), name_str); | 1602 THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(), name_str); |
1605 } | 1603 } |
3211 DTRACE_PROBE2(hotspot_jni, GetStringLength__entry, env, string); | 3209 DTRACE_PROBE2(hotspot_jni, GetStringLength__entry, env, string); |
3212 #else /* USDT2 */ | 3210 #else /* USDT2 */ |
3213 HOTSPOT_JNI_GETSTRINGLENGTH_ENTRY( | 3211 HOTSPOT_JNI_GETSTRINGLENGTH_ENTRY( |
3214 env, string); | 3212 env, string); |
3215 #endif /* USDT2 */ | 3213 #endif /* USDT2 */ |
3216 jsize ret = java_lang_String::length(JNIHandles::resolve_non_null(string)); | 3214 jsize ret = 0; |
3215 oop s = JNIHandles::resolve_non_null(string); | |
3216 if (java_lang_String::value(s) != NULL) { | |
3217 ret = java_lang_String::length(s); | |
3218 } | |
3217 #ifndef USDT2 | 3219 #ifndef USDT2 |
3218 DTRACE_PROBE1(hotspot_jni, GetStringLength__return, ret); | 3220 DTRACE_PROBE1(hotspot_jni, GetStringLength__return, ret); |
3219 #else /* USDT2 */ | 3221 #else /* USDT2 */ |
3220 HOTSPOT_JNI_GETSTRINGLENGTH_RETURN( | 3222 HOTSPOT_JNI_GETSTRINGLENGTH_RETURN( |
3221 ret); | 3223 ret); |
3231 DTRACE_PROBE3(hotspot_jni, GetStringChars__entry, env, string, isCopy); | 3233 DTRACE_PROBE3(hotspot_jni, GetStringChars__entry, env, string, isCopy); |
3232 #else /* USDT2 */ | 3234 #else /* USDT2 */ |
3233 HOTSPOT_JNI_GETSTRINGCHARS_ENTRY( | 3235 HOTSPOT_JNI_GETSTRINGCHARS_ENTRY( |
3234 env, string, (uintptr_t *) isCopy); | 3236 env, string, (uintptr_t *) isCopy); |
3235 #endif /* USDT2 */ | 3237 #endif /* USDT2 */ |
3238 jchar* buf = NULL; | |
3236 oop s = JNIHandles::resolve_non_null(string); | 3239 oop s = JNIHandles::resolve_non_null(string); |
3237 int s_len = java_lang_String::length(s); | |
3238 typeArrayOop s_value = java_lang_String::value(s); | 3240 typeArrayOop s_value = java_lang_String::value(s); |
3239 int s_offset = java_lang_String::offset(s); | 3241 if (s_value != NULL) { |
3240 jchar* buf = NEW_C_HEAP_ARRAY_RETURN_NULL(jchar, s_len + 1, mtInternal); // add one for zero termination | 3242 int s_len = java_lang_String::length(s); |
3241 /* JNI Specification states return NULL on OOM */ | 3243 int s_offset = java_lang_String::offset(s); |
3242 if (buf != NULL) { | 3244 buf = NEW_C_HEAP_ARRAY_RETURN_NULL(jchar, s_len + 1, mtInternal); // add one for zero termination |
3243 if (s_len > 0) { | 3245 /* JNI Specification states return NULL on OOM */ |
3244 memcpy(buf, s_value->char_at_addr(s_offset), sizeof(jchar)*s_len); | 3246 if (buf != NULL) { |
3245 } | 3247 if (s_len > 0) { |
3246 buf[s_len] = 0; | 3248 memcpy(buf, s_value->char_at_addr(s_offset), sizeof(jchar)*s_len); |
3247 //%note jni_5 | 3249 } |
3248 if (isCopy != NULL) { | 3250 buf[s_len] = 0; |
3249 *isCopy = JNI_TRUE; | 3251 //%note jni_5 |
3252 if (isCopy != NULL) { | |
3253 *isCopy = JNI_TRUE; | |
3254 } | |
3250 } | 3255 } |
3251 } | 3256 } |
3252 #ifndef USDT2 | 3257 #ifndef USDT2 |
3253 DTRACE_PROBE1(hotspot_jni, GetStringChars__return, buf); | 3258 DTRACE_PROBE1(hotspot_jni, GetStringChars__return, buf); |
3254 #else /* USDT2 */ | 3259 #else /* USDT2 */ |
3314 DTRACE_PROBE2(hotspot_jni, GetStringUTFLength__entry, env, string); | 3319 DTRACE_PROBE2(hotspot_jni, GetStringUTFLength__entry, env, string); |
3315 #else /* USDT2 */ | 3320 #else /* USDT2 */ |
3316 HOTSPOT_JNI_GETSTRINGUTFLENGTH_ENTRY( | 3321 HOTSPOT_JNI_GETSTRINGUTFLENGTH_ENTRY( |
3317 env, string); | 3322 env, string); |
3318 #endif /* USDT2 */ | 3323 #endif /* USDT2 */ |
3319 jsize ret = java_lang_String::utf8_length(JNIHandles::resolve_non_null(string)); | 3324 jsize ret = 0; |
3325 oop java_string = JNIHandles::resolve_non_null(string); | |
3326 if (java_lang_String::value(java_string) != NULL) { | |
3327 ret = java_lang_String::utf8_length(java_string); | |
3328 } | |
3320 #ifndef USDT2 | 3329 #ifndef USDT2 |
3321 DTRACE_PROBE1(hotspot_jni, GetStringUTFLength__return, ret); | 3330 DTRACE_PROBE1(hotspot_jni, GetStringUTFLength__return, ret); |
3322 #else /* USDT2 */ | 3331 #else /* USDT2 */ |
3323 HOTSPOT_JNI_GETSTRINGUTFLENGTH_RETURN( | 3332 HOTSPOT_JNI_GETSTRINGUTFLENGTH_RETURN( |
3324 ret); | 3333 ret); |
3333 DTRACE_PROBE3(hotspot_jni, GetStringUTFChars__entry, env, string, isCopy); | 3342 DTRACE_PROBE3(hotspot_jni, GetStringUTFChars__entry, env, string, isCopy); |
3334 #else /* USDT2 */ | 3343 #else /* USDT2 */ |
3335 HOTSPOT_JNI_GETSTRINGUTFCHARS_ENTRY( | 3344 HOTSPOT_JNI_GETSTRINGUTFCHARS_ENTRY( |
3336 env, string, (uintptr_t *) isCopy); | 3345 env, string, (uintptr_t *) isCopy); |
3337 #endif /* USDT2 */ | 3346 #endif /* USDT2 */ |
3347 char* result = NULL; | |
3338 oop java_string = JNIHandles::resolve_non_null(string); | 3348 oop java_string = JNIHandles::resolve_non_null(string); |
3339 size_t length = java_lang_String::utf8_length(java_string); | 3349 if (java_lang_String::value(java_string) != NULL) { |
3340 /* JNI Specification states return NULL on OOM */ | 3350 size_t length = java_lang_String::utf8_length(java_string); |
3341 char* result = AllocateHeap(length + 1, mtInternal, 0, AllocFailStrategy::RETURN_NULL); | 3351 /* JNI Specification states return NULL on OOM */ |
3342 if (result != NULL) { | 3352 result = AllocateHeap(length + 1, mtInternal, 0, AllocFailStrategy::RETURN_NULL); |
3343 java_lang_String::as_utf8_string(java_string, result, (int) length + 1); | 3353 if (result != NULL) { |
3344 if (isCopy != NULL) { | 3354 java_lang_String::as_utf8_string(java_string, result, (int) length + 1); |
3345 *isCopy = JNI_TRUE; | 3355 if (isCopy != NULL) { |
3356 *isCopy = JNI_TRUE; | |
3357 } | |
3346 } | 3358 } |
3347 } | 3359 } |
3348 #ifndef USDT2 | 3360 #ifndef USDT2 |
3349 DTRACE_PROBE1(hotspot_jni, GetStringUTFChars__return, result); | 3361 DTRACE_PROBE1(hotspot_jni, GetStringUTFChars__return, result); |
3350 #else /* USDT2 */ | 3362 #else /* USDT2 */ |
5048 // Forward declaration | 5060 // Forward declaration |
5049 void TestReservedSpace_test(); | 5061 void TestReservedSpace_test(); |
5050 void TestReserveMemorySpecial_test(); | 5062 void TestReserveMemorySpecial_test(); |
5051 void TestVirtualSpace_test(); | 5063 void TestVirtualSpace_test(); |
5052 void TestMetaspaceAux_test(); | 5064 void TestMetaspaceAux_test(); |
5065 void TestMetachunk_test(); | |
5066 void TestVirtualSpaceNode_test(); | |
5053 #if INCLUDE_ALL_GCS | 5067 #if INCLUDE_ALL_GCS |
5054 void TestG1BiasedArray_test(); | 5068 void TestG1BiasedArray_test(); |
5055 #endif | 5069 #endif |
5056 | 5070 |
5057 void execute_internal_vm_tests() { | 5071 void execute_internal_vm_tests() { |
5059 tty->print_cr("Running internal VM tests"); | 5073 tty->print_cr("Running internal VM tests"); |
5060 run_unit_test(TestReservedSpace_test()); | 5074 run_unit_test(TestReservedSpace_test()); |
5061 run_unit_test(TestReserveMemorySpecial_test()); | 5075 run_unit_test(TestReserveMemorySpecial_test()); |
5062 run_unit_test(TestVirtualSpace_test()); | 5076 run_unit_test(TestVirtualSpace_test()); |
5063 run_unit_test(TestMetaspaceAux_test()); | 5077 run_unit_test(TestMetaspaceAux_test()); |
5078 run_unit_test(TestMetachunk_test()); | |
5079 run_unit_test(TestVirtualSpaceNode_test()); | |
5064 run_unit_test(GlobalDefinitions::test_globals()); | 5080 run_unit_test(GlobalDefinitions::test_globals()); |
5065 run_unit_test(GCTimerAllTest::all()); | 5081 run_unit_test(GCTimerAllTest::all()); |
5066 run_unit_test(arrayOopDesc::test_max_array_length()); | 5082 run_unit_test(arrayOopDesc::test_max_array_length()); |
5067 run_unit_test(CollectedHeap::test_is_in()); | 5083 run_unit_test(CollectedHeap::test_is_in()); |
5068 run_unit_test(QuickSort::test_quick_sort()); | 5084 run_unit_test(QuickSort::test_quick_sort()); |