Author: Remi Meier Branch: c7 Changeset: r678:7743314d82eb Date: 2014-01-27 14:37 +0100 http://bitbucket.org/pypy/stmgc/changeset/7743314d82eb/
Log: remove some read barriers from duhton in case the field that is read is actually immutable (hopefully) diff --git a/c7/largemalloc.c b/c7/largemalloc.c --- a/c7/largemalloc.c +++ b/c7/largemalloc.c @@ -99,8 +99,10 @@ spans over. the CHUNK_HEADER is not included in the calculations */ mchunk_t *chunk = data2chunk((char*)data); *start = (((char*)data) - get_thread_base(0)) / 4096UL; + assert(*start < NB_PAGES); size_t offset_into_page = ((uintptr_t)data) & 4095UL; // % 4096 *num = ((chunk->size & ~FLAG_SORTED) + offset_into_page + 4095) / 4096UL; + assert(*num < NB_PAGES); } size_t _stm_data_size(struct object_s *data) diff --git a/duhton/consobject.c b/duhton/consobject.c --- a/duhton/consobject.c +++ b/duhton/consobject.c @@ -12,7 +12,7 @@ DuObject *p; printf("( "); while (1) { - _du_read1(ob); + /* _du_read1(ob); IMMUTABLE */ _du_save1(ob); Du_Print(ob->car, 0); _du_restore1(ob); @@ -33,7 +33,7 @@ DuObject *cons_eval(DuConsObject *ob, DuObject *locals) { - _du_read1(ob); + /* _du_read1(ob); IMMUTABLE */ return _DuFrame_EvalCall(locals, ob->car, ob->cdr, 1); } @@ -59,14 +59,14 @@ DuObject *DuCons_Car(DuObject *cons) { DuCons_Ensure("DuCons_Car", cons); - _du_read1(cons); + /* _du_read1(cons); IMMUTABLE */ return ((DuConsObject *)cons)->car; } DuObject *DuCons_Cdr(DuObject *cons) { DuCons_Ensure("DuCons_Cdr", cons); - _du_read1(cons); + /* _du_read1(cons); IMMUTABLE */ return ((DuConsObject *)cons)->cdr; } diff --git a/duhton/demo/container_transaction.duh b/duhton/demo/container_transaction.duh --- a/duhton/demo/container_transaction.duh +++ b/duhton/demo/container_transaction.duh @@ -3,11 +3,11 @@ (defun g (thread n) (set c (+ (get c) 1)) - (if (> (get c) 20000) + (if (> (get c) 200000) (print (quote overflow) (get c)) - (if (< n 10000) + (if (< n 100000) (transaction f thread (+ n 1)) - (if (< (get c) 20000) + (if (< (get c) 200000) (print (quote not-enough)) (print (quote ok)))))) diff --git a/duhton/intobject.c b/duhton/intobject.c --- a/duhton/intobject.c +++ b/duhton/intobject.c @@ -7,13 +7,13 @@ void int_print(DuIntObject *ob) { - _du_read1(ob); + /* _du_read1(ob); IMMUTABLE */ printf("%d", ob->ob_intval); } int int_is_true(DuIntObject *ob) { - _du_read1(ob); + /* _du_read1(ob); IMMUTABLE */ return ob->ob_intval; } @@ -38,7 +38,7 @@ int DuInt_AsInt(DuObject *ob) { DuInt_Ensure("DuInt_AsInt", ob); - _du_read1(ob); + /* _du_read1(ob); IMMUTABLE */ return ((DuIntObject *)ob)->ob_intval; } diff --git a/duhton/symbol.c b/duhton/symbol.c --- a/duhton/symbol.c +++ b/duhton/symbol.c @@ -21,7 +21,7 @@ void symbol_print(DuSymbolObject *ob) { - _du_read1(ob); + /* _du_read1(ob); IMMUTABLE name */ printf("'%s'", ob->name); } @@ -66,6 +66,7 @@ DuObject *DuSymbol_FromString(const char *name) { DuSymbolObject *p, *head = _Du_AllSymbols; + _du_read1(head); for (p=head; p != NULL; p=p->next) { _du_read1(p); if (strcmp(name, p->name) == 0) { @@ -86,7 +87,7 @@ char *DuSymbol_AsString(DuObject *ob) { DuSymbol_Ensure("DuSymbol_AsString", ob); - _du_read1(ob); + /* _du_read1(ob); IMMUTABLE name */ return ((DuSymbolObject *)ob)->name; } _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit