emacs-diffs
[Top][All Lists]
Advanced

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

scratch/igc b586ee1b4cd: finalize_obarray


From: Gerd Moellmann
Subject: scratch/igc b586ee1b4cd: finalize_obarray
Date: Thu, 18 Apr 2024 14:13:10 -0400 (EDT)

branch: scratch/igc
commit b586ee1b4cd0744cd4116c24cc71b58857a1cd49
Author: Gerd Möllmann <gerd@gnu.org>
Commit: Gerd Möllmann <gerd@gnu.org>

    finalize_obarray
---
 src/.lldbinit |  9 ++++++---
 src/igc.c     | 45 +++++++++++++++++++++++++++++++++++++++++----
 2 files changed, 47 insertions(+), 7 deletions(-)

diff --git a/src/.lldbinit b/src/.lldbinit
index 3f4f59be531..14bbc003d18 100644
--- a/src/.lldbinit
+++ b/src/.lldbinit
@@ -65,9 +65,12 @@ b die
 #process handle -p true -s false SIGSEGV
 #process handle -p true -s false SIGBUS
 
-target create temacs
-settings set -- target.run-args --batch  -l loadup --temacs=pbootstrap 
--bin-dest  --eln-dest
-command alias go process launch --working-dir .
+#target create temacs
+#settings set -- target.run-args --batch  -l loadup --temacs=pbootstrap 
--bin-dest  --eln-dest
+#command alias go process launch --working-dir .
 
+target create bootstrap-emacs
+settings set -- target.run-args -batch --no-site-file --no-site-lisp -l 
./emacs-lisp/loaddefs-gen.elc -f loaddefs-generate--emacs-batch . ./calc 
./calendar ./cedet ./cedet/ede ./cedet/semantic ./cedet/semantic/analyze 
./cedet/semantic/bovine ./cedet/semantic/decorate ./cedet/semantic/symref 
./cedet/semantic/wisent ./cedet/srecode ./emacs-lisp ./emulation ./erc ./eshell 
./gnus ./image ./international ./language ./leim ./leim/quail ./mail ./mh-e 
./net ./nxml ./org ./play ./progmodes ./text [...]
+command alias go process launch --working-dir ../lisp
 
 # end.
diff --git a/src/igc.c b/src/igc.c
index 0026fa31cb3..13ea2194a76 100644
--- a/src/igc.c
+++ b/src/igc.c
@@ -1445,7 +1445,8 @@ fix_obarray (mps_ss_t ss, struct Lisp_Obarray *o)
 {
   MPS_SCAN_BEGIN (ss)
   {
-    IGC_FIX12_NOBJS (ss, o->buckets, obarray_size (o));
+    if (o->buckets)
+      IGC_FIX12_NOBJS (ss, o->buckets, obarray_size (o));
   }
   MPS_SCAN_END (ss);
   return MPS_RES_OK;
@@ -1919,6 +1920,17 @@ finalize_hash_table (struct Lisp_Hash_Table *h)
     }
 }
 
+static void
+finalize_obarray (struct Lisp_Obarray *o)
+{
+  if (o->buckets)
+    {
+      void *b = o->buckets;
+      o->buckets = NULL;
+      xfree (b);
+    }
+}
+
 static void
 finalize_bignum (struct Lisp_Bignum *n)
 {
@@ -2086,6 +2098,10 @@ finalize_vector (mps_addr_t v)
       finalize_finalizer (v);
       break;
 
+    case PVEC_OBARRAY:
+      finalize_obarray (v);
+      break;
+
     case PVEC_SYMBOL_WITH_POS:
     case PVEC_PROCESS:
     case PVEC_RECORD:
@@ -2093,7 +2109,6 @@ finalize_vector (mps_addr_t v)
     case PVEC_SQLITE:
     case PVEC_TS_NODE:
     case PVEC_NORMAL_VECTOR:
-    case PVEC_OBARRAY:
     case PVEC_WINDOW_CONFIGURATION:
     case PVEC_BUFFER:
     case PVEC_FRAME:
@@ -2139,7 +2154,7 @@ finalize (struct igc *gc, mps_addr_t base)
     case IGC_OBJ_WEAK:
     case IGC_OBJ_BLV:
     case IGC_OBJ_LAST:
-      igc_assert (!"not implemented");
+      igc_assert (!"finalize not implemented");
       break;
 
     case IGC_OBJ_VECTOR:
@@ -2167,10 +2182,32 @@ maybe_finalize (mps_addr_t client, enum pvec_type tag)
     case PVEC_NATIVE_COMP_UNIT:
     case PVEC_SUBR:
     case PVEC_FINALIZER:
+    case PVEC_OBARRAY:
       mps_finalize (global_igc->arena, &ref);
       break;
 
-    default:
+    case PVEC_NORMAL_VECTOR:
+    case PVEC_FREE:
+    case PVEC_MARKER:
+    case PVEC_OVERLAY:
+    case PVEC_SYMBOL_WITH_POS:
+    case PVEC_MISC_PTR:
+    case PVEC_PROCESS:
+    case PVEC_FRAME:
+    case PVEC_WINDOW:
+    case PVEC_BOOL_VECTOR:
+    case PVEC_BUFFER:
+    case PVEC_TERMINAL:
+    case PVEC_XWIDGET:
+    case PVEC_XWIDGET_VIEW:
+    case PVEC_OTHER:
+    case PVEC_WINDOW_CONFIGURATION:
+    case PVEC_TS_NODE:
+    case PVEC_SQLITE:
+    case PVEC_COMPILED:
+    case PVEC_CHAR_TABLE:
+    case PVEC_SUB_CHAR_TABLE:
+    case PVEC_RECORD:
       break;
     }
 }



reply via email to

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