Ignore:
Timestamp:
Aug 13, 2002, 12:39:10 AM (23 years ago)
Author:
mjs
Message:

Small speed improvement. 3% faster on cvs-js-performance, no
measurable change on cvs-static-urls.

  • kjs/collector.cpp: (Collector::collect): Combine 3 loops over all objects into one, to reduce flat time and improve locality of reference.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/collector.cpp

    r1791 r1806  
    208208  while (block) {
    209209    ValueImp **r = (ValueImp**)block->mem;
     210      int del = 0;
    210211    for (int i = 0; i < block->size; i++, r++) {
    211212      ValueImp *imp = (*r);
     
    218219        imp->~ValueImp();
    219220      }
    220     }
    221     block = block->next;
    222   }
    223 
    224   // 2nd step: free memory
    225   block = root;
    226   while (block) {
    227     ValueImp **r = (ValueImp**)block->mem;
    228     int del = 0;
    229     for (int i = 0; i < block->size; i++, r++) {
    230       ValueImp *imp = (*r);
    231221      if (imp && (imp->_flags & ValueImp::VI_DESTRUCTED) != 0) {
    232222        free(imp);
     
    237227    filled -= del;
    238228    block->filled -= del;
    239     block = block->next;
    240229    if (del)
    241230      deleted = true;
    242   }
    243 
    244   // delete the empty containers
    245   block = root;
    246   while (block) {
    247231    CollectorBlock *next = block->next;
    248232    if (block->filled == 0) {
     
    260244    block = next;
    261245  }
     246
    262247#if 0
    263248  // This is useful to track down memory leaks
Note: See TracChangeset for help on using the changeset viewer.