[llvm-commits] [hlvm] r38412 - /hlvm/trunk/docs/OpenProjects.html

Reid Spencer reid at x10sys.com
Sat Jul 7 17:03:09 PDT 2007


Author: reid
Date: Sat Jul  7 19:03:09 2007
New Revision: 38412

URL: http://llvm.org/viewvc/llvm-project?rev=38412&view=rev
Log:
Add a project for incorporating the google sparse_hash_map and dense_hash_map
code into HLVM in order to benefit from its better speed/size characteristics.

Modified:
    hlvm/trunk/docs/OpenProjects.html

Modified: hlvm/trunk/docs/OpenProjects.html
URL: http://llvm.org/viewvc/llvm-project/hlvm/trunk/docs/OpenProjects.html?rev=38412&r1=38411&r2=38412&view=diff

==============================================================================
--- hlvm/trunk/docs/OpenProjects.html (original)
+++ hlvm/trunk/docs/OpenProjects.html Sat Jul  7 19:03:09 2007
@@ -53,6 +53,28 @@
     to do with emitting LLVM code to do range checking for RangeType
     variables. RangeType's are currently treated like integers without range
     checking.</li>
+    <li><em>Use Google hashmaps</em>. We would like to convert HLVM away from
+    the slow and bulky STL maps currently being used to google's open source
+    maps such as <tt>dense_hash_map</tt> and <tt>sparse_hash_map</tt>. However,
+    to do this, several things need to be resolved: 
+    <ol>
+      <li>Do we incorporate the code into HLVM, or build it separately and
+      reference it when configuring HLVM? Its just a few header files, so the
+      former approach seems okay, but this needs to be investigated.</li>
+      <li>The google code exposes its "config.h" which will conflict with 
+      ours. It defines several macros from the config.h info and uses them
+      in <tt>sparsetable</tt> as well as other places.</li>
+      <li>Deciding whether to use sparse or dense versions of the hash maps
+      needs to be decided on a case-by-case basis. In general, where the map is
+      not expected to be large (like MultiOperator), dense should give us good
+      performance. In cases where the content could be large (like SymbolTable),
+      it might be wiser to use the sparse version. Same for the various maps
+      used in LLVMGenerator.cpp and LLVMEmitter.cpp.</li>
+      <li>Consider writing wrappers for these classes. Since we're going to
+      compile HLVM with LLVM (eventually), the wrappers would get discarded by
+      LLVM's inliner so the performance loss wouldn't be great.</li>
+    </ol>
+    </li>
   </ol>
 </div>
 





More information about the llvm-commits mailing list