Home | History | Annotate | Download | only in libdex

Lines Matching defs:pDexFile

285 const char* dexStringAndSizeById(const DexFile* pDexFile, u4 idx,
287 const DexStringId* pStringId = dexGetStringId(pDexFile, idx);
288 const u1* ptr = pDexFile->baseAddr + pStringId->stringDataOff;
357 static void classLookupAdd(DexFile* pDexFile, DexClassLookup* pLookup,
361 (const char*) (pDexFile->baseAddr + stringOff);
363 (const DexClassDef*) (pDexFile->baseAddr + classDefOff);
409 DexClassLookup* dexCreateClassLookup(DexFile* pDexFile)
418 assert(pDexFile != NULL);
427 numEntries = dexRoundUpPower2(pDexFile->pHeader->classDefsSize * 2);
437 for (i = 0; i < (int)pDexFile->pHeader->classDefsSize; i++) {
441 pClassDef = dexGetClassDef(pDexFile, i);
442 pString = dexStringByTypeIdx(pDexFile, pClassDef->classIdx);
444 classLookupAdd(pDexFile, pLookup,
445 (u1*)pString - pDexFile->baseAddr,
446 (u1*)pClassDef - pDexFile->baseAddr, &numProbes);
455 pDexFile->pHeader->classDefsSize, numEntries,
456 (100 * pDexFile->pHeader->classDefsSize) / numEntries,
467 void dexFileSetupBasicPointers(DexFile* pDexFile, const u1* data) {
470 pDexFile->baseAddr = data;
471 pDexFile->pHeader = pHeader;
472 pDexFile->pStringIds = (const DexStringId*) (data + pHeader->stringIdsOff);
473 pDexFile->pTypeIds = (const DexTypeId*) (data + pHeader->typeIdsOff);
474 pDexFile->pFieldIds = (const DexFieldId*) (data + pHeader->fieldIdsOff);
475 pDexFile->pMethodIds = (const DexMethodId*) (data + pHeader->methodIdsOff);
476 pDexFile->pProtoIds = (const DexProtoId*) (data + pHeader->protoIdsOff);
477 pDexFile->pClassDefs = (const DexClassDef*) (data + pHeader->classDefsOff);
478 pDexFile->pLinkData = (const DexLink*) (data + pHeader->linkOff);
489 DexFile* pDexFile = NULL;
499 pDexFile = (DexFile*) malloc(sizeof(DexFile));
500 if (pDexFile == NULL)
502 memset(pDexFile, 0, sizeof(DexFile));
515 pDexFile->pOptHeader = (const DexOptHeader*) data;
517 pDexFile->pOptHeader->dexOffset, pDexFile->pOptHeader->flags);
520 if (!dexParseOptData(data, length, pDexFile))
524 data += pDexFile->pOptHeader->dexOffset;
525 length -= pDexFile->pOptHeader->dexOffset;
526 if (pDexFile->pOptHeader->dexLength > length) {
528 pDexFile->pOptHeader->dexLength, (int) length);
531 length = pDexFile->pOptHeader->dexLength;
534 dexFileSetupBasicPointers(pDexFile, data);
535 pHeader = pDexFile->pHeader;
566 const DexOptHeader* pOptHeader = pDexFile->pOptHeader;
623 if (result != 0 && pDexFile != NULL) {
624 dexFileFree(pDexFile);
625 pDexFile = NULL;
627 return pDexFile;
635 void dexFileFree(DexFile* pDexFile)
637 if (pDexFile == NULL)
640 free(pDexFile);
648 const DexClassDef* dexFindClass(const DexFile* pDexFile,
651 const DexClassLookup* pLookup = pDexFile->pClassLookup;
672 str = (const char*) (pDexFile->baseAddr + offset);
675 (pDexFile->baseAddr + pLookup->table[idx].classDefOffset);
796 static const char* readStringIdx(const DexFile* pDexFile,
804 return dexStringById(pDexFile, stringIdx - 1);
812 static const char* readTypeIdx(const DexFile* pDexFile,
820 return dexStringByTypeIdx(pDexFile, typeIdx - 1);
849 const DexFile* pDexFile,
857 const u1 *stream = dexGetDebugInfoStream(pDexFile, pCode);
863 DexProto proto = { pDexFile, protoIdx };
905 name = readStringIdx(pDexFile, &stream);
952 localInReg[reg].name = readStringIdx(pDexFile, &stream);
953 localInReg[reg].descriptor = readTypeIdx(pDexFile, &stream);
956 = readStringIdx(pDexFile, &stream);