(lisp-return lra lip :offset 2)
DO-STATIC-FUN
- (inst lwz lip null-tn (static-fun-offset 'two-arg-+) )
+ (inst addi lexenv-tn null-tn (static-fdefn-offset 'two-arg-+))
+ (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag)
+ (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag)
(inst li nargs (fixnumize 2))
(inst mr ocfp cfp-tn)
(inst mr cfp-tn csp-tn)
(lisp-return lra lip :offset 2)
DO-STATIC-FUN
- (inst lwz lip null-tn (static-fun-offset 'two-arg--))
+ (inst addi lexenv-tn null-tn (static-fdefn-offset 'two-arg--))
+ (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag)
+ (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag)
(inst li nargs (fixnumize 2))
(inst mr ocfp cfp-tn)
(inst mr cfp-tn csp-tn)
CONS-BIGNUM
;; Allocate a BIGNUM for the result.
- (pseudo-atomic (pa-flag :extra (pad-data-block (1+ bignum-digits-offset)))
+ (with-fixed-allocation (res pa-flag temp bignum-widetag
+ (+ bignum-digits-offset 2))
(let ((one-word (gen-label)))
- (inst ori res alloc-tn other-pointer-lowtag)
;; We start out assuming that we need one word. Is that correct?
(inst srawi temp lo 31)
(inst xor. temp temp hi)
(inst li temp (logior (ash 1 n-widetag-bits) bignum-widetag))
(inst beq one-word)
- ;; Nope, we need two, so allocate the additional space.
- (inst addi alloc-tn alloc-tn (- (pad-data-block (+ 2 bignum-digits-offset))
- (pad-data-block (1+ bignum-digits-offset))))
(inst li temp (logior (ash 2 n-widetag-bits) bignum-widetag))
(storew hi res (1+ bignum-digits-offset) other-pointer-lowtag)
(emit-label one-word)
(lisp-return lra lip :offset 2)
DO-STATIC-FUN
- (inst lwz lip null-tn (static-fun-offset 'two-arg-*))
+ (inst addi lexenv-tn null-tn (static-fdefn-offset 'two-arg-*))
+ (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag)
+ (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag)
(inst li nargs (fixnumize 2))
(inst mr ocfp cfp-tn)
(inst mr cfp-tn csp-tn)
(:res quo any-reg nl2-offset)
(:res rem any-reg nl0-offset))
(aver (location= rem dividend))
- (let ((error (generate-error-code nil division-by-zero-error
+ (let ((error (generate-error-code nil 'division-by-zero-error
dividend divisor)))
(inst cmpwi divisor 0)
(inst beq error))
(:res rem any-reg nl0-offset))
(aver (location= rem dividend))
- (let ((error (generate-error-code nil division-by-zero-error
+ (let ((error (generate-error-code nil 'division-by-zero-error
dividend divisor)))
(inst cmpwi divisor 0)
(inst beq error))
(:res quo signed-reg nl2-offset)
(:res rem signed-reg nl0-offset))
- (let ((error (generate-error-code nil division-by-zero-error
+ (let ((error (generate-error-code nil 'division-by-zero-error
dividend divisor)))
(inst cmpwi divisor 0)
(inst beq error))
(inst beq DO-COMPARE)
DO-STATIC-FN
- (inst lwz lip null-tn (static-fun-offset ',static-fn))
+ (inst addi lexenv-tn null-tn (static-fdefn-offset ',static-fn))
+ (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag)
+ (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag)
(inst li nargs (fixnumize 2))
(inst mr ocfp cfp-tn)
(inst mr cfp-tn csp-tn)
(lisp-return lra lip :offset 2)
DO-STATIC-FN
- (inst lwz lip null-tn (static-fun-offset 'eql))
+ (inst addi lexenv-tn null-tn (static-fdefn-offset 'eql))
+ (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag)
+ (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag)
(inst li nargs (fixnumize 2))
(inst mr ocfp cfp-tn)
(inst mr cfp-tn csp-tn)
(lisp-return lra lip :offset 2)
DO-STATIC-FN
- (inst lwz lip null-tn (static-fun-offset 'two-arg-=))
+ (inst addi lexenv-tn null-tn (static-fdefn-offset 'two-arg-=))
+ (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag)
+ (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag)
(inst li nargs (fixnumize 2))
(inst mr ocfp cfp-tn)
(inst mr cfp-tn csp-tn)
(lisp-return lra lip :offset 2)
DO-STATIC-FN
- (inst lwz lip null-tn (static-fun-offset 'two-arg-/=))
+ (inst addi lexenv-tn null-tn (static-fdefn-offset 'two-arg-/=))
+ (loadw code-tn lexenv-tn fdefn-fun-slot other-pointer-lowtag)
+ (loadw lip lexenv-tn fdefn-raw-addr-slot other-pointer-lowtag)
(inst li nargs (fixnumize 2))
(inst mr ocfp cfp-tn)
(inst j lip 0)