diff Python/pyarena.c @ 36720:115960640f25 legacy-trunk

Tabify
author Jeremy Hylton <jeremy@alum.mit.edu>
date Tue, 28 Feb 2006 18:29:00 +0000
parents 71d873054d29
children 5f3822c2e731
line wrap: on
line diff
--- a/Python/pyarena.c	Tue Feb 28 18:05:43 2006 +0000
+++ b/Python/pyarena.c	Tue Feb 28 18:29:00 2006 +0000
@@ -4,8 +4,8 @@
 /* An arena list is a linked list that can store PyObjects. */
 
 typedef struct _arena_list {
-    struct _arena_list *al_next;
-    void *al_pointer;
+	struct _arena_list *al_next;
+	void *al_pointer;
 } PyArenaList;
 
 /* A simple arena block structure */
@@ -13,134 +13,137 @@
 
 #define DEFAULT_BLOCK_SIZE 8192
 typedef struct _block {
-    size_t ab_size;
-    size_t ab_offset;
-    struct _block *ab_next;
-    void *ab_mem;
+	size_t ab_size;
+	size_t ab_offset;
+	struct _block *ab_next;
+	void *ab_mem;
 } block;
 
 struct _arena {
-    block *a_head;
-    block *a_cur;
-    PyArenaList *a_object_head;
-    PyArenaList *a_object_tail;
+	block *a_head;
+	block *a_cur;
+	PyArenaList *a_object_head;
+	PyArenaList *a_object_tail;
 };
 
 static PyArenaList*
 PyArenaList_New(void) 
 {
-  PyArenaList *alist = (PyArenaList *)malloc(sizeof(PyArenaList));
-  if (!alist)
-    return NULL;
+	PyArenaList *alist = (PyArenaList *)malloc(sizeof(PyArenaList));
+	if (!alist)
+		return NULL;
 
-  alist->al_next = NULL;
-  alist->al_pointer = NULL;
-  return alist;
+	alist->al_next = NULL;
+	alist->al_pointer = NULL;
+	return alist;
 }
 
 static void
 PyArenaList_FreeObject(PyArenaList *alist) 
 {
-    while (alist) {
-        PyArenaList *prev;
-        Py_XDECREF((PyObject *)alist->al_pointer);
-        alist->al_pointer = NULL;
-        prev = alist;
-        alist = alist->al_next;
-        free(prev);
-    }
+	while (alist) {
+		PyArenaList *prev;
+		Py_XDECREF((PyObject *)alist->al_pointer);
+		alist->al_pointer = NULL;
+		prev = alist;
+		alist = alist->al_next;
+		free(prev);
+	}
 }
 
 static block *
 block_new(size_t size)
 {
-    /* Allocate header and block as one unit.  ab_mem points just past header. */
-    block *b = (block *)malloc(sizeof(block) + size);
-    if (!b)
-        return NULL;
-    b->ab_size = size;
-    b->ab_mem = (void *)(b + 1);
-    b->ab_next = NULL;
-    b->ab_offset = 0;
-    return b;
+	/* Allocate header and block as one unit. 
+	   ab_mem points just past header. */
+	block *b = (block *)malloc(sizeof(block) + size);
+	if (!b)
+		return NULL;
+	b->ab_size = size;
+	b->ab_mem = (void *)(b + 1);
+	b->ab_next = NULL;
+	b->ab_offset = 0;
+	return b;
 }
 
 static void
 block_free(block *b) {
-    while (b) {
-        block *next = b->ab_next;
-        free(b);
-        b = next;
-    }
+	while (b) {
+		block *next = b->ab_next;
+		free(b);
+		b = next;
+	}
 }
 
 static void *
 block_alloc(block *b, size_t size)
 {
-    void *p;
-    assert(b);
-    if (b->ab_offset + size > b->ab_size) {
-        /* If we need to allocate more memory than will fit in the default
-           block, allocate a one-off block that is exactly the right size. */
-        /* TODO(jhylton): Think more about space waste at end of block */
-        block *new = block_new(
-            size < DEFAULT_BLOCK_SIZE ? DEFAULT_BLOCK_SIZE : size);
-        if (!new)
-            return NULL;
-        assert(!b->ab_next);
-        b->ab_next = new;
-        b = new;
-    }
+	void *p;
+	assert(b);
+	if (b->ab_offset + size > b->ab_size) {
+		/* If we need to allocate more memory than will fit in
+		   the default block, allocate a one-off block that is
+		   exactly the right size. */
+		/* TODO(jhylton): Think about space waste at end of block */
+		block *new = block_new(
+				size < DEFAULT_BLOCK_SIZE ?
+				DEFAULT_BLOCK_SIZE : size);
+		if (!new)
+			return NULL;
+		assert(!b->ab_next);
+		b->ab_next = new;
+		b = new;
+	}
 
-    assert(b->ab_offset + size <= b->ab_size);
-    p = (void *)(((char *)b->ab_mem) + b->ab_offset);
-    b->ab_offset += size;
-    return p;
+	assert(b->ab_offset + size <= b->ab_size);
+	p = (void *)(((char *)b->ab_mem) + b->ab_offset);
+	b->ab_offset += size;
+	return p;
 }
 
 PyArena *
 PyArena_New()
 {
-  PyArena* arena = (PyArena *)malloc(sizeof(PyArena));
-  if (!arena)
-    return NULL;
+	PyArena* arena = (PyArena *)malloc(sizeof(PyArena));
+	if (!arena)
+		return NULL;
 
-  arena->a_head = block_new(DEFAULT_BLOCK_SIZE);
-  arena->a_cur = arena->a_head;
-  arena->a_object_head = PyArenaList_New();
-  arena->a_object_tail = arena->a_object_head;
-  return arena;
+	arena->a_head = block_new(DEFAULT_BLOCK_SIZE);
+	arena->a_cur = arena->a_head;
+	arena->a_object_head = PyArenaList_New();
+	arena->a_object_tail = arena->a_object_head;
+	return arena;
 }
 
 void
 PyArena_Free(PyArena *arena)
 {
-    assert(arena);
-    block_free(arena->a_head);
-    PyArenaList_FreeObject(arena->a_object_head);
-    free(arena);
+	assert(arena);
+	block_free(arena->a_head);
+	PyArenaList_FreeObject(arena->a_object_head);
+	free(arena);
 }
 
 void *
 PyArena_Malloc(PyArena *arena, size_t size) 
 {
-    void *p = block_alloc(arena->a_cur, size);
-    if (!p)
-        return NULL;
-    /* Reset cur if we allocated a new block. */
-    if (arena->a_cur->ab_next) {
-        arena->a_cur = arena->a_cur->ab_next;
-    }
-    return p;
+	void *p = block_alloc(arena->a_cur, size);
+	if (!p)
+		return NULL;
+	/* Reset cur if we allocated a new block. */
+	if (arena->a_cur->ab_next) {
+		arena->a_cur = arena->a_cur->ab_next;
+	}
+	return p;
 }
 
 int
 PyArena_AddPyObject(PyArena *arena, PyObject *pointer) 
 {
-  PyArenaList *tail = arena->a_object_tail;
-  assert(pointer);
-  tail->al_next = PyArenaList_New();
-  tail->al_pointer = pointer;
-  arena->a_object_tail = tail->al_next;
-  return 1;
+	PyArenaList *tail = arena->a_object_tail;
+	assert(pointer);
+	tail->al_next = PyArenaList_New();
+	tail->al_pointer = pointer;
+	arena->a_object_tail = tail->al_next;
+	return 1;
 }