From 2b530f84559dd6a47a379ae9af3a2b03bf4b9dd7 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sat, 1 Aug 2015 10:05:22 -0400 Subject: Split tracer.c into smaller files --- coverage/ctracer/datastack.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 coverage/ctracer/datastack.c (limited to 'coverage/ctracer/datastack.c') diff --git a/coverage/ctracer/datastack.c b/coverage/ctracer/datastack.c new file mode 100644 index 0000000..1d925ad --- /dev/null +++ b/coverage/ctracer/datastack.c @@ -0,0 +1,42 @@ +/* Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 */ +/* For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt */ + +#include "util.h" +#include "datastack.h" + +#define STACK_DELTA 100 + +int +DataStack_init(Stats *pstats, DataStack *pdata_stack) +{ + pdata_stack->depth = -1; + pdata_stack->stack = NULL; + pdata_stack->alloc = 0; + return RET_OK; +} + +void +DataStack_dealloc(Stats *pstats, DataStack *pdata_stack) +{ + PyMem_Free(pdata_stack->stack); +} + +int +DataStack_grow(Stats *pstats, DataStack *pdata_stack) +{ + pdata_stack->depth++; + if (pdata_stack->depth >= pdata_stack->alloc) { + STATS( pstats->stack_reallocs++; ) + /* We've outgrown our data_stack array: make it bigger. */ + int bigger = pdata_stack->alloc + STACK_DELTA; + DataStackEntry * bigger_data_stack = PyMem_Realloc(pdata_stack->stack, bigger * sizeof(DataStackEntry)); + if (bigger_data_stack == NULL) { + PyErr_NoMemory(); + pdata_stack->depth--; + return RET_ERROR; + } + pdata_stack->stack = bigger_data_stack; + pdata_stack->alloc = bigger; + } + return RET_OK; +} -- cgit v1.2.1