MCPcopy Create free account
hub / github.com/1a1a11a/libCacheSim / mspace_realloc

Function mspace_realloc

libCacheSim/dataStructure/sparsepp/spp_dlalloc.h:3778–3822  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3776}
3777
3778SPP_API inline void* mspace_realloc(mspace msp, void* oldmem, size_t bytes)
3779{
3780 void* mem = 0;
3781 if (oldmem == 0)
3782 mem = mspace_malloc(msp, bytes);
3783 else if (bytes >= MAX_REQUEST)
3784 SPP_MALLOC_FAILURE_ACTION;
3785#ifdef REALLOC_ZERO_BYTES_FREES
3786 else if (bytes == 0)
3787 mspace_free(msp, oldmem);
3788#endif
3789 else
3790 {
3791 size_t nb = request2size(bytes);
3792 mchunkptr oldp = mem2chunk(oldmem);
3793#if ! SPP_FOOTERS
3794 mstate m = (mstate)msp;
3795#else
3796 mstate m = get_mstate_for(oldp);
3797 if (!m->ok_magic())
3798 {
3799 SPP_USAGE_ERROR_ACTION(m, oldmem);
3800 return 0;
3801 }
3802#endif
3803 if (1)
3804 {
3805 mchunkptr newp = m->try_realloc_chunk(oldp, nb, 1);
3806 if (newp != 0)
3807 {
3808 m->check_inuse_chunk(newp);
3809 mem = chunk2mem(newp);
3810 }
3811 else
3812 {
3813 mem = mspace_malloc(m, bytes);
3814 if (mem != 0)
3815 {
3816 size_t oc = oldp->chunksize() - oldp->overhead_for();
3817 memcpy(mem, oldmem, (oc < bytes) ? oc : bytes);
3818 mspace_free(m, oldmem);
3819 }
3820 }
3821 }
3822 }
3823 return mem;
3824}
3825

Callers 1

reallocateMethod · 0.85

Calls 11

mspace_mallocFunction · 0.85
mspace_freeFunction · 0.85
request2sizeFunction · 0.85
mem2chunkFunction · 0.85
get_mstate_forFunction · 0.85
chunk2memFunction · 0.85
ok_magicMethod · 0.80
try_realloc_chunkMethod · 0.80
check_inuse_chunkMethod · 0.80
chunksizeMethod · 0.80
overhead_forMethod · 0.80

Tested by

no test coverage detected