From 566750b7cfc04a11c3c631864f0abedec2af53bf Mon Sep 17 00:00:00 2001 From: ram <ram> Date: Fri, 13 Apr 1990 12:55:45 +0000 Subject: [PATCH] Moved POINTER-COMPARE here, since this is now loaded before system. --- compiler/old-rt/char.lisp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/compiler/old-rt/char.lisp b/compiler/old-rt/char.lisp index 4254d0f70..a99f45f7d 100644 --- a/compiler/old-rt/char.lisp +++ b/compiler/old-rt/char.lisp @@ -30,7 +30,8 @@ (unless (location= x y) (inst lr y x)))) ;;; -(define-move-vop string-char-move :move (string-char-reg) (string-char-reg)) +(define-move-vop string-char-move :move + (string-char-reg) (string-char-reg)) ;;; Move untagged string-char arguments/return-values. @@ -98,6 +99,22 @@ (unless (location= code res) (inst lr res code)))) + +(define-vop (pointer-compare) + (:args (x :scs (any-reg descriptor-reg)) + (y :scs (any-reg descriptor-reg))) + (:conditional) + (:info target not-p) + (:policy :fast-safe) + (:note "inline comparison") + (:variant-vars condition) + (:generator 3 + (inst cl x y) + (if not-p + (inst bnb condition target) + (inst bb condition target)))) + + ;;; For comparison of string-chars, we require both operands to be in the ;;; untagged string-char-reg representation. This will be a pessimization if ;;; both operands are tagged, but this won't happen often, and not in -- GitLab