Change debug printer to print vectors correctly.
authorChris Hanson <org/chris-hanson/cph>
Mon, 7 Oct 2019 04:34:47 +0000 (00:34 -0400)
committerChris Hanson <org/chris-hanson/cph>
Mon, 7 Oct 2019 04:34:47 +0000 (00:34 -0400)
src/microcode/debug.c

index 0d22b2865fb8e968b6e4180b7c1a5b6c7a6f772e..5ce4353aa0409bdb94a37597746f086c7c1554ad 100644 (file)
@@ -162,6 +162,20 @@ print_list (outf_channel stream, SCHEME_OBJECT pair)
   outf (stream, ")");
 }
 
+static void
+print_vector (outf_channel stream, SCHEME_OBJECT vector)
+{
+  outf (stream, "#(");
+  unsigned long end = (VECTOR_LENGTH (vector));
+  for (unsigned long i = 0; i < end; i++)
+    {
+      if (i > 0)
+       outf (stream, " ");
+      print_object (stream, (VECTOR_REF (vector, i)));
+    }
+  outf (stream, ")");
+}
+
 static void
 print_return_name (outf_channel stream, SCHEME_OBJECT Ptr)
 {
@@ -363,18 +377,6 @@ print_objects (SCHEME_OBJECT * objects, int n)
     }
   outf_flush_error();
 }
-
-/* This is useful because `print_object' doesn't print the contents of
-   vectors.  The reason that it doesn't is because vectors are used to
-   represent named structures, and most named structures don't want to
-   be printed out explicitly.  */
-
-void
-Print_Vector (SCHEME_OBJECT vector)
-{
-  print_objects
-    ((MEMORY_LOC (vector, 1)), (OBJECT_DATUM (VECTOR_LENGTH (vector))));
-}
 \f
 static void
 print_expression (outf_channel stream,
@@ -528,6 +530,10 @@ print_object (outf_channel stream, SCHEME_OBJECT obj)
       print_list (stream, obj);
       return;
 
+    case TC_VECTOR:
+      print_vector (stream, obj);
+      return;
+
     case TC_FALSE:
       print_simple (stream, obj);
       return;