Patchwork D7842: nodemap: use an explicit "Block" object in the reference implementation

login
register
mail settings
Submitter phabricator
Date Feb. 11, 2020, 1:25 a.m.
Message ID <b598f783252062a33824d6599250b60c@localhost.localdomain>
Download mbox | patch
Permalink /patch/45127/
State Not Applicable
Headers show

Comments

phabricator - Feb. 11, 2020, 1:25 a.m.
Closed by commit rHG7762a295fd4d: nodemap: use an explicit &quot;Block&quot; object in the reference implementation (authored by marmoute).
This revision was automatically updated to reflect the committed changes.
This revision was not accepted when it landed; it landed in state "Needs Review".

CHANGED PRIOR TO COMMIT
  https://phab.mercurial-scm.org/D7842?vs=19890&id=20110#toc

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D7842?vs=19890&id=20110

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7842/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D7842

AFFECTED FILES
  mercurial/revlogutils/nodemap.py

CHANGE DETAILS




To: marmoute, #hg-reviewers
Cc: durin42, mercurial-devel

Patch

diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py
--- a/mercurial/revlogutils/nodemap.py
+++ b/mercurial/revlogutils/nodemap.py
@@ -216,6 +216,12 @@ 
     return int(hex_digit, 16)
 
 
+class Block(dict):
+    """represent a block of the Trie
+
+    contains up to 16 entry indexed from 0 to 15"""
+
+
 def _build_trie(index):
     """build a nodemap trie
 
@@ -224,7 +230,7 @@ 
     Each block is a dictionary with keys in `[0, 15]`. Values are either
     another block or a revision number.
     """
-    root = {}
+    root = Block()
     for rev in range(len(index)):
         hex = nodemod.hex(index[rev][7])
         _insert_into_block(index, 0, root, rev, hex)
@@ -253,7 +259,7 @@ 
         # vertices to fit both entry.
         other_hex = nodemod.hex(index[entry][7])
         other_rev = entry
-        new = {}
+        new = Block()
         block[hex_digit] = new
         _insert_into_block(index, level + 1, new, other_rev, other_hex)
         _insert_into_block(index, level + 1, new, current_rev, current_hex)