Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/test/gc/shenandoah/jni/libTestCriticalNative.c
32285 views
/*1* Copyright (c) 2018, Red Hat, Inc. All rights reserved.2*3* This code is free software; you can redistribute it and/or modify it4* under the terms of the GNU General Public License version 2 only, as5* published by the Free Software Foundation.6*7* This code is distributed in the hope that it will be useful, but WITHOUT8* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or9* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License10* version 2 for more details (a copy is included in the LICENSE file that11* accompanied this code).12*13* You should have received a copy of the GNU General Public License version14* 2 along with this work; if not, write to the Free Software Foundation,15* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.16*17* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA18* or visit www.oracle.com if you need additional information or have any19* questions.20*21*/2223#include "jni.h"2425JNIEXPORT jlong JNICALL JavaCritical_TestCriticalNativeStress_sum126(jint length, jlong* a) {27jlong sum = 0;28jint index;29for (index = 0; index < length; index ++) {30sum += a[index];31}3233return sum;34}3536JNIEXPORT jlong JNICALL JavaCritical_TestCriticalNativeStress_sum237(jlong a1, jint a2_length, jint* a2, jint a4_length, jint* a4, jint a6_length, jlong* a6, jint a8_length, jint* a8) {38jlong sum = a1;39jint index;40for (index = 0; index < a2_length; index ++) {41sum += a2[index];42}4344for (index = 0; index < a4_length; index ++) {45sum += a4[index];46}4748for (index = 0; index < a6_length; index ++) {49sum += a6[index];50}5152for (index = 0; index < a8_length; index ++) {53sum += a8[index];54}55return sum;56}5758JNIEXPORT jlong JNICALL Java_TestCriticalNativeStress_sum159(JNIEnv *env, jclass jclazz, jlongArray a) {60jlong sum = 0;61jsize len = (*env)->GetArrayLength(env, a);62jsize index;63jlong* arr = (jlong*)(*env)->GetPrimitiveArrayCritical(env, a, 0);64for (index = 0; index < len; index ++) {65sum += arr[index];66}6768(*env)->ReleasePrimitiveArrayCritical(env, a, arr, 0);69return sum;70}7172JNIEXPORT jlong JNICALL Java_TestCriticalNativeStress_sum273(JNIEnv *env, jclass jclazz, jlong a1, jintArray a2, jintArray a3, jlongArray a4, jintArray a5) {74jlong sum = a1;75jsize index;76jsize len = (*env)->GetArrayLength(env, a2);77jint* a2_arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a2, 0);78for (index = 0; index < len; index ++) {79sum += a2_arr[index];80}81(*env)->ReleasePrimitiveArrayCritical(env, a2, a2_arr, 0);8283len = (*env)->GetArrayLength(env, a3);84jint* a3_arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a3, 0);85for (index = 0; index < len; index ++) {86sum += a3_arr[index];87}88(*env)->ReleasePrimitiveArrayCritical(env, a3, a3_arr, 0);8990len = (*env)->GetArrayLength(env, a4);91jlong* a4_arr = (jlong*)(*env)->GetPrimitiveArrayCritical(env, a4, 0);92for (index = 0; index < len; index ++) {93sum += a4_arr[index];94}95(*env)->ReleasePrimitiveArrayCritical(env, a4, a4_arr, 0);9697len = (*env)->GetArrayLength(env, a5);98jint* a5_arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a5, 0);99for (index = 0; index < len; index ++) {100sum += a5_arr[index];101}102(*env)->ReleasePrimitiveArrayCritical(env, a5, a5_arr, 0);103104return sum;105}106107JNIEXPORT jboolean JNICALL JavaCritical_TestCriticalNativeArgs_isNull108(jint length, jint* a) {109return (a == NULL) && (length == 0);110}111112JNIEXPORT jboolean JNICALL Java_TestCriticalNativeArgs_isNull113(JNIEnv *env, jclass jclazz, jintArray a) {114jboolean is_null;115jsize len = (*env)->GetArrayLength(env, a);116jint* arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a, 0);117is_null = (arr == NULL) && (len == 0);118(*env)->ReleasePrimitiveArrayCritical(env, a, arr, 0);119return is_null;120}121122123