]> Cypherpunks repositories - gostls13.git/commitdiff
print(array)
authorKen Thompson <ken@golang.org>
Fri, 19 Dec 2008 06:17:05 +0000 (22:17 -0800)
committerKen Thompson <ken@golang.org>
Fri, 19 Dec 2008 06:17:05 +0000 (22:17 -0800)
R=r
OCL=21570
CL=21570

src/cmd/gc/sys.go
src/cmd/gc/sysimport.c
src/cmd/gc/walk.c
src/runtime/array.c
src/runtime/runtime.h

index e8216981ba6e457911319ff61b928a521f4d5f0f..930e8097ef7bc5336abb59978a1f01f4a117c61c 100644 (file)
@@ -17,6 +17,7 @@ export func   printint(int64);
 export func    printstring(string);
 export func    printpointer(*any);
 export func    printinter(any);
+export func    printarray(any);
 export func    printnl();
 export func    printsp();
 
index 2df5299643d60cd5e674bc81cda734e219772b63..7727798149f227d829a66600acb52ffa81b402c6 100644 (file)
@@ -11,6 +11,7 @@ char *sysimport =
        "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"
index 8460a82d782b41b601396f0994f8c81288396189..710e1437824aef2ee219ca81c95b2380deeca04c 100644 (file)
@@ -1936,6 +1936,11 @@ loop:
                        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;
index f431794d39cba3334320341c12ad7bac17548342..bbd57b03e1c5ac6588cc281792e591edb0c52cef 100644 (file)
@@ -30,7 +30,7 @@ sys·newarray(uint32 nel, uint32 cap, uint32 width, Array ret)
                prints("; width=");
                sys·printint(width);
                prints("; ret=");
-               sys·printarray(&ret);
+               sys·printarray(ret);
                prints("\n");
        }
 }
@@ -56,7 +56,7 @@ sys·arraysliced(Array old, uint32 lb, uint32 hb, uint32 width, Array ret)
        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 @@ sys·arraysliced(Array old, uint32 lb, uint32 hb, uint32 width, Array ret)
 
        if(debug) {
                prints("sys·arraysliced: old=");
-               sys·printarray(&old);
+               sys·printarray(old);
                prints("; lb=");
                sys·printint(lb);
                prints("; hb=");
@@ -91,7 +91,7 @@ sys·arraysliced(Array old, uint32 lb, uint32 hb, uint32 width, Array ret)
                prints("; width=");
                sys·printint(width);
                prints("; ret=");
-               sys·printarray(&ret);
+               sys·printarray(ret);
                prints("\n");
        }
 }
@@ -137,7 +137,7 @@ sys·arrayslices(byte* old, uint32 nel, uint32 lb, uint32 hb, uint32 width, Arra
                prints("; width=");
                sys·printint(width);
                prints("; ret=");
-               sys·printarray(&ret);
+               sys·printarray(ret);
                prints("\n");
        }
 }
@@ -158,18 +158,18 @@ sys·arrays2d(byte* old, uint32 nel, Array ret)
                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);
 }
index 335301ddf3ab2aa331a88d68acd5de72ecae3403..a8d40f84ff4cf46e019fe6020ea2822acf15ac6f 100644 (file)
@@ -350,7 +350,7 @@ void        sys·printpc(void*);
 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);