- ;; KLUDGE: The "3" here is a mask for the bits which will be
- ;; zero in a fixnum. It should have a symbolic name. (Actually,
- ;; it might already have a symbolic name which the coder
- ;; couldn't be bothered to use..) -- WHN 19990917
- (inst test x 3)
- (inst jmp :nz TAIL-CALL-TO-STATIC-FN)
- (inst test y 3)
- (inst jmp :z INLINE-FIXNUM-COMPARE)
+ (inst mov ecx x)
+ (inst or ecx y)
+ (inst test ecx fixnum-tag-mask)
+ (inst jmp :nz DO-STATIC-FUN) ; are both fixnums?
+
+ (inst cmp x y)
+ (cond ((member :cmov *backend-subfeatures*)
+ (load-symbol res t)
+ (inst mov eax nil-value)
+ (inst cmov ,test res eax))
+ (t
+ (inst mov res nil-value)
+ (inst jmp ,test RETURN)
+ (load-symbol res t)))
+ RETURN
+ (inst clc) ; single-value return
+ (inst ret)