From bc3e216f6300f78f4b5cc21c0ee61a53a6b4bcdc Mon Sep 17 00:00:00 2001 From: Abdulaziz Ghuloum Date: Fri, 29 Jun 2007 01:53:18 +0300 Subject: [PATCH] * transition to non-consing add_one_tconc is done. * Performance gains for making a hash table of 10,000,000 elements are: Before: 47secs Now: 17secs. --- bin/ikarus | Bin 63636 -> 63636 bytes bin/ikarus-collect.c | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bin/ikarus b/bin/ikarus index 8381c867b7b107f2602176b01731c96382bd23a6..060bfd59b8c5011f8997a57a1d7e24206da7d1f3 100755 GIT binary patch delta 7730 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 delta 7847 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 KuK0J4wf!%LhtmE4 diff --git a/bin/ikarus-collect.c b/bin/ikarus-collect.c index d1c0cee..4aaf803 100644 --- a/bin/ikarus-collect.c +++ b/bin/ikarus-collect.c @@ -1771,13 +1771,14 @@ fix_new_pages(gc_t* gc){ static void -add_one_tconc(ikpcb* pcb, ikp tcbucket){ +add_one_tconc(ikpcb* pcb, ikp p){ + ikp tcbucket = ref(p,0); ikp tc = ref(tcbucket, off_tcbucket_tconc); assert(tagof(tc) == pair_tag); ikp d = ref(tc, off_cdr); assert(tagof(d) == pair_tag); /* Wrong MR! */ - ikp new_pair = ik_alloc(pcb, pair_size) + pair_tag; + ikp new_pair = p + pair_tag; //ik_alloc(pcb, pair_size) + pair_tag; ref(d, off_car) = tcbucket; ref(d, off_cdr) = new_pair; ref(new_pair, off_car) = false_object; @@ -1798,7 +1799,7 @@ gc_add_tconcs(gc_t* gc){ ikp p = gc->tconc_base; ikp q = gc->tconc_ap; while(p < q){ - add_one_tconc(pcb, ref(p,0)); + add_one_tconc(pcb, p); p += 2*wordsize; } } @@ -1807,8 +1808,7 @@ gc_add_tconcs(gc_t* gc){ ikp p = qu->base; ikp q = p + qu->size; while(p < q){ - add_one_tconc(pcb, ref(p,0)); - ref(p,0) = 0; + add_one_tconc(pcb, p); p += 2*wordsize; } ikpages* next = qu->next;