| Index: libadblockplus-android/jni/JniJsValue.cpp | 
| diff --git a/libadblockplus-android/jni/JniJsValue.cpp b/libadblockplus-android/jni/JniJsValue.cpp | 
| index 6464b1eae10f09b28da34c71f8c3a9affc2b4a1f..a9adf4f4ad921c42b4a6ee24bde3b49157aef339 100644 | 
| --- a/libadblockplus-android/jni/JniJsValue.cpp | 
| +++ b/libadblockplus-android/jni/JniJsValue.cpp | 
| @@ -20,26 +20,29 @@ | 
| #include "JniJsValue.h" | 
|  | 
| // precached in JNI_OnLoad and released in JNI_OnUnload | 
| -jclass globalJsValueClass; | 
| -jmethodID jsValueClassCtor; | 
| +JniGlobalReference<jclass>* jsValueClass; | 
| +jmethodID jsValueCtor; | 
|  | 
| void JniJsValue_OnLoad(JavaVM* vm, JNIEnv* env, void* reserved) | 
| { | 
| -  // precache for performance and avoid attaching threads | 
| -  jclass localJsValueClass = env->FindClass(PKG("JsValue")); | 
| -  globalJsValueClass = (jclass)env->NewGlobalRef(localJsValueClass); | 
| -  jsValueClassCtor = env->GetMethodID(globalJsValueClass, "<init>", "(J)V"); | 
| -  env->DeleteLocalRef(localJsValueClass); | 
| +  jsValueClass = new JniGlobalReference<jclass>(env, env->FindClass(PKG("JsValue"))); | 
| +  jsValueCtor = env->GetMethodID(jsValueClass->Get(), "<init>", "(J)V"); | 
| } | 
|  | 
| void JniJsValue_OnUnload(JavaVM* vm, JNIEnv* env, void* reserved) | 
| { | 
| -  if (globalJsValueClass) | 
| +  if (jsValueClass) | 
| { | 
| -    env->DeleteGlobalRef(globalJsValueClass); | 
| +    delete jsValueClass; | 
| +    jsValueClass = NULL; | 
| } | 
| } | 
|  | 
| +jclass GetJsValueClass() | 
| +{ | 
| +  return (jsValueClass != NULL ? jsValueClass->Get() : NULL); | 
| +} | 
| + | 
| static jboolean JNICALL JniIsUndefined(JNIEnv* env, jclass clazz, jlong ptr) | 
| { | 
| try | 
| @@ -164,7 +167,7 @@ static void JNICALL JniDtor(JNIEnv* env, jclass clazz, jlong ptr) | 
| delete JniLongToTypePtr<AdblockPlus::JsValuePtr>(ptr); | 
| } | 
|  | 
| -jobject NewJniJsValue(JNIEnv* env, const AdblockPlus::JsValuePtr& jsValue, jclass jsValueClass) | 
| +jobject NewJniJsValue(JNIEnv* env, const AdblockPlus::JsValuePtr& jsValue, jclass jsValueClassArg) | 
| { | 
| if (!jsValue.get()) | 
| { | 
| @@ -172,7 +175,7 @@ jobject NewJniJsValue(JNIEnv* env, const AdblockPlus::JsValuePtr& jsValue, jclas | 
| } | 
|  | 
| jlong ptr = JniPtrToLong(new AdblockPlus::JsValuePtr(jsValue)); | 
| -  return env->NewObject(globalJsValueClass, jsValueClassCtor, ptr); | 
| +  return env->NewObject(jsValueClass->Get(), jsValueCtor, ptr); | 
| } | 
|  | 
| AdblockPlus::JsValue* JniGetJsValue(jlong ptr) | 
|  |