print(array)
R=r
OCL=21570
CL=21570
diff --git a/src/cmd/gc/sys.go b/src/cmd/gc/sys.go
index e821698..930e809 100644
--- a/src/cmd/gc/sys.go
+++ b/src/cmd/gc/sys.go
@@ -17,6 +17,7 @@
export func printstring(string);
export func printpointer(*any);
export func printinter(any);
+export func printarray(any);
export func printnl();
export func printsp();
diff --git a/src/cmd/gc/sysimport.c b/src/cmd/gc/sysimport.c
index 2df5299..7727798 100644
--- a/src/cmd/gc/sysimport.c
+++ b/src/cmd/gc/sysimport.c
@@ -11,6 +11,7 @@
"export func sys.printstring (? string)\n"
"export func sys.printpointer (? *any)\n"
"export func sys.printinter (? any)\n"
+ "export func sys.printarray (? any)\n"
"export func sys.printnl ()\n"
"export func sys.printsp ()\n"
"export func sys.catstring (? string, ? string) (? string)\n"
diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c
index 8460a82..710e143 100644
--- a/src/cmd/gc/walk.c
+++ b/src/cmd/gc/walk.c
@@ -1936,6 +1936,11 @@
argtype(on, l->type->type); // any-1
break;
}
+ if(isdarray(l->type)) {
+ on = syslook("printarray", 1);
+ argtype(on, l->type); // any-1
+ break;
+ }
badtype(n->op, l->type, T);
l = listnext(&save);
goto loop;
diff --git a/src/runtime/array.c b/src/runtime/array.c
index f431794..bbd57b03 100644
--- a/src/runtime/array.c
+++ b/src/runtime/array.c
@@ -30,7 +30,7 @@
prints("; width=");
sys·printint(width);
prints("; ret=");
- sys·printarray(&ret);
+ sys·printarray(ret);
prints("\n");
}
}
@@ -56,7 +56,7 @@
if(hb > old.cap || lb > hb) {
if(debug) {
prints("sys·arraysliced: old=");
- sys·printarray(&old);
+ sys·printarray(old);
prints("; lb=");
sys·printint(lb);
prints("; hb=");
@@ -83,7 +83,7 @@
if(debug) {
prints("sys·arraysliced: old=");
- sys·printarray(&old);
+ sys·printarray(old);
prints("; lb=");
sys·printint(lb);
prints("; hb=");
@@ -91,7 +91,7 @@
prints("; width=");
sys·printint(width);
prints("; ret=");
- sys·printarray(&ret);
+ sys·printarray(ret);
prints("\n");
}
}
@@ -137,7 +137,7 @@
prints("; width=");
sys·printint(width);
prints("; ret=");
- sys·printarray(&ret);
+ sys·printarray(ret);
prints("\n");
}
}
@@ -158,18 +158,18 @@
prints("sys·arrays2d: old=");
sys·printpointer(old);
prints("; ret=");
- sys·printarray(&ret);
+ sys·printarray(ret);
prints("\n");
}
}
void
-sys·printarray(Array *a)
+sys·printarray(Array a)
{
prints("[");
- sys·printint(a->nel);
+ sys·printint(a.nel);
prints("/");
- sys·printint(a->cap);
+ sys·printint(a.cap);
prints("]");
- sys·printpointer(a->array);
+ sys·printpointer(a.array);
}
diff --git a/src/runtime/runtime.h b/src/runtime/runtime.h
index 335301d..a8d40f8 100644
--- a/src/runtime/runtime.h
+++ b/src/runtime/runtime.h
@@ -350,7 +350,7 @@
void sys·printpointer(void*);
void sys·printuint(uint64);
void sys·printhex(uint64);
-void sys·printarray(Array*);
+void sys·printarray(Array);
void sys·catstring(string, string, string);
void sys·cmpstring(string, string, int32);
void sys·slicestring(string, int32, int32, string);