nsPersistentProperties::nsPersistentProperties() : mIn(nsnull) { mSubclass = static_cast<nsIPersistentProperties*>(this); mTable.ops = nsnull; PL_INIT_ARENA_POOL(&mArena, "PersistentPropertyArena", 2048); }
nsPersistentProperties::nsPersistentProperties() : mIn(nullptr) { mSubclass = static_cast<nsIPersistentProperties*>(this); PL_DHashTableInit(&mTable, &property_HashTableOps, nullptr, sizeof(PropertyTableEntry), 16); PL_INIT_ARENA_POOL(&mArena, "PersistentPropertyArena", 2048); }
nsresult PREF_Init() { if (!gHashTable.ops) { if (!PL_DHashTableInit(&gHashTable, &pref_HashTableOps, nsnull, sizeof(PrefHashEntry), 1024)) { gHashTable.ops = nsnull; return NS_ERROR_OUT_OF_MEMORY; } PL_INIT_ARENA_POOL(&gPrefNameArena, "PrefNameArena", PREFNAME_ARENA_SIZE); } return NS_OK; }
//--------------------------------------------- // nsZipArchive::OpenArchive //--------------------------------------------- nsresult nsZipArchive::OpenArchive(PRFileDesc * fd) { if (!fd) return ZIP_ERR_PARAM; #ifndef STANDALONE // Initialize our arena PL_INIT_ARENA_POOL(&mArena, "ZipArena", ZIP_ARENABLOCKSIZE); #endif //-- Keep the filedescriptor for further reading... mFd = fd; //-- get table of contents for archive return BuildFileList(); }
tmreader *tmreader_new(const char *program, void *data) { tmreader *tmr; tmr = calloc(1, sizeof *tmr); if (!tmr) return NULL; tmr->program = program; tmr->data = data; PL_INIT_ARENA_POOL(&tmr->arena, "TMReader", 256*1024); tmr->libraries = PL_NewHashTable(100, hash_serial, PL_CompareValues, PL_CompareStrings, &graphnode_hashallocops, &tmr->arena); tmr->filenames = PL_NewHashTable(100, hash_serial, PL_CompareValues, PL_CompareStrings, &filename_hashallocops, &tmr->arena); tmr->components = PL_NewHashTable(10000, PL_HashString, PL_CompareStrings, PL_CompareValues, &component_hashallocops, &tmr->arena); tmr->methods = PL_NewHashTable(10000, hash_serial, PL_CompareValues, PL_CompareStrings, &method_hashallocops, &tmr->arena); tmr->callsites = PL_NewHashTable(200000, hash_serial, PL_CompareValues, PL_CompareValues, &callsite_hashallocops, &tmr->arena); tmr->calltree_root.entry.value = (void*) strdup("root"); if (!tmr->libraries || !tmr->components || !tmr->methods || !tmr->callsites || !tmr->calltree_root.entry.value || !tmr->filenames) { tmreader_destroy(tmr); return NULL; } return tmr; }
State() { mFreeLists.Init(); PL_INIT_ARENA_POOL(&mPool, "PresArena", ARENA_PAGE_SIZE); PR_CallOnce(&ARENA_POISON_guard, ARENA_POISON_init); }
nsPresArena::nsPresArena() { PL_INIT_ARENA_POOL(&mPool, "PresArena", ARENA_PAGE_SIZE); }
nsresult nsPermissionManager::AddInternal(const nsAFlatCString &aHost, const nsAFlatCString &aType, PRUint32 aPermission, PRInt64 aID, PRUint32 aExpireType, PRInt64 aExpireTime, NotifyOperationType aNotifyOperation, DBOperationType aDBOperation) { if (!gHostArena) { gHostArena = new PLArenaPool; if (!gHostArena) return NS_ERROR_OUT_OF_MEMORY; PL_INIT_ARENA_POOL(gHostArena, "PermissionHostArena", HOST_ARENA_SIZE); } // look up the type index PRInt32 typeIndex = GetTypeIndex(aType.get(), PR_TRUE); NS_ENSURE_TRUE(typeIndex != -1, NS_ERROR_OUT_OF_MEMORY); // When an entry already exists, PutEntry will return that, instead // of adding a new one nsHostEntry *entry = mHostTable.PutEntry(aHost.get()); if (!entry) return NS_ERROR_FAILURE; if (!entry->GetKey()) { mHostTable.RawRemoveEntry(entry); return NS_ERROR_OUT_OF_MEMORY; } // figure out the transaction type, and get any existing permission value OperationType op; PRInt32 index = entry->GetPermissionIndex(typeIndex); if (index == -1) { if (aPermission == nsIPermissionManager::UNKNOWN_ACTION) op = eOperationNone; else op = eOperationAdding; } else { nsPermissionEntry oldPermissionEntry = entry->GetPermissions()[index]; // remove the permission if the permission is UNKNOWN, update the // permission if its value or expire type have changed OR if the time has // changed and the expire type is time, otherwise, don't modify. There's // no need to modify a permission that doesn't expire with time when the // only thing changed is the expire time. if (aPermission == oldPermissionEntry.mPermission && aExpireType == oldPermissionEntry.mExpireType && (aExpireType != nsIPermissionManager::EXPIRE_TIME || aExpireTime == oldPermissionEntry.mExpireTime)) op = eOperationNone; else if (aPermission == nsIPermissionManager::UNKNOWN_ACTION) op = eOperationRemoving; else op = eOperationChanging; } // do the work for adding, deleting, or changing a permission: // update the in-memory list, write to the db, and notify consumers. PRInt64 id; switch (op) { case eOperationNone: { // nothing to do return NS_OK; } case eOperationAdding: { if (aDBOperation == eWriteToDB) { // we'll be writing to the database - generate a known unique id id = ++mLargestID; } else { // we're reading from the database - use the id already assigned id = aID; } entry->GetPermissions().AppendElement(nsPermissionEntry(typeIndex, aPermission, id, aExpireType, aExpireTime)); if (aDBOperation == eWriteToDB && aExpireType != nsIPermissionManager::EXPIRE_SESSION) UpdateDB(op, mStmtInsert, id, aHost, aType, aPermission, aExpireType, aExpireTime); if (aNotifyOperation == eNotify) { NotifyObserversWithPermission(aHost, mTypeArray[typeIndex], aPermission, aExpireType, aExpireTime, NS_LITERAL_STRING("added").get()); } break; } case eOperationRemoving: { nsPermissionEntry oldPermissionEntry = entry->GetPermissions()[index]; id = oldPermissionEntry.mID; entry->GetPermissions().RemoveElementAt(index); // If no more types are present, remove the entry if (entry->GetPermissions().IsEmpty()) mHostTable.RawRemoveEntry(entry); if (aDBOperation == eWriteToDB) UpdateDB(op, mStmtDelete, id, EmptyCString(), EmptyCString(), 0, nsIPermissionManager::EXPIRE_NEVER, 0); if (aNotifyOperation == eNotify) { NotifyObserversWithPermission(aHost, mTypeArray[typeIndex], oldPermissionEntry.mPermission, oldPermissionEntry.mExpireType, oldPermissionEntry.mExpireTime, NS_LITERAL_STRING("deleted").get()); } break; } case eOperationChanging: { id = entry->GetPermissions()[index].mID; entry->GetPermissions()[index].mPermission = aPermission; if (aDBOperation == eWriteToDB && aExpireType != nsIPermissionManager::EXPIRE_SESSION) UpdateDB(op, mStmtUpdate, id, EmptyCString(), EmptyCString(), aPermission, aExpireType, aExpireTime); if (aNotifyOperation == eNotify) { NotifyObserversWithPermission(aHost, mTypeArray[typeIndex], aPermission, aExpireType, aExpireTime, NS_LITERAL_STRING("changed").get()); } break; } } return NS_OK; }
nsPresArena::nsPresArena() { mFreeLists.Init(); PL_INIT_ARENA_POOL(&mPool, "PresArena", ARENA_PAGE_SIZE); }