From f932adc1c137c00970a94d039adfdffaf0373222 Mon Sep 17 00:00:00 2001 From: graydon Date: Fri, 14 Jan 2005 07:36:27 +0000 Subject: 2005-01-13 Graydon Hoare * include/jni.h (_Jv_JNIEnv::bottom_locals): New field. * include/jvm.h (_Jv_FreeJNIEnv): Declare. * java/lang/natThread.cc (finalize_native): Call _Jv_FreeJNIEnv. * jni.cc: Reuse bottom frame between calls, avoid clearing frame when no local references are made. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93632 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/include/jni.h | 4 ++++ libjava/include/jvm.h | 3 +++ 2 files changed, 7 insertions(+) (limited to 'libjava/include') diff --git a/libjava/include/jni.h b/libjava/include/jni.h index acffa97fd98..c1b6e20b5ab 100644 --- a/libjava/include/jni.h +++ b/libjava/include/jni.h @@ -693,6 +693,10 @@ private: /* The chain of local frames. */ struct _Jv_JNI_LocalFrame *locals; + /* The bottom-most element of the chain, initialized with the env and + reused between non-nesting JNI calls. */ + struct _Jv_JNI_LocalFrame *bottom_locals; + public: jint GetVersion () { return p->GetVersion (this); } diff --git a/libjava/include/jvm.h b/libjava/include/jvm.h index d45ef25b699..67a4b18176e 100644 --- a/libjava/include/jvm.h +++ b/libjava/include/jvm.h @@ -522,6 +522,9 @@ extern void _Jv_JNI_Init (void); _Jv_JNIEnv *_Jv_GetCurrentJNIEnv (); void _Jv_SetCurrentJNIEnv (_Jv_JNIEnv *); +/* Free a JNIEnv. */ +void _Jv_FreeJNIEnv (_Jv_JNIEnv *); + struct _Jv_JavaVM; _Jv_JavaVM *_Jv_GetJavaVM (); -- cgit v1.2.3