* 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.
This commit is contained in:
Abdulaziz Ghuloum 2007-06-29 01:53:18 +03:00
parent 5358680912
commit bc3e216f63
2 changed files with 5 additions and 5 deletions

Binary file not shown.

View File

@ -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;