MCPcopy Index your code
hub / github.com/dcodeIO/webassembly / mspace_realloc

Function mspace_realloc

lib/dlmalloc/malloc.c:5730–5773  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5728}
5729
5730void* mspace_realloc(mspace msp, void* oldmem, size_t bytes) {
5731 void* mem = 0;
5732 if (oldmem == 0) {
5733 mem = mspace_malloc(msp, bytes);
5734 }
5735 else if (bytes >= MAX_REQUEST) {
5736 MALLOC_FAILURE_ACTION;
5737 }
5738#ifdef REALLOC_ZERO_BYTES_FREES
5739 else if (bytes == 0) {
5740 mspace_free(msp, oldmem);
5741 }
5742#endif /* REALLOC_ZERO_BYTES_FREES */
5743 else {
5744 size_t nb = request2size(bytes);
5745 mchunkptr oldp = mem2chunk(oldmem);
5746#if ! FOOTERS
5747 mstate m = (mstate)msp;
5748#else /* FOOTERS */
5749 mstate m = get_mstate_for(oldp);
5750 if (!ok_magic(m)) {
5751 USAGE_ERROR_ACTION(m, oldmem);
5752 return 0;
5753 }
5754#endif /* FOOTERS */
5755 if (!PREACTION(m)) {
5756 mchunkptr newp = try_realloc_chunk(m, oldp, nb, 1);
5757 POSTACTION(m);
5758 if (newp != 0) {
5759 check_inuse_chunk(m, newp);
5760 mem = chunk2mem(newp);
5761 }
5762 else {
5763 mem = mspace_malloc(m, bytes);
5764 if (mem != 0) {
5765 size_t oc = chunksize(oldp) - overhead_for(oldp);
5766 memcpy(mem, oldmem, (oc < bytes)? oc : bytes);
5767 mspace_free(m, oldmem);
5768 }
5769 }
5770 }
5771 }
5772 return mem;
5773}
5774
5775void* mspace_realloc_in_place(mspace msp, void* oldmem, size_t bytes) {
5776 void* mem = 0;

Callers

nothing calls this directly

Calls 4

mspace_mallocFunction · 0.85
try_realloc_chunkFunction · 0.85
memcpyFunction · 0.85
mspace_freeFunction · 0.85

Tested by

no test coverage detected