⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jni-arrays.c

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 C
📖 第 1 页 / 共 2 页
字号:
    case JNI_ABORT:      KFREE(elems);      break;    default:      break;    }  }  END_EXCEPTION_HANDLING();}voidKaffeJNI_ReleaseShortArrayElements(JNIEnv* env UNUSED, jshortArray arr, jshort* elems, jint mode){  jshortArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (elems != unhand_array((HArrayOfShort*)arr_local)->body) {    switch (mode) {    case JNI_COMMIT:      memcpy(unhand_array((HArrayOfShort*)arr_local)->body, elems,	     obj_length((HArrayOfShort*)arr_local) * sizeof(jshort));      break;    case 0:      memcpy(unhand_array((HArrayOfShort*)arr_local)->body, elems,	     obj_length((HArrayOfShort*)arr_local) * sizeof(jshort));      KFREE(elems);      break;    case JNI_ABORT:      KFREE(elems);      break;    default:      break;    }  }  END_EXCEPTION_HANDLING();}voidKaffeJNI_ReleaseIntArrayElements(JNIEnv* env UNUSED, jintArray arr, jint* elems, jint mode){  jintArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (elems != unhand_array((HArrayOfInt*)arr_local)->body) {    switch (mode) {    case JNI_COMMIT:      memcpy(unhand_array((HArrayOfInt*)arr_local)->body, elems,	     obj_length((HArrayOfInt*)arr_local) * sizeof(jint));      break;    case 0:      memcpy(unhand_array((HArrayOfInt*)arr_local)->body, elems,	     obj_length((HArrayOfInt*)arr_local) * sizeof(jint));      KFREE(elems);      break;    case JNI_ABORT:      KFREE(elems);      break;    default:      break;    }  }  END_EXCEPTION_HANDLING();}voidKaffeJNI_ReleaseLongArrayElements(JNIEnv* env UNUSED, jlongArray arr, jlong* elems, jint mode){  jlongArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (elems != unhand_array((HArrayOfLong*)arr_local)->body) {    switch (mode) {    case JNI_COMMIT:      memcpy(unhand_array((HArrayOfLong*)arr_local)->body, elems,	     obj_length((HArrayOfLong*)arr_local) * sizeof(jlong));      break;    case 0:      memcpy(unhand_array((HArrayOfLong*)arr_local)->body, elems,	     obj_length((HArrayOfLong*)arr_local) * sizeof(jlong));      KFREE(elems);      break;    case JNI_ABORT:      KFREE(elems);      break;    default:      break;    }  }  END_EXCEPTION_HANDLING();}voidKaffeJNI_ReleaseFloatArrayElements(JNIEnv* env UNUSED, jfloatArray arr, jfloat* elems, jint mode){  jfloatArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (elems != unhand_array((HArrayOfFloat*)arr_local)->body) {    switch (mode) {    case JNI_COMMIT:      memcpy(unhand_array((HArrayOfFloat*)arr_local)->body, elems,	     obj_length((HArrayOfFloat*)arr_local) * sizeof(jfloat));      break;    case 0:      memcpy(unhand_array((HArrayOfFloat*)arr_local)->body, elems,	     obj_length((HArrayOfFloat*)arr_local) * sizeof(jfloat));      KFREE(elems);      break;    case JNI_ABORT:      KFREE(elems);      break;    default:      break;    }  }  END_EXCEPTION_HANDLING();}voidKaffeJNI_ReleaseDoubleArrayElements(JNIEnv* env UNUSED, jdoubleArray arr, jdouble* elems, jint mode){  jdoubleArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (elems != unhand_array((HArrayOfDouble*)arr_local)->body) {    switch (mode) {    case JNI_COMMIT:      memcpy(unhand_array((HArrayOfDouble*)arr_local)->body, elems,	     obj_length((HArrayOfDouble*)arr_local) * sizeof(jdouble));      break;    case 0:      memcpy(unhand_array((HArrayOfDouble*)arr_local)->body, elems,	     obj_length((HArrayOfDouble*)arr_local) * sizeof(jdouble));      KFREE(elems);      break;    case JNI_ABORT:      KFREE(elems);      break;    default:      break;    }  }  END_EXCEPTION_HANDLING();}voidKaffeJNI_GetBooleanArrayRegion(JNIEnv* env UNUSED, jbooleanArray arr, jsize start, jsize len, jboolean* data){  jbooleanArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfBoolean*)arr_local)      || start + len > obj_length((HArrayOfBoolean*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(data, &unhand_array((HArrayOfBoolean*)arr_local)->body[start],	 len * sizeof(jboolean));  END_EXCEPTION_HANDLING();}voidKaffeJNI_GetByteArrayRegion(JNIEnv* env UNUSED, jbyteArray arr, jsize start, jsize len, jbyte* data){  jbyteArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfByte*)arr_local)      || start + len > obj_length((HArrayOfByte*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(data, &unhand_array((HArrayOfByte*)arr_local)->body[start],	 len * sizeof(jbyte));  END_EXCEPTION_HANDLING();}voidKaffeJNI_GetCharArrayRegion(JNIEnv* env UNUSED, jcharArray arr, jsize start, jsize len, jchar* data){  jcharArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfChar*)arr_local)      || start + len > obj_length((HArrayOfChar*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(data, &unhand_array((HArrayOfChar*)arr_local)->body[start],	 len * sizeof(jchar));  END_EXCEPTION_HANDLING();}voidKaffeJNI_GetShortArrayRegion(JNIEnv* env UNUSED, jshortArray arr, jsize start, jsize len, jshort* data){  jshortArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfShort*)arr_local)      || start + len > obj_length((HArrayOfShort*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(data, &unhand_array((HArrayOfShort*)arr_local)->body[start],	 len * sizeof(jshort));  END_EXCEPTION_HANDLING();}voidKaffeJNI_GetIntArrayRegion(JNIEnv* env UNUSED, jintArray arr, jsize start, jsize len, jint* data){  jintArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfInt*)arr_local)      || start + len > obj_length((HArrayOfInt*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(data, &unhand_array((HArrayOfInt*)arr_local)->body[start],	 len * sizeof(jint));  END_EXCEPTION_HANDLING();}voidKaffeJNI_GetLongArrayRegion(JNIEnv* env UNUSED, jlongArray arr, jsize start, jsize len, jlong* data){  jlongArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfLong*)arr_local)      || start + len > obj_length((HArrayOfLong*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(data, &unhand_array((HArrayOfLong*)arr_local)->body[start],	 len * sizeof(jlong));  END_EXCEPTION_HANDLING();}voidKaffeJNI_GetFloatArrayRegion(JNIEnv* env UNUSED, jfloatArray arr, jsize start, jsize len, jfloat* data){  jfloatArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfFloat*)arr_local)      || start + len > obj_length((HArrayOfFloat*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(data, &unhand_array((HArrayOfFloat*)arr_local)->body[start],	 len * sizeof(jfloat));  END_EXCEPTION_HANDLING();}voidKaffeJNI_GetDoubleArrayRegion(JNIEnv* env UNUSED, jdoubleArray arr, jsize start, jsize len, jdouble* data){  jdoubleArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfDouble*)arr_local)      || start + len > obj_length((HArrayOfDouble*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(data, &unhand_array((HArrayOfDouble*)arr_local)->body[start],	 len * sizeof(jdouble));  END_EXCEPTION_HANDLING();}voidKaffeJNI_SetBooleanArrayRegion(JNIEnv* env UNUSED, jbooleanArray arr, jsize start, jsize len, jboolean* data){  jbooleanArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfBoolean*)arr_local)      || start+len > obj_length((HArrayOfBoolean*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(&unhand_array((HArrayOfBoolean*)arr_local)->body[start], data,	 len * sizeof(jboolean));  END_EXCEPTION_HANDLING();}voidKaffeJNI_SetByteArrayRegion(JNIEnv* env UNUSED, jbyteArray arr, jsize start, jsize len, jbyte* data){  jbyteArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID(); arr_local = unveil(arr);  if (start >= obj_length((HArrayOfByte*)arr_local)      || start+len > obj_length((HArrayOfByte*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(&unhand_array((HArrayOfByte*)arr_local)->body[start], data,	 len * sizeof(jbyte));  END_EXCEPTION_HANDLING();}voidKaffeJNI_SetCharArrayRegion(JNIEnv* env UNUSED, jcharArray arr, jsize start, jsize len, jchar* data){  jcharArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfChar*)arr_local)      || start+len > obj_length((HArrayOfChar*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(&unhand_array((HArrayOfChar*)arr_local)->body[start], data,	 len * sizeof(jchar));  END_EXCEPTION_HANDLING();}voidKaffeJNI_SetShortArrayRegion(JNIEnv* env UNUSED, jshortArray arr, jsize start, jsize len, jshort* data){  jshortArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfShort*)arr_local)      || start+len > obj_length((HArrayOfShort*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(&unhand_array((HArrayOfShort*)arr_local)->body[start], data,	 len * sizeof(jshort));  END_EXCEPTION_HANDLING();}voidKaffeJNI_SetIntArrayRegion(JNIEnv* env UNUSED, jintArray arr, jsize start, jsize len, jint* data){  jintArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfInt*)arr_local)      || start+len > obj_length((HArrayOfInt*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(&unhand_array((HArrayOfInt*)arr_local)->body[start], data,	 len * sizeof(jint));  END_EXCEPTION_HANDLING();}voidKaffeJNI_SetLongArrayRegion(JNIEnv* env UNUSED, jlongArray arr, jsize start, jsize len, jlong* data){  jlongArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfLong*)arr_local)      || start+len > obj_length((HArrayOfLong*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(&unhand_array((HArrayOfLong*)arr_local)->body[start], data,	 len * sizeof(jlong));  END_EXCEPTION_HANDLING();}voidKaffeJNI_SetFloatArrayRegion(JNIEnv* env UNUSED, jfloatArray arr, jsize start, jsize len, jfloat* data){  jfloatArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfFloat*)arr_local)      || start+len > obj_length((HArrayOfFloat*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(&unhand_array((HArrayOfFloat*)arr_local)->body[start], data,	 len * sizeof(jfloat));  END_EXCEPTION_HANDLING();}voidKaffeJNI_SetDoubleArrayRegion(JNIEnv* env UNUSED, jdoubleArray arr, jsize start, jsize len, jdouble* data){  jdoubleArray arr_local;  BEGIN_EXCEPTION_HANDLING_VOID();  arr_local = unveil(arr);  if (start >= obj_length((HArrayOfDouble*)arr_local)      || start+len > obj_length((HArrayOfDouble*)arr_local)) {    throwException(ArrayIndexOutOfBoundsException);  }  memcpy(&unhand_array((HArrayOfDouble*)arr_local)->body[start], data,	 len * sizeof(jdouble));  END_EXCEPTION_HANDLING();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -