* keyboard interrupts are now continuable.
This commit is contained in:
parent
55254257fb
commit
3a3bc7dcc1
|
@ -25,7 +25,10 @@
|
|||
(run-benchmark
|
||||
"sum1"
|
||||
sum1-iters
|
||||
(lambda (result) (and (fl>=? result 15794.974999999)
|
||||
(fl<=? result 15794.975000001)))
|
||||
(lambda (result)
|
||||
(display result)
|
||||
(newline)
|
||||
(and (fl>=? result 15794.974999999)
|
||||
(fl<=? result 15794.975000001)))
|
||||
(lambda () (lambda () (go))))))
|
||||
|
||||
|
|
3371
benchmarks/timelog
3371
benchmarks/timelog
File diff suppressed because it is too large
Load Diff
|
@ -421,12 +421,26 @@
|
|||
(if value-dest
|
||||
(make-seq body (make-set value-dest return-value-register))
|
||||
body)))))
|
||||
;;; (define (alloc-check size)
|
||||
;;; (E (make-conditional ;;; PCB ALLOC-REDLINE
|
||||
;;; (make-primcall '<=
|
||||
;;; (list (make-primcall 'int+ (list apr size))
|
||||
;;; (make-primcall 'mref (list pcr (make-constant 4)))))
|
||||
;;; (make-primcall 'nop '())
|
||||
;;; (make-funcall
|
||||
;;; (make-primcall 'mref
|
||||
;;; (list
|
||||
;;; (make-constant (make-object (primref->symbol 'do-overflow)))
|
||||
;;; (make-constant (- disp-symbol-record-proc symbol-ptag))))
|
||||
;;; (list size)))))
|
||||
(define (alloc-check size)
|
||||
(E (make-conditional ;;; PCB ALLOC-REDLINE
|
||||
(make-primcall '<=
|
||||
(list (make-primcall 'int+ (list apr size))
|
||||
(make-primcall 'mref (list pcr (make-constant 4)))))
|
||||
(make-primcall 'nop '())
|
||||
(E (make-shortcut
|
||||
(make-conditional ;;; PCB ALLOC-REDLINE
|
||||
(make-primcall '<=
|
||||
(list (make-primcall 'int+ (list apr size))
|
||||
(make-primcall 'mref (list pcr (make-constant 4)))))
|
||||
(make-primcall 'nop '())
|
||||
(make-primcall 'interrupt '()))
|
||||
(make-funcall
|
||||
(make-primcall 'mref
|
||||
(list
|
||||
|
|
|
@ -45,8 +45,13 @@
|
|||
(define interrupt-handler
|
||||
(make-parameter
|
||||
(lambda ()
|
||||
(define-condition-type &interrupted &condition
|
||||
make-interrupted-condition interrupted-condition?)
|
||||
(set-port-output-index! (console-output-port) 0)
|
||||
(error #f "interrupted"))
|
||||
(raise-continuable
|
||||
(condition
|
||||
(make-interrupted-condition)
|
||||
(make-message-condition "received an interrupt signal"))))
|
||||
(lambda (x)
|
||||
(if (procedure? x)
|
||||
x
|
||||
|
|
|
@ -625,9 +625,9 @@
|
|||
(+ q (->flonum r d))))))
|
||||
(let ([n (numerator x)] [d (denominator x)])
|
||||
(let ([b (bitwise-first-bit-set n)])
|
||||
(if (eqv? b 0)
|
||||
(if (eqv? b 0)
|
||||
(let ([b (bitwise-first-bit-set d)])
|
||||
(if (eqv? b 0)
|
||||
(if (eqv? b 0)
|
||||
(->flonum n d)
|
||||
(/ (->flonum n (bitwise-arithmetic-shift-right d b))
|
||||
(expt 2.0 b))))
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
(tests string-to-number)
|
||||
(tests input-ports)
|
||||
(tests fldiv-and-mod)
|
||||
(tests parse-flonums)
|
||||
)
|
||||
|
||||
(define (test-exact-integer-sqrt)
|
||||
|
@ -45,6 +46,8 @@
|
|||
(f 0 536870911000 536870911)
|
||||
(printf "[exact-integer-sqrt] Happy Happy Joy Joy\n"))
|
||||
|
||||
(test-parse-flonums)
|
||||
|
||||
(test-reader)
|
||||
(test-char-syntax)
|
||||
(test-bytevectors)
|
||||
|
|
Loading…
Reference in New Issue