[pypy-commit] stmgc default: Shrink the init_prebuilt_xxx functions by using stm_setup_prebuilt(). Yay.
arigo
noreply at buildbot.pypy.org
Sun Mar 2 20:29:17 CET 2014
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r930:8852b39a1b63
Date: 2014-03-02 20:29 +0100
http://bitbucket.org/pypy/stmgc/changeset/8852b39a1b63/
Log: Shrink the init_prebuilt_xxx functions by using
stm_setup_prebuilt(). Yay.
diff --git a/duhton/duhton.h b/duhton/duhton.h
--- a/duhton/duhton.h
+++ b/duhton/duhton.h
@@ -186,6 +186,8 @@
#define _du_read1(p1) stm_read((object_t *)(p1))
#define _du_write1(p1) stm_write((object_t *)(p1))
+#define INIT_PREBUILT(p) ((typeof(p))stm_setup_prebuilt((object_t *)(p)))
+
#ifndef NDEBUG
# define _check_not_free(ob) \
diff --git a/duhton/frame.c b/duhton/frame.c
--- a/duhton/frame.c
+++ b/duhton/frame.c
@@ -47,18 +47,12 @@
void init_prebuilt_frame_objects(void)
{
- du_empty_framenode = (DuFrameNodeObject *)
- _stm_allocate_old(sizeof(DuFrameNodeObject));
- du_empty_framenode->ob_base.type_id = DUTYPE_FRAMENODE;
- du_empty_framenode->ob_count = 0;
+ static DuFrameNodeObject empty_framenode = { {.type_id=DUTYPE_FRAMENODE} };
+ static DuFrameObject g = { {.type_id=DUTYPE_FRAME},
+ .ob_nodes=&empty_framenode };
- DuFrameObject *g = (DuFrameObject *)
- _stm_allocate_old(sizeof(DuFrameObject));
- g->ob_base.type_id = DUTYPE_FRAME;
- g->ob_nodes = du_empty_framenode;
- Du_Globals = (DuObject *)g;
-
- _du_save2(du_empty_framenode, Du_Globals);
+ du_empty_framenode = INIT_PREBUILT(&empty_framenode);
+ Du_Globals = (DuObject *)INIT_PREBUILT(&g);
}
DuObject *DuFrame_New()
diff --git a/duhton/listobject.c b/duhton/listobject.c
--- a/duhton/listobject.c
+++ b/duhton/listobject.c
@@ -205,12 +205,8 @@
void init_prebuilt_list_objects(void)
{
- du_empty_tuple = (DuTupleObject *)
- _stm_allocate_old(sizeof(DuTupleObject));
- du_empty_tuple->ob_base.type_id = DUTYPE_TUPLE;
- du_empty_tuple->ob_count = 0;
- du_empty_tuple->ob_capacity = 0;
- _du_save1(du_empty_tuple);
+ static DuTupleObject empty_tuple = { { { }, DUTYPE_TUPLE } };
+ du_empty_tuple = INIT_PREBUILT(&empty_tuple);
}
DuObject *DuList_New()
diff --git a/duhton/object.c b/duhton/object.c
--- a/duhton/object.c
+++ b/duhton/object.c
@@ -69,9 +69,8 @@
void init_prebuilt_object_objects(void)
{
- Du_None = (DuObject *)_stm_allocate_old(sizeof(DuObject));
- Du_None->type_id = DUTYPE_NONE;
- _du_save1(Du_None);
+ static DuObject none = { { }, DUTYPE_NONE };
+ Du_None = INIT_PREBUILT(&none);
}
void Du_FatalError(char *msg, ...)
diff --git a/duhton/symbol.c b/duhton/symbol.c
--- a/duhton/symbol.c
+++ b/duhton/symbol.c
@@ -55,13 +55,8 @@
void init_prebuilt_symbol_objects(void)
{
- _Du_AllSymbols = (DuSymbolObject *)
- _stm_allocate_old(sizeof(DuSymbolObject));
- _Du_AllSymbols->ob_base.type_id = DUTYPE_SYMBOL;
- _Du_AllSymbols->myid = 0;
- _Du_AllSymbols->name = "";
- _Du_AllSymbols->next = NULL;
- _du_save1(_Du_AllSymbols);
+ static DuSymbolObject allsymbols = { {.type_id=DUTYPE_SYMBOL}, .name="" };
+ _Du_AllSymbols = INIT_PREBUILT(&allsymbols);
}
DuObject *DuSymbol_FromString(const char *name)
diff --git a/duhton/transaction.c b/duhton/transaction.c
--- a/duhton/transaction.c
+++ b/duhton/transaction.c
@@ -7,15 +7,11 @@
void init_prebuilt_transaction_objects(void)
{
+ static DuConsObject pending = { {.type_id = DUTYPE_CONS} };
+ du_pending_transactions = INIT_PREBUILT(&pending);
+
assert(Du_None); /* already created */
-
- du_pending_transactions = (DuConsObject *)
- _stm_allocate_old(sizeof(DuConsObject));
- du_pending_transactions->ob_base.type_id = DUTYPE_CONS;
- du_pending_transactions->car = NULL;
du_pending_transactions->cdr = Du_None;
-
- _du_save1(du_pending_transactions);
};
static pthread_mutex_t mutex_sleep = PTHREAD_MUTEX_INITIALIZER;
More information about the pypy-commit
mailing list