Changeset 2063


Ignore:
Timestamp:
Apr 28, 2012, 4:04:15 PM (7 years ago)
Author:
ksherdy
Message:

Refactored div2 hash table logic to avoid is_delimeter test on per occurence basis.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/symbol_table/src/hash_table.hpp

    r2062 r2063  
    397397        // Even
    398398        ///////////////////////////////////////////////////////////////////////////
    399         if (!div2_hash_table::is_delimeter(raw_bytes, index_of_last)) {
    400 
    401             if(lookup(bucket, raw_bytes, idx, lgth, h0, h1, gid)) {
    402                 return gid;
    403             }
    404 
    405             this->pool_and_insert(bucket, raw_bytes, idx, lgth, h0, h1, gid_factory, gid_data, gid);
     399        if(lookup(bucket, raw_bytes, idx, lgth, h0, h1, gid)) {
    406400            return gid;
    407 
    408         } else {
    409 
    410             ///////////////////////////////////////////////////////////////////////////
    411             // Odd
    412             ///////////////////////////////////////////////////////////////////////////
    413             if(this->hash_table_odd.lookup(bucket, raw_bytes, idx, lgth-1, h0, h1, gid)) {
    414                 return gid;
    415             }
    416 
    417             hash_table_odd.pool_and_insert(bucket, raw_bytes, idx, lgth-1, h0, h1, gid_factory, gid_data, gid);
    418             return gid;
    419         }
    420 
     401        } else {
     402
     403                if (!div2_hash_table::is_delimeter(raw_bytes, index_of_last)) {
     404
     405                    this->pool_and_insert(bucket, raw_bytes, idx, lgth, h0, h1, gid_factory, gid_data, gid);
     406                    return gid;
     407                } else {
     408
     409                        ///////////////////////////////////////////////////////////////////////////
     410                        // Odd
     411                        ///////////////////////////////////////////////////////////////////////////
     412                        if(this->hash_table_odd.lookup(bucket, raw_bytes, idx, lgth-1, h0, h1, gid)) {
     413                            return gid;
     414                        }
     415
     416                        hash_table_odd.pool_and_insert(bucket, raw_bytes, idx, lgth-1, h0, h1, gid_factory, gid_data, gid);
     417                        return gid;
     418                }
     419
     420        }
    421421    }
    422422
Note: See TracChangeset for help on using the changeset viewer.