3830 jsize len, ElementType *buf)) \ |
3830 jsize len, ElementType *buf)) \ |
3831 JNIWrapper("Get" XSTR(Result) "ArrayRegion"); \ |
3831 JNIWrapper("Get" XSTR(Result) "ArrayRegion"); \ |
3832 EntryProbe; \ |
3832 EntryProbe; \ |
3833 DT_VOID_RETURN_MARK(Get##Result##ArrayRegion); \ |
3833 DT_VOID_RETURN_MARK(Get##Result##ArrayRegion); \ |
3834 typeArrayOop src = typeArrayOop(JNIHandles::resolve_non_null(array)); \ |
3834 typeArrayOop src = typeArrayOop(JNIHandles::resolve_non_null(array)); \ |
3835 if (start < 0 || len < 0 || ((unsigned int)start + (unsigned int)len > (unsigned int)src->length())) { \ |
3835 if (start < 0 || len < 0 || (start > src->length() - len)) { \ |
3836 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); \ |
3836 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); \ |
3837 } else { \ |
3837 } else { \ |
3838 if (len > 0) { \ |
3838 if (len > 0) { \ |
3839 int sc = TypeArrayKlass::cast(src->klass())->log2_element_size(); \ |
3839 int sc = TypeArrayKlass::cast(src->klass())->log2_element_size(); \ |
3840 memcpy((u_char*) buf, \ |
3840 memcpy((u_char*) buf, \ |
3914 jsize len, const ElementType *buf)) \ |
3914 jsize len, const ElementType *buf)) \ |
3915 JNIWrapper("Set" XSTR(Result) "ArrayRegion"); \ |
3915 JNIWrapper("Set" XSTR(Result) "ArrayRegion"); \ |
3916 EntryProbe; \ |
3916 EntryProbe; \ |
3917 DT_VOID_RETURN_MARK(Set##Result##ArrayRegion); \ |
3917 DT_VOID_RETURN_MARK(Set##Result##ArrayRegion); \ |
3918 typeArrayOop dst = typeArrayOop(JNIHandles::resolve_non_null(array)); \ |
3918 typeArrayOop dst = typeArrayOop(JNIHandles::resolve_non_null(array)); \ |
3919 if (start < 0 || len < 0 || ((unsigned int)start + (unsigned int)len > (unsigned int)dst->length())) { \ |
3919 if (start < 0 || len < 0 || (start > dst->length() - len)) { \ |
3920 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); \ |
3920 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); \ |
3921 } else { \ |
3921 } else { \ |
3922 if (len > 0) { \ |
3922 if (len > 0) { \ |
3923 int sc = TypeArrayKlass::cast(dst->klass())->log2_element_size(); \ |
3923 int sc = TypeArrayKlass::cast(dst->klass())->log2_element_size(); \ |
3924 memcpy((u_char*) dst->Tag##_at_addr(start), \ |
3924 memcpy((u_char*) dst->Tag##_at_addr(start), \ |
4198 env, string, start, len, buf); |
4198 env, string, start, len, buf); |
4199 #endif /* USDT2 */ |
4199 #endif /* USDT2 */ |
4200 DT_VOID_RETURN_MARK(GetStringRegion); |
4200 DT_VOID_RETURN_MARK(GetStringRegion); |
4201 oop s = JNIHandles::resolve_non_null(string); |
4201 oop s = JNIHandles::resolve_non_null(string); |
4202 int s_len = java_lang_String::length(s); |
4202 int s_len = java_lang_String::length(s); |
4203 if (start < 0 || len < 0 || start + len > s_len) { |
4203 if (start < 0 || len < 0 || start > s_len - len) { |
4204 THROW(vmSymbols::java_lang_StringIndexOutOfBoundsException()); |
4204 THROW(vmSymbols::java_lang_StringIndexOutOfBoundsException()); |
4205 } else { |
4205 } else { |
4206 if (len > 0) { |
4206 if (len > 0) { |
4207 int s_offset = java_lang_String::offset(s); |
4207 int s_offset = java_lang_String::offset(s); |
4208 typeArrayOop s_value = java_lang_String::value(s); |
4208 typeArrayOop s_value = java_lang_String::value(s); |
4227 env, string, start, len, buf); |
4227 env, string, start, len, buf); |
4228 #endif /* USDT2 */ |
4228 #endif /* USDT2 */ |
4229 DT_VOID_RETURN_MARK(GetStringUTFRegion); |
4229 DT_VOID_RETURN_MARK(GetStringUTFRegion); |
4230 oop s = JNIHandles::resolve_non_null(string); |
4230 oop s = JNIHandles::resolve_non_null(string); |
4231 int s_len = java_lang_String::length(s); |
4231 int s_len = java_lang_String::length(s); |
4232 if (start < 0 || len < 0 || start + len > s_len) { |
4232 if (start < 0 || len < 0 || start > s_len - len) { |
4233 THROW(vmSymbols::java_lang_StringIndexOutOfBoundsException()); |
4233 THROW(vmSymbols::java_lang_StringIndexOutOfBoundsException()); |
4234 } else { |
4234 } else { |
4235 //%note jni_7 |
4235 //%note jni_7 |
4236 if (len > 0) { |
4236 if (len > 0) { |
4237 ResourceMark rm(THREAD); |
4237 ResourceMark rm(THREAD); |