<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 14, 2015 at 11:40 AM, Richard Smith <span dir="ltr"><<a href="mailto:richard-llvm@metafoo.co.uk" target="_blank">richard-llvm@metafoo.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rsmith<br>
Date: Tue Jul 14 13:40:59 2015<br>
New Revision: 242179<br>
<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D242179-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=IKJj6Jh1FJIBGIBtGD2fQkLDpIUY6k4DZQv90ux2bGg&s=FbjT6pG4zSObCoxwhk-HqvCLjb0d-QwYdL4wx_aMnAY&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=242179&view=rev</a><br>
Log:<br>
Add support for on-disk hash table lookup with a known hash, for situations where the same key will be looked up in multiple tables.<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/Support/OnDiskHashTable.h<br>
<br>
Modified: llvm/trunk/include/llvm/Support/OnDiskHashTable.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_include_llvm_Support_OnDiskHashTable.h-3Frev-3D242179-26r1-3D242178-26r2-3D242179-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=IKJj6Jh1FJIBGIBtGD2fQkLDpIUY6k4DZQv90ux2bGg&s=vBXsKXJh8-Ld2vX1nVJ3SAGvti_oTtU-uKA6W86GWgs&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/OnDiskHashTable.h?rev=242179&r1=242178&r2=242179&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/Support/OnDiskHashTable.h (original)<br>
+++ llvm/trunk/include/llvm/Support/OnDiskHashTable.h Tue Jul 14 13:40:59 2015<br>
@@ -280,13 +280,19 @@ public:<br>
   };<br>
<br>
   /// \brief Look up the stored data for a particular key.<br>
-  iterator find(const external_key_type &EKey, Info *InfoPtr = 0) {<br>
-    if (!InfoPtr)<br>
-      InfoPtr = &InfoObj;<br>
-<br>
-    using namespace llvm::support;<br>
+  iterator find(const external_key_type &EKey, Info *InfoPtr = nullptr) {<br>
     const internal_key_type &IKey = InfoObj.GetInternalKey(EKey);<br>
     hash_value_type KeyHash = InfoObj.ComputeHash(IKey);<br>
+    return find_hashed(IKey, KeyHash, InfoPtr);<br>
+  }<br>
+<br>
+  /// \brief Look up the stored data for a particular key with a known hash.<br>
+  iterator find_hashed(const internal_key_type &IKey, hash_value_type KeyHash,<br>
+                       Info *InfoPtr = nullptr) {<br></blockquote><div><br></div><div>Could/should this be generalized something like DenseMap's find_as instead?<br><br>(perhaps with a hash+value tuple convenience/special case) I suppose it wouldn't make the API any easier for your use case, though - so can probably wait until someone has a need for such a thing.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+    using namespace llvm::support;<br>
+<br>
+    if (!InfoPtr)<br>
+      InfoPtr = &InfoObj;<br>
<br>
     // Each bucket is just an offset into the hash table file.<br>
     offset_type Idx = KeyHash & (NumBuckets - 1);<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>