(in-package :cl-user)
;; No stepper support on some platforms.
-#-(or x86 x86-64 ppc sparc)
-(sb-ext:quit :unix-status 104)
+#-(or x86 x86-64 ppc sparc mips)
+(sb-ext:exit :code 104)
(defun fib (x)
(declare (optimize debug))
(defun test-step-into ()
(let* ((results nil)
- (expected '(("(< X 2)" :unknown)
- ("(- X 1)" :unknown)
- ("(FIB (1- X))" (2))
- ("(< X 2)" :unknown)
- ("(- X 1)" :unknown)
- ("(FIB (1- X))" (1))
- ("(< X 2)" :unknown)
- ("(- X 2)" :unknown)
- ("(FIB (- X 2))" (0))
- ("(< X 2)" :unknown)
- ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown)
- ("(- X 2)" :unknown)
- ("(FIB (- X 2))" (1))
- ("(< X 2)" :unknown)
- ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown)))
+ ;; The generic-< VOP on x86oids doesn't emit a full call
+ (expected
+ #-(or x86 x86-64)
+ '(("(< X 2)" :unknown)
+ ("(- X 1)" :unknown)
+ ("(FIB (1- X))" (2))
+ ("(< X 2)" :unknown)
+ ("(- X 1)" :unknown)
+ ("(FIB (1- X))" (1))
+ ("(< X 2)" :unknown)
+ ("(- X 2)" :unknown)
+ ("(FIB (- X 2))" (0))
+ ("(< X 2)" :unknown)
+ ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown)
+ ("(- X 2)" :unknown)
+ ("(FIB (- X 2))" (1))
+ ("(< X 2)" :unknown)
+ ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown))
+ #+(or x86 x86-64)
+ '(("(- X 1)" :unknown)
+ ("(FIB (1- X))" (2))
+ ("(- X 1)" :unknown)
+ ("(FIB (1- X))" (1))
+ ("(- X 2)" :unknown)
+ ("(FIB (- X 2))" (0))
+ ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown)
+ ("(- X 2)" :unknown)
+ ("(FIB (- X 2))" (1))
+ ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown)))
(*stepper-hook* (lambda (condition)
(typecase condition
(step-form-condition
(defun test-step-next ()
(let* ((results nil)
- (expected '(("(< X 2)" :unknown)
- ("(- X 1)" :unknown)
- ("(FIB (1- X))" (2))
- ("(< X 2)" :unknown)
- ("(- X 1)" :unknown)
- ("(FIB (1- X))" (1))
- ("(- X 2)" :unknown)
- ("(FIB (- X 2))" (0))
- ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown)
- ("(- X 2)" :unknown)
- ("(FIB (- X 2))" (1))
- ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown)))
+ (expected
+ #-(or x86 x86-64)
+ '(("(< X 2)" :unknown)
+ ("(- X 1)" :unknown)
+ ("(FIB (1- X))" (2))
+ ("(< X 2)" :unknown)
+ ("(- X 1)" :unknown)
+ ("(FIB (1- X))" (1))
+ ("(- X 2)" :unknown)
+ ("(FIB (- X 2))" (0))
+ ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown)
+ ("(- X 2)" :unknown)
+ ("(FIB (- X 2))" (1))
+ ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown))
+ #+(or x86 x86-64)
+ '(("(- X 1)" :unknown)
+ ("(FIB (1- X))" (2))
+ ("(- X 1)" :unknown)
+ ("(FIB (1- X))" (1))
+ ("(- X 2)" :unknown)
+ ("(FIB (- X 2))" (0))
+ ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown)
+ ("(- X 2)" :unknown)
+ ("(FIB (- X 2))" (1))
+ ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown)))
(count 0)
(*stepper-hook* (lambda (condition)
(typecase condition
(defun test-step-out ()
(let* ((results nil)
- (expected '(("(< X 2)" :unknown)
- ("(- X 1)" :unknown)
- ("(FIB (1- X))" (2))
- ("(< X 2)" :unknown)
- ("(- X 2)" :unknown)
- ("(FIB (- X 2))" (1))
- ("(< X 2)" :unknown)
- ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown)))
+ (expected
+ #-(or x86 x86-64)
+ '(("(< X 2)" :unknown)
+ ("(- X 1)" :unknown)
+ ("(FIB (1- X))" (2))
+ ("(< X 2)" :unknown)
+ ("(- X 2)" :unknown)
+ ("(FIB (- X 2))" (1))
+ ("(< X 2)" :unknown)
+ ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown))
+ #+(or x86 x86-64)
+ '(("(- X 1)" :unknown)
+ ("(FIB (1- X))" (2))
+ ("(- X 1)" :unknown)
+ ("(FIB (1- X))" (1))
+ ("(- X 2)" :unknown)
+ ("(FIB (- X 2))" (1))
+ ("(+ (FIB (1- X)) (FIB (- X 2)))" :unknown)))
(count 0)
(*stepper-hook* (lambda (condition)
(typecase condition
(defun test-step-start-from-break ()
(let* ((results nil)
- (expected '(("(- X 2)" :unknown)
- ("(FIB-BREAK (- X 2))" (0))
- ("(< X 2)" :unknown)
- ("(+ (FIB-BREAK (1- X)) (FIB-BREAK (- X 2)))" :unknown)
- ("(- X 2)" :unknown)
- ("(FIB-BREAK (- X 2))" (1))
- ("(< X 2)" :unknown)
- ("(+ (FIB-BREAK (1- X)) (FIB-BREAK (- X 2)))" :unknown)))
+ (expected
+ #-(or x86 x86-64)
+ '(("(- X 2)" :unknown)
+ ("(FIB-BREAK (- X 2))" (0))
+ ("(< X 2)" :unknown)
+ ("(+ (FIB-BREAK (1- X)) (FIB-BREAK (- X 2)))" :unknown)
+ ("(- X 2)" :unknown)
+ ("(FIB-BREAK (- X 2))" (1))
+ ("(< X 2)" :unknown)
+ ("(+ (FIB-BREAK (1- X)) (FIB-BREAK (- X 2)))" :unknown))
+ #+(or x86 x86-64)
+ '(("(- X 2)" :unknown)
+ ("(FIB-BREAK (- X 2))" (0))
+ ("(+ (FIB-BREAK (1- X)) (FIB-BREAK (- X 2)))" :unknown)
+ ("(- X 2)" :unknown)
+ ("(FIB-BREAK (- X 2))" (1))
+ ("(+ (FIB-BREAK (1- X)) (FIB-BREAK (- X 2)))" :unknown)))
(count 0)
(*stepper-hook* (lambda (condition)
(typecase condition
(incf count)
(invoke-restart 'step-next)))))))
(step (fib 3))
- (assert (= count 6))))
+ (assert (= count #-(or x86 x86-64) 6 #+(or x86 x86-64) 5))))
(defun test-step-backtrace ()
(let* ((*stepper-hook* (lambda (condition)