Changeset 8902


Ignore:
Timestamp:
Mar 27, 2008, 7:47:50 PM (11 years ago)
Author:
rme
Message:

extract-tag-fixnum: simplify

jump-known-function: just jump through temp0; no need for the %xfn thing

list: require %temp0 as a vinsn temporary, jump to .SPconslist (not call)

make-tsp-vcell: delete extra movapd. (I seem to have a thing for smashing
the temp stack...)

unbind-interrupt-level-inline: comment out; we call out for this for now.

alloc-variable-c-frame: implement

opt-supplied-p: use imm0 for num-opt again, since imm0 is no longer nargs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ia32/compiler/X86/X8632/x8632-vinsns.lisp

    r8875 r8902  
    681681(define-x8632-vinsn extract-tag-fixnum (((tag :imm))
    682682                                        ((object :lisp)))
    683   ((:pred =
    684           (:apply %hard-regspec-value tag)
    685           (:apply %hard-regspec-value object))
    686    (shll (:$ub x8632::fixnumshift) (:%l object)))
    687   ((:not (:pred =
    688                 (:apply %hard-regspec-value tag)
    689                 (:apply %hard-regspec-value object)))
    690    (imull (:$b x8632::fixnumone) (:%l object) (:%l tag)))
     683  (leal (:@ (:%l object) 4) (:%l tag))
    691684  (andl (:$b (ash x8632::tagmask x8632::fixnumshift)) (:%l tag)))
    692685
     
    14851478(define-x8632-vinsn (jump-known-function :jumplr) (()
    14861479                                                   ())
    1487   (movl (:%l x8632::fn) (:%l x8632::xfn))
    1488   (movl (:%l x8632::temp0)  (:%l x8632::fn))
    1489   (jmp (:%l x8632::fn)))
     1480  (jmp (:%l x8632::temp0)))
    14901481
    14911482(define-x8632-vinsn (list :call) (()
    14921483                                  ()
    1493                                   ((entry (:label 1))))
    1494   (leal (:@ (:^ :back) (:%l x8632::fn)) (:%l x8632::ra0))
     1484                                  ((entry (:label 1))
     1485                                   (temp (:lisp #.x8632::temp0))))
     1486  (leal (:@ (:^ :back) (:%l x8632::fn)) (:%l x8632::temp0))
    14951487  (:talign 5)
    1496   (call (:@ .SPconslist))
     1488  (jmp (:@ .SPconslist))
    14971489  :back
    14981490  (movl (:$self 0) (:%l x8632::fn)))
     
    15341526  (movl (:@ (:%seg :rcontext) x8632::tcr.next-tsp) (:%l temp))
    15351527  (movapd (:%xmm x8632::fpzero) (:@ (:%l temp)))
    1536   (movapd (:%xmm x8632::fpzero) (:@ x8632::dnode-size (:%l temp)))
    15371528  (movd (:%mmx x8632::stack-temp) (:@ (:%l temp)))
    15381529  (movl (:%l temp) (:@ (:%seg :rcontext) x8632::tcr.save-tsp)) 
     
    16941685(define-x8632-subprim-call-vinsn (unbind-interrupt-level) .SPunbind-interrupt-level)
    16951686
     1687#||
    16961688(define-x8632-vinsn unbind-interrupt-level-inline (()
    16971689                                                   ()
     
    17161708  (:byte 2)
    17171709  :done)
     1710||#
    17181711
    17191712(define-x8632-vinsn (jump-return-pc :jumpLR) (()
     
    34773470  (movd (:%mmx x8632::stack-temp) (:@ (:%l temp))))
    34783471
     3472(define-x8632-vinsn alloc-variable-c-frame (()
     3473                                            ((nwords :imm))
     3474                                            ((temp :imm)))
     3475  (movd (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%mmx x8632::stack-temp))
     3476  (subl (:%l nwords) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))
     3477  ;; align stack to 16-byte boundary
     3478  (andb (:$b -16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))
     3479  (subl (:$b x8632::node-size) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))
     3480  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp))
     3481  (movd (:%mmx x8632::stack-temp) (:@ (:%l temp))))
     3482
    34793483(define-x8632-vinsn set-c-arg (()
    34803484                               ((arg :u32)
     
    35723576    (subl (:$l (:apply ash nfixed x8632::word-shift)) (:%l x8632::nargs)))))
    35733577
    3574 ;; num-opt in arg_z
     3578;; num-opt in imm0
    35753579(define-x8632-vinsn opt-supplied-p (()
    35763580                                    ())
    3577   (subl (:%l x8632::nargs) (:%l x8632::arg_z))
     3581  (subl (:%l x8632::nargs) (:%l x8632::imm0))
    35783582  (jmp :push-t-test)
    35793583  :push-t-loop
     
    35863590  (pushl (:$l x8632::nil-value))
    35873591  :push-nil-test
    3588   (subl (:$b x8632::node-size) (:%l x8632::arg_z))
     3592  (subl (:$b x8632::node-size) (:%l x8632::imm0))
    35893593  (jge :push-nil-loop))
    35903594
Note: See TracChangeset for help on using the changeset viewer.