Skip to content
Snippets Groups Projects
Commit f881add0 authored by wlott's avatar wlott
Browse files

Changed to load the function from static-function-offset relative to NIL

instead of computing the symbol and then loading the function.
parent 0c92a22e
No related branches found
No related tags found
No related merge requests found
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
;;; Scott Fahlman (FAHLMAN@CMUC). ;;; Scott Fahlman (FAHLMAN@CMUC).
;;; ********************************************************************** ;;; **********************************************************************
;;; ;;;
;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/mips/arith.lisp,v 1.9 1991/07/14 04:09:21 wlott Exp $ ;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/mips/arith.lisp,v 1.10 1992/03/08 18:35:13 wlott Exp $
;;; ;;;
;;; Stuff to handle simple cases for generic arithmetic. ;;; Stuff to handle simple cases for generic arithmetic.
;;; ;;;
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
(:temp lip interior-reg lip-offset) (:temp lip interior-reg lip-offset)
(:temp lra descriptor-reg lra-offset) (:temp lra descriptor-reg lra-offset)
(:temp nargs any-reg nargs-offset) (:temp nargs any-reg nargs-offset)
(:temp cname descriptor-reg cname-offset)
(:temp ocfp any-reg ocfp-offset)) (:temp ocfp any-reg ocfp-offset))
(inst and temp x 3) (inst and temp x 3)
(inst bne temp DO-STATIC-FUN) (inst bne temp DO-STATIC-FUN)
...@@ -43,11 +42,8 @@ ...@@ -43,11 +42,8 @@
(lisp-return lra lip :offset 2) (lisp-return lra lip :offset 2)
DO-STATIC-FUN DO-STATIC-FUN
(load-symbol cname 'two-arg-+) (inst lw lip null-tn (static-function-offset 'two-arg-+))
(inst li nargs (fixnum 2)) (inst li nargs (fixnum 2))
(inst lw lip cname
(- (ash vm:symbol-raw-function-addr-slot vm:word-shift)
vm:other-pointer-type))
(inst move ocfp cfp-tn) (inst move ocfp cfp-tn)
(inst j lip) (inst j lip)
(inst move cfp-tn csp-tn)) (inst move cfp-tn csp-tn))
...@@ -68,7 +64,6 @@ ...@@ -68,7 +64,6 @@
(:temp lip interior-reg lip-offset) (:temp lip interior-reg lip-offset)
(:temp lra descriptor-reg lra-offset) (:temp lra descriptor-reg lra-offset)
(:temp nargs any-reg nargs-offset) (:temp nargs any-reg nargs-offset)
(:temp cname descriptor-reg cname-offset)
(:temp ocfp any-reg ocfp-offset)) (:temp ocfp any-reg ocfp-offset))
(inst and temp x 3) (inst and temp x 3)
(inst bne temp DO-STATIC-FUN) (inst bne temp DO-STATIC-FUN)
...@@ -79,11 +74,8 @@ ...@@ -79,11 +74,8 @@
(lisp-return lra lip :offset 2) (lisp-return lra lip :offset 2)
DO-STATIC-FUN DO-STATIC-FUN
(load-symbol cname 'two-arg--) (inst lw lip null-tn (static-function-offset 'two-arg--))
(inst li nargs (fixnum 2)) (inst li nargs (fixnum 2))
(inst lw lip cname
(- (ash vm:symbol-raw-function-addr-slot vm:word-shift)
vm:other-pointer-type))
(inst move ocfp cfp-tn) (inst move ocfp cfp-tn)
(inst j lip) (inst j lip)
(inst move cfp-tn csp-tn)) (inst move cfp-tn csp-tn))
...@@ -106,7 +98,6 @@ ...@@ -106,7 +98,6 @@
(:temp lip interior-reg lip-offset) (:temp lip interior-reg lip-offset)
(:temp lra descriptor-reg lra-offset) (:temp lra descriptor-reg lra-offset)
(:temp nargs any-reg nargs-offset) (:temp nargs any-reg nargs-offset)
(:temp cname descriptor-reg cname-offset)
(:temp ocfp any-reg ocfp-offset)) (:temp ocfp any-reg ocfp-offset))
;; If either arg is not a fixnum, call the static function. ;; If either arg is not a fixnum, call the static function.
(inst and temp x 3) (inst and temp x 3)
...@@ -155,11 +146,8 @@ ...@@ -155,11 +146,8 @@
(lisp-return lra lip :offset 2) (lisp-return lra lip :offset 2)
DO-STATIC-FUN DO-STATIC-FUN
(load-symbol cname 'two-arg-*) (inst lw lip null-tn (static-function-offset 'two-arg-*))
(inst li nargs (fixnum 2)) (inst li nargs (fixnum 2))
(inst lw lip cname
(- (ash vm:symbol-raw-function-addr-slot vm:word-shift)
vm:other-pointer-type))
(inst move ocfp cfp-tn) (inst move ocfp cfp-tn)
(inst j lip) (inst j lip)
(inst move cfp-tn csp-tn) (inst move cfp-tn csp-tn)
...@@ -186,7 +174,6 @@ ...@@ -186,7 +174,6 @@
(:temp temp non-descriptor-reg nl0-offset) (:temp temp non-descriptor-reg nl0-offset)
(:temp lip interior-reg lip-offset) (:temp lip interior-reg lip-offset)
(:temp nargs any-reg nargs-offset) (:temp nargs any-reg nargs-offset)
(:temp cname descriptor-reg cname-offset)
(:temp ocfp any-reg ocfp-offset)) (:temp ocfp any-reg ocfp-offset))
(inst and temp x 3) (inst and temp x 3)
(inst bne temp DO-STATIC-FN) (inst bne temp DO-STATIC-FN)
...@@ -195,11 +182,8 @@ ...@@ -195,11 +182,8 @@
,cmp ,cmp
DO-STATIC-FN DO-STATIC-FN
(load-symbol cname ',static-fn) (inst lw lip null-tn (static-function-offset ',static-fn))
(inst li nargs (fixnum 2)) (inst li nargs (fixnum 2))
(inst lw lip cname
(- (ash vm:symbol-raw-function-addr-slot vm:word-shift)
vm:other-pointer-type))
(inst move ocfp cfp-tn) (inst move ocfp cfp-tn)
(inst j lip) (inst j lip)
(inst move cfp-tn csp-tn) (inst move cfp-tn csp-tn)
...@@ -229,7 +213,6 @@ ...@@ -229,7 +213,6 @@
(:temp lip interior-reg lip-offset) (:temp lip interior-reg lip-offset)
(:temp lra descriptor-reg lra-offset) (:temp lra descriptor-reg lra-offset)
(:temp nargs any-reg nargs-offset) (:temp nargs any-reg nargs-offset)
(:temp cname descriptor-reg cname-offset)
(:temp ocfp any-reg ocfp-offset)) (:temp ocfp any-reg ocfp-offset))
(inst beq x y RETURN-T) (inst beq x y RETURN-T)
(inst and temp x 3) (inst and temp x 3)
...@@ -243,11 +226,8 @@ ...@@ -243,11 +226,8 @@
(lisp-return lra lip :offset 2) (lisp-return lra lip :offset 2)
DO-STATIC-FN DO-STATIC-FN
(load-symbol cname 'eql) (inst lw lip null-tn (static-function-offset 'eql))
(inst li nargs (fixnum 2)) (inst li nargs (fixnum 2))
(inst lw lip cname
(- (ash vm:symbol-raw-function-addr-slot vm:word-shift)
vm:other-pointer-type))
(inst move ocfp cfp-tn) (inst move ocfp cfp-tn)
(inst j lip) (inst j lip)
(inst move cfp-tn csp-tn) (inst move cfp-tn csp-tn)
...@@ -270,7 +250,6 @@ ...@@ -270,7 +250,6 @@
(:temp lip interior-reg lip-offset) (:temp lip interior-reg lip-offset)
(:temp lra descriptor-reg lra-offset) (:temp lra descriptor-reg lra-offset)
(:temp nargs any-reg nargs-offset) (:temp nargs any-reg nargs-offset)
(:temp cname descriptor-reg cname-offset)
(:temp ocfp any-reg ocfp-offset)) (:temp ocfp any-reg ocfp-offset))
(inst beq x y RETURN-T) (inst beq x y RETURN-T)
(inst and temp x 3) (inst and temp x 3)
...@@ -283,11 +262,8 @@ ...@@ -283,11 +262,8 @@
(lisp-return lra lip :offset 2) (lisp-return lra lip :offset 2)
DO-STATIC-FN DO-STATIC-FN
(load-symbol cname 'two-arg-=) (inst lw lip null-tn (static-function-offset 'two-arg-=))
(inst li nargs (fixnum 2)) (inst li nargs (fixnum 2))
(inst lw lip cname
(- (ash vm:symbol-raw-function-addr-slot vm:word-shift)
vm:other-pointer-type))
(inst move ocfp cfp-tn) (inst move ocfp cfp-tn)
(inst j lip) (inst j lip)
(inst move cfp-tn csp-tn) (inst move cfp-tn csp-tn)
...@@ -310,7 +286,6 @@ ...@@ -310,7 +286,6 @@
(:temp lip interior-reg lip-offset) (:temp lip interior-reg lip-offset)
(:temp lra descriptor-reg lra-offset) (:temp lra descriptor-reg lra-offset)
(:temp nargs any-reg nargs-offset) (:temp nargs any-reg nargs-offset)
(:temp cname descriptor-reg cname-offset)
(:temp ocfp any-reg ocfp-offset)) (:temp ocfp any-reg ocfp-offset))
(inst beq x y RETURN-NIL) (inst beq x y RETURN-NIL)
(inst and temp x 3) (inst and temp x 3)
...@@ -323,11 +298,8 @@ ...@@ -323,11 +298,8 @@
(lisp-return lra lip :offset 2) (lisp-return lra lip :offset 2)
DO-STATIC-FN DO-STATIC-FN
(load-symbol cname 'two-arg-=) (inst lw lip null-tn (static-function-offset 'two-arg-=))
(inst li nargs (fixnum 2)) (inst li nargs (fixnum 2))
(inst lw lip cname
(- (ash vm:symbol-raw-function-addr-slot vm:word-shift)
vm:other-pointer-type))
(inst move ocfp cfp-tn) (inst move ocfp cfp-tn)
(inst j lip) (inst j lip)
(inst move cfp-tn csp-tn) (inst move cfp-tn csp-tn)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment