Changeset 6293
- Timestamp:
- Apr 17, 2007, 7:57:49 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/x8664-call/ccl/compiler/X86/X8664/x8664-vinsns.lisp
r5970 r6293 274 274 (movsd (:%xmm val) (:@ (:apply + x8664::misc-data-offset (:apply ash idx 3)) (:%q v)))) 275 275 276 277 276 278 (define-x8664-vinsn (call-known-symbol :call) (((result (:lisp x8664::arg_z))) 277 279 ()) … … 282 284 (:long (:^ :back)) 283 285 :back 284 (leaq (:@ (:apply - (:^ :back)) (:% x8664::ra0)) (:%q x8664::fn))) 286 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 287 :disp) 285 288 286 289 ;;; It's neccessary to use x8664:xfn to reference the current function … … 995 998 (:long (:^ :back)) 996 999 :back 997 (leaq (:@ (:apply - (:^ :back)) (:% x8664::ra0)) (:%q x8664::fn))) 1000 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1001 :disp 1002 ) 998 1003 999 1004 (define-x8664-vinsn fixnum-subtract-from (((dest t) … … 1148 1153 (:long (:^ :back)) 1149 1154 :back 1150 ;; We don't lose FN while consing the bignum. 1155 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1156 :disp 1151 1157 ((:not (:pred = x8664::arg_z 1152 1158 (:apply %hard-regspec-value val))) … … 1169 1175 (:long (:^ :back)) 1170 1176 :back 1171 ;; We don't lose FN while consing the bignum. 1177 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1178 :disp 1172 1179 ((:not (:pred = x8664::arg_z 1173 1180 (:apply %hard-regspec-value val))) … … 1295 1302 (:long (:^ :back)) 1296 1303 :back 1297 (leaq (:@ (:apply - (:^ :back)) (:% x8664::ra0)) (:%q x8664::fn))) 1304 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1305 :disp 1306 ) 1298 1307 1299 1308 (define-x8664-vinsn double-float-compare (() … … 1539 1548 (pushq (:%q x8664::ra0))) 1540 1549 1541 1550 ;; ???? 1542 1551 (define-x8664-vinsn emit-aligned-label (() 1543 1552 ((label :label))) … … 1590 1599 (:long (:^ :back)) 1591 1600 :back 1592 (leaq (:@ (:apply - (:^ :back)) (:% x8664::ra0)) (:%q x8664::fn))) 1601 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1602 :disp 1603 ) 1593 1604 1594 1605 (define-x8664-vinsn (jump-known-function :jumplr) (() … … 1604 1615 (:align 3) 1605 1616 (:long (:^ :back)) 1606 :back) 1617 :back 1618 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1619 :disp ) 1607 1620 1608 1621 … … 1675 1688 1676 1689 1677 (defmacro define-x8664-subprim-call-vinsn ((name &rest other-attrs) spno &optional (recover-fn nil))1690 (defmacro define-x8664-subprim-call-vinsn ((name &rest other-attrs) spno) 1678 1691 `(define-x8664-vinsn (,name :call :subprim-call ,@other-attrs) (() ()) 1679 1692 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0)) … … 1682 1695 (:long (:^ :back)) 1683 1696 :back 1684 ,@(if recover-fn1685 `((leaq (:@ (:apply - (:^ :back)) (:%q x8664::ra0)) (:%q x8664::fn))))))1697 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1698 :disp)) 1686 1699 1687 1700 (defmacro define-x8664-subprim-jump-vinsn ((name &rest other-attrs) spno) … … 1773 1786 (:long (:^ :back)) 1774 1787 :back 1775 (leaq (:@ (:apply - (:^ :back)) (:%q x8664::ra0)) (:%q x8664::fn))) 1788 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1789 :disp ) 1776 1790 1777 1791 (define-x8664-vinsn (mkcatch1v :call :subprim-call) (() … … 1783 1797 (:long (:^ :back)) 1784 1798 :back 1785 (leaq (:@ (:apply - (:^ :back)) (:%q x8664::ra0)) (:%q x8664::fn))) 1799 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1800 :disp) 1786 1801 1787 1802 (define-x8664-vinsn (mkunwind :call :subprim-call) (() … … 1815 1830 (:long (:^ :back)) 1816 1831 :back 1817 (leaq (:@ (:apply - (:^ :back)) (:%q x8664::ra0)) (:%q x8664::fn))) 1832 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1833 :disp) 1818 1834 1819 1835 (define-x8664-vinsn tail-funcall (() … … 1854 1870 (jmp (:@ .SPspecrefcheck)) 1855 1871 (:align 3) 1856 (:long (:^ :back)) 1857 :back) 1872 (:long (:^ :back)) 1873 :back 1874 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1875 :disp ) 1858 1876 1859 1877 (define-x8664-vinsn ref-symbol-value-inline (((dest :lisp)) … … 1884 1902 (:align 3) 1885 1903 (:long (:^ :back)) 1886 :back) 1904 :back 1905 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 1906 :disp ) 1887 1907 1888 1908 (define-x8664-vinsn %ref-symbol-value-inline (((dest :lisp)) … … 2952 2972 (movq (:@ x8664::misc-data-offset (:%q vcell)) (:%q dest))) 2953 2973 2954 ;;; The only current use of this - calling .SPgvset - doesn't need2955 ;;; to recover %fn from %ra0.2956 2974 (define-x8664-vinsn (call-subprim-3 :call :subprim-call) (((dest t)) 2957 2975 ((spno :s32const) … … 2963 2981 (:align 3) 2964 2982 (:long (:^ :back)) 2965 :back) 2983 :back 2984 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 2985 :disp) 2966 2986 2967 2987 (define-x8664-vinsn setup-vcell-allocation (() … … 3185 3205 (:long (:^ :back)) 3186 3206 :back 3187 (leaq (:@ (:apply - (:^ :back)) (:%q x8664::ra0)) (:%q x8664::fn))) 3207 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 3208 :disp) 3188 3209 3189 3210 (define-x8664-vinsn set-z-flag-if-istruct-typep (() … … 3209 3230 (define-x8664-subprim-call-vinsn (ksignalerr) .SPksignalerr) 3210 3231 3211 (define-x8664-subprim-call-vinsn (misc-alloc-init) .SPmisc-alloc-init t)3232 (define-x8664-subprim-call-vinsn (misc-alloc-init) .SPmisc-alloc-init) 3212 3233 3213 3234 (define-x8664-subprim-call-vinsn (misc-alloc) .SPmisc-alloc) … … 3265 3286 (:long (:^ :back)) 3266 3287 :back 3267 (leaq (:@ (:apply - (:^ :back)) (:%q x8664::ra0)) (:%q x8664::fn))) 3288 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 3289 :disp) 3268 3290 3269 3291 (define-x8664-vinsn set-macptr-address (() … … 3331 3353 (:align 3) 3332 3354 (:long (:^ :back)) 3333 :back) 3355 :back 3356 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 3357 :disp ) 3334 3358 3335 3359 … … 3424 3448 (define-x8664-subprim-call-vinsn (req-heap-rest-arg) .SPreq-heap-rest-arg) 3425 3449 3426 (define-x8664-subprim-call-vinsn (stack-misc-alloc-init) .SPstack-misc-alloc-init t)3450 (define-x8664-subprim-call-vinsn (stack-misc-alloc-init) .SPstack-misc-alloc-init) 3427 3451 3428 3452 (define-x8664-vinsn fixnum->unsigned-natural (((dest :u64)) … … 3500 3524 3501 3525 (define-x8664-subprim-call-vinsn (setqsym) .SPsetqsym) 3526 3527 (define-x8664-vinsn recover-fn-from-rip (() 3528 ()) 3529 (leaq (:@ (:apply - (:^ :disp)) (:%q x8664::rip)) (:%q x8664::fn)) 3530 :disp) 3502 3531 3503 3532 (define-x8664-vinsn recover-fn-from-ra0 (() … … 3546 3575 (jmp (:@ .SPunbind))) 3547 3576 (:align 3) 3548 (:long (:^ :back)) 3549 :back)) 3577 (:long (:^ :back)) 3578 :back 3579 (leaq (:@ (:apply - (:^ :disp)) (:% x8664::rip)) (:%q x8664::fn)) 3580 :disp)) 3550 3581 3551 3582 (define-x8664-subprim-jump-vinsn (tail-call-sym-gen) .SPtcallsymgen)
Note:
See TracChangeset
for help on using the changeset viewer.
