diff options
author | graydon <graydon@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-01-14 07:36:27 +0000 |
---|---|---|
committer | graydon <graydon@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-01-14 07:36:27 +0000 |
commit | f932adc1c137c00970a94d039adfdffaf0373222 (patch) | |
tree | 57a4dece632a26e9b5430fff053a24e1b01280d3 /libjava/include | |
parent | a3715b0064fd8593f1898ae6adb7274522f1f5f5 (diff) | |
download | gcc-f932adc1c137c00970a94d039adfdffaf0373222.tar.gz |
2005-01-13 Graydon Hoare <graydon@redhat.com>
* 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
Diffstat (limited to 'libjava/include')
-rw-r--r-- | libjava/include/jni.h | 4 | ||||
-rw-r--r-- | libjava/include/jvm.h | 3 |
2 files changed, 7 insertions, 0 deletions
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 (); |