From patchwork Tue Feb 11 01:25:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D7842: nodemap: use an explicit "Block" object in the reference implementation From: phabricator X-Patchwork-Id: 45127 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Tue, 11 Feb 2020 01:25:06 +0000 Closed by commit rHG7762a295fd4d: nodemap: use an explicit "Block" 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 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)