This is a minor optimization and cleanup. It's mainly to reduce the code size 
for tests-suite
(which is a concern on Kawa due to annoying JVM limitations).

It mostly makes sense to merge this into the reference implementation to reduce
divergence from the Kawa version.

ChangeLog:

2017-04-09  Per Bothner  <p...@bothner.com>

        * testing.scm: Some minor performance improvements.
        Mainly foucusing on reducing bytecode size. testing.scm: Some minor 
performance improvements.

--
        --Per Bothner
p...@bothner.com   http://per.bothner.com/
diff --git a/gnu/kawa/slib/testing.scm b/gnu/kawa/slib/testing.scm
index d31aaf319..7ffcfd931 100644
--- a/gnu/kawa/slib/testing.scm
+++ b/gnu/kawa/slib/testing.scm
@@ -109,16 +109,16 @@
  (srfi-9
   (define-syntax %test-record-define
     (syntax-rules ()
-      ((%test-record-define alloc runner? (name index setter getter) ...)
-       (define-record-type test-runner
+      ((%test-record-define tname alloc runner? (name index getter setter) ...)
+       (define-record-type tname
 	 (alloc)
 	 runner?
-	 (name setter getter) ...)))))
+	 (name getter setter) ...)))))
  (else
   (define %test-runner-cookie (list "test-runner"))
   (define-syntax %test-record-define
     (syntax-rules ()
-      ((%test-record-define alloc runner? (name index getter setter) ...)
+      ((%test-record-define tname alloc runner? (name index getter setter) ...)
        (begin
 	 (define (runner? obj)
 	   (and (vector? obj)
@@ -135,7 +135,7 @@
 	   (define (setter runner value)
 	     (vector-set! runner index value)) ...)))))))
 
-(%test-record-define
+(%test-record-define test-runner
  %test-runner-alloc test-runner?
  ;; Cumulate count of all tests that have passed and were expected to.
  (pass-count 1 test-runner-pass-count test-runner-pass-count!)
@@ -242,13 +242,21 @@
        (set! %test-runner-factory runner))))))
 
 ;; A safer wrapper to test-runner-current.
-(define (test-runner-get)
-  (let ((r (test-runner-current)))
-    (if (not r)
-	(cond-expand
-	 (srfi-23 (error "test-runner not initialized - test-begin missing?"))
-	 (else #t)))
-    r))
+(cond-expand
+ (kawa
+  (define (test-runner-get) ::test-runner
+    (let ((r (test-runner-current)))
+      (if (not r)
+          (error "test-runner not initialized - test-begin missing?"))
+      r)))
+ (else
+  (define (test-runner-get)
+    (let ((r (test-runner-current)))
+      (if (not r)
+          (cond-expand
+           (srfi-23 (error "test-runner not initialized - test-begin missing?"))
+           (else #t)))
+      r))))
 
 (define (%test-specifier-matches spec runner)
   (spec runner))
@@ -528,6 +536,12 @@
 	(set-cdr! p value)
 	(test-result-alist! runner (cons (cons pname value) alist)))))
 
+(define (test-result-actual-value! runner value)
+  (test-result-set! runner 'actual-value value))
+
+(define (test-result-expected-value! runner value)
+  (test-result-set! runner 'expected-value value))
+
 (define (test-result-clear runner)
   (test-result-alist! runner '()))
 
@@ -657,9 +671,9 @@
 		 (let ()
 		   (if (%test-on-test-begin r)
 		       (let ((exp expected))
-			 (test-result-set! r 'expected-value exp)
+			 (test-result-expected-value! r exp)
 			 (let ((res (%test-evaluate-with-catch expr)))
-			   (test-result-set! r 'actual-value res)
+			   (test-result-actual-value! r res)
 			   (%test-on-test-end r (comp exp res)))))
 		   (%test-report-result)))))
 
@@ -681,7 +695,7 @@
        (if (%test-on-test-begin r)
 	   (let ()
 	     (let ((res (%test-evaluate-with-catch expr)))
-	       (test-result-set! r 'actual-value res)
+	       (test-result-actual-value! r res)
 	       (%test-on-test-end r res))))
        (%test-report-result)))))
 
@@ -804,7 +818,7 @@
                 (%test-on-test-end r
                                    (catch #t
                                      (lambda ()
-                                       (test-result-set! r 'actual-value expr)
+                                       (test-result-actual-value! r expr)
                                        #f)
                                      (lambda (key . args)
                                        ;; TODO: decide how to specify expected
@@ -835,7 +849,7 @@
 	      (%test-on-test-end r
 				 (try-catch
 				  (let ()
-				    (test-result-set! r 'actual-value expr)
+				    (test-result-actual-value! r expr)
 				    #f)
 				  (ex <java.lang.Throwable>
 				      (test-result-set! r 'actual-error ex)
@@ -848,7 +862,7 @@
 	     (%test-on-test-end r
 				(try-catch
 				 (let ()
-				   (test-result-set! r 'actual-value expr)
+				   (test-result-actual-value! r expr)
 				   #f)
 				 (ex <java.lang.Throwable>
 				     (test-result-set! r 'actual-error ex)

Reply via email to