aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-09-08 13:46:54 -0700
committerRuss Cox <rsc@golang.org>2009-09-08 13:46:54 -0700
commit7a0f4cac03e3aca9230b56ee6a01dcd3015d506a (patch)
tree4b7b1227894395359f68eb5d6e0446f9026cd266 /src/cmd
parentbd0c13e9f8ebe9ecab9cd7fca10342ee584fd3ed (diff)
downloadgo-7a0f4cac03e3aca9230b56ee6a01dcd3015d506a.tar.xz
pass Type* to makechan and makemap so that
they can get the official alignment out of there instead of guessing. R=ken OCL=34450 CL=34450
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/gc/builtin.c.boot4
-rw-r--r--src/cmd/gc/sys.go8
-rw-r--r--src/cmd/gc/walk.c11
3 files changed, 10 insertions, 13 deletions
diff --git a/src/cmd/gc/builtin.c.boot b/src/cmd/gc/builtin.c.boot
index e24d9d8815..408fdde028 100644
--- a/src/cmd/gc/builtin.c.boot
+++ b/src/cmd/gc/builtin.c.boot
@@ -41,7 +41,7 @@ char *sysimport =
"func sys.efaceeq (i1 any, i2 any) (ret bool)\n"
"func sys.ifacethash (i1 any) (ret uint32)\n"
"func sys.efacethash (i1 any) (ret uint32)\n"
- "func sys.makemap (keysize int, valsize int, keyalg int, valalg int, hint int) (hmap map[any] any)\n"
+ "func sys.makemap (key *uint8, val *uint8, hint int) (hmap map[any] any)\n"
"func sys.mapaccess1 (hmap map[any] any, key any) (val any)\n"
"func sys.mapaccess2 (hmap map[any] any, key any) (val any, pres bool)\n"
"func sys.mapassign1 (hmap map[any] any, key any, val any)\n"
@@ -50,7 +50,7 @@ char *sysimport =
"func sys.mapiternext (hiter *any)\n"
"func sys.mapiter1 (hiter *any) (key any)\n"
"func sys.mapiter2 (hiter *any) (key any, val any)\n"
- "func sys.makechan (elemsize int, elemalg int, hint int) (hchan chan any)\n"
+ "func sys.makechan (elem *uint8, hint int) (hchan chan any)\n"
"func sys.chanrecv1 (hchan <-chan any) (elem any)\n"
"func sys.chanrecv2 (hchan <-chan any) (elem any, pres bool)\n"
"func sys.chansend1 (hchan chan<- any, elem any)\n"
diff --git a/src/cmd/gc/sys.go b/src/cmd/gc/sys.go
index 3f2492cdfc..0f680fc2bf 100644
--- a/src/cmd/gc/sys.go
+++ b/src/cmd/gc/sys.go
@@ -51,9 +51,8 @@ func efaceeq(i1 any, i2 any) (ret bool);
func ifacethash(i1 any) (ret uint32);
func efacethash(i1 any) (ret uint32);
-func makemap(keysize int, valsize int,
- keyalg int, valalg int,
- hint int) (hmap map[any]any);
+// *byte is really *runtime.Type
+func makemap(key, val *byte, hint int) (hmap map[any]any);
func mapaccess1(hmap map[any]any, key any) (val any);
func mapaccess2(hmap map[any]any, key any) (val any, pres bool);
func mapassign1(hmap map[any]any, key any, val any);
@@ -63,7 +62,8 @@ func mapiternext(hiter *any);
func mapiter1(hiter *any) (key any);
func mapiter2(hiter *any) (key any, val any);
-func makechan(elemsize int, elemalg int, hint int) (hchan chan any);
+// *byte is really *runtime.Type
+func makechan(elem *byte, hint int) (hchan chan any);
func chanrecv1(hchan <-chan any) (elem any);
func chanrecv2(hchan <-chan any) (elem any, pres bool);
func chansend1(hchan chan<- any, elem any);
diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c
index c3fbdb7f04..aff91db083 100644
--- a/src/cmd/gc/walk.c
+++ b/src/cmd/gc/walk.c
@@ -887,8 +887,7 @@ walkexpr(Node **np, NodeList **init)
case OMAKECHAN:
n = mkcall1(chanfn("makechan", 1, n->type), n->type, init,
- nodintconst(n->type->type->width),
- nodintconst(algtype(n->type->type)),
+ typename(n->type->type),
conv(n->left, types[TINT]));
goto ret;
@@ -900,10 +899,8 @@ walkexpr(Node **np, NodeList **init)
argtype(fn, t->type); // any-2
n = mkcall1(fn, n->type, init,
- nodintconst(t->down->width), // key width
- nodintconst(t->type->width), // val width
- nodintconst(algtype(t->down)), // key algorithm
- nodintconst(algtype(t->type)), // val algorithm
+ typename(t->down), // key type
+ typename(t->type), // value type
conv(n->left, types[TINT]));
goto ret;
@@ -2249,7 +2246,7 @@ maplit(Node *n, Node *var, NodeList **init)
walkexpr(&a, init);
a->dodata = 2;
*init = list(*init, a);
-
+
b++;
}
}