~ chicken-core (chicken-5) aa0be1fce1804c06b673720244fef4ec2af9fedf


commit aa0be1fce1804c06b673720244fef4ec2af9fedf
Author:     felix <felix@y.(none)>
AuthorDate: Mon Mar 1 21:20:25 2010 +0100
Commit:     felix <felix@y.(none)>
CommitDate: Mon Mar 1 21:20:25 2010 +0100

    somewhat better line-info handling, included files retain source filename, made include syntax expanding into core-form (handled differently by compiler and interpreter), added unboxing for pointer-ops, removed unsafe warning for compiled code in dynamic mode, rewrite rules for lolevel some pointer ops and what the heck else

diff --git a/batch-driver.scm b/batch-driver.scm
index 4812bbd4..9094eb1c 100644
--- a/batch-driver.scm
+++ b/batch-driver.scm
@@ -123,18 +123,6 @@
 	   (newline))
 	 xs) ) )
 
-    (define (infohook class data val)
-      (let ([data2 ((or ##sys#default-read-info-hook (lambda (a b c) b)) class data val)])
-	(when (and (eq? 'list-info class) (symbol? (car data2)))
-	  (##sys#hash-table-set!
-	   ##sys#line-number-database
-	   (car data2)
-	   (alist-cons 
-	    data2 val
-	    (or (##sys#hash-table-ref ##sys#line-number-database (car data2))
-		'() ) ) ) )
-	data2) )
-
     (define (arg-val str)
       (let* ((len (string-length str))
 	     (len1 (- len 1)) )
@@ -158,9 +146,6 @@
       (when time-breakdown
 	(printf "milliseconds needed for ~a: \t~s~%" pass (- (cputime) time0)) ) )
 
-    (define (read-form in)
-      (##sys#read in infohook) )
-
     (define (analyze pass node . args)
       (let-optionals args ((no 0) (contf #t))
         (let ((db (analyze-expression node)))
@@ -413,11 +398,13 @@
 			(let* ((f (car files))
 			       (in (check-and-open-input-file f)) )
 			  (fluid-let ((##sys#current-source-filename f))
-			    (let ((x1 (read-form in)) )
-			      (do ((x x1 (read-form in)))
-				  ((eof-object? x) 
-				   (close-checked-input-file in f) )
-				(set! forms (cons x forms)) ) ) ) ) ) ] ) ) )
+			    (let loop ()
+			      (let ((x (read/source-info in)))
+				(cond ((eof-object? x) 
+				       (close-checked-input-file in f) )
+				      (else
+				       (set! forms (cons x forms))
+				       (loop)))))))) ] ) ) )
 
 	   ;; Start compilation passes:
 	   (let ([proc (user-preprocessor-pass)])
@@ -428,7 +415,8 @@
 	   (print-expr "source" '|1| forms)
 	   (begin-time)
 	   (unless (null? uses-units)
-	     (set! ##sys#explicit-library-modules (append ##sys#explicit-library-modules uses-units))
+	     (set! ##sys#explicit-library-modules
+	       (append ##sys#explicit-library-modules uses-units))
 	     (set! forms (cons `(declare (uses ,@uses-units)) forms)) )
 	   (let* ([exps0 (map canonicalize-expression (append initforms forms))]
 		  [pvec (gensym)]
@@ -467,11 +455,6 @@
 	     (when (and unit-name dynamic)
 	       (compiler-warning 'usage "library unit `~a' compiled in dynamic mode" unit-name) )
 
-	     (when (and unsafe (feature? 'compiling-extension))
-	       (compiler-warning 
-		'style
-		"compiling extensions in unsafe mode is bad practice and should be avoided") )
-
 	     (set! ##sys#line-number-database line-number-database-2)
 	     (set! line-number-database-2 #f)
 
diff --git a/c-platform.scm b/c-platform.scm
index cfa2b904..05688567 100644
--- a/c-platform.scm
+++ b/c-platform.scm
@@ -822,7 +822,7 @@
 (rewrite 'string 16 #f "C_a_i_string" #t #t) ; the last #t is actually too much, but we don't care
 (rewrite 'address->pointer 16 1 "C_a_i_address_to_pointer" #f 2)
 (rewrite 'pointer->address 16 1 "C_a_i_pointer_to_address" #f words-per-flonum)
-(rewrite 'pointer+ 16 2 "C_a_i_pointer_inc" #f 2)
+(rewrite 'pointer+ 16 2 "C_a_u_i_pointer_inc" #f 2)
 
 (rewrite 'pointer-u8-ref 2 1 "C_u_i_pointer_u8_ref" #f)
 (rewrite 'pointer-s8-ref 2 1 "C_u_i_pointer_s8_ref" #f)
diff --git a/chicken-syntax.scm b/chicken-syntax.scm
index 14154fee..8e15d715 100644
--- a/chicken-syntax.scm
+++ b/chicken-syntax.scm
@@ -157,19 +157,9 @@
 (##sys#extend-macro-environment
  'include '()
  (##sys#er-transformer
- (lambda (form r c)
-   (##sys#check-syntax 'include form '(_ string))
-   (let ((path (##sys#resolve-include-filename (cadr form) #t))
-	 (%begin (r 'begin)))
-     (when (load-verbose) (print "; including " path " ..."))
-     `(,%begin
-       ,@(with-input-from-file path
-	   (lambda ()
-	     (fluid-let ((##sys#current-source-filename path))
-	       (do ([x (read) (read)]
-		    [xs '() (cons x xs)] )
-		   ((eof-object? x) 
-		    (reverse xs))) ) ) ) ) ) ) ) )
+  (lambda (form r c)
+    (##sys#check-syntax 'include form '(_ string))
+    `(##core#include ,(cadr form)))))
 
 (##sys#extend-macro-environment
  'assert '()
diff --git a/chicken.h b/chicken.h
index 85ee46b0..bc45b15e 100644
--- a/chicken.h
+++ b/chicken.h
@@ -1294,10 +1294,10 @@ extern double trunc(double);
 
 #define C_u_i_bit_setp(x, i)            C_mk_bool((C_unfix(x) & (1 << C_unfix(i))) != 0)
 
-#define C_u_i_pointer_u8_ref(ptr)         C_fix(((unsigned char *)C_block_item(ptr, 0)))
-#define C_u_i_pointer_s8_ref(ptr)         C_fix(((char *)C_block_item(ptr, 0)))
-#define C_u_i_pointer_u16_ref(ptr)        C_fix(((unsigned short *)C_block_item(ptr, 0)))
-#define C_u_i_pointer_s16_ref(ptr)        C_fix(((short *)C_block_item(ptr, 0)))
+#define C_u_i_pointer_u8_ref(ptr)         C_fix(*((unsigned char *)C_block_item(ptr, 0)))
+#define C_u_i_pointer_s8_ref(ptr)         C_fix(*((char *)C_block_item(ptr, 0)))
+#define C_u_i_pointer_u16_ref(ptr)        C_fix(*((unsigned short *)C_block_item(ptr, 0)))
+#define C_u_i_pointer_s16_ref(ptr)        C_fix(*((short *)C_block_item(ptr, 0)))
 #define C_a_u_i_pointer_u32_ref(ap, n, ptr)  \
   C_unsigned_int_to_num(ap, *((C_u32 *)C_block_item(ptr, 0)))
 #define C_a_u_i_pointer_s32_ref(ap, n, ptr)  \
diff --git a/chicken.scm b/chicken.scm
index 281a6874..167e2284 100644
--- a/chicken.scm
+++ b/chicken.scm
@@ -82,7 +82,6 @@
 	       (let ([level (string->number (car rest))])
 		 (case level
 		   [(0) #f]
-		   ;;XXX later add 'unboxing to -O2 and above
 		   [(1)
 		    (set! options (cons 'optimize-leaf-routines options)) ]
 		   [(2)
diff --git a/compiler-namespace.scm b/compiler-namespace.scm
index 48c417d2..109887c4 100644
--- a/compiler-namespace.scm
+++ b/compiler-namespace.scm
@@ -172,6 +172,7 @@
  immediate?
  immutable-constants
  import-libraries
+ read-info-hook
  initialize-analysis-database
  initialize-compiler
  inline-globally
@@ -239,6 +240,7 @@
  put!
  qnode
  r-c-s
+ read/source-info
  real-name
  real-name-table
  real-name2
@@ -261,8 +263,8 @@
  simplify-named-call
  sort-symbols
  source-filename
- source-info->line
  source-info->string
+ source-info->line
  standalone-executable
  string->c-identifier
  string->expr
diff --git a/compiler-syntax.scm b/compiler-syntax.scm
index 1de408cf..3f85aed3 100644
--- a/compiler-syntax.scm
+++ b/compiler-syntax.scm
@@ -179,9 +179,9 @@
 	      (let ((ln (get-line x)))
 		(compiler-warning 
 		 'syntax
-		 "(~a) in format string ~s~a, ~?" 
+		 "`~a', in format string ~s~a, ~?" 
 		 func fstr 
-		 (if ln (sprintf " in line ~a" ln) "")
+		 (if ln (sprintf "(~a)" ln) "")
 		 msg args) ) 
 	      (when ret? (return #f)))
 	    (let ((code '())
diff --git a/compiler.scm b/compiler.scm
index 1c728b16..242c155c 100644
--- a/compiler.scm
+++ b/compiler.scm
@@ -4,7 +4,7 @@
 ; "This is insane. What we clearly want to do is not exactly clear, and is rooted in NCOMPLR."
 ;
 ;
-;-----------------------------------------------------------------------------------------------------------
+;--------------------------------------------------------------------------------------------------
 ; Copyright (c) 2008-2010, The Chicken Team
 ; Copyright (c) 2000-2007, Felix L. Winkelmann
 ; All rights reserved.
@@ -111,6 +111,7 @@
 ; ([##core#]lambda ({<variable>}+ [. <variable>]) <body>)
 ; ([##core#]set! <variable> <exp>)
 ; ([##core#]begin <exp> ...)
+; (##core#include <string>)
 ; (##core#named-lambda <name> <llist> <body>)
 ; (##core#loop-lambda <llist> <body>)
 ; (##core#undefined)
@@ -526,7 +527,7 @@
 	     (emit-syntax-trace-info x #f)
 	     (unless (proper-list? x)
 	       (if ln
-		   (syntax-error (sprintf "(in line ~s) - malformed expression" ln) x)
+		   (syntax-error (sprintf "(~a) - malformed expression" ln) x)
 		   (syntax-error "malformed expression" x)))
 	     (set! ##sys#syntax-error-culprit x)
 	     (let* ((name0 (lookup (car x) se))
@@ -803,6 +804,13 @@
 				   (##sys#put! (car b) '##compiler#compiler-syntax (caddr b)))
 				 bs) ) ) ) )
 
+		       ((##core#include)
+			(walk
+			 `(##core#begin
+			   ,@(fluid-let ((##sys#default-read-info-hook read-info-hook))
+			       (##sys#include-forms-from-file (cadr x))))
+			 e se dest))
+
 		       ((##core#module)
 			(let* ((name (##sys#strip-syntax (cadr x)))
 			       (exports 
@@ -950,7 +958,7 @@
 				    (compiler-warning 
 				     'var "assigned global variable `~S' is a macro ~A"
 				     var
-				     (if ln (sprintf "in line ~S" ln) "") )
+				     (if ln (sprintf "(~a)" ln) "") )
 				    (when undefine-shadowed-macros (##sys#undefine-macro! var) ) )
 				  (when (keyword? var)
 				    (compiler-warning 'syntax "assignment to keyword `~S'" var) )
@@ -2149,8 +2157,9 @@
 						     custom
 						     (not (= (llist-length llist) (length (cdr subs)))))
 					    (quit
-					     "known procedure called with wrong number of arguments: ~A" 
-					     (source-info->string name) ) )
+					     "~a: procedure `~a' called with wrong number of arguments" 
+					     (source-info->line name)
+					     (cadr name)))
 					  (register-direct-call! id)
 					  (when custom (register-customizable! varname id)) 
 					  (list id custom) )
diff --git a/eval.scm b/eval.scm
index f0d37497..63dd823d 100644
--- a/eval.scm
+++ b/eval.scm
@@ -640,6 +640,10 @@
 			   (##sys#canonicalize-body (cddr x) se #f)
 			   e #f tf cntr se))
 
+			 ((##core#include)
+			  `(##core#begin
+			    ,@(##sys#include-forms-from-file (cadr x))))
+
 			 ((##core#module)
 			  (let* ((name (##sys#strip-syntax (cadr x)))
 				 (exports 
@@ -938,18 +942,18 @@
 			  (##sys#dload (##sys#make-c-string (##sys#string-append "./" fname)) topentry #t) ) ) )
 	    (call-with-current-continuation
 	     (lambda (abrt)
-	       (fluid-let ([##sys#read-error-with-line-number #t]
-			   [##sys#current-source-filename fname]
-			   [##sys#current-load-path
+	       (fluid-let ((##sys#read-error-with-line-number #t)
+			   (##sys#current-source-filename fname)
+			   (##sys#current-load-path
 			    (and fname
 				 (let ((i (has-sep? fname)))
-				   (if i (##sys#substring fname 0 (fx+ i 1)) "") ) ) ]
-			   [##sys#abort-load (lambda () (abrt #f))] )
-		 (let ([in (if fname (open-input-file fname) input)])
+				   (if i (##sys#substring fname 0 (fx+ i 1)) "") ) ) )
+			   (##sys#abort-load (lambda () (abrt #f))) )
+		 (let ((in (if fname (open-input-file fname) input)))
 		   (##sys#dynamic-wind
 		    (lambda () #f)
 		    (lambda ()
-		      (let ([c1 (peek-char in)])
+		      (let ((c1 (peek-char in)))
 			(when (char=? c1 (integer->char 127))
 			  (##sys#error 'load "unable to load compiled module" fname _dlerror) ) )
 		      (let ((x1 (read in)))
@@ -1065,6 +1069,23 @@
 		   (loop (cons (##sys#substring str j i) items) i2 i2) ) ]
 		[else (loop items (fx+ i 1) j)] ) ) ) ) ) )
 
+(define ##sys#include-forms-from-file
+  (let ((load-verbose load-verbose)
+	(print print)
+	(with-input-from-file with-input-from-file)
+	(read read)
+	(reverse reverse))
+    (lambda (fname)
+      (let ((path (##sys#resolve-include-filename fname #t)))
+	(when (load-verbose) (print "; including " path " ..."))
+	(with-input-from-file path
+	  (lambda ()
+	    (fluid-let ((##sys#current-source-filename path))
+	      (do ((x (read) (read))
+		   (xs '() (cons x xs)) )
+		  ((eof-object? x) 
+		   (reverse xs))) ) ) ) ) ) ) )
+
 
 ;;; Extensions:
 
diff --git a/expand.scm b/expand.scm
index c4bb07d8..8854aa20 100644
--- a/expand.scm
+++ b/expand.scm
@@ -545,8 +545,8 @@
 		      [(eq? 'define-values head)
 		       (##sys#check-syntax 'define-values x '(define-values #(_ 0) _) #f se)
 		       (loop rest vars vals (cons (cadr x) mvars) (cons (caddr x) mvals)) ]
-		      [(eq? 'begin head)
-		       (##sys#check-syntax 'begin x '(begin . #(_ 0)) #f se)
+		      [(or (eq? 'begin head) (eq? '##core#begin head))
+		       (##sys#check-syntax 'begin x '(_ . #(_ 0)) #f se)
 		       (loop (##sys#append (cdr x) rest) vars vals mvars mvals) ]
 		      ((or (memq head vars) (memq head mvars))
 		       (fini vars vals mvars mvals body))
@@ -633,8 +633,8 @@
 	       [ln (get-line-number sexp)] )
 	  (##sys#syntax-error-hook
 	   (if ln 
-	       (string-append "(" (symbol->string id) ") in line " (number->string ln) " - " msg)
-	       (string-append "(" (symbol->string id) ") " msg) )
+	       (string-append "(" ln ") in `" (symbol->string id) "' - " msg)
+	       (string-append "in `" (symbol->string id) "' - " msg) )
 	   exp) ) )
 
       (define (lambda-list? x)
diff --git a/library.scm b/library.scm
index 1559b9d6..2c368c9b 100644
--- a/library.scm
+++ b/library.scm
@@ -2232,7 +2232,7 @@ EOF
        ##sys#warn
        (let ((ln (##sys#port-line port)))
 	 (if (and ##sys#read-error-with-line-number ln)
-	     (string-append msg " in line " (##sys#number->string ln))
+	     (string-append "(" ln ") " msg)
 	     msg) )
        args) ) ) )
 
@@ -2244,7 +2244,7 @@ EOF
        #:syntax-error
        (let ((ln (##sys#port-line port)))
 	 (if (and ##sys#read-error-with-line-number ln)
-	     (string-append msg " in line " (##sys#number->string ln))
+	     (string-append "(" ln ") " msg)
 	     msg) )
        args) ) ) )
 
diff --git a/lolevel.scm b/lolevel.scm
index 2139e6e5..521a6356 100644
--- a/lolevel.scm
+++ b/lolevel.scm
@@ -363,14 +363,45 @@ EOF
 (define (pointer-f32-set! p n) (##core#inline "C_u_i_pointer_f32_set" p n))
 (define (pointer-f64-set! p n) (##core#inline "C_u_i_pointer_f64_set" p n))
 
-(define (pointer-u8-ref p) (##core#inline "C_u_i_pointer_u8_ref" p))
-(define (pointer-s8-ref p) (##core#inline "C_u_i_pointer_s8_ref" p))
-(define (pointer-u16-ref p) (##core#inline "C_u_i_pointer_u16_ref" p))
-(define (pointer-s16-ref p) (##core#inline "C_u_i_pointer_s16_ref" p))
-(define (pointer-u32-ref p) (##core#inline_allocate ("C_a_u_i_pointer_u32_ref" 4) p))
-(define (pointer-s32-ref p) (##core#inline_allocate ("C_a_u_i_pointer_s32_ref" 4) p))
-(define (pointer-f32-ref p) (##core#inline_allocate ("C_a_u_i_pointer_f32_ref" 4) p))
-(define (pointer-f64-ref p) (##core#inline_allocate ("C_a_u_i_pointer_f64_ref" 4) p))
+(define pointer-u8-ref
+  (getter-with-setter
+   (lambda (p) (##core#inline "C_u_i_pointer_u8_ref" p))
+   pointer-u8-set!))
+
+(define pointer-s8-ref
+  (getter-with-setter
+   (lambda (p) (##core#inline "C_u_i_pointer_s8_ref" p))
+   pointer-s8-set!))
+
+(define pointer-u16-ref
+  (getter-with-setter
+   (lambda (p) (##core#inline "C_u_i_pointer_u16_ref" p))
+   pointer-u16-set!))
+
+(define pointer-s16-ref
+  (getter-with-setter
+   (lambda (p) (##core#inline "C_u_i_pointer_s16_ref" p))
+   pointer-s16-set!))
+
+(define pointer-u32-ref
+  (getter-with-setter
+   (lambda (p) (##core#inline_allocate ("C_a_u_i_pointer_u32_ref" 4) p)) ;XXX hardcoded size
+   pointer-u32-set!))
+
+(define pointer-s32-ref
+  (getter-with-setter
+   (lambda (p) (##core#inline_allocate ("C_a_u_i_pointer_s32_ref" 4) p)) ;XXX hardcoded size
+   pointer-s32-set!))
+
+(define pointer-f32-ref
+  (getter-with-setter
+   (lambda (p) (##core#inline_allocate ("C_a_u_i_pointer_f32_ref" 4) p)) ;XXX hardcoded size
+   pointer-f32-set!))
+
+(define pointer-f64-ref
+  (getter-with-setter
+   (lambda (p) (##core#inline_allocate ("C_a_u_i_pointer_f64_ref" 4) p)) ;XXX hardcoded size
+   pointer-f64-set!))
 
 
 ;;; Procedures extended with data:
diff --git a/scrutinizer.scm b/scrutinizer.scm
index 9b0d998c..0767458f 100644
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -419,15 +419,14 @@
 	 (pp (fragment x))))))
   (define (call-result args e loc x params)
     (define (pname)
-      (sprintf 
-       "in procedure call to `~s'~a" 
-       (fragment x)
-       (if (and (pair? params) (pair? (cdr params)))
-	   (let ((n (source-info->line (cadr params))))
-	     (if (number? n)
-		 (sprintf " (line ~a)" n)
-		 ""))
-	   "")))
+      (sprintf "~ain procedure call to `~s', " 
+	  (if (and (pair? params) (pair? (cdr params)))
+	      (let ((n (source-info->line (cadr params))))
+		(if n
+		    (sprintf "~a: " n)
+		    ""))
+	      "")
+	(fragment x)))
     (d "call-result: ~a (~a)" args loc)
     (let* ((ptype (car args))
 	   (nargs (length (cdr args)))
@@ -437,7 +436,7 @@
 	(report
 	 loc
 	 (sprintf
-	  "expected ~a a value of type `~a', but were given a value of type `~a'"
+	  "~aexpected a value of type `~a', but were given a value of type `~a'"
 	  (pname) 
 	  xptype
 	  ptype)))
@@ -448,7 +447,7 @@
 	    (report 
 	     loc
 	     (sprintf
-	      "expected ~a ~a argument~a, but where given ~a argument~a"
+	      "~aexpected ~a argument~a, but where given ~a argument~a"
 	      (pname) alen (multiples alen)
 	      nargs (multiples nargs)))))
 	(do ((args (cdr args) (cdr args))
@@ -459,8 +458,8 @@
 	    (report
 	     loc
 	     (sprintf
-	      "expected argument #~a of type `~a' ~a, but where given an argument of type `~a'"
-	      i (car atypes) (pname) (car args)))))
+	      "~aexpected argument #~a of type `~a', but where given an argument of type `~a'"
+	      (pname) i (car atypes) (car args)))))
 	(let ((r (procedure-result-types ptype values-rest (cdr args))))
 	  (d  "  result-types: ~a" r)
 	  r))))
diff --git a/support.scm b/support.scm
index 6b7b6d82..88c94a57 100644
--- a/support.scm
+++ b/support.scm
@@ -177,7 +177,7 @@
   (cond [(string=? fname "-") (current-input-port)]
 	[(file-exists? fname) (open-input-file fname)]
 	[(or (null? line) (not (car line))) (quit "Can not open file ~s" fname)]
-	[else (quit "Can not open file ~s in line ~s" fname (car line))] ) )
+	[else (quit "(~a) can not open file ~s" (car line) fname)] ) )
 
 (define (close-checked-input-file port fname)
   (unless (string=? fname "-") (close-input-port port)) )
@@ -531,7 +531,8 @@
 			       [else #f] )
 			 (if ln
 			     (let ([rn (real-name name)])
-			       (list source-filename ln (or rn (##sys#symbol->qualified-string name))) )
+			       (list ln
+				     (or rn (##sys#symbol->qualified-string name))) )
 			     (##sys#symbol->qualified-string name) ) )
 		   (map walk x) ) ) ) ) )
 	    (else (make-node '##core#call '(#f) (map walk x))) ) )
@@ -1374,17 +1375,15 @@ EOF
 
 (define (source-info->string info)
   (if (list? info)
-      (let ((file (car info))
-	    (ln (cadr info))
-	    (name (caddr info)))
-	(let ((lns (->string ln)))
-	  (conc file ": " lns (make-string (max 0 (- 4 (string-length lns))) #\space) " " name) ) )
-      (and info (->string info))) )
+      (let ((ln (car info))
+	    (name (cadr info)))
+	(conc ln ":" (make-string (max 0 (- 4 (string-length ln))) #\space) " " name) )
+      info))
 
 (define (source-info->line info)
   (if (list? info)
-      (cadr info)
-      (and info (->string info))) )
+      (car info)
+      (and info (->string info))))
 
 
 ;;; We need this for constant folding:
@@ -1415,6 +1414,23 @@ EOF
   (newline) )
 
 
+;;; Hook for source information
+
+(define (read-info-hook class data val)
+  (when (and (eq? 'list-info class) (symbol? (car data)))
+    (##sys#hash-table-set!
+     ##sys#line-number-database
+     (car data)
+     (alist-cons 
+      data (conc ##sys#current-source-filename ":" val)
+      (or (##sys#hash-table-ref ##sys#line-number-database (car data))
+	  '() ) ) ) )
+  data)
+
+(define (read/source-info in)
+  (##sys#read in read-info-hook) )
+
+
 ;;; "#> ... <#" syntax:
 
 (set! ##sys#user-read-hook
diff --git a/tests/lolevel-tests.scm b/tests/lolevel-tests.scm
index 2258554d..a1ed0f93 100644
--- a/tests/lolevel-tests.scm
+++ b/tests/lolevel-tests.scm
@@ -55,9 +55,9 @@
 
 (assert (pointer=? some-chunk (address->pointer (pointer->address some-chunk))))
 
-; pointer-offset
+; pointer+
 
-(assert (pointer=? (address->pointer #x9) (pointer-offset (address->pointer #x5) #x4)))
+(assert (pointer=? (address->pointer #x9) (pointer+ (address->pointer #x5) #x4)))
 
 ; align-to-word
 
diff --git a/unboxing.scm b/unboxing.scm
index 28e6a65a..4efe84b8 100644
--- a/unboxing.scm
+++ b/unboxing.scm
@@ -35,7 +35,7 @@
   (when (##sys#fudge 13)
     (printf "[debug] ~?~%" fstr args)) )
 
-;(define-syntax d (syntax-rules () ((_ . _) (void))))
+(define-syntax d (syntax-rules () ((_ . _) (void))))
 
 
 (define (perform-unboxing! node)
@@ -386,7 +386,7 @@
   (syntax-rules ()
     ((_ (name atypes rtype alt) ...)
      (begin
-       (register-unboxed-op #f 'name 'atypes 'rtype 'alt) ...))))
+       (register-unboxed-op 'name 'atypes 'rtype 'alt) ...))))
 
 (define (register-unboxed-op name atypes rtype alt)
   (##sys#put! (symbolify name) '##compiler#unboxed-op (list alt atypes rtype)))
Trap