diff --git a/src/ikarus.boot b/src/ikarus.boot index 7076cf1..3d9f41b 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.compiler.ss b/src/ikarus.compiler.ss index e0f2eb9..842cac7 100644 --- a/src/ikarus.compiler.ss +++ b/src/ikarus.compiler.ss @@ -171,6 +171,7 @@ [$fp-at-base 0 pred] [$current-frame 0 value] [$arg-list 0 value] + [base-rtd 0 value] [$seal-frame-and-call 1 tail] [$frame->continuation 1 value] [$interrupted? 0 pred] @@ -2017,7 +2018,7 @@ (case op [(fixnum? flonum? bignum? immediate? boolean? char? vector? string? procedure? null? pair? not cons eq? vector symbol? error eof-object eof-object? - void $unbound-object? $code? $forward-ptr? bwp-object? + void base-rtd $unbound-object? $code? $forward-ptr? bwp-object? pointer-value top-level-value car cdr list* list $record port? input-port? output-port? $make-port/input $make-port/output $make-port/both @@ -3188,6 +3189,7 @@ [(arg-list) (mem 32 pcr)] [(engine-counter) (mem 36 pcr)] [(interrupted) (mem 40 pcr)] + [(base-rtd) (mem 44 pcr)] [else (error 'pcb-ref "invalid arg ~s" x)]))) (define do-warn @@ -4041,6 +4043,8 @@ (f (cdr arg*) (fxadd1 idx)))])]))] [($current-frame) (list* (movl (pcb-ref 'next-continuation) eax) ac)] + [(base-rtd) + (list* (movl (pcb-ref 'base-rtd) eax) ac)] [($arg-list) (list* (movl (pcb-ref 'arg-list) eax) ac)] [($seal-frame-and-call) diff --git a/src/ikarus.singular-objects.ss b/src/ikarus.singular-objects.ss new file mode 100644 index 0000000..4858c6a --- /dev/null +++ b/src/ikarus.singular-objects.ss @@ -0,0 +1,7 @@ + +(library (ikarus singular-objects) + (export base-rtd) + (import + (rename (ikarus) (base-rtd sys:base-rtd))) + (define (base-rtd) (sys:base-rtd))) + diff --git a/src/makefile.ss b/src/makefile.ss index 255b7c4..ffc62cd 100755 --- a/src/makefile.ss +++ b/src/makefile.ss @@ -21,7 +21,8 @@ ;;; an error (which may lead to the infamous Error: Error: ;;; Error: Error: Error: Error: Error: Error: Error: ...). ;;; - '("ikarus.handlers.ss" + '("ikarus.singular-objects.ss" + "ikarus.handlers.ss" "ikarus.multiple-values.ss" "ikarus.control.ss" "ikarus.collect.ss" @@ -536,6 +537,7 @@ [collect s] [do-stack-overflow s] [syntax-dispatch s] + [base-rtd s i] ))