Changeset 14193
- Timestamp:
- Aug 16, 2010, 10:56:50 AM (14 years ago)
- File:
-
- 1 edited
-
trunk/source/compiler/X86/X8664/x8664-vinsns.lisp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/compiler/X86/X8664/x8664-vinsns.lisp
r13561 r14193 1173 1173 (jmp (:@ spno))) 1174 1174 1175 ;;; "call" a subprimitive that manipulates the stack in some way,1176 ;;; using an lea/jmp calling convention.1177 (define-x8664-vinsn (lea-jmp-subprim :call) (()1178 ((spno :s32const))1179 ((entry (:label 1))))1180 (leaq (:@ (:^ :back) (:%q x8664::fn)) (:%q x8664::ra0))1181 (:talign 4)1182 (jmp (:@ spno))1183 :back1184 (leaq (:@ (:^ entry) (:% x8664::rip)) (:%q x8664::fn)))1185 1186 1175 ;;; Call a subprimitive using a tail-aligned CALL instruction. 1187 (define-x8664-vinsn (call-subprim :call )(()1188 ((spno :s32const))1189 ((entry (:label 1))))1176 (define-x8664-vinsn (call-subprim :call :subprim-call) (() 1177 ((spno :s32const)) 1178 ((entry (:label 1)))) 1190 1179 (:talign 4) 1191 1180 (call (:@ spno)) … … 1361 1350 1362 1351 1363 (define-x8664-vinsn (fix-fixnum-overflow-ool :call )1352 (define-x8664-vinsn (fix-fixnum-overflow-ool :call :subprim-call) 1364 1353 (((val :lisp)) 1365 1354 ((val :lisp)) … … 1385 1374 (jmp :done)) 1386 1375 1387 (define-x8664-vinsn (fix-fixnum-overflow-ool-and-branch :call )1376 (define-x8664-vinsn (fix-fixnum-overflow-ool-and-branch :call :subprim-call) 1388 1377 (((val :lisp)) 1389 1378 ((val :lisp) … … 1467 1456 (:apply %hard-regspec-value dest))) 1468 1457 (leaq (:@ (:%q x) (:%q y)) (:%q dest))))) 1469 1458 1470 1459 (define-x8664-vinsn copy-gpr (((dest t)) 1471 1460 ((src t))) … … 1782 1771 1783 1772 ;;; %ra0 is pointing into %fn, so no need to copy %fn here. 1784 (define-x8664-vinsn pass-multiple-values-symbol(()1785 ())1773 (define-x8664-vinsn (pass-multiple-values-symbol :jumplr) (() 1774 ()) 1786 1775 (pushq (:@ (:apply + (:apply target-nil-value) (x8664::%kernel-global 'x86::ret1valaddr)))) 1787 1776 (jmp (:@ x8664::symbol.fcell (:% x8664::fname)))) … … 1789 1778 ;;; It'd be good to have a variant that deals with a known function 1790 1779 ;;; as well as this. 1791 (define-x8664-vinsn pass-multiple-values(()1792 ()1793 ((tag :u8)))1780 (define-x8664-vinsn (pass-multiple-values :jumplr) (() 1781 () 1782 ((tag :u8))) 1794 1783 :resume 1795 1784 (movl (:%l x8664::temp0) (:%l tag)) … … 1822 1811 1823 1812 (define-x8664-vinsn (jump-known-function :jumplr) (() 1824 ()) 1813 () 1814 ((xfn (:lisp #.x8664::xfn)))) 1825 1815 (movq (:%q x8664::fn) (:%q x8664::xfn)) 1826 1816 (movq (:%q x8664::temp0) (:%q x8664::fn)) … … 2051 2041 ;;; Call something callable and obtain the single value that it 2052 2042 ;;; returns. 2053 (define-x8664-vinsn funcall(()2054 ()2055 ((tag :u8)2056 (entry (:label 1))))2043 (define-x8664-vinsn (funcall :call) (() 2044 () 2045 ((tag :u8) 2046 (entry (:label 1)))) 2057 2047 :resume 2058 2048 (movl (:%l x8664::temp0) (:%l tag)) … … 2069 2059 (:anchored-uuo (uuo-error-not-callable))) 2070 2060 2071 (define-x8664-vinsn tail-funcall(()2072 ()2073 ((tag (:u8 #.x8664::imm0))))2061 (define-x8664-vinsn (tail-funcall :jumplr) (() 2062 () 2063 ((tag (:u8 #.x8664::imm0)))) 2074 2064 :resume 2075 2065 (movl (:%l x8664::temp0) (:%l tag))
Note:
See TracChangeset
for help on using the changeset viewer.
