1 /*
2 * Copyright (c) 2018, Red Hat, Inc. and/or its affiliates.
3 *
4 * This code is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 only, as
6 * published by the Free Software Foundation.
7 *
8 * This code is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
23
24 #include "jni.h"
25
26 JNIEXPORT jlong JNICALL JavaCritical_CriticalNativeStress_sum1
27 (jint length, jlong* a) {
28 jlong sum = 0;
29 jint index;
30 for (index = 0; index < length; index ++) {
31 sum += a[index];
32 }
33
34 return sum;
35 }
36
37 JNIEXPORT jlong JNICALL JavaCritical_CriticalNativeStress_sum2
38 (jlong a1, jint a2_length, jint* a2, jint a4_length, jint* a4, jint a6_length, jlong* a6, jint a8_length, jint* a8) {
39 jlong sum = a1;
40 jint index;
41 for (index = 0; index < a2_length; index ++) {
42 sum += a2[index];
43 }
44
45 for (index = 0; index < a4_length; index ++) {
46 sum += a4[index];
47 }
48
49 for (index = 0; index < a6_length; index ++) {
50 sum += a6[index];
51 }
52
53 for (index = 0; index < a8_length; index ++) {
54 sum += a8[index];
55 }
56 return sum;
57 }
58
59 JNIEXPORT jlong JNICALL Java_CriticalNativeStress_sum1
60 (JNIEnv *env, jclass jclazz, jlongArray a) {
61 jlong sum = 0;
62 jsize len = (*env)->GetArrayLength(env, a);
63 jsize index;
64 jlong* arr = (jlong*)(*env)->GetPrimitiveArrayCritical(env, a, 0);
65 for (index = 0; index < len; index ++) {
66 sum += arr[index];
67 }
68
69 (*env)->ReleasePrimitiveArrayCritical(env, a, arr, 0);
70 return sum;
71 }
72
73 JNIEXPORT jlong JNICALL Java_CriticalNativeStress_sum2
74 (JNIEnv *env, jclass jclazz, jlong a1, jintArray a2, jintArray a3, jlongArray a4, jintArray a5) {
75 jlong sum = a1;
76 jsize index;
77 jsize len = (*env)->GetArrayLength(env, a2);
78 jint* a2_arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a2, 0);
79 for (index = 0; index < len; index ++) {
80 sum += a2_arr[index];
81 }
82 (*env)->ReleasePrimitiveArrayCritical(env, a2, a2_arr, 0);
83
84 len = (*env)->GetArrayLength(env, a3);
85 jint* a3_arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a3, 0);
86 for (index = 0; index < len; index ++) {
87 sum += a3_arr[index];
88 }
89 (*env)->ReleasePrimitiveArrayCritical(env, a3, a3_arr, 0);
90
91
92 len = (*env)->GetArrayLength(env, a4);
93 jlong* a4_arr = (jlong*)(*env)->GetPrimitiveArrayCritical(env, a4, 0);
94 for (index = 0; index < len; index ++) {
95 sum += a4_arr[index];
96 }
97 (*env)->ReleasePrimitiveArrayCritical(env, a4, a4_arr, 0);
98
99 len = (*env)->GetArrayLength(env, a5);
100 jint* a5_arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a5, 0);
101 for (index = 0; index < len; index ++) {
102 sum += a5_arr[index];
103 }
104 (*env)->ReleasePrimitiveArrayCritical(env, a5, a5_arr, 0);
105
106 return sum;
107 }
108
109
110 JNIEXPORT jboolean JNICALL JavaCritical_CriticalNativeArgs_isNull
111 (jint length, jint* a) {
112 return (a == NULL) && (length == 0);
113 }
114
115 JNIEXPORT jboolean JNICALL Java_CriticalNativeArgs_isNull
116 (JNIEnv *env, jclass jclazz, jintArray a) {
117 jboolean is_null;
118 jsize len = (*env)->GetArrayLength(env, a);
119 jint* arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a, 0);
120 is_null = (arr == NULL) && (len == 0);
121 (*env)->ReleasePrimitiveArrayCritical(env, a, arr, 0);
122 return is_null;
123 }
124
|
1 /*
2 * Copyright (c) 2018, Red Hat, Inc. All rights reserved.
3 *
4 * This code is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 2 only, as
6 * published by the Free Software Foundation.
7 *
8 * This code is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
23
24 #include "jni.h"
25
26 JNIEXPORT jlong JNICALL JavaCritical_TestCriticalNativeStress_sum1
27 (jint length, jlong* a) {
28 jlong sum = 0;
29 jint index;
30 for (index = 0; index < length; index ++) {
31 sum += a[index];
32 }
33
34 return sum;
35 }
36
37 JNIEXPORT jlong JNICALL JavaCritical_TestCriticalNativeStress_sum2
38 (jlong a1, jint a2_length, jint* a2, jint a4_length, jint* a4, jint a6_length, jlong* a6, jint a8_length, jint* a8) {
39 jlong sum = a1;
40 jint index;
41 for (index = 0; index < a2_length; index ++) {
42 sum += a2[index];
43 }
44
45 for (index = 0; index < a4_length; index ++) {
46 sum += a4[index];
47 }
48
49 for (index = 0; index < a6_length; index ++) {
50 sum += a6[index];
51 }
52
53 for (index = 0; index < a8_length; index ++) {
54 sum += a8[index];
55 }
56 return sum;
57 }
58
59 JNIEXPORT jlong JNICALL Java_TestCriticalNativeStress_sum1
60 (JNIEnv *env, jclass jclazz, jlongArray a) {
61 jlong sum = 0;
62 jsize len = (*env)->GetArrayLength(env, a);
63 jsize index;
64 jlong* arr = (jlong*)(*env)->GetPrimitiveArrayCritical(env, a, 0);
65 for (index = 0; index < len; index ++) {
66 sum += arr[index];
67 }
68
69 (*env)->ReleasePrimitiveArrayCritical(env, a, arr, 0);
70 return sum;
71 }
72
73 JNIEXPORT jlong JNICALL Java_TestCriticalNativeStress_sum2
74 (JNIEnv *env, jclass jclazz, jlong a1, jintArray a2, jintArray a3, jlongArray a4, jintArray a5) {
75 jlong sum = a1;
76 jsize index;
77 jsize len = (*env)->GetArrayLength(env, a2);
78 jint* a2_arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a2, 0);
79 for (index = 0; index < len; index ++) {
80 sum += a2_arr[index];
81 }
82 (*env)->ReleasePrimitiveArrayCritical(env, a2, a2_arr, 0);
83
84 len = (*env)->GetArrayLength(env, a3);
85 jint* a3_arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a3, 0);
86 for (index = 0; index < len; index ++) {
87 sum += a3_arr[index];
88 }
89 (*env)->ReleasePrimitiveArrayCritical(env, a3, a3_arr, 0);
90
91 len = (*env)->GetArrayLength(env, a4);
92 jlong* a4_arr = (jlong*)(*env)->GetPrimitiveArrayCritical(env, a4, 0);
93 for (index = 0; index < len; index ++) {
94 sum += a4_arr[index];
95 }
96 (*env)->ReleasePrimitiveArrayCritical(env, a4, a4_arr, 0);
97
98 len = (*env)->GetArrayLength(env, a5);
99 jint* a5_arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a5, 0);
100 for (index = 0; index < len; index ++) {
101 sum += a5_arr[index];
102 }
103 (*env)->ReleasePrimitiveArrayCritical(env, a5, a5_arr, 0);
104
105 return sum;
106 }
107
108 JNIEXPORT jboolean JNICALL JavaCritical_TestCriticalNativeArgs_isNull
109 (jint length, jint* a) {
110 return (a == NULL) && (length == 0);
111 }
112
113 JNIEXPORT jboolean JNICALL Java_TestCriticalNativeArgs_isNull
114 (JNIEnv *env, jclass jclazz, jintArray a) {
115 jboolean is_null;
116 jsize len = (*env)->GetArrayLength(env, a);
117 jint* arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a, 0);
118 is_null = (arr == NULL) && (len == 0);
119 (*env)->ReleasePrimitiveArrayCritical(env, a, arr, 0);
120 return is_null;
121 }
|