diff options
author | Vladimir Mezentsev <vladimir.mezentsev@oracle.com> | 2022-03-11 08:58:31 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2022-03-11 08:58:31 +0000 |
commit | bb368aad297fe3ad40cf397e6fc85aa471429a28 (patch) | |
tree | 0ab25909b8fe789d676bbdb00d501d4d485e4afe /gprofng/testsuite/gprofng.display/jsynprog/cloop.cc | |
parent | a655f19af95eb685ba64f48ee8fc2b3b7a3d886a (diff) | |
download | binutils-bb368aad297fe3ad40cf397e6fc85aa471429a28.zip binutils-bb368aad297fe3ad40cf397e6fc85aa471429a28.tar.gz binutils-bb368aad297fe3ad40cf397e6fc85aa471429a28.tar.bz2 |
gprofng: a new GNU profiler
top-level
* Makefile.def: Add gprofng module.
* configure.ac: Add --enable-gprofng option.
* src-release.sh: Add gprofng.
* Makefile.in: Regenerate.
* configure: Regenerate.
* gprofng: New directory.
binutils
* MAINTAINERS: Add gprofng maintainer.
* README-how-to-make-a-release: Add gprofng.
include.
* collectorAPI.h: New file.
* libcollector.h: New file.
* libfcollector.h: New file.
Diffstat (limited to 'gprofng/testsuite/gprofng.display/jsynprog/cloop.cc')
-rw-r--r-- | gprofng/testsuite/gprofng.display/jsynprog/cloop.cc | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/gprofng/testsuite/gprofng.display/jsynprog/cloop.cc b/gprofng/testsuite/gprofng.display/jsynprog/cloop.cc new file mode 100644 index 0000000..cf8b779 --- /dev/null +++ b/gprofng/testsuite/gprofng.display/jsynprog/cloop.cc @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. + */ +#include <jni.h> +#include <stdio.h> +#include <stdlib.h> +#include <stdlib.h> +#include <sys/time.h> +#include "jsynprog.h" + +typedef long long hrtime_t; +extern "C" { + hrtime_t gethrtime(); + hrtime_t gethrvtime(); +} +static jdouble testtime = 3.0 * 1e9; + +int cfunc(int); + +JNIEXPORT jdouble JNICALL +Java_jsynprog_Timer (JNIEnv *env, jclass obj) +{ + jdouble jd; + hrtime_t start; + + start = gethrtime(); + jd = (double)(start); + return jd; +} + +JNIEXPORT jdouble JNICALL +Java_jsynprog_cTimer (JNIEnv *env, jclass obj) +{ + jdouble jd; + hrtime_t vstart; + + vstart = gethrvtime(); + jd = (double)(vstart); + return jd; +} + +JNIEXPORT jdouble JNICALL +Java_jsynprog_computeSet (JNIEnv *env, jclass obj) +{ + char *s; + + testtime = 3.0; + s = getenv("SP_COLLECTOR_TEST_TIMER"); + if( s ) { + testtime = atof(s); + if (testtime < 1.0) + testtime = 1.0; + } + testtime *= 1e9; + return testtime; +} + +JNIEXPORT jint JNICALL +Java_jsynprog_JavaJavaC (JNIEnv *env, jclass obj, jint n, int scale ) +{ + // fprintf(stderr, "Entering Java_jsynprog_JavaJavaC, scale = %d\n", scale); + int imax = 100000; + n = 0; + for (int i =0; i<imax; i++) { + n=n+((i%2==0)?1:2); + } + return n; +} + +JNIEXPORT void JNICALL +Java_jsynprog_JavaCC (JNIEnv *env, jclass obj, int scale) +{ + fprintf(stderr, "Entering Java_jsynprog_JavaCC, scale = %d\n", scale); + int n =0; + if (scale == 1) { + scale *= 1000; + } + int imax = 4*scale; + double tEnd = gethrtime() + testtime; + do { n = 0; + for (int i =0; i<imax; i++) { + n = cfunc(n); + } + } while (gethrtime() < tEnd); +} + +int cfunc (int n) { + for (int j =0; j<100000;j++) { + n=n+1; + } + return n; +} + +JNIEXPORT void JNICALL +Java_jsynprog_JavaCJava (JNIEnv *env, jclass obj, int scale) +{ + fprintf(stderr, "Entering Java_jsynprog_JavaCJava, scale = %d\n", scale); + int pnum = 0; + jmethodID mid = (env)->GetStaticMethodID(obj, "javafunc", "(I)I"); + if (mid == 0) { + fprintf(stderr, "Can't get jmethodID for \"javafunc\", \"(I)I\"\n"); + return; + } + fprintf(stderr, "Calling CallStaticIntMethod, scale = %d\n", scale); + pnum = (env)->CallStaticIntMethod(obj, mid, scale); +} + +JNIEXPORT jint JNICALL +Java_jsynprog_isJVMPI (JNIEnv *env, jclass obj) +{ + char *jvmpi = getenv("SP_COLLECTOR_USE_JVMPI"); + + return jvmpi ? 1 : 0; +} |