;;; versions which break binary compatibility. But it certainly should
;;; be incremented for release versions which break binary
;;; compatibility.
-(def!constant +fasl-file-version+ 28)
+(def!constant +fasl-file-version+ 29)
;;; (record of versions before 0.7.0 deleted in 0.7.1.41)
;;; 23 = sbcl-0.7.0.1 deleted no-longer-used EVAL-STACK stuff,
;;; causing changes in *STATIC-SYMBOLS*.
;;; 27: (2002-04-08) added MIGHT-CONTAIN-OTHER-TYPES? slot to CTYPE
;;; 28: (2002-05-08) new convention for foreign symbols to support
;;; dynamic loading in OpenBSD
+;;; 29: (2002-06-24) removed *!INITIAL-FDEFN-OBJECTS* from static symbols
;;; the conventional file extension for our fasl files
(declaim (type simple-string *fasl-file-type*))
;;; listed here and then listed separately (and by now, 2001-06-06,
;;; slightly differently) elsewhere.
(declaim (special *posix-argv*
- *!initial-fdefn-objects*
*read-only-space-free-pointer*
sb!vm:*static-space-free-pointer*
sb!vm:*initial-dynamic-space-free-pointer*
*free-interrupt-context-index*
sb!vm::*allocation-pointer*
sb!vm::*binding-stack-pointer*
- sb!vm::*internal-gc-trigger*
sb!vm::*fp-constant-0d0*
sb!vm::*fp-constant-1d0*
sb!vm::*fp-constant-0f0*
(declaim (type (or index null) *gc-trigger*))
-;;; On the X86, we store the GC trigger in a ``static'' symbol instead
-;;; of letting magic C code handle it. It gets initialized by the
-;;; startup code.
-#!+x86
-(defvar sb!vm::*internal-gc-trigger*)
-
;;;; The following specials are used to control when garbage collection
;;;; occurs.
;; The C startup code must fill these in.
*posix-argv*
- ;;lisp::lisp-environment-list
- ;;lisp::lisp-command-line-list
- sb!impl::*!initial-fdefn-objects*
- ;; Functions that the C code needs to call
+ ;; functions that the C code needs to call
maybe-gc
sb!kernel::internal-error
sb!di::handle-breakpoint
sb!di::handle-fun-end-breakpoint
- ;; free Pointers
+ ;; free pointers
*read-only-space-free-pointer*
*static-space-free-pointer*
*initial-dynamic-space-free-pointer*
;; The C startup code must fill these in.
*posix-argv*
- sb!impl::*initial-fdefn-objects*
- ;; Functions that the C code needs to call
- ;; sb!impl::%initial-fun
+ ;; functions that the C code needs to call
sb!impl::maybe-gc
sb!kernel::internal-error
sb!di::handle-breakpoint
sb!impl::fdefinition-object
- ;; Free Pointers.
+ ;; free pointers
*read-only-space-free-pointer*
*static-space-free-pointer*
*initial-dynamic-space-free-pointer*
- ;; Things needed for non-local-exit.
+ ;; things needed for non-local exit
*current-catch-block*
*current-unwind-protect-block*
- ;; Interrupt Handling
+ ;; interrupt handling
*free-interrupt-context-index*
sb!unix::*interrupts-enabled*
sb!unix::*interrupt-pending*
;; The C startup code must fill these in.
*posix-argv*
- ;;lisp::lisp-environment-list
- ;;lisp::lisp-command-line-list
sb!impl::*!initial-fdefn-objects*
- ;; Functions that the C code needs to call
+ ;; functions that the C code needs to call
maybe-gc
sb!kernel::internal-error
sb!di::handle-breakpoint
sb!di::handle-fun-end-breakpoint
- ;; Free Pointers.
+ ;; free pointers
*read-only-space-free-pointer*
*static-space-free-pointer*
*initial-dynamic-space-free-pointer*
- ;; Things needed for non-local-exit.
+ ;; things needed for non-local exit
*current-catch-block*
*current-unwind-protect-block*
- ;; Interrupt Handling
+ ;; interrupt handling
*free-interrupt-context-index*
sb!unix::*interrupts-enabled*
sb!unix::*interrupt-pending*
(defvar *allocation-pointer*)
(defvar *binding-stack-pointer*)
-;;; FIXME: *!INITIAL-FDEFN-OBJECTS* and !COLD-INIT probably don't need
-;;; to be in the static symbols table any more. Also, if
-;;; *INTERNAL-GC-TRIGGER* really is not used, we can punt it.
+;;; FIXME: !COLD-INIT probably doesn't need
+;;; to be in the static symbols table any more.
(defparameter *static-symbols*
'(t
;; The C startup code must fill these in.
*posix-argv*
- sb!impl::*!initial-fdefn-objects*
;; functions that the C code needs to call
maybe-gc
*allocation-pointer*
*binding-stack-pointer*
- *internal-gc-trigger* ; Not used.
;; the floating point constants
*fp-constant-0d0*
lispobj *dynamic_space_free_pointer;
#endif
-#ifndef INTERNAL_GC_TRIGGER
+#ifndef GENCGC /* since GENCGC has its own way to record trigger */
lispobj *current_auto_gc_trigger;
#endif
/* Space, stack, and free pointer vars are initialized by
* validate() and coreparse(). */
-#ifndef INTERNAL_GC_TRIGGER
+#ifndef GENCGC /* since GENCGC has its own way to record trigger */
/* no GC trigger yet */
current_auto_gc_trigger = NULL;
#endif
* stuff to detect and handle hitting the GC trigger
*/
-#ifndef INTERNAL_GC_TRIGGER
+#ifndef GENCGC /* since GENCGC has its own way to record trigger */
static boolean
gc_trigger_hit(int signal, siginfo_t *info, os_context_t *context)
{
os_context_t *context=(os_context_t *) void_context;
if (!foreign_function_call_active
-#ifndef INTERNAL_GC_TRIGGER
+#ifndef GENCGC /* since GENCGC has its own way to record trigger */
&& gc_trigger_hit(signal, info, context)
#endif
) {
-#ifndef INTERNAL_GC_TRIGGER
+#ifndef GENCGC /* since GENCGC has its own way to record trigger */
clear_auto_gc_trigger();
#endif
typedef void cmd(char **ptr);
-static cmd call_cmd, dump_cmd, print_cmd, quit_cmd, help_cmd;
+static cmd dump_cmd, print_cmd, quit_cmd, help_cmd;
static cmd flush_cmd, search_cmd, regs_cmd, exit_cmd;
static cmd print_context_cmd;
static cmd backtrace_cmd, purify_cmd, catchers_cmd;
{"help", "Display this help information.", help_cmd},
{"?", "(an alias for help)", help_cmd},
{"backtrace", "Backtrace up to N frames.", backtrace_cmd},
- {"call", "Call FUNCTION with ARG1, ARG2, ...", call_cmd},
{"catchers", "Print a list of all the active catchers.", catchers_cmd},
{"context", "Print interrupt context number I.", print_context_cmd},
{"dump", "Dump memory starting at ADDRESS for COUNT words.", dump_cmd},
#if defined(__i386__)
printf("ALLOC\t=\t0x%08lx\n",
(unsigned long)SymbolValue(ALLOCATION_POINTER));
- printf("TRIGGER\t=\t0x%08lx\n",
- (unsigned long)SymbolValue(INTERNAL_GC_TRIGGER));
#else
printf("ALLOC\t=\t0x%08X\n",
(unsigned long)dynamic_space_free_pointer);
}
}
-static void
-call_cmd(char **ptr)
-{
- lispobj thing = parse_lispobj(ptr), function, result = 0, cons, args[3];
- int numargs;
-
- if (lowtag_of(thing) == OTHER_POINTER_LOWTAG) {
- switch (widetag_of(*(lispobj *)(thing-OTHER_POINTER_LOWTAG))) {
- case SYMBOL_HEADER_WIDETAG:
- for (cons = SymbolValue(INITIAL_FDEFN_OBJECTS);
- cons != NIL;
- cons = CONS(cons)->cdr) {
- if (FDEFN(CONS(cons)->car)->name == thing) {
- thing = CONS(cons)->car;
- goto fdefn;
- }
- }
- printf("Symbol 0x%08lx is undefined.\n", (long unsigned)thing);
- return;
-
- case FDEFN_WIDETAG:
- fdefn:
- function = FDEFN(thing)->fun;
- if (function == NIL) {
- printf("Fdefn 0x%08lx is undefined.\n", (long unsigned)thing);
- return;
- }
- break;
- default:
- printf("0x%08lx is not a function pointer, symbol, "
- "or fdefn object.\n",
- (long unsigned)thing);
- return;
- }
- }
- else if (lowtag_of(thing) != FUN_POINTER_LOWTAG) {
- printf("0x%08lx is not a function pointer, symbol, or fdefn object.\n",
- (long unsigned)thing);
- return;
- }
- else
- function = thing;
-
- numargs = 0;
- while (more_p(ptr)) {
- if (numargs >= 3) {
- printf("too many arguments (no more than 3 supported)\n");
- return;
- }
- args[numargs++] = parse_lispobj(ptr);
- }
-
- switch (numargs) {
- case 0:
- result = funcall0(function);
- break;
- case 1:
- result = funcall1(function, args[0]);
- break;
- case 2:
- result = funcall2(function, args[0], args[1]);
- break;
- case 3:
- result = funcall3(function, args[0], args[1], args[2]);
- break;
- default:
- lose("unsupported arg count made it past validity check?!");
- }
-
- print(result);
-}
+/* (There used to be call_cmd() here, to call known-at-cold-init-time
+ * Lisp functions from ldb, but it bitrotted and was deleted in
+ * sbcl-0.7.5.1. See older CVS versions if you want to resuscitate
+ * it.) */
static void
flush_cmd(char **ptr)
#ifdef BINDING_STACK_POINTER
SetSymbolValue(BINDING_STACK_POINTER, BINDING_STACK_START);
#endif
-#if defined INTERNAL_GC_TRIGGER && !defined __i386__
- SetSymbolValue(INTERNAL_GC_TRIGGER, make_fixnum(-1));
-#endif
interrupt_init();