Bug 285591 - Do not cache JNIEnv structure. Instead, query from JavaVM. Not part of default build. a=mkaply
Original committer: pedemont%us.ibm.com Original revision: 1.33 Original date: 2005/05/03 20:15:35 git-svn-id: svn://10.0.0.236/trunk@212694 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -734,7 +734,7 @@ SetupParams(JNIEnv *env, const jobject aParam, PRUint8 aType, PRBool aIsOut,
|
||||
NS_STATIC_CAST(nsXPTCStubBase*,
|
||||
xpcom_obj));
|
||||
nsJavaXPTCStubWeakRef* weakref;
|
||||
weakref = new nsJavaXPTCStubWeakRef(env, java_obj, stub);
|
||||
weakref = new nsJavaXPTCStubWeakRef(java_obj, stub);
|
||||
if (!weakref) {
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
break;
|
||||
|
||||
@@ -47,6 +47,9 @@
|
||||
|
||||
|
||||
/* Java JNI globals */
|
||||
|
||||
JavaVM* gCachedJVM = nsnull;
|
||||
|
||||
jclass booleanClass = nsnull;
|
||||
jclass charClass = nsnull;
|
||||
jclass byteClass = nsnull;
|
||||
@@ -93,6 +96,24 @@ PRBool gJavaXPCOMInitialized = PR_FALSE;
|
||||
PRLock* gJavaXPCOMLock = nsnull;
|
||||
|
||||
|
||||
/******************************
|
||||
* JNI Load & Unload
|
||||
******************************/
|
||||
extern "C" JX_EXPORT jint JNICALL
|
||||
JNI_OnLoad(JavaVM* vm, void* reserved)
|
||||
{
|
||||
// Save pointer to JavaVM, which is valid across threads.
|
||||
gCachedJVM = vm;
|
||||
|
||||
// Let the JVM know that we are using JDK 1.2 JNI features.
|
||||
return JNI_VERSION_1_2;
|
||||
}
|
||||
|
||||
extern "C" JX_EXPORT void JNICALL
|
||||
JNI_OnUnload(JavaVM* vm, void* reserved)
|
||||
{
|
||||
}
|
||||
|
||||
/******************************
|
||||
* InitializeJavaGlobals
|
||||
******************************/
|
||||
@@ -777,7 +798,7 @@ GetNewOrUsedXPCOMObject(JNIEnv* env, jobject aJavaObject, const nsIID& aIID,
|
||||
return rv;
|
||||
|
||||
// Create XPCOM stub
|
||||
stub = new nsJavaXPTCStub(env, aJavaObject, iinfo);
|
||||
stub = new nsJavaXPTCStub(aJavaObject, iinfo);
|
||||
if (!stub) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
@@ -849,6 +870,16 @@ GetIIDForMethodParam(nsIInterfaceInfo *iinfo, const nsXPTMethodInfo *methodInfo,
|
||||
* JNI helper functions
|
||||
*******************************/
|
||||
|
||||
JNIEnv*
|
||||
GetJNIEnv()
|
||||
{
|
||||
JNIEnv* env;
|
||||
jint rc = gCachedJVM->GetEnv((void**) &env, JNI_VERSION_1_2);
|
||||
NS_ASSERTION(rc == JNI_OK && env != nsnull,
|
||||
"Current thread not attached to given JVM instance");
|
||||
return env;
|
||||
}
|
||||
|
||||
void
|
||||
ThrowException(JNIEnv* env, const nsresult aErrorCode, const char* aMessage)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user