Changeset 8349
- Timestamp:
- Jan 28, 2008, 11:17:38 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ia32/compiler/X86/X8632/x8632-vinsns.lisp
r8256 r8349 2514 2514 ((src :lisp)) 2515 2515 ((tag :u8))) 2516 ;; nilsym?2517 2516 (cmpl (:$l x8632::nil-value) (:%l src)) 2518 2517 (je :nilsym) 2519 ;; tag-misc?2518 (movl (:%l src) (:%l tag)) 2520 2519 (andb (:$b x8632::tagmask) (:%b tag)) 2521 2520 (cmpb (:$b x8632::tag-misc) (:%b tag)) 2522 2521 (jne :bad) 2523 ;; symbol? 2524 (movb (:@ x8632::misc-subtag-offset) (:%b tag)) 2522 (movb (:@ x8632::misc-subtag-offset (:%l src)) (:%b tag)) 2525 2523 (cmpb (:$b x8632::subtag-symbol) (:%b tag)) 2526 2524 (jne :bad) … … 2700 2698 (define-x8632-vinsn setup-macptr-allocation (() 2701 2699 ((src :address))) 2702 (movd (:%l src) (:%mmx x8632::mm1)) 2703 (movl (:$l x8632::macptr-header) (:%l x8632::mm0)) 2700 (movd (:%l src) (:%mmx x8632::mm1)) ;see %set-new-macptr-value, below 2701 (movl (:$l x8632::macptr-header) (:%l x8632::imm0)) 2702 (movd (:%l x8632::imm0) (:%mmx x8632::mm0)) 2704 2703 (movl (:$l (- x8632::macptr.size x8632::fulltag-misc)) (:%l x8632::imm0))) 2705 2704 … … 2939 2938 (jmp (:@ .SPmkunwind))) 2940 2939 2941 2942 2940 ;;; Funcall the function or symbol in temp0 and obtain the single 2943 2941 ;;; value that it returns. 2944 (define-x8632-vinsn funcall (() 2945 () 2946 ((tag :u8) 2947 (entry (:label 1)))) 2948 ;; tag is almost certainly going to be eax, which is 2949 ;; the same as nargs. we need to preserve nargs. 2950 (pushl (:%l x8632::nargs.l)) 2951 (movl (:%l x8632::temp0) (:%l tag)) 2952 ((:pred = (:apply %hard-regspec-value tag) x8632::eax) 2953 ;; accumulator 2954 (andl (:$b x8632::tagmask) (:%accl tag)) 2955 (cmpl (:$b x8632::tag-misc) (:%accl tag))) 2956 ((:pred > (:apply %hard-regspec-value tag) x8632::eax) 2957 (andl (:$b x8632::tagmask) (:%l tag)) 2958 (cmpl (:$b x8632::tag-misc) (:%l tag))) 2959 (jne :bad) 2960 (movb (:@ x8632::misc-subtag-offset (:%l x8632::temp0)) (:%b tag)) 2961 (cmpb (:$b x8632::subtag-function) (:%b tag)) 2962 (cmovel (:%l x8632::temp0) (:%l x8632::xfn)) 2963 (je :call) 2964 (cmpb (:$b x8632::subtag-symbol) (:%b tag)) 2965 (cmovel (:%l x8632::symbol.fcell (:%l x8632::fname)) (:%l x8632::xfn)) 2966 (jne :bad) 2967 :call 2968 (popl (:%l x8632::nargs)) 2969 (:talign 5) 2970 (call (:%l x8632::xfn)) 2971 (movl (:$self 0) (:%l x8632::fn)) 2972 :bad 2973 (uuo-error-not-callable)) 2942 (define-x8632-subprim-call-vinsn (funcall) .SPfuncall) 2974 2943 2975 2944 (define-x8632-vinsn tail-funcall (() … … 3080 3049 ((:pred > n 1) 3081 3050 (movl (:$l n) (:%l temp)) 3082 (:talign 4)3051 (:talign 5) 3083 3052 (call (:@ .SPunbind-n))) 3084 3053 ((:pred = n 1)
Note:
See TracChangeset
for help on using the changeset viewer.
