~ chicken-core (chicken-5) 3c8adb29b4c25daac81060abebc9c9df7d34f6d5


commit 3c8adb29b4c25daac81060abebc9c9df7d34f6d5
Author:     felix <felix@z.(none)>
AuthorDate: Tue Mar 8 00:12:21 2011 +0100
Commit:     felix <felix@z.(none)>
CommitDate: Tue Mar 8 00:12:21 2011 +0100

    types work; removed undefined export for irregex

diff --git a/irregex.scm b/irregex.scm
index ba35d48b..73712859 100644
--- a/irregex.scm
+++ b/irregex.scm
@@ -71,7 +71,6 @@
    irregex-search/chunked
    irregex-search/matches
    irregex-split
-   irregex-submatches
    irregex? 
    make-irregex-chunker
    maybe-string->sre
diff --git a/types.db b/types.db
index 3c5dbef3..39b5a2cc 100644
--- a/types.db
+++ b/types.db
@@ -26,8 +26,6 @@
 
 ;; scheme
 
-;;XXX (fp... - rewrites should directly expand into unsafe ##core#inline[_allocate] uses
-
 (not (procedure not (*) boolean)
      (((not boolean)) (let ((#:tmp #(1))) '#t)))
 
@@ -115,7 +113,7 @@
 
 (integer? (procedure integer? (*) boolean)
 	  ((fixnum) (let ((#:tmp #(1))) #t))
-	  ((float) (fpinteger? #(1))))
+	  ((float) (##core#inline "C_u_i_fpintegerp" #(1))))
 
 (exact? (procedure exact? (*) boolean)
 	((fixnum) (let ((#:tmp #(1))) #t))
@@ -152,49 +150,52 @@
 
 (max (procedure max (#!rest number) number)
      ((fixnum fixnum) (fxmax #(1) #(2)))
-     ((float float) (fpmax #(1) #(2))))
+     ((float float) (##core#inline "C_i_flonum_max" #(1) #(2))))
 
 (min (procedure min (#!rest number) number)
      ((fixnum fixnum) (fxmin #(1) #(2)))
-     ((float float) (fpmin #(1) #(2))))
+     ((float float) (##core#inline "C_i_flonum_min" #(1) #(2))))
 
 (+ (procedure + (#!rest number) number)
    ((fixnum fixnum) (##core#inline "C_u_fixnum_plus" #(1) #(2)))
-   ((float float) (fp+ #(1) #(2))))
+   ((float float) (##core#inline_allocate ("C_a_i_flonum_plus" 4) #(1) #(2))))
 
 (- (procedure - (number #!rest number) number)
    ((fixnum fixnum) (##core#inline "C_i_fixnum_difference" #(1) #(2)))
    ((fixnum) (##core#inline "C_u_fixnum_negate" #(1)))
-   ((float float) (fp- #(1) #(2)))
-   ((float) (fpneg #(1))))
+   ((float float) (##core#inline_allocate ("C_a_i_flonum_difference" 4) 
+					  #(1) #(2)))
+   ((float) (##core#inline_allocate ("C_a_i_flonum_negate" 4) #(1))))
 
 (* (procedure * (#!rest number) number)
    ((fixnum fixnum) (##core#inline "C_fixnum_times" #(1) #(2)))
-   ((float float) (fp* #(1) #(2))))
+   ((float float) (##core#inline_allocate ("C_a_i_flonum_times" 4) 
+					  #(1) #(2))))
 
 (/ (procedure / (number #!rest number) number)
    ((fixnum fixnum) (##core#inline "C_fixnum_divide" #(1) #(2)))
-   ((float float) (fp/ #(1) #(2))))
+   ((float float) (##core#inline_allocate ("C_a_i_flonum_quotient" 4) 
+					  #(1) #(2))))
 
 (= (procedure = (#!rest number) boolean)
    ((fixnum fixnum) (eq? #(1) #(2)))
-   ((float float) (fp= #(1) #(2))))
+   ((float float) (##core#inline "C_flonum_equalp" #(1) #(2))))
 
 (> (procedure > (#!rest number) boolean)
    ((fixnum fixnum) (fx> #(1) #(2)))
-   ((float float) (fp> #(1) #(2))))
+   ((float float) (##core#inline "C_flonum_greaterp" #(1) #(2))))
 
 (< (procedure < (#!rest number) boolean)
    ((fixnum fixnum) (fx< #(1) #(2)))
-   ((float float) (fp< #(1) #(2))))
+   ((float float) (##core#inline "C_flonum_lessp" #(1) #(2))))
 
 (>= (procedure >= (#!rest number) boolean)
     ((fixnum fixnum) (fx>= #(1) #(2)))
-    ((float float) (fp>= #(1) #(2))))
+    ((float float) (##core#inline "C_flonum_greater_or_equal_p" #(1) #(2))))
 
 (<= (procedure <= (#!rest number) boolean)
     ((fixnum fixnum) (fx<= #(1) #(2)))
-    ((float float) (fp<= #(1) #(2))))
+    ((float float) (##core#inline "C_flonum_less_or_equal_p" #(1) #(2))))
 
 (quotient (procedure quotient (number number) number)
 	  ((fixnum fixnum) (##core#inline "C_fixnum_divide" #(1) #(2))))
@@ -209,40 +210,58 @@
 
 (abs (procedure abs (number) number)
      ((fixnum) (##core#inline "C_fixnum_abs" #(1)))
-     ((float) (fpabs #(1))))
+     ((float) (##core#inline_allocate ("C_a_i_flonum_abs" 4) #(1))))
 
 (floor (procedure floor (number) number)
        ((fixnum) #(1))
-       ((float) (fpfloor #(1))))
+       ((float) (##core#inline_allocate ("C_a_i_flonum_floor" 4) #(1))))
 
 (ceiling (procedure ceiling (number) number)
 	 ((fixnum) #(1))
-	 ((float) (fpceiling #(1))))
+	 ((float) (##core#inline_allocate ("C_a_i_flonum_ceiling" 4) #(1))))
 
 (truncate (procedure truncate (number) number)
 	  ((fixnum) #(1))
-	  ((float) (fptruncate #(1))))
+	  ((float) (##core#inline_allocate ("C_a_i_flonum_truncate" 4) #(1))))
 
 (round (procedure round (number) number)
        ((fixnum) #(1))
-       ((float) (fpround #(1))))
+       ((float) (##core#inline_allocate ("C_a_i_flonum_round" 4) #(1))))
 
-(exact->inexact (procedure exact->inexact (number) number) ((float) #(1)))
+(exact->inexact (procedure exact->inexact (number) number) ((float) #(1))
 (inexact->exact (procedure inexact->exact (number) number) ((fixnum) #(1)))
 
-(exp (procedure exp (number) float) ((float) (fpexp #(1))))
-(log (procedure log (number) float) ((float) (fplog #(1))))
-(expt (procedure expt (number number) number) ((float) (fpexpt #(1))))
-(sqrt (procedure sqrt (number) float) ((float) (fpsqrt #(1))))
-(sin (procedure sin (number) float) ((float) (fpsin #(1))))
-(cos (procedure cos (number) float) ((float) (fpcos #(1))))
-(tan (procedure tan (number) float) ((float) (fptan #(1))))
-(asin (procedure asin (number) float) ((float) (fpasin #(1))))
-(acos (procedure acos (number) float) ((float) (fpacos #(1))))
+(exp (procedure exp (number) float)
+     ((float) (##core#inline_allocate ("C_a_i_flonum_exp" 4) #(1))))
+
+(log (procedure log (number) float)
+     ((float) (##core#inline_allocate ("C_a_i_flonum_log" 4) #(1))))
+
+(expt (procedure expt (number number) number)
+      ((float float) (##core#inline_allocate ("C_a_i_flonum_expt" 4) 
+					     #(1) #(2))))
+
+(sqrt (procedure sqrt (number) float)
+      ((float) (##core#inline_allocate ("C_a_i_flonum_sqrt" 4) #(1))))
+
+(sin (procedure sin (number) float)
+     ((float) (##core#inline_allocate ("C_a_i_flonum_sin" 4) #(1))))
+
+(cos (procedure cos (number) float)
+     ((float) (##core#inline_allocate ("C_a_i_flonum_cos" 4) #(1))))
+
+(tan (procedure tan (number) float)
+     ((float) (##core#inline_allocate ("C_a_i_flonum_tan" 4) #(1))))
+
+(asin (procedure asin (number) float) 
+      ((float) (##core#inline_allocate ("C_a_i_flonum_asin" 4) #(1))))
+
+(acos (procedure acos (number) float)
+      ((float) (##core#inline_allocate ("C_a_i_flonum_acos" 4) #(1))))
 
 (atan (procedure atan (number #!optional number) float)
-      ((float) (fpatan #(1)))
-      ((float float) (fpatan2 #(1) #(2))))
+      ((float) (##core#inline_allocate ("C_a_i_flonum_atan" 4) #(1)))
+      ((float float) (##core#inline_allocate ("C_a_i_flonum_atan2" 4) #(1))))
 
 (number->string (procedure number->string (number #!optional number) string))
 (string->number (procedure string->number (string #!optional number) (or number boolean)))
@@ -379,7 +398,7 @@
 
 (magnitude (procedure magnitude (number) number)
 	   ((fixnum) (##core#inline "C_fixnum_abs" #(1)))
-	   ((float) (fpabs #(1))))
+	   ((float) (##core#inline_allocate ("C_a_i_flonum_abs" 4) #(1))))
 
 (numerator (procedure numerator (number) number)
 	   ((fixnum) #(1)))
@@ -397,29 +416,43 @@
 ;; chicken
 
 (abort (procedure abort (*) noreturn))
+
 (add1 (procedure add1 (number) number)
-      ((flonum) (fp+ #(1) 1.0)))
+      ((float) (##core#inline_allocate ("C_a_i_flonum_plus" 4) #(1) 1.0)))
+
 (argc+argv (procedure argc+argv () fixnum list))
 (argv (procedure argv () list))
 (arithmetic-shift (procedure arithmetic-shift (number number) number))
 
-;;XXX...
+(bit-set? (procedure bit-set? (number fixnum) boolean)
+	  ((fixnum fixnum) 
+	   (not (eq? 0 (##core#inline 
+			"C_fixnum_and" #(1)
+			(##core#inline "C_fixnum_shift_left" 1 #(2)))))))
 
-(bit-set? (procedure bit-set? (number fixnum) boolean))
 (bitwise-and (procedure bitwise-and (#!rest number) number)
-	     ((fixnum fixnum) (fxand #(1) #(2))))
+	     ((fixnum fixnum) (##core#inline "C_fixnum_and" #(1) #(2))))
+
 (bitwise-ior (procedure bitwise-ior (#!rest number) number)
-	     ((fixnum fixnum) (fxior #(1) #(2))))
+	     ((fixnum fixnum) (##core#inline "C_fixnum_or" #(1) #(2))))
+
 (bitwise-not (procedure bitwise-not (number) number))
+
 (bitwise-xor (procedure bitwise-xor (#!rest number) number)
-	     ((fixnum fixnum) (fxxor #(1) #(2))))
+	     ((fixnum fixnum) (##core#inline "C_fixnum_xor" #(1) #(2))))
+
 (blob->string (procedure blob->string (blob) string))
-(blob-size (procedure blob-size (blob) fixnum))
-(blob? (procedure blob? (*) boolean))
+
+(blob-size (procedure blob-size (blob) fixnum)
+	   ((blob) (##sys#size #(1))))
+
+(blob? (procedure blob? (*) boolean)
+       ((blob) (let ((#:tmp #(1))) #t))
+       (((not blob)) (let ((#:tmp #(1))) #f)))
+
 (blob=? (procedure blob=? (blob blob) boolean))
 (breakpoint (procedure breakpoint (#!optional *) . *))
 (build-platform (procedure build-platform () symbol))
-(c-runtime (procedure c-runtime () symbol))
 (call/cc (procedure call/cc (procedure) . *))
 (case-sensitive (procedure case-sensitive (#!optional *) *))
 (char-name (procedure char-name ((or char symbol) #!optional char) *))
@@ -428,16 +461,32 @@
 (command-line-arguments (procedure command-line-arguments (#!optional list) list))
 (condition-predicate (procedure condition-predicate (symbol) (procedure ((struct condition)) boolean)))
 (condition-property-accessor (procedure condition-property-accessor (symbol symbol #!optional *) (procedure ((struct condition)) *)))
-(condition? (procedure condition? (*) boolean))
+
+(condition? (procedure condition? (*) boolean)
+	    (((struct condition)) (let ((#:tmp #(1))) #t))
+	    (((not (struct condition))) (let ((#:tmp #(1))) #f)))
+
 (condition->list (procedure condition->list ((struct condition)) list))
 (continuation-capture (procedure continuation-capture ((procedure ((struct continuation)) . *)) *))
 (continuation-graft (procedure continuation-graft ((struct continuation) (procedure () . *)) *))
 (continuation-return (procedure continuation-return (procedure #!rest) . *)) ;XXX make return type more specific?
-(continuation? (procedure continuation? (*) boolean))
+
+(continuation? (procedure continuation? (*) boolean)
+	       (((struct continuation)) (let ((#:tmp #(1))) #t))
+	       (((not (struct continuation))) (let ((#:tmp #(1))) #f)))
+
 (copy-read-table (procedure copy-read-table ((struct read-table)) (struct read-table)))
 (cpu-time (procedure cpu-time () fixnum fixnum))
-(current-error-port (procedure current-error-port (#!optional port) port))
-(current-exception-handler (procedure current-exception-handler (#!optional procedure) procedure))
+
+(current-error-port (procedure current-error-port (#!optional port) port)
+		    ((port) (set! ##sys#standard-error #(1)))
+		    (() ##sys#standard-error))
+
+(current-exception-handler
+ (procedure current-exception-handler (#!optional procedure) procedure)
+ ((procedure) (set! ##sys#current-exception-handler #(1)))
+ (() ##sys#current-exception-handler))
+
 (current-gc-milliseconds (procedure current-gc-milliseconds () fixnum))
 (current-milliseconds (procedure current-milliseconds () float))
 (current-read-table (procedure current-read-table () (struct read-table)))
@@ -458,8 +507,10 @@
 (directory-exists? (procedure directory-exists? (string) *))
 (fixnum-bits fixnum)
 (fixnum-precision fixnum)
+
 (fixnum? (procedure fixnum? (*) boolean)
 	 ((fixnum) (let ((#:tmp #(1))) #t)))
+
 (flonum-decimal-precision fixnum)
 (flonum-epsilon float)
 (flonum-maximum-decimal-exponent fixnum)
@@ -469,39 +520,106 @@
 (flonum-precision fixnum)
 (flonum-print-precision (procedure (#!optional fixnum) fixnum))
 (flonum-radix fixnum)
+
 (flonum? (procedure flonum? (*) boolean)
 	 ((float) (let ((#:tmp #(1))) #t)))
+
 (flush-output (procedure flush-output (#!optional port) undefined))
 (force-finalizers (procedure force-finalizers () undefined))
-(fp- (procedure fp- (float float) float))
-(fp* (procedure fp* (float float) float))
-(fp/ (procedure fp/ (float float) float))
-(fp+ (procedure fp+ (float float) float))
-(fp< (procedure fp< (float float) boolean))
-(fp<= (procedure fp<= (float float) boolean))
-(fp= (procedure fp= (float float) boolean))
-(fp> (procedure fp> (float float) boolean))
-(fp>= (procedure fp>= (float float) boolean))
-(fpabs (procedure fpabs (float) float))
-(fpacos (procedure fpacos (float) float))
-(fpasin (procedure fpasin (float) float))
-(fpatan (procedure fpatan (float) float))
-(fpatan2 (procedure fpatan2 (float float) float))
-(fpceiling (procedure fpceiling (float) float))
-(fpcos (procedure fpcos (float) float))
-(fpexp (procedure fpexp (float) float))
-(fpexpt (procedure fpexpt (float float) float))
-(fpfloor (procedure fpfloor (float) float))
-(fpinteger? (procedure fpinteger? (float) boolean))
-(fplog (procedure fplog (float) float))
-(fpmax (procedure fpmax (float float) float))
-(fpmin (procedure fpmin (float float) float))
-(fpneg (procedure fpneg (float) float))
-(fpround (procedure fpround (float) float))
-(fpsin (procedure fpsin (float) float))
-(fpsqrt (procedure fpsqrt (float) float))
-(fptan (procedure fptan (float) float))
-(fptruncate (procedure fptruncate (float) float))
+
+(fp- (procedure fp- (float float) float)
+     ((float float) (##core#inline_allocate ("C_a_i_flonum_difference" 4)
+					    #(1) #(2)) ))
+
+(fp* (procedure fp* (float float) float)
+     ((float float) (##core#inline_allocate ("C_a_i_flonum_times" 4)
+					    #(1) #(2)) ))
+
+(fp/ (procedure fp/ (float float) float)
+     ((float float) (##core#inline_allocate ("C_a_i_flonum_quotient" 4)
+					    #(1) #(2)) ))
+
+(fp+ (procedure fp+ (float float) float)
+     ((float float) (##core#inline_allocate ("C_a_i_flonum_plus" 4)
+					    #(1) #(2)) ))
+
+(fp< (procedure fp< (float float) boolean)
+     ((float float) (##core#inline "C_flonum_lessp" #(1) #(2)) ))
+
+(fp<= (procedure fp<= (float float) boolean)
+      ((float float) (##core#inline "C_flonum_less_or_equal_p" #(1) #(2)) ))
+
+(fp= (procedure fp= (float float) boolean)
+     ((float float) (##core#inline "C_flonum_equalp" #(1) #(2)) ))
+
+(fp> (procedure fp> (float float) boolean)
+     ((float float) (##core#inline "C_flonum_greaterp" #(1) #(2)) ))
+
+(fp>= (procedure fp>= (float float) boolean)
+      ((float float) (##core#inline "C_flonum_greater_or_equal_p" #(1) #(2)) ))
+
+(fpabs (procedure fpabs (float) float)
+       ((float) (##core#inline_allocate ("C_a_i_flonum_abs" 4) #(1) )))
+
+(fpacos (procedure fpacos (float) float)
+       ((float) (##core#inline_allocate ("C_a_i_flonum_acos" 4) #(1) )))
+
+(fpasin (procedure fpasin (float) float)
+	((float) (##core#inline_allocate ("C_a_i_flonum_asin" 4) #(1) )))
+
+(fpatan (procedure fpatan (float) float)
+	((float) (##core#inline_allocate ("C_a_i_flonum_atan" 4) #(1) )))
+
+(fpatan2 (procedure fpatan2 (float float) float)
+	 ((float float) (##core#inline_allocate ("C_a_i_flonum_atan2" 4)
+						#(1) #(2))))
+(fpceiling (procedure fpceiling (float) float)
+	   ((float) (##core#inline_allocate ("C_a_i_flonum_ceiling" 4) #(1) )))
+
+(fpcos (procedure fpcos (float) float)
+       ((float) (##core#inline_allocate ("C_a_i_flonum_cos" 4) #(1) )))
+
+(fpexp (procedure fpexp (float) float)
+       ((float) (##core#inline_allocate ("C_a_i_flonum_exp" 4) #(1) )))
+
+(fpexpt (procedure fpexpt (float float) float)
+	((float float) (##core#inline_allocate ("C_a_i_flonum_expt" 4)
+					       #(1) #(2))))
+
+(fpfloor (procedure fpfloor (float) float)
+	 ((float) (##core#inline_allocate ("C_a_i_flonum_floor" 4) #(1) )))
+
+(fpinteger? (procedure fpinteger? (float) boolean)
+	    ((float) (##core#inline "C_u_i_flonum_intergerp" #(1) )))
+
+(fplog (procedure fplog (float) float)
+       ((float) (##core#inline_allocate ("C_a_i_flonum_log" 4) #(1) )))
+
+(fpmax (procedure fpmax (float float) float)
+       ((float float) (##core#inline "C_i_flonum_max" #(1) #(2))))
+
+(fpmin (procedure fpmin (float float) float)
+       ((float float) (##core#inline "C_i_flonum_min" #(1) #(2))))
+
+(fpneg (procedure fpneg (float) float)
+       ((float) (##core#inline_allocate ("C_a_i_flonum_negate" 4) #(1) )))
+
+(fpround (procedure fpround (float) float)
+	 ((float) (##core#inline_allocate ("C_a_i_flonum_round" 4) #(1) )))
+
+(fpsin (procedure fpsin (float) float)
+       ((float) (##core#inline_allocate ("C_a_i_flonum_sin" 4) #(1) )))
+
+(fpsqrt (procedure fpsqrt (float) float)
+	((float) (##core#inline_allocate ("C_a_i_flonum_sqrt" 4) #(1) )))
+
+(fptan (procedure fptan (float) float)
+       ((float) (##core#inline_allocate ("C_a_i_flonum_tan" 4) #(1) )))
+
+(fptruncate (procedure fptruncate (float) float)
+	    ((float) (##core#inline_allocate ("C_a_i_flonum_truncate" 4) 
+					     #(1) )))
+
 (fx- (procedure fx- (fixnum fixnum) fixnum))
 (fx* (procedure fx* (fixnum fixnum) fixnum))
 (fx/ (procedure fx/ (fixnum fixnum) fixnum))
@@ -525,14 +643,16 @@
 (fxxor (procedure fxxor (fixnum fixnum) fixnum))
 (gc (procedure gc (#!optional *) fixnum))
 (gensym (procedure gensym (#!optional *) symbol))
-(get (procedure get (symbol symbol #!optional *) *))
+
+(get (procedure get (symbol symbol #!optional *) *)
+     ((symbol symbol *) (##core#inline "C_i_getprop" #(1) #(2) #(3))))
+
 (get-call-chain (procedure get-call-chain (#!optional fixnum *) list))
 (get-condition-property (procedure get-condition-property ((struct condition) symbol symbol #!optional *) *))
 (get-environment-variable (procedure get-environment-variable (string) *))
 (get-keyword (procedure get-keyword (symbol list #!optional *) *))
 (get-output-string (procedure get-output-string (port) string))
 (get-properties (procedure get-properties (symbol list) symbol * list))
-(getenv (deprecated get-environment-variable))
 (getter-with-setter (procedure getter-with-setter (procedure procedure #!optional string) procedure))
 (implicit-exit-handler (procedure implicit-exit-handler (#!optional procedure) procedure))
 (keyword->string (procedure keyword->string (symbol) string))
@@ -543,7 +663,10 @@
 (load-verbose (procedure load-verbose (#!optional *) *))
 (machine-byte-order (procedure machine-byte-order () symbol))
 (machine-type (procedure machine-type () symbol))
-(make-blob (procedure make-blob (fixnum) blob))
+
+(make-blob (procedure make-blob (fixnum) blob)
+	   ((fixnum) (##sys#make-blob #(1))))
+
 (make-composite-condition (procedure make-composite-condition (#!rest (struct condition)) (struct condition)))
 (make-parameter (procedure make-parameter (* #!optional procedure) procedure))
 (make-property-condition (procedure make-property-condition (symbol #!rest *) (struct condition)))
@@ -556,9 +679,16 @@
 (open-input-string (procedure open-input-string (string #!rest) port))
 (open-output-string (procedure open-output-string (#!rest) port))
 (parentheses-synonyms (procedure parentheses-synonyms (#!optional *) *))
-(port-name (procedure port-name (#!optional port) *))
+
+(port-name (procedure port-name (#!optional port) *)
+	   ((port) (##sys#slot #(1) 3)))
+
 (port-position (procedure port-position (#!optional port) fixnum))
-(port? (procedure port? (*) boolean))
+
+(port? (procedure port? (*) boolean)
+       ((port) (let ((#:tmp #(1))) #t))
+       (((not port)) (let ((#:tmp #(1))) #f)))
+
 (print (procedure print (#!rest *) undefined))
 (print-call-chain (procedure print-call-chain (#!optional port fixnum * string) undefined))
 (print-error-message (procedure print-error-message (* #!optional port string) undefined))
@@ -566,7 +696,11 @@
 (procedure-information (procedure procedure-information (procedure) *))
 (program-name (procedure program-name (#!optional string) string))
 (promise? (procedure promise? (*) boolean))
-(put! (procedure put! (symbol symbol *) undefined))
+
+(put! (procedure put! (symbol symbol *) undefined)
+      ((symbol symbol *)
+       (##core#inline_allocate ("C_a_i_putprop" 8) #(1) #(2) #(3))))
+
 (register-feature! (procedure register-feature! (#!rest symbol) undefined))
 (remprop! (procedure remprop! (symbol symbol) undefined))
 (rename-file (procedure rename-file (string string) string))
@@ -581,7 +715,10 @@
 (set-finalizer! (procedure set-finalizer! (* (procedure (*) . *)) *))
 (set-gc-report! (procedure set-gc-report! (*) undefined))
 (set-parameterized-read-syntax! (procedure set-parameterized-read-syntax! (char procedure) undefined))
-(set-port-name! (procedure set-port-name! (port string) undefined))
+
+(set-port-name! (procedure set-port-name! (port string) undefined)
+		((port string) (##sys#setslot #(1) 3 #(2))))
+
 (set-read-syntax! (procedure set-read-syntax! (char procedure) undefined))
 (set-sharp-read-syntax! (procedure set-sharp-read-syntax! (char procedure) undefined))
 (setter (procedure setter (procedure) procedure))
@@ -594,10 +731,17 @@
 (string->keyword (procedure string->keyword (string) symbol))
 (string->uninterned-symbol (procedure string->uninterned-symbol (string) symbol))
 (strip-syntax (procedure strip-syntax (*) *))
-(sub1 (procedure sub1 (number) number))
+
+(sub1 (procedure sub1 (number) number)
+      ((float) (##core#inline_allocate ("C_a_i_flonum_difference" 4) 
+				       #(1) 1.0)))
+
 (subvector (procedure subvector (vector fixnum #!optional fixnum) vector))
 (symbol-escape (procedure symbol-escape (#!optional *) *))
-(symbol-plist (procedure symbol-plist (symbol) list))
+
+(symbol-plist (procedure symbol-plist (symbol) list)
+	      ((symbol) (##sys#slot #(1) 2)))
+
 (syntax-error (procedure syntax-error (#!rest) noreturn))
 (system (procedure system (string) fixnum))
 (unregister-feature! (procedure unregister-feature! (#!rest symbol) undefined))
@@ -608,12 +752,20 @@
 
 ;; data-structures
 
-(->string (procedure ->string (*) string))
+(->string (procedure ->string (*) string)
+	  ((string) #(1)))
+
 (alist-ref (procedure alist-ref (* list #!optional (procedure (* *) *) *) *))
 (alist-update! (procedure alist-update! (* * list #!optional (procedure (* *) *)) *))
 (always? (procedure always? (#!rest) boolean))
-(any? (procedure any? (*) boolean))
-(atom? (procedure atom? (*) boolean))
+
+(any? (procedure any? (*) boolean)
+      ((*) (let ((#:tmp #(1))) #t)))
+
+(atom? (procedure atom? (*) boolean)
+       ((pair) (let ((#:tmp #(1))) #f))
+       (((not pair)) (let ((#:tmp #(1))) #t)))
+
 (binary-search (procedure binary-search (vector (procedure (*) *)) *))
 (butlast (procedure butlast (pair) list))
 (chop (procedure chop (list fixnum) list))
@@ -630,18 +782,21 @@
 (identity (procedure identity (*) *))
 (intersperse (procedure intersperse (list *) list))
 (join (procedure join (list list) list))
-(left-section deprecated)
 (list->queue (procedure list->queue (list) (struct queue)))
 (list-of? (procedure list-of? ((procedure (*) *)) (procedure (list) boolean)))
 (make-queue (procedure make-queue () (struct queue)))
 (merge (procedure merge (list list (procedure (* *) *)) list))
 (merge! (procedure merge! (list list (procedure (* *) *)) list))
 (never? (procedure never? (#!rest) boolean))
-(none? (procedure none? (*) boolean))
-(noop (deprecated void))
+
+(none? (procedure none? (*) boolean)
+       ((*) (let ((#:tmp #(1))) #f)))
+
 (o (procedure o (#!rest (procedure (*) *)) (procedure (*) *)))
-(project (procedure project (fixnum) procedure))
-(queue->list (procedure queue->list ((struct queue)) list))
+
+(queue->list (procedure queue->list ((struct queue)) list)
+	     (((struct queue)) (##sys#slot #(1) 1)))
+
 (queue-add! (procedure queue-add! ((struct queue) *) undefined))
 (queue-empty? (procedure queue-empty? ((struct queue)) boolean))
 (queue-first (procedure queue-first ((struct queue)) *))
@@ -649,9 +804,12 @@
 (queue-push-back! (procedure queue-push-back! ((struct queue) *) undefined))
 (queue-push-back-list! (procedure queue-push-back-list! ((struct queue) list) undefined))
 (queue-remove! (procedure queue-remove! ((struct queue)) *))
-(queue? (procedure queue? (*) boolean))
+
+(queue? (procedure queue? (*) boolean)
+	(((struct queue)) (let ((#:tmp #(1))) #t))
+	(((not (struct queue))) (let ((#:tmp #(1))) #f)))
+
 (rassoc (procedure rassoc (* list #!optional (procedure (* *) *)) *))
-(right-section deprecated)
 (reverse-string-append (procedure reverse-string-append (list) string))
 (shuffle (procedure shuffle (list (procedure (fixnum) fixnum)) list))
 (sort (procedure sort ((or list vector) (procedure (* *) *)) (or list vector)))
@@ -691,7 +849,12 @@
 (read-string! (procedure read-string! (fixnum string #!optional port fixnum) fixnum))
 (read-token (procedure read-token ((procedure (char) *) #!optional port) string))
 (sprintf (procedure sprintf (string #!rest) string))
-(write-byte (procedure write-byte (fixnum #!optional port) undefined))
+
+(write-byte (procedure write-byte (fixnum #!optional port) undefined)
+	    ((fixnum port) (##sys#write-char-0 (integer->char #(1)) #(2)))
+	    ((fixnum) (##sys#write-char-0 (integer->char #(1))
+					  ##sys#standard-output)))
+
 (write-line (procedure write-line (string #!optional port) undefined))
 (write-string (procedure write-string (string #!optional * port) undefined))
 
@@ -722,21 +885,40 @@
 
 (irregex (procedure irregex (#!rest) *))
 ;irregex-apply-match
-(irregex-dfa (procedure irregex-dfa (*) *))
-(irregex-dfa/extract (procedure irregex-dfa/extract (*) *))
-(irregex-dfa/search (procedure irregex-dfa/search (*) *))
+
+(irregex-dfa (procedure irregex-dfa ((struct regexp)) *)
+	     (((struct regexp)) (##sys#slot #(1) 1)))
+
+(irregex-dfa/extract (procedure irregex-dfa/extract ((struct regexp)) *)
+		     (((struct regexp)) (##sys#slot #(1) 3)))
+
+(irregex-dfa/search (procedure irregex-dfa/search ((struct regexp)) *)
+		    (((struct regexp)) (##sys#slot #(1) 2)))
+
 (irregex-extract (procedure irregex-extract (* string #!optional fixnum fixnum) list))
-(irregex-flags (procedure irregex-flags (*) *))
+(irregex-flags (procedure irregex-flags ((struct regexp)) *)
+	       (((struct regexp)) (##sys#slot #(1) 5)))
+
 (irregex-fold (procedure irregex-fold (* (procedure (fixnum (struct regexp-match)) *) * string #!optional (procedure (fixnum *) *) fixnum fixnum) *))
 (irregex-fold/chunked (procedure irregex-fold/chunked (* (procedure (fixnum (struct regexp-match)) *) * procedure * #!optional (procedure (fixnum *) *) fixnum fixnum) *))
-(irregex-lengths (procedure irregex-lengths (*) *))
+
+(irregex-lengths (procedure irregex-lengths ((struct regexp)) *)
+		 (((struct regexp)) (##sys#slot #(1) 7)))
+
 (irregex-match (procedure irregex-match (* string) *))
 ;irregex-match?
-(irregex-match-data? (procedure irregex-match-data? (*) boolean))
+
+(irregex-match-data? (procedure irregex-match-data? (*) boolean)
+		     (((struct regexp-match)) (let ((#:tmp #(1))) #t))
+		     (((not (struct regexp-match))) (let ((#:tmp #(1))) #f)))
+
 (irregex-match-end (procedure irregex-match-end (* #!optional *) *))
 ;irregex-match-end-chunk
 (irregex-match-end-index (procedure irregex-match-end-index ((struct regexp-match) #!optional *) fixnum))
-(irregex-match-names (procedure irregex-match-names ((struct regexp-match)) list))
+
+(irregex-match-names (procedure irregex-match-names ((struct regexp-match)) list)
+		     (((struct regexp-match)) (##sys#slot #(1) 2)))
+
 (irregex-match-num-submatches (procedure irregex-match-num-submatches ((struct regexp-match)) fixnum))
 (irregex-match-start (procedure irregex-match-start (* #!optional *) *))
 ;irregex-match-start-chunk
@@ -745,10 +927,19 @@
 (irregex-match-subchunk (procedure irregex-match-subchunk ((struct regexp-match) #!optional *) *))
 (irregex-match-substring (procedure irregex-match-substring (* #!optional *) *))
 (irregex-match/chunked (procedure irregex-match/chunked (* * * #!optional fixnum) *))
-(irregex-names (procedure irregex-names (*) *))
+
+(irregex-names (procedure irregex-names ((struct regexp)) *)
+	       (((struct regexp)) (##sys#slot #(1) 8)))
+
 (irregex-new-matches (procedure irregex-new-matches (*) *))
-(irregex-nfa (procedure irregex-nfa (*) *))
-(irregex-num-submatches (procedure irregex-num-submatches (*) fixnum))
+
+(irregex-nfa (procedure irregex-nfa ((struct regexp)) *)
+	     (((struct regexp)) (##sys#slot #(1) 4)))
+
+(irregex-num-submatches (procedure irregex-num-submatches ((struct regexp))
+				   fixnum)
+			(((struct regexp)) (##sys#slot #(1) 6)))
+
 (irregex-opt (procedure irregex-opt (list) *))
 (irregex-quote (procedure irregex-quote (string) string))
 (irregex-replace (procedure irregex-replace (* string #!rest) *))
@@ -757,10 +948,13 @@
 (irregex-search (procedure irregex-search (* string #!optional fixnum fixnum) *))
 (irregex-search/matches (procedure irregex-search/matches (* string fixnum fixnum *) *))
 (irregex-split (procedure irregex-split (* string #!optional fixnum fixnum) list))
-(irregex-submatches (procedure irregex-submatches (*) *))
 (irregex-match-valid-index? 
  (procedure irregex-match-valid-index? ((struct regexp-match) *) boolean))
-(irregex? (procedure irregex? (*) boolean))
+
+(irregex? (procedure irregex? (*) boolean)
+	  (((struct regexp)) (let ((#:tmp #(1))) #t))
+	  (((not (struct regexp))) (let ((#:tmp #(1))) #f)))
+
 (make-irregex-chunker
  (procedure make-irregex-chunker 
 	    ((procedure (*) *)
@@ -778,6 +972,7 @@
 
 ;; lolevel
 
+;;XXX...
 (address->pointer (procedure address->pointer (fixnum) pointer))
 (align-to-word (procedure align-to-word (*) *))
 (allocate (procedure allocate (fixnum) pointer))
Trap