(inst ret)
DO-STATIC-FUN
- (inst pop eax)
+ ;; Same as: (inst enter (fixnumize 1))
(inst push ebp-tn)
- (inst lea
- ebp-tn
- (make-ea :dword :base esp-tn :disp n-word-bytes))
- (inst sub esp-tn (fixnumize 2))
- (inst push eax) ; callers return addr
+ (inst mov ebp-tn esp-tn)
+ (inst sub esp-tn (fixnumize 1))
+ (inst push (make-ea :dword :base ebp-tn
+ :disp (frame-byte-offset return-pc-save-offset)))
(inst mov ecx (fixnumize 2)) ; arg count
(inst jmp
(make-ea :dword
(move eax x) ; must use eax for 64-bit result
(inst sar eax n-fixnum-tag-bits) ; remove *4 fixnum bias
(inst imul y) ; result in edx:eax
- (inst jmp :no okay) ; still fixnum
+ (inst jmp :no OKAY) ; still fixnum
;; zzz jrd changed edx to ebx in here, as edx isn't listed as a temp, above
;; pfw says that loses big -- edx is target for arg x and result res
(inst test x fixnum-tag-mask)
(inst jmp :z FIXNUM)
- (inst pop eax)
(inst push ebp-tn)
- (inst lea ebp-tn (make-ea :dword :base esp-tn :disp n-word-bytes))
- (inst sub esp-tn (fixnumize 2))
- (inst push eax)
+ (inst mov ebp-tn esp-tn)
+ (inst sub esp-tn (fixnumize 1))
+ (inst push (make-ea :dword :base ebp-tn
+ :disp (frame-byte-offset return-pc-save-offset)))
(inst mov ecx (fixnumize 1)) ; arg count
(inst jmp (make-ea :dword
:disp (+ nil-value (static-fun-offset '%negate))))
(inst ret)
DO-STATIC-FUN
- (move ecx esp-tn)
(inst sub esp-tn (fixnumize 3))
- (inst mov (make-ea :dword
- :base ecx :disp (fixnumize -1))
+ (inst mov (make-ea :dword :base esp-tn
+ :disp (frame-byte-offset
+ (+ sp->fp-offset
+ -3
+ ocfp-save-offset)))
ebp-tn)
- (move ebp-tn ecx)
+ (inst lea ebp-tn (make-ea :dword :base esp-tn
+ :disp (frame-byte-offset
+ (+ sp->fp-offset
+ -3
+ ocfp-save-offset))))
(inst mov ecx (fixnumize 2))
(inst call (make-ea :dword
:disp (+ nil-value
(:g `((inst cmp x (1+ nil-value)))))
(inst ret))
#-sb-assembling
- `(define-vop (,name)
+ `(define-vop (,name)
(:translate ,translate)
(:policy :safe)
(:save-p t)
(inst cmp ecx other-pointer-lowtag)
(inst jmp :e DO-STATIC-FUN)
- ;; Not both other pointers
+ ;; At least one fixnum
(inst cmp x y)
RET
(inst ret)
(inst cmp x y)
(inst jmp :e RET)
- (move ecx esp-tn)
(inst sub esp-tn (fixnumize 3))
- (inst mov (make-ea :dword
- :base ecx
- :disp (fixnumize -1))
+ (inst mov (make-ea :dword :base esp-tn
+ :disp (frame-byte-offset
+ (+ sp->fp-offset
+ -3
+ ocfp-save-offset)))
ebp-tn)
- (move ebp-tn ecx)
+ (inst lea ebp-tn (make-ea :dword :base esp-tn
+ :disp (frame-byte-offset
+ (+ sp->fp-offset
+ -3
+ ocfp-save-offset))))
(inst mov ecx (fixnumize 2))
(inst call (make-ea :dword
:disp (+ nil-value (static-fun-offset 'eql))))
(inst ret)
DO-STATIC-FUN
- (move ecx esp-tn)
(inst sub esp-tn (fixnumize 3))
- (inst mov (make-ea :dword
- :base ecx
- :disp (fixnumize -1))
+ (inst mov (make-ea :dword :base esp-tn
+ :disp (frame-byte-offset
+ (+ sp->fp-offset
+ -3
+ ocfp-save-offset)))
ebp-tn)
- (move ebp-tn ecx)
+ (inst lea ebp-tn (make-ea :dword :base esp-tn
+ :disp (frame-byte-offset
+ (+ sp->fp-offset
+ -3
+ ocfp-save-offset))))
(inst mov ecx (fixnumize 2))
(inst call (make-ea :dword
:disp (+ nil-value (static-fun-offset 'two-arg-=))))