+
+(defmacro atomic-incf/symbol (symbol-name &optional (delta 1))
+ #!-sb-thread
+ `(incf ,symbol-name ,delta)
+ #!+sb-thread
+ `(locally
+ (declare (optimize (safety 0) (speed 3)))
+ (sb!vm::locked-symbol-global-value-add ',symbol-name ,delta)))
+
+(defvar *gc-inhibit*) ; initialized in cold init
+
+;;; When the dynamic usage increases beyond this amount, the system
+;;; notes that a garbage collection needs to occur by setting
+;;; *GC-PENDING* to T. It starts out as NIL meaning nobody has figured
+;;; out what it should be yet.
+(defvar *gc-pending* nil)
+
+#!+sb-thread
+(defvar *stop-for-gc-pending* nil)
+
+(defmacro without-gcing (&body body)