Skip to content

Commit f604884

Browse files
Apply optimization patch from Per Bothner.
In Per's words: 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 <[email protected]> * testing.scm: Some minor performance improvements. Mainly foucusing on reducing bytecode size. testing.scm: Some minor performance improvements.
1 parent a15623e commit f604884

File tree

1 file changed

+32
-18
lines changed

1 file changed

+32
-18
lines changed

testing.scm

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -114,16 +114,16 @@
114114
(srfi-9
115115
(define-syntax %test-record-define
116116
(syntax-rules ()
117-
((%test-record-define alloc runner? (name index setter getter) ...)
118-
(define-record-type test-runner
117+
((%test-record-define tname alloc runner? (name index getter setter) ...)
118+
(define-record-type tname
119119
(alloc)
120120
runner?
121-
(name setter getter) ...)))))
121+
(name getter setter) ...)))))
122122
(else
123123
(define %test-runner-cookie (list "test-runner"))
124124
(define-syntax %test-record-define
125125
(syntax-rules ()
126-
((%test-record-define alloc runner? (name index getter setter) ...)
126+
((%test-record-define tname alloc runner? (name index getter setter) ...)
127127
(begin
128128
(define (runner? obj)
129129
(and (vector? obj)
@@ -140,7 +140,7 @@
140140
(define (setter runner value)
141141
(vector-set! runner index value)) ...)))))))
142142

143-
(%test-record-define
143+
(%test-record-define test-runner
144144
%test-runner-alloc test-runner?
145145
;; Cumulate count of all tests that have passed and were expected to.
146146
(pass-count 1 test-runner-pass-count test-runner-pass-count!)
@@ -247,13 +247,21 @@
247247
(set! %test-runner-factory runner))))))
248248

249249
;; A safer wrapper to test-runner-current.
250-
(define (test-runner-get)
251-
(let ((r (test-runner-current)))
252-
(if (not r)
253-
(cond-expand
254-
(srfi-23 (error "test-runner not initialized - test-begin missing?"))
255-
(else #t)))
256-
r))
250+
(cond-expand
251+
(kawa
252+
(define (test-runner-get) ::test-runner
253+
(let ((r (test-runner-current)))
254+
(if (not r)
255+
(error "test-runner not initialized - test-begin missing?"))
256+
r)))
257+
(else
258+
(define (test-runner-get)
259+
(let ((r (test-runner-current)))
260+
(if (not r)
261+
(cond-expand
262+
(srfi-23 (error "test-runner not initialized - test-begin missing?"))
263+
(else #t)))
264+
r))))
257265

258266
(define (%test-specifier-matches spec runner)
259267
(spec runner))
@@ -554,6 +562,12 @@
554562
(set-cdr! p value)
555563
(test-result-alist! runner (cons (cons pname value) alist)))))
556564

565+
(define (test-result-actual-value! runner value)
566+
(test-result-set! runner 'actual-value value))
567+
568+
(define (test-result-expected-value! runner value)
569+
(test-result-set! runner 'expected-value value))
570+
557571
(define (test-result-clear runner)
558572
(test-result-alist! runner '()))
559573

@@ -683,9 +697,9 @@
683697
(let ()
684698
(if (%test-on-test-begin r)
685699
(let ((exp expected))
686-
(test-result-set! r 'expected-value exp)
700+
(test-result-expected-value! r exp)
687701
(let ((res (%test-evaluate-with-catch expr)))
688-
(test-result-set! r 'actual-value res)
702+
(test-result-actual-value! r res)
689703
(%test-on-test-end r (comp exp res)))))
690704
(%test-report-result)))))
691705

@@ -707,7 +721,7 @@
707721
(if (%test-on-test-begin r)
708722
(let ()
709723
(let ((res (%test-evaluate-with-catch expr)))
710-
(test-result-set! r 'actual-value res)
724+
(test-result-actual-value! r res)
711725
(%test-on-test-end r res))))
712726
(%test-report-result)))))
713727

@@ -830,7 +844,7 @@
830844
(%test-on-test-end r
831845
(catch #t
832846
(lambda ()
833-
(test-result-set! r 'actual-value expr)
847+
(test-result-actual-value! r expr)
834848
#f)
835849
(lambda (key . args)
836850
;; TODO: decide how to specify expected
@@ -861,7 +875,7 @@
861875
(%test-on-test-end r
862876
(try-catch
863877
(let ()
864-
(test-result-set! r 'actual-value expr)
878+
(test-result-actual-value! r expr)
865879
#f)
866880
(ex <java.lang.Throwable>
867881
(test-result-set! r 'actual-error ex)
@@ -874,7 +888,7 @@
874888
(%test-on-test-end r
875889
(try-catch
876890
(let ()
877-
(test-result-set! r 'actual-value expr)
891+
(test-result-actual-value! r expr)
878892
#f)
879893
(ex <java.lang.Throwable>
880894
(test-result-set! r 'actual-error ex)

0 commit comments

Comments
 (0)