MCPcopy Create free account
hub / github.com/Singular/Singular / omtTestRealloc

Function omtTestRealloc

omalloc/omtTestAlloc.c:180–345  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

178}
179
180void omtTestRealloc(omMemCell cell, unsigned long new_spec)
181{
182 void* old_addr = cell->addr;
183 unsigned long old_spec = cell->spec;
184 omBin old_bin = cell->bin;
185 omBin old_orig_bin = cell->orig_bin;
186 size_t old_size = GET_SIZE(old_spec);
187 void* new_addr;
188 omBin new_bin = NULL;
189 omBin new_orig_bin = NULL;
190 size_t new_size = GET_SIZE(new_spec);
191 size_t real_old_size = omSizeOfAddr(old_addr);
192 size_t min_size;
193
194 omtTestDebug(cell);
195
196 if (old_bin != NULL && IS_FREE_BIN(old_spec) &&
197 IS_BIN(new_spec) && ((new_size <= OM_MAX_BLOCK_SIZE) || IS_SPEC_BIN(new_spec)))
198 {
199 if (IS_SPEC_BIN(new_spec))
200 {
201 if (IS_ALIGNED(new_spec))
202 new_bin = omGetAlignedSpecBin(new_size);
203 else
204 new_bin = omGetSpecBin(new_size);
205 }
206 else
207 {
208 if (IS_ALIGNED(new_spec))
209 new_bin = omSmallSize2AlignedBin(new_size);
210 else
211 new_bin = omSmallSize2Bin(new_size);
212 }
213
214 if (IS_STICKY_BIN(new_spec))
215 {
216 new_orig_bin = new_bin;
217 new_bin = omtGetStickyBin(new_bin);
218 }
219
220 if (IS_INLINE(new_spec))
221 {
222 if (IS_ZERO(new_spec)) new_addr = omRealloc0Bin(old_addr, old_bin, new_bin);
223 else new_addr = omReallocBin(old_addr, old_bin, new_bin);
224 }
225 else
226 {
227 if (IS_ZERO(new_spec)) omTypeRealloc0Bin(old_addr, old_bin, void*, new_addr, new_bin);
228 else omTypeReallocBin(old_addr, old_bin, void*, new_addr, new_bin);
229 }
230 }
231 else
232 {
233 if (IS_FREE_SIZE(old_spec))
234 {
235 if (IS_INLINE(new_spec))
236 {
237 if (IS_ZERO(new_spec))

Callers 1

TestReallocFunction · 0.85

Calls 8

omSizeOfAddrFunction · 0.85
omtTestDebugFunction · 0.85
omGetSpecBinFunction · 0.85
omtGetStickyBinFunction · 0.85
omRealloc0SizeFunction · 0.85
omUnGetSpecBinFunction · 0.85
TestAddrContentFunction · 0.85
InitCellAddrContentFunction · 0.85

Tested by

no test coverage detected