Changeset 6299
- Timestamp:
- Apr 18, 2007, 4:26:23 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/x8664-call/ccl/compiler/X86/x86-lapmacros.lisp
r4721 r6299 276 276 `(jmp (% ra0))) 277 277 278 (defx86lapmacro recover-fn-from-ra0 (here)279 `(leaq (@ (- (:^ ,here)) (% ra0)) (% fn)))280 281 278 ;;; Using *x8664-backend* here is wrong but expedient. 282 279 (defun x86-subprim-offset (name) … … 291 288 292 289 (defx86lapmacro call-subprim (name &optional (recover-fn t)) 293 (let* ((label (gensym))) 290 (declare (ignore recover-fn)) 291 (let* ((label (gensym)) 292 (post (gensym))) 294 293 `(progn 295 294 (leaq (@ (:^ ,label) (% fn)) (% ra0)) 296 295 (jmp-subprim ,name) 297 296 (:tra ,label) 298 ,@(if recover-fn299 `((recover-fn-from-ra0 ,label))))))297 (lea (@ (- (:^ ,post)) (% rip)) (% fn)) 298 ,post))) 300 299 301 300 (defx86lapmacro %car (src dest) … … 320 319 ;;; to return a single value. 321 320 (defx86lapmacro call-symbol (name nargs) 322 (let* ((return (gensym))) 321 (let* ((return (gensym)) 322 (post (gensym))) 323 323 `(progn 324 324 (load-constant ,name fname) … … 328 328 (jmp (% fn)) 329 329 (:tra ,return) 330 (recover-fn-from-ra0 ,return)))) 330 (lea (@ (- (:^ ,post)) (% rip)) (% fn)) 331 ,post))) 332 333 (defx86lapmacro recover-fn-from-rip () 334 (let* ((next (gensym))) 335 `(progn 336 (lea (@ (- (:^ ,next)) (% rip)) (% fn)) 337 ,next))) 331 338 332 339 ;;; tail call the function named by NAME with nargs NARGS. %FN is
Note:
See TracChangeset
for help on using the changeset viewer.
