Ignore:
Timestamp:
Oct 14, 2008, 6:30:00 PM (13 years ago)
Author:
gz
Message:

Merge/bootstrap assorted low level stuff from trunk - kernel, syscall stuff, lowmem-bias, formatting tweaks, a few bug fixes included

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/compiler/X86/X8632/x8632-vinsns.lisp

    r10972 r11089  
    7979                                             ())
    8080  (movl (:$l val) (:@ x8632::misc-data-offset (:%l v) (:%l unscaled-idx))))
     81
     82(define-x8632-vinsn misc-set-single-float (()
     83                                           ((val :single-float)
     84                                            (v :lisp)
     85                                            (scaled-idx :u32))
     86                                           ())
     87  (movss (:%xmm val) (:@ x8632::misc-data-offset (:%l v) (:%l scaled-idx))))
    8188
    8289(define-x8632-vinsn misc-set-double-float (()
     
    316323  ((:pred >= min 1)
    317324   (movl (:%l x8632::arg_z) (:%l x8632::arg_y)))
    318   (movl (:$l x8632::nil-value) (:%l x8632::arg_z))
     325  (movl (:$l (:apply target-nil-value)) (:%l x8632::arg_z))
    319326  :done)
    320327
     
    332339  ((:pred >= min 1)
    333340   (pushl (:%l x8632::arg_z)))
    334   (movl (:$l x8632::nil-value) (:%l x8632::arg_y))
     341  (movl (:$l (:apply target-nil-value)) (:%l x8632::arg_y))
    335342  (jmp :last)
    336343  :one
     
    340347  (movl (:%l x8632::arg_z) (:%l x8632::arg_y))
    341348  :last
    342   (movl (:$l x8632::nil-value) (:%l x8632::arg_z))
     349  (movl (:$l (:apply target-nil-value)) (:%l x8632::arg_z))
    343350  :done)
    344351
     
    355362  :loop
    356363  (addl (:$b x8632::fixnumone) (:%l temp))
    357   (pushl (:$l x8632::nil-value))
     364  (pushl (:$l (:apply target-nil-value)))
    358365  ((:pred < n 32)
    359366   (cmpl (:$b (:apply ash n x8632::fixnumshift)) (:%l temp)))
     
    423430                                                  ((frame-offset :u16const)
    424431                                                   (cur-vsp :u16const)))
    425   (cmpl (:$l x8632::nil-value) (:@ (:apply - (:apply + frame-offset x8632::word-size-in-bytes)) (:%l x8632::ebp))))
     432  (cmpl (:$l (:apply target-nil-value)) (:@ (:apply - (:apply + frame-offset x8632::word-size-in-bytes)) (:%l x8632::ebp))))
    426433
    427434(define-x8632-vinsn compare-value-cell-to-nil (()
    428435                                               ((vcell :lisp)))
    429   (cmpl (:$l x8632::nil-value) (:@ x8632::value-cell.value (:%l vcell))))
     436  (cmpl (:$l (:apply target-nil-value)) (:@ x8632::value-cell.value (:%l vcell))))
    430437
    431438(define-x8632-vinsn lcell-load (((dest :lisp))
     
    465472(define-x8632-vinsn compare-to-nil (()
    466473                                    ((arg0 t)))
    467   (cmpl (:$l x8632::nil-value) (:%l arg0)))
     474  (cmpl (:$l (:apply target-nil-value)) (:%l arg0)))
    468475
    469476(define-x8632-vinsn compare-to-t (()
    470477                                  ((arg0 t)))
    471   (cmpl (:$l x8632::t-value) (:%l arg0)))
     478  (cmpl (:$l (:apply target-t-value)) (:%l arg0)))
    472479
    473480(define-x8632-vinsn ref-constant (((dest :lisp))
     
    551558  ;; special check for NIL (which is a distinguished CONS on x8632)
    552559  :resume
    553   (cmpl (:$l x8632::nil-value) (:%l object))
     560  (cmpl (:$l (:apply target-nil-value)) (:%l object))
    554561  (je :bad)
    555562  (movl (:%l object) (:%l tag))
     
    566573                                         ((tag (:u32 #.x8632::imm0))))
    567574  (movl (:%l object) (:%accl tag))
    568   (andb (:$b x8632::fulltagmask) (:%accb tag))
     575  (andl (:$b x8632::fulltagmask) (:%accl tag))
    569576  (cmpb (:$b x8632::fulltag-cons) (:%accb tag))
    570577  (setne (:%b x8632::ah))
    571   (cmpl (:$l x8632::nil-value) (:% object))
     578  (cmpl (:$l (:apply target-nil-value)) (:% object))
    572579  (sete (:%b x8632::al))
    573580  (orb (:%b x8632::ah) (:%b x8632::al)))
     
    628635   (cmpl (:$b x8632::tag-misc) (:%l tag)))
    629636  (jne :have-tag)
    630   (movb (:@ x8632::misc-subtag-offset (:%l object)) (:%b tag))
     637  ;; This needs to be a sign-extending mov, since the cmpl below
     638  ;; will sign-extend the 8-bit constant operand.
     639  (movsbl (:@ x8632::misc-subtag-offset (:%l object)) (:%l tag))
    631640  :have-tag
    632   (cmpb (:$b tagval) (:%b tag))
     641  (cmpl (:$b tagval) (:%l tag))
    633642  (jne :bad)
    634643
     
    645654  (cmpl (:$b x8632::tag-misc) (:%l tag))
    646655  (jne :bad)
    647   ;; xxx tag might not be byte-accessible
    648   (movb (:@ x8632::misc-subtag-offset (:%l object)) (:%b tag))
    649   (cmpb (:$b x8632::subtag-single-float) (:%b tag))
     656  (movsbl (:@ x8632::misc-subtag-offset (:%l object)) (:%l tag))
     657  (cmpl (:$b x8632::subtag-single-float) (:%l tag))
    650658  (jne :bad)
    651659
     
    662670  (cmpl (:$b x8632::tag-misc) (:%l tag))
    663671  (jne :bad)
    664   ;; xxx tag might not be byte-accessible
    665   (movb (:@ x8632::misc-subtag-offset (:%l object)) (:%b tag))
    666   (cmpb (:$b x8632::subtag-double-float) (:%b tag))
     672  (movsbl (:@ x8632::misc-subtag-offset (:%l object)) (:%l tag))
     673  (cmpl (:$b x8632::subtag-double-float) (:%l tag))
    667674  (jne :bad)
    668675
     
    679686  (cmpl (:$b x8632::tag-misc) (:%l tag))
    680687  (jne :have-tag)
    681   ;; xxx tag might not be byte-accessible
    682   (movb (:@ x8632::misc-subtag-offset (:%l object)) (:%b tag))
     688  (movsbl (:@ x8632::misc-subtag-offset (:%l object)) (:%l tag))
    683689  :have-tag
    684690  (cmpl (:$b x8632::subtag-macptr) (:%l tag))
     
    736742(define-x8632-vinsn (load-nil :constant-ref) (((dest t))
    737743                                              ())
    738   (movl (:$l x8632::nil-value) (:%l dest)))
     744  (movl (:$l (:apply target-nil-value)) (:%l dest)))
    739745
    740746
    741747(define-x8632-vinsn (load-t :constant-ref) (((dest t))
    742748                                            ())
    743   (movl (:$l x8632::t-value) (:%l dest)))
    744 
    745 ;;; use something like this for the other extract-whatevers, too,
    746 ;;; once it's established that it works.
     749  (movl (:$l (:apply target-t-value)) (:%l dest)))
     750
    747751(define-x8632-vinsn extract-tag (((tag :u8))
    748752                                 ((object :lisp)))
    749753  (movl (:%l object) (:%l tag))
    750   ((:pred = (:apply %hard-regspec-value tag) x8632::eax)
    751    ;; tag is the accumulator (2 bytes)
    752    (andb (:$b x8632::tagmask) (:%accb tag)))
    753   ((:and (:pred > (:apply %hard-regspec-value tag) x8632::eax)
    754          (:pred <= (:apply %hard-regspec-value tag) x8632::ebx))
    755    ;; tag is in a register whose low 8 bits can be accessed by byte
    756    ;; insns (3 bytes)
    757    (andb (:$b x8632::tagmask) (:%b tag)))
    758   ((:pred > (:apply %hard-regspec-value tag) x8632::ebx)
    759    ;; tag is somewhere else (6 bytes) (could use andw and get a length
    760    ;; of 5 bytes, but Intel's optimization manual advises avoiding
    761    ;; length-changing prefixes to change the size of immediates.
    762    ;; (section 3.4.2.3)
    763    (andl (:$l x8632::tagmask) (:%l tag))))
     754  (andl (:$b x8632::tagmask) (:%l tag)))
    764755
    765756(define-x8632-vinsn extract-tag-fixnum (((tag :imm))
     
    785776  (andl (:$b (ash x8632::fulltagmask x8632::fixnumshift)) (:%l tag)))
    786777
    787 (define-x8632-vinsn extract-typecode (((tag :imm))
     778(define-x8632-vinsn extract-typecode (((tag :u32))
    788779                                      ((object :lisp)))
    789780  (movl (:%l object) (:%l tag))
    790   ((:pred <= (:apply  %hard-regspec-value tag) x8632::ebx)
    791    (andb (:$b x8632::tagmask) (:%b tag))
    792    (cmpb (:$b x8632::tag-misc) (:%b tag)))
    793   ((:pred > (:apply  %hard-regspec-value tag) x8632::ebx)
    794    (andl (:$l x8632::tagmask) (:%l tag))
    795    (cmpl (:$l x8632::tag-misc) (:%l tag)))
     781  (andl (:$b x8632::tagmask) (:%l tag))
     782  (cmpl (:$b x8632::tag-misc) (:%l tag))
    796783  (jne :have-tag)
    797   ((:pred <= (:apply  %hard-regspec-value tag) x8632::ebx)
    798    (movb (:@ x8632::misc-subtag-offset (:%l object)) (:%b tag)))
    799   ((:pred > (:apply %hard-regspec-value tag) x8632::ebx)
    800    (movl (:@ x8632::misc-subtag-offset (:%l object)) (:%l tag)))
     784  (movzbl (:@ x8632::misc-subtag-offset (:%l object)) (:%l tag))
    801785  :have-tag)
    802786
     
    808792  (cmpl (:$b x8632::tag-misc) (:%l temp))
    809793  (jne :have-tag)
    810   (movb (:@ x8632::misc-subtag-offset (:%l object)) (:%b temp))
     794  (movzbl (:@ x8632::misc-subtag-offset (:%l object)) (:%l temp))
    811795  :have-tag
    812796  (leal (:@ (:%l temp) 4) (:%l tag)))
     
    824808                                     ((crbit :u8const))
    825809                                     ((temp :u32)))
    826   (movl (:$l x8632::t-value) (:%l temp))
     810  (movl (:$l (:apply target-t-value)) (:%l temp))
    827811  (leal (:@ (- x8632::t-offset) (:%l temp)) (:%l dest))
    828812  (cmovccl (:$ub crbit) (:%l temp) (:%l dest)))
     
    15051489  (jmp :done)
    15061490  :push-loop
    1507   (pushl (:$l x8632::nil-value))
     1491  (pushl (:$l (:apply target-nil-value)))
    15081492  (addl (:$b x8632::node-size) (:%l x8632::nargs))
    15091493  (subl (:$b x8632::node-size) (:%l imm))
     
    15481532(define-x8632-vinsn pass-multiple-values-symbol (()
    15491533                                                 ())
    1550   (pushl (:@ (+ x8632::nil-value (x8632::%kernel-global 'x86::ret1valaddr))))
     1534  (pushl (:@ (:apply + (:apply target-nil-value) (x8632::%kernel-global 'x86::ret1valaddr))))
    15511535  (jmp (:@ x8632::symbol.fcell (:% x8632::fname))))
    15521536
     
    15581542                                          ((tag :u8)))
    15591543  :resume
    1560   (movb (:%b x8632::temp0) (:%b tag))
    1561   (andb (:$b x8632::tagmask) (:%b tag))
    1562   (cmpb (:$b x8632::tag-misc) (:%b tag))
    1563   (jne :bad)
    1564   (cmpb (:$b x8632::subtag-function) (:@ x8632::misc-subtag-offset (:%l x8632::temp0)))
     1544  (movl (:%l x8632::temp0) (:%l tag))
     1545  (andl (:$b x8632::tagmask) (:%l tag))
     1546  (cmpl (:$b x8632::tag-misc) (:%l tag))
     1547  (jne :bad)
     1548  (movsbl (:@ x8632::misc-subtag-offset (:%l x8632::temp0)) (:%l tag))
     1549  (cmpl (:$b x8632::subtag-function) (:%l tag))
    15651550  (cmovel (:%l x8632::temp0) (:%l x8632::fn))
    15661551  (je :go)
    1567   (cmpb (:$b x8632::subtag-symbol) (:@ x8632::misc-subtag-offset (:%l x8632::temp0)))
     1552  (cmpl (:$b x8632::subtag-symbol) (:%l tag))
    15681553  (cmovel (:@ x8632::symbol.fcell (:%l x8632::fname)) (:%l x8632::fn))
    15691554  (jne :bad)
    15701555  :go
    1571   (pushl (:@ (+ x8632::nil-value (x8632::%kernel-global 'x86::ret1valaddr))))
     1556  (pushl (:@ (:apply + (:apply target-nil-value) (x8632::%kernel-global 'x86::ret1valaddr))))
    15721557  (jmp (:%l x8632::fn))
    15731558  (:anchored-uuo-section :resume)
     
    17551740                                              ())
    17561741  (movl (:%l x8632::eax) (:@ (:%seg :rcontext) x8632::tcr.unboxed0))
    1757   (movd (:@ (:%seg :rcontext) x8632::tcr.unboxed0) (:%mmx x8632::mm0)))
     1742  (movq (:@ (:%seg :rcontext) x8632::tcr.unboxed0) (:%mmx x8632::mm0)))
    17581743
    17591744(define-x8632-subprim-call-vinsn (ff-call)  .SPffcall)
     
    19111896  (xorl (:%l valtype) (:%l valtype))
    19121897  (movl (:%l val) (:%l tag))
    1913   (andb (:$b x8632::tagmask) (:%b tag))
    1914   (cmpb (:$b x8632::tag-misc) (:%b tag))
     1898  (andl (:$b x8632::tagmask) (:%l tag))
     1899  (cmpl (:$b x8632::tag-misc) (:%l tag))
    19151900  (jne :have-tag)
    1916   (movb (:@ x8632::misc-subtag-offset (:%l val)) (:%b tag))
     1901  (movsbl (:@ x8632::misc-subtag-offset (:%l val)) (:%l tag))
    19171902  :have-tag
    1918   (cmpb (:$b x8632::subtag-istruct) (:%b tag))
     1903  (cmpl (:$b x8632::subtag-istruct) (:%l tag))
    19191904  (jne :do-compare)
    19201905  (movl (:@ x8632::misc-data-offset (:%l val)) (:%l valtype))
     
    23632348                                           ((tag :u8)))
    23642349  :again
    2365   (movb (:%b object) (:%b tag))
    2366   (andb (:$b x8632::fixnummask) (:%b tag))
    2367   (cmpb (:$b x8632::tag-misc) (:%b tag))
     2350  (movl (:%l object) (:%l tag))
     2351  (andl (:$b x8632::fixnummask) (:%l tag))
     2352  (cmpl (:$b x8632::tag-misc) (:%l tag))
    23682353  (jne :bad)
    23692354  (cmpb (:$b x8632::subtag-simple-vector) (:@ x8632::misc-subtag-offset (:%l object)))
     
    23782363                                           ((tag :u8)))
    23792364  :again
    2380   (movb (:%b object) (:%b tag))
    2381   (andb (:$b x8632::fixnummask) (:%b tag))
    2382   (cmpb (:$b x8632::tag-misc) (:%b tag))
     2365  (movl (:%l object) (:%l tag))
     2366  (andl (:$b x8632::fixnummask) (:%l tag))
     2367  (cmpl (:$b x8632::tag-misc) (:%l tag))
    23832368  (jne :bad)
    23842369  (cmpb (:$b x8632::subtag-simple-base-string) (:@ x8632::misc-subtag-offset (:%l object)))
     
    23982383  (movl (:%l object) (:%l tag))
    23992384  (andl (:$b x8632::tagmask) (:%l tag))
    2400   (cmpb (:$b x8632::tag-misc) (:%b tag))
     2385  (cmpl (:$b x8632::tag-misc) (:%l tag))
    24012386  (jne :have-tag)
    2402   (movb (:@ x8632::misc-subtag-offset (:%l object)) (:%b tag))
     2387  (movzbl (:@ x8632::misc-subtag-offset (:%l object)) (:%l tag))
    24032388  :have-tag
    2404   (cmpb (:$b (1- (- x8632::nbits-in-word x8632::fixnumshift))) (:%b tag))
     2389  (cmpl (:$b (1- (- x8632::nbits-in-word x8632::fixnumshift))) (:%l tag))
    24052390  (movl (:$l (ash (logior (ash 1 x8632::tag-fixnum)
    24062391                          (ash 1 x8632::subtag-single-float)
     
    24262411  (movl (:%l object) (:%l tag))
    24272412  (andl (:$b x8632::tagmask) (:%l tag))
    2428   (cmpb (:$b x8632::tag-misc) (:%b tag))
     2413  (cmpl (:$b x8632::tag-misc) (:%l tag))
    24292414  (jne :have-tag)
    2430   (movb (:@ x8632::misc-subtag-offset (:%l object)) (:%b tag))
     2415  (movzbl (:@ x8632::misc-subtag-offset (:%l object)) (:%l tag))
    24312416  :have-tag
    2432   (cmpb (:$b (1- (- x8632::nbits-in-word x8632::fixnumshift))) (:%b tag))
     2417  (cmpl (:$b (1- (- x8632::nbits-in-word x8632::fixnumshift))) (:%l tag))
    24332418  (movl (:$l (ash (logior (ash 1 x8632::tag-fixnum)
    24342419                          (ash 1 x8632::subtag-single-float)
     
    24522437  :again
    24532438  (movl (:%l object) (:%l tag))
    2454   (andb (:$b x8632::fulltagmask) (:%b tag))
    2455   (cmpb (:$b x8632::fulltag-cons) (:%b tag))
     2439  (andl (:$b x8632::fulltagmask) (:%l tag))
     2440  (cmpl (:$b x8632::fulltag-cons) (:%l tag))
    24562441  (jne :bad)
    24572442
     
    24642449                                    ((tag :u8)))
    24652450  :again
    2466   (cmpl (:$l x8632::nil-value) (:%l object))
     2451  (cmpl (:$l (:apply target-nil-value)) (:%l object))
    24672452  (je :got-it)
    24682453  (movl (:%l object) (:%l tag))
    2469   (andb (:$b x8632::tagmask) (:%b tag))
    2470   (cmpb (:$b x8632::tag-misc) (:%b tag))
     2454  (andl (:$b x8632::tagmask) (:%l tag))
     2455  (cmpl (:$b x8632::tag-misc) (:%l tag))
    24712456  (jne :bad)
    24722457  (cmpb (:$b x8632::subtag-symbol) (:@ x8632::misc-subtag-offset (:%l object)))
     
    27752760                                     ((tag :u8)))
    27762761  :resume
    2777   (cmpl (:$l x8632::nil-value) (:%l src))
     2762  (cmpl (:$l (:apply target-nil-value)) (:%l src))
    27782763  (je :nilsym)
    27792764  (movl (:%l src) (:%l tag))
    2780   (andb (:$b x8632::tagmask) (:%b tag))
    2781   (cmpb (:$b x8632::tag-misc) (:%b tag))
    2782   (jne :bad)
    2783   (movb (:@ x8632::misc-subtag-offset (:%l src)) (:%b tag))
    2784   (cmpb (:$b x8632::subtag-symbol) (:%b tag))
     2765  (andl (:$b x8632::tagmask) (:%l tag))
     2766  (cmpl (:$b x8632::tag-misc) (:%l tag))
     2767  (jne :bad)
     2768  (movsbl (:@ x8632::misc-subtag-offset (:%l src)) (:%l tag))
     2769  (cmpl (:$b x8632::subtag-symbol) (:%l tag))
    27852770  (jne :bad)
    27862771  ((:not (:pred =
     
    27902775  (jmp :ok)
    27912776  :nilsym
    2792   (movl (:$l (+ x8632::nil-value x8632::nilsym-offset)) (:%l dest))
     2777  (movl (:$l (:apply + (:apply target-nil-value) x8632::nilsym-offset)) (:%l dest))
    27932778  :ok
    27942779 
     
    27972782  (:anchored-uuo (uuo-error-reg-not-tag (:%l src) (:$ub x8632::subtag-symbol))))
    27982783
     2784(define-x8632-vinsn single-float-bits (((dest :u32))
     2785                                       ((src :lisp)))
     2786  (movl (:@ x8632::misc-data-offset (:%l src)) (:%l dest)))
    27992787
    28002788(define-x8632-vinsn zero-double-float-register (((dest :double-float))
     
    28172805                                               ((temp :u32)))
    28182806  (movl (:@ x8632::misc-header-offset (:%l src)) (:%l temp))
    2819   ((:and (:pred >= (:apply %hard-regspec-value temp) x8632::eax)
    2820          (:pred <= (:apply %hard-regspec-value temp) x8632::ebx))
    2821    (movb (:$b 0) (:%b temp)))
    2822   ((:pred > (:apply %hard-regspec-value temp) x8632::ebx)
    2823    (andl (:$l #xffffff00) (:%l temp)))
    2824   (movl (:%l temp) (:%l dest))
    2825   (shrl (:$ub (- x8632::num-subtag-bits x8632::fixnumshift)) (:%l dest)))
    2826 
    2827 
     2807  (shrl (:$ub x8632::num-subtag-bits) (:%l temp))
     2808  (leal (:@ (:%l temp) 4) (:%l dest)))
    28282809
    28292810(define-x8632-vinsn %logior2 (((dest :imm))
     
    32853266   (cmpl (:$b x8632::tag-misc) (:%l tag)))
    32863267  (jne :bad)
    3287   (movb (:@ x8632::misc-subtag-offset (:%l x8632::temp0)) (:%b tag))
    3288   (cmpb (:$b x8632::subtag-function) (:%b tag))
     3268  (movsbl (:@ x8632::misc-subtag-offset (:%l x8632::temp0)) (:%l tag))
     3269  (cmpl (:$b x8632::subtag-function) (:%l tag))
    32893270  (je :go)
    3290   (cmpb (:$b x8632::subtag-symbol) (:%b tag))
     3271  (cmpl (:$b x8632::subtag-symbol) (:%l tag))
    32913272  (cmovel (:@ x8632::symbol.fcell (:%l x8632::temp0)) (:%l x8632::temp0))
    32923273  (jne :bad)
     
    34553436                                       ((temp :imm)
    34563437                                        (ra0 (:lisp #.x8632::ra0))))
    3457   (movl (:@ (+ x8632::nil-value (x8632::%kernel-global 'x86::ret1valaddr)))
     3438  (movl (:@ (:apply + (:apply target-nil-value) (x8632::%kernel-global 'x86::ret1valaddr)))
    34583439        (:%l temp))
    34593440  (cmpl (:%l temp) (:%l ra0))
    34603441  (je :multiple)
    3461   (pushl (:@ (+ x8632::nil-value (x8632::%kernel-global 'x86::lexpr-return1v))))
     3442  (pushl (:@ (:apply + (:apply target-nil-value) (x8632::%kernel-global 'x86::lexpr-return1v))))
    34623443  (jmp :finish)
    34633444  :multiple
    3464   (pushl (:@ (+ x8632::nil-value (x8632::%kernel-global 'x86::lexpr-return))))
     3445  (pushl (:@ (:apply + (:apply target-nil-value) (x8632::%kernel-global 'x86::lexpr-return))))
    34653446  (pushl (:%l temp))
    34663447  :finish
     
    35373518  (movl (:@ x8632::symbol.fcell (:%l sym)) (:%l val))
    35383519  (movl (:%l val) (:%l tag))
    3539   (andb (:$b x8632::tagmask) (:%b tag))
    3540   (cmpb (:$b x8632::tag-misc) (:%b tag))
    3541   (jne :bad)
    3542   (movb (:@ x8632::misc-subtag-offset (:%l val)) (:%b tag))
    3543   (cmpb (:$b x8632::subtag-function) (:%b tag))
     3520  (andl (:$b x8632::tagmask) (:%l tag))
     3521  (cmpl (:$b x8632::tag-misc) (:%l tag))
     3522  (jne :bad)
     3523  (movsbl (:@ x8632::misc-subtag-offset (:%l val)) (:%l tag))
     3524  (cmpl (:$b x8632::subtag-function) (:%l tag))
    35443525  (jne :bad)
    35453526
     
    36333614  (cmpl (:$b (ash #xd800 -11))(:%l temp))
    36343615  :bad-if-eq
    3635   (movl (:$l x8632::nil-value) (:%l temp))
     3616  (movl (:$l (:apply target-nil-value)) (:%l temp))
    36363617  (cmovel (:%l temp) (:%l dest))
    36373618  (je :done)
     
    36843665  (leal (:@ (:%l x8632::esp) (:%l x8632::nargs)) (:%l temp))
    36853666  (subl (:@ (:%l temp)) (:%l x8632::nargs))
    3686   (movl (:$l x8632::nil-value) (:%l result))
     3667  (movl (:$l (:apply target-nil-value)) (:%l result))
    36873668  (jle :done)
    36883669  ;; I -think- that a CMOV would be safe here, assuming that N wasn't
     
    37533734  (movl (:@ (+ (ash 1 x8632::word-shift) x8632::misc-data-offset) (:%l src))
    37543735        (:%l dest))
    3755   (cmpl (:$l x8632::nil-value) (:%l dest))
     3736  (cmpl (:$l (:apply target-nil-value)) (:%l dest))
    37563737  (je :bad)
    37573738
     
    38613842                                     (imm :imm)))
    38623843  (xorl (:%l imm) (:%l imm))
    3863   (movl (:$l x8632::nil-value) (:%l x8632::arg_y))
     3844  (movl (:$l (:apply target-nil-value)) (:%l x8632::arg_y))
    38643845  :loop
    38653846  (rcmpl (:%l imm) (:%l nargs))
     
    38783859  (negb (:%b temp))
    38793860  (andl (:$b x8632::t-offset) (:%l temp))
    3880   (addl (:$l x8632::nil-value) (:%l temp))
     3861  (addl (:$l (:apply target-nil-value)) (:%l temp))
    38813862  (pushl (:%l temp)))
    38823863
     
    38893870  (je :one)
    38903871  ;; none
    3891   (pushl (:$l x8632::nil-value))
    3892   (pushl (:$l x8632::nil-value))
     3872  (pushl (:$l (:apply target-nil-value)))
     3873  (pushl (:$l (:apply target-nil-value)))
    38933874  (jmp :done)
    38943875  :one
    3895   (pushl (:$l x8632::t-value))
    3896   (pushl (:$l x8632::nil-value))
     3876  (pushl (:$l (:apply target-t-value)))
     3877  (pushl (:$l (:apply target-nil-value)))
    38973878  (jmp :done)
    38983879  :two
    3899   (pushl (:$l x8632::t-value))
    3900   (pushl (:$l x8632::t-value))
     3880  (pushl (:$l (:apply target-t-value)))
     3881  (pushl (:$l (:apply target-t-value)))
    39013882  :done)
    39023883
Note: See TracChangeset for help on using the changeset viewer.