• Home
  • Raw
  • Download

Lines Matching refs:pRef

25 bool dvmInitIndirectRefTable(IndirectRefTable* pRef, int initialCount,  in dvmInitIndirectRefTable()  argument
32 pRef->table = (Object**) malloc(initialCount * sizeof(Object*)); in dvmInitIndirectRefTable()
33 if (pRef->table == NULL) in dvmInitIndirectRefTable()
36 memset(pRef->table, 0xd1, initialCount * sizeof(Object*)); in dvmInitIndirectRefTable()
39 pRef->slotData = in dvmInitIndirectRefTable()
41 if (pRef->slotData == NULL) in dvmInitIndirectRefTable()
44 pRef->segmentState.all = IRT_FIRST_SEGMENT; in dvmInitIndirectRefTable()
45 pRef->allocEntries = initialCount; in dvmInitIndirectRefTable()
46 pRef->maxEntries = maxCount; in dvmInitIndirectRefTable()
47 pRef->kind = kind; in dvmInitIndirectRefTable()
55 void dvmClearIndirectRefTable(IndirectRefTable* pRef) in dvmClearIndirectRefTable() argument
57 free(pRef->table); in dvmClearIndirectRefTable()
58 pRef->table = NULL; in dvmClearIndirectRefTable()
59 pRef->allocEntries = pRef->maxEntries = -1; in dvmClearIndirectRefTable()
68 bool dvmPopIndirectRefTableSegmentCheck(IndirectRefTable* pRef, u4 cookie) in dvmPopIndirectRefTableSegmentCheck() argument
77 if (sst.parts.topIndex > pRef->segmentState.parts.topIndex) { in dvmPopIndirectRefTableSegmentCheck()
79 pRef->segmentState.parts.topIndex, sst.parts.topIndex); in dvmPopIndirectRefTableSegmentCheck()
89 pRef, pRef->kind, sst.parts.topIndex, sst.parts.numHoles); in dvmPopIndirectRefTableSegmentCheck()
97 static bool checkEntry(IndirectRefTable* pRef, IndirectRef iref, int idx) in checkEntry() argument
99 Object* obj = pRef->table[idx]; in checkEntry()
100 IndirectRef checkRef = dvmObjectToIndirectRef(pRef, obj, idx, pRef->kind); in checkEntry()
103 pRef, pRef->kind, iref, checkRef); in checkEntry()
115 static inline void updateSlotAdd(IndirectRefTable* pRef, Object* obj, int slot) in updateSlotAdd() argument
117 if (pRef->slotData != NULL) { in updateSlotAdd()
118 IndirectRefSlot* pSlot = &pRef->slotData[slot]; in updateSlotAdd()
129 static inline void updateSlotRemove(IndirectRefTable* pRef, int slot) in updateSlotRemove() argument
131 if (pRef->slotData != NULL) { in updateSlotRemove()
141 IndirectRef dvmAddToIndirectRefTable(IndirectRefTable* pRef, u4 cookie, in dvmAddToIndirectRefTable() argument
146 int topIndex = pRef->segmentState.parts.topIndex; in dvmAddToIndirectRefTable()
150 assert(pRef->table != NULL); in dvmAddToIndirectRefTable()
151 assert(pRef->allocEntries <= pRef->maxEntries); in dvmAddToIndirectRefTable()
152 assert(pRef->segmentState.parts.numHoles >= prevState.parts.numHoles); in dvmAddToIndirectRefTable()
154 if (topIndex == pRef->allocEntries) { in dvmAddToIndirectRefTable()
156 if (topIndex == pRef->maxEntries) { in dvmAddToIndirectRefTable()
157 LOGW("IndirectRefTable overflow (max=%d)\n", pRef->maxEntries); in dvmAddToIndirectRefTable()
164 newSize = pRef->allocEntries * 2; in dvmAddToIndirectRefTable()
165 if (newSize > pRef->maxEntries) in dvmAddToIndirectRefTable()
166 newSize = pRef->maxEntries; in dvmAddToIndirectRefTable()
167 assert(newSize > pRef->allocEntries); in dvmAddToIndirectRefTable()
169 newTable = (Object**) realloc(pRef->table, newSize * sizeof(Object*)); in dvmAddToIndirectRefTable()
172 pRef->allocEntries, newSize, pRef->maxEntries); in dvmAddToIndirectRefTable()
176 pRef, pRef->allocEntries, newSize, pRef->maxEntries); in dvmAddToIndirectRefTable()
179 pRef->table = newTable; in dvmAddToIndirectRefTable()
180 pRef->allocEntries = newSize; in dvmAddToIndirectRefTable()
190 int numHoles = pRef->segmentState.parts.numHoles - prevState.parts.numHoles; in dvmAddToIndirectRefTable()
194 Object** pScan = &pRef->table[topIndex - 1]; in dvmAddToIndirectRefTable()
197 assert(pScan >= pRef->table + prevState.parts.topIndex); in dvmAddToIndirectRefTable()
199 updateSlotAdd(pRef, obj, pScan - pRef->table); in dvmAddToIndirectRefTable()
200 result = dvmObjectToIndirectRef(pRef, obj, pScan - pRef->table, in dvmAddToIndirectRefTable()
201 pRef->kind); in dvmAddToIndirectRefTable()
203 pRef->segmentState.parts.numHoles--; in dvmAddToIndirectRefTable()
206 updateSlotAdd(pRef, obj, topIndex); in dvmAddToIndirectRefTable()
207 result = dvmObjectToIndirectRef(pRef, obj, topIndex, pRef->kind); in dvmAddToIndirectRefTable()
208 pRef->table[topIndex++] = obj; in dvmAddToIndirectRefTable()
209 pRef->segmentState.parts.topIndex = topIndex; in dvmAddToIndirectRefTable()
221 bool dvmGetFromIndirectRefTableCheck(IndirectRefTable* pRef, IndirectRef iref) in dvmGetFromIndirectRefTableCheck() argument
228 int topIndex = pRef->segmentState.parts.topIndex; in dvmGetFromIndirectRefTableCheck()
242 Object* obj = pRef->table[idx]; in dvmGetFromIndirectRefTableCheck()
247 if (!checkEntry(pRef, iref, idx)) in dvmGetFromIndirectRefTableCheck()
266 bool dvmRemoveFromIndirectRefTable(IndirectRefTable* pRef, u4 cookie, in dvmRemoveFromIndirectRefTable() argument
271 int topIndex = pRef->segmentState.parts.topIndex; in dvmRemoveFromIndirectRefTable()
274 assert(pRef->table != NULL); in dvmRemoveFromIndirectRefTable()
275 assert(pRef->allocEntries <= pRef->maxEntries); in dvmRemoveFromIndirectRefTable()
276 assert(pRef->segmentState.parts.numHoles >= prevState.parts.numHoles); in dvmRemoveFromIndirectRefTable()
297 if (!checkEntry(pRef, iref, idx)) in dvmRemoveFromIndirectRefTable()
299 updateSlotRemove(pRef, idx); in dvmRemoveFromIndirectRefTable()
302 pRef->table[idx] = (IndirectRef) 0xd3d3d3d3; in dvmRemoveFromIndirectRefTable()
306 pRef->segmentState.parts.numHoles - prevState.parts.numHoles; in dvmRemoveFromIndirectRefTable()
310 topIndex-1, cookie, pRef->table[topIndex-1]); in dvmRemoveFromIndirectRefTable()
311 if (pRef->table[topIndex-1] != NULL) in dvmRemoveFromIndirectRefTable()
316 pRef->segmentState.parts.numHoles = in dvmRemoveFromIndirectRefTable()
318 pRef->segmentState.parts.topIndex = topIndex; in dvmRemoveFromIndirectRefTable()
320 pRef->segmentState.parts.topIndex = topIndex-1; in dvmRemoveFromIndirectRefTable()
329 if (pRef->table[idx] == NULL) { in dvmRemoveFromIndirectRefTable()
333 if (!checkEntry(pRef, iref, idx)) in dvmRemoveFromIndirectRefTable()
335 updateSlotRemove(pRef, idx); in dvmRemoveFromIndirectRefTable()
337 pRef->table[idx] = NULL; in dvmRemoveFromIndirectRefTable()
338 pRef->segmentState.parts.numHoles++; in dvmRemoveFromIndirectRefTable()
340 idx, pRef->segmentState.parts.numHoles); in dvmRemoveFromIndirectRefTable()
404 void dvmDumpIndirectRefTable(const IndirectRefTable* pRef, const char* descr) in dvmDumpIndirectRefTable() argument
407 int count = dvmIndirectRefTableEntries(pRef); in dvmDumpIndirectRefTable()
422 refs = pRef->table; // use unsorted list in dvmDumpIndirectRefTable()
450 memcpy(tableCopy, pRef->table, sizeof(Object*) * count); in dvmDumpIndirectRefTable()