LOG("+ Adding Java<->XPCOM binding (Java=0x%08x | XPCOM=0x%08x) weakref=0x%08x\n", hash, (int) xpcomObjKey, (PRUint32) java_ref);
LOG(("+ Adding Java<->XPCOM binding (Java=0x%08x | XPCOM=0x%08x) weakref=0x%08x\n", hash, (int) xpcomObjKey, (PRUint32) java_ref));
AddJavaXPCOMBinding(JNIEnv* env, jobject aJavaObject, void* aXPCOMObject){  // We use a Java hash of the Java object as a key since the JVM can return  // different "addresses" for the same Java object, but the hash code (the  // result of calling |hashCode()| on the Java object) will always be the same.  jint hash = env->CallIntMethod(aJavaObject, hashCodeMID);  jweak java_ref = env->NewWeakGlobalRef(aJavaObject);  JavaXPCOMBindingEntry *entry =    NS_STATIC_CAST(JavaXPCOMBindingEntry*,                   PL_DHashTableOperate(gJAVAtoXPCOMBindings,                                        NS_INT32_TO_PTR(hash),                                        PL_DHASH_ADD));  entry->mJavaObject = java_ref;  entry->mXPCOMInstance = aXPCOMObject;  // We want the hash key to be the actual XPCOM object  void* xpcomObjKey = nsnull;  if (IsXPTCStub(aXPCOMObject))    xpcomObjKey = GetXPTCStubAddr(aXPCOMObject);  else    xpcomObjKey = ((JavaXPCOMInstance*) aXPCOMObject)->GetInstance();  entry =    NS_STATIC_CAST(JavaXPCOMBindingEntry*,                   PL_DHashTableOperate(gXPCOMtoJAVABindings, xpcomObjKey,                                        PL_DHASH_ADD));  entry->mJavaObject = java_ref;  entry->mXPCOMInstance = aXPCOMObject;  LOG("+ Adding Java<->XPCOM binding (Java=0x%08x | XPCOM=0x%08x) weakref=0x%08x\n",         hash, (int) xpcomObjKey, (PRUint32) java_ref);}