diff --git a/compiler/mips/debug.lisp b/compiler/mips/debug.lisp index a6bc94d1f64d208276a2371ff02f54afda024032..371357be544482a77417ca9a4cf40574f4a226af 100644 --- a/compiler/mips/debug.lisp +++ b/compiler/mips/debug.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman (FAHLMAN@CMUC). ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/debug.lisp,v 1.3 1990/06/18 18:14:33 wlott Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/debug.lisp,v 1.4 1990/07/02 04:48:43 wlott Exp $ ;;; ;;; Compiler support for the new whizzy debugger. ;;; @@ -74,12 +74,20 @@ (:temporary (:scs (non-descriptor-reg)) temp) (:variant-vars lowtag) (:generator 5 - (loadw temp thing 0 lowtag) - (inst srl temp vm:type-bits) - (inst sll temp (1- (integer-length vm:word-bytes))) - (unless (= lowtag vm:other-pointer-type) - (inst addu temp (- vm:other-pointer-type lowtag))) - (inst subu code thing temp))) + (let ((bogus (gen-label)) + (done (gen-label))) + (loadw temp thing 0 lowtag) + (inst srl temp vm:type-bits) + (inst beq temp bogus) + (inst sll temp (1- (integer-length vm:word-bytes))) + (unless (= lowtag vm:other-pointer-type) + (inst addu temp (- lowtag vm:other-pointer-type))) + (inst subu code thing temp) + (emit-label done) + (assemble (*elsewhere*) + (emit-label bogus) + (inst b done) + (move code null-tn))))) (define-vop (code-from-lra code-from-mumble) (:translate lra-code-header)