Home | History | Annotate | Download | only in alloc

Lines Matching refs:table

53     LargeHeapRefTable *table;
58 /* Make sure that a table with a free slot is
62 table = *tableP;
68 while (table != NULL && heapRefTableIsFull(&table->refs)) {
69 prevTable = table;
70 table = table->next;
72 if (table != NULL) {
74 /* Move the table to the head of the list.
76 prevTable->next = table->next;
77 table->next = *tableP;
78 *tableP = table;
89 /* Allocate a new table.
91 table = calloc(1, sizeof(LargeHeapRefTable));
92 if (table == NULL) {
93 LOGE_HEAP("Can't allocate a new large ref table\n");
96 if (!dvmInitReferenceTable(&table->refs,
99 LOGE_HEAP("Can't initialize a new large ref table\n");
100 dvmHeapHeapTableFree(table);
106 table->next = *tableP;
107 *tableP = table;
112 assert(table == *tableP);
113 assert(table != NULL);
114 assert(!heapRefTableIsFull(&table->refs));
115 *table->refs.nextEntry++ = ref;
122 LargeHeapRefTable *table;
126 table = calloc(1, sizeof(LargeHeapRefTable));
127 if (table == NULL) {
128 LOGE_HEAP("Can't allocate a new large ref table\n");
131 table->refs = *refs;
133 /* Insert the table into the list.
135 table->next = *tableP;
136 *tableP = table;
143 void dvmHeapFreeLargeTable(LargeHeapRefTable *table)
145 while (table != NULL) {
146 LargeHeapRefTable *next = table->next;
147 dvmHeapFreeHeapRefTable(&table->refs);
148 dvmHeapHeapTableFree(table);
149 table = next;
155 LargeHeapRefTable *table;
161 table = *pTable;
162 if (table != NULL) {
163 HeapRefTable *refs = &table->refs;
165 /* We should never have an empty table node in the list.
173 /* If this was the last entry in the table node,
176 if (refs->nextEntry == refs->table) {
177 *pTable = table->next;
179 dvmHeapHeapTableFree(table);
186 void dvmHeapMarkLargeTableRefs(LargeHeapRefTable *table)
188 while (table != NULL) {
191 ref = table->refs.table;
192 lastRef = table->refs.nextEntry;
196 table = table->next;