emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

scratch/hash-table-perf 4b5d9f92abe 13/37: * src/print.c (print_object):


From: Mattias Engdegård
Subject: scratch/hash-table-perf 4b5d9f92abe 13/37: * src/print.c (print_object): Don't print empty hash-table data
Date: Sun, 7 Jan 2024 12:41:10 -0500 (EST)

branch: scratch/hash-table-perf
commit 4b5d9f92abe22a4fa3914eb6b10dea842038e74e
Author: Mattias Engdegård <mattiase@acm.org>
Commit: Mattias Engdegård <mattiase@acm.org>

    * src/print.c (print_object): Don't print empty hash-table data
    
    Since no data is the default, this preserves bidirectional compatibility.
---
 src/print.c | 37 +++++++++++++++++++++++--------------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/src/print.c b/src/print.c
index e5da033d312..2da64c1d329 100644
--- a/src/print.c
+++ b/src/print.c
@@ -2603,21 +2603,30 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
            if (h->purecopy)
              print_c_string (" purecopy t", printcharfun);
 
-           print_c_string (" data (", printcharfun);
-
            ptrdiff_t size = h->count;
-           /* Don't print more elements than the specified maximum.  */
-           if (FIXNATP (Vprint_length) && XFIXNAT (Vprint_length) < size)
-             size = XFIXNAT (Vprint_length);
-
-           print_stack_push ((struct print_stack_entry){
-               .type = PE_hash,
-               .u.hash.obj = obj,
-               .u.hash.nobjs = size * 2,
-               .u.hash.idx = 0,
-               .u.hash.printed = 0,
-               .u.hash.truncated = (size < h->count),
-             });
+           if (size > 0)
+             {
+               print_c_string (" data (", printcharfun);
+
+               /* Don't print more elements than the specified maximum.  */
+               if (FIXNATP (Vprint_length) && XFIXNAT (Vprint_length) < size)
+                 size = XFIXNAT (Vprint_length);
+
+               print_stack_push ((struct print_stack_entry){
+                   .type = PE_hash,
+                   .u.hash.obj = obj,
+                   .u.hash.nobjs = size * 2,
+                   .u.hash.idx = 0,
+                   .u.hash.printed = 0,
+                   .u.hash.truncated = (size < h->count),
+                 });
+             }
+           else
+             {
+               /* Empty table: we can omit the data entirely.  */
+               printchar (')', printcharfun);
+               --print_depth;   /* Done with this.  */
+             }
            goto next_obj;
          }
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]