From b8cca0971fc2dcd5f4bf4ac2ce82c1c635da0279 Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Tue, 19 Oct 2010 14:54:10 -0700 Subject: Teach trans to allocate, initialize and load from local variables. --- src/comp/util/common.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/comp/util/common.rs') diff --git a/src/comp/util/common.rs b/src/comp/util/common.rs index a5b77c0e..20bff22d 100644 --- a/src/comp/util/common.rs +++ b/src/comp/util/common.rs @@ -1,5 +1,6 @@ import std._uint; import std._int; +import front.ast; type pos = rec(uint line, uint col); type span = rec(str filename, pos lo, pos hi); @@ -43,6 +44,24 @@ fn new_str_hash[V]() -> std.map.hashmap[str,V] { ret std.map.mk_hashmap[str,V](hasher, eqer); } +fn new_def_hash[V]() -> std.map.hashmap[ast.def_id,V] { + + fn hash(&ast.def_id d) -> uint { + let uint u = d._0 as uint; + u <<= 16u; + u |= d._1 as uint; + ret u; + } + + fn eq(&ast.def_id a, &ast.def_id b) -> bool { + ret a._0 == b._0 && a._1 == b._1; + } + + let std.map.hashfn[ast.def_id] hasher = hash; + let std.map.eqfn[ast.def_id] eqer = eq; + ret std.map.mk_hashmap[ast.def_id,V](hasher, eqer); +} + fn istr(int i) -> str { ret _int.to_str(i, 10u); } -- cgit v1.2.3