equal
deleted
inserted
replaced
2812 jsize len, ElementType *buf)) \ |
2812 jsize len, ElementType *buf)) \ |
2813 JNIWrapper("Get" XSTR(Result) "ArrayRegion"); \ |
2813 JNIWrapper("Get" XSTR(Result) "ArrayRegion"); \ |
2814 EntryProbe; \ |
2814 EntryProbe; \ |
2815 DT_VOID_RETURN_MARK(Get##Result##ArrayRegion); \ |
2815 DT_VOID_RETURN_MARK(Get##Result##ArrayRegion); \ |
2816 typeArrayOop src = typeArrayOop(JNIHandles::resolve_non_null(array)); \ |
2816 typeArrayOop src = typeArrayOop(JNIHandles::resolve_non_null(array)); \ |
2817 if (start < 0 || len < 0 || ((unsigned int)start + (unsigned int)len > (unsigned int)src->length())) { \ |
2817 if (start < 0 || len < 0 || (start > src->length() - len)) { \ |
2818 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); \ |
2818 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); \ |
2819 } else { \ |
2819 } else { \ |
2820 if (len > 0) { \ |
2820 if (len > 0) { \ |
2821 int sc = TypeArrayKlass::cast(src->klass())->log2_element_size(); \ |
2821 int sc = TypeArrayKlass::cast(src->klass())->log2_element_size(); \ |
2822 memcpy((u_char*) buf, \ |
2822 memcpy((u_char*) buf, \ |
2862 jsize len, const ElementType *buf)) \ |
2862 jsize len, const ElementType *buf)) \ |
2863 JNIWrapper("Set" XSTR(Result) "ArrayRegion"); \ |
2863 JNIWrapper("Set" XSTR(Result) "ArrayRegion"); \ |
2864 EntryProbe; \ |
2864 EntryProbe; \ |
2865 DT_VOID_RETURN_MARK(Set##Result##ArrayRegion); \ |
2865 DT_VOID_RETURN_MARK(Set##Result##ArrayRegion); \ |
2866 typeArrayOop dst = typeArrayOop(JNIHandles::resolve_non_null(array)); \ |
2866 typeArrayOop dst = typeArrayOop(JNIHandles::resolve_non_null(array)); \ |
2867 if (start < 0 || len < 0 || ((unsigned int)start + (unsigned int)len > (unsigned int)dst->length())) { \ |
2867 if (start < 0 || len < 0 || (start > dst->length() - len)) { \ |
2868 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); \ |
2868 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); \ |
2869 } else { \ |
2869 } else { \ |
2870 if (len > 0) { \ |
2870 if (len > 0) { \ |
2871 int sc = TypeArrayKlass::cast(dst->klass())->log2_element_size(); \ |
2871 int sc = TypeArrayKlass::cast(dst->klass())->log2_element_size(); \ |
2872 memcpy((u_char*) dst->Tag##_at_addr(start), \ |
2872 memcpy((u_char*) dst->Tag##_at_addr(start), \ |
3098 JNIWrapper("GetStringRegion"); |
3098 JNIWrapper("GetStringRegion"); |
3099 HOTSPOT_JNI_GETSTRINGREGION_ENTRY(env, string, start, len, buf); |
3099 HOTSPOT_JNI_GETSTRINGREGION_ENTRY(env, string, start, len, buf); |
3100 DT_VOID_RETURN_MARK(GetStringRegion); |
3100 DT_VOID_RETURN_MARK(GetStringRegion); |
3101 oop s = JNIHandles::resolve_non_null(string); |
3101 oop s = JNIHandles::resolve_non_null(string); |
3102 int s_len = java_lang_String::length(s); |
3102 int s_len = java_lang_String::length(s); |
3103 if (start < 0 || len < 0 || start + len > s_len) { |
3103 if (start < 0 || len < 0 || start > s_len - len) { |
3104 THROW(vmSymbols::java_lang_StringIndexOutOfBoundsException()); |
3104 THROW(vmSymbols::java_lang_StringIndexOutOfBoundsException()); |
3105 } else { |
3105 } else { |
3106 if (len > 0) { |
3106 if (len > 0) { |
3107 typeArrayOop s_value = java_lang_String::value(s); |
3107 typeArrayOop s_value = java_lang_String::value(s); |
3108 bool is_latin1 = java_lang_String::is_latin1(s); |
3108 bool is_latin1 = java_lang_String::is_latin1(s); |
3124 JNIWrapper("GetStringUTFRegion"); |
3124 JNIWrapper("GetStringUTFRegion"); |
3125 HOTSPOT_JNI_GETSTRINGUTFREGION_ENTRY(env, string, start, len, buf); |
3125 HOTSPOT_JNI_GETSTRINGUTFREGION_ENTRY(env, string, start, len, buf); |
3126 DT_VOID_RETURN_MARK(GetStringUTFRegion); |
3126 DT_VOID_RETURN_MARK(GetStringUTFRegion); |
3127 oop s = JNIHandles::resolve_non_null(string); |
3127 oop s = JNIHandles::resolve_non_null(string); |
3128 int s_len = java_lang_String::length(s); |
3128 int s_len = java_lang_String::length(s); |
3129 if (start < 0 || len < 0 || start + len > s_len) { |
3129 if (start < 0 || len < 0 || start > s_len - len) { |
3130 THROW(vmSymbols::java_lang_StringIndexOutOfBoundsException()); |
3130 THROW(vmSymbols::java_lang_StringIndexOutOfBoundsException()); |
3131 } else { |
3131 } else { |
3132 //%note jni_7 |
3132 //%note jni_7 |
3133 if (len > 0) { |
3133 if (len > 0) { |
3134 // Assume the buffer is large enough as the JNI spec. does not require user error checking |
3134 // Assume the buffer is large enough as the JNI spec. does not require user error checking |