Changeset 9733 for release/1.2/source


Ignore:
Timestamp:
Jun 11, 2008, 8:53:55 AM (11 years ago)
Author:
gb
Message:

vinsns ONE-OPT-SUPPLIED-P, TWO-OPT-SUPPLIED-P, OPT-SUPPLIED-P:
conditionally move (@ (+ t-offset symbol.vcell) nil), not (@ t-offset nil).
The latter does a misaligned reference of the word that the tagged pointer
to T, which (by sheer luck) is usually a random-looking fixnum. We really
want to (conditionally) move T's value cell to the destination here.

Gail's fix to CHECK-MISC-BOUND, from trunk.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/1.2/source/compiler/X86/X8664/x8664-vinsns.lisp

    r8553 r9733  
    794794  (shlq (:$ub x8664::fixnumshift) (:%q temp))
    795795  (rcmpq (:%q idx) (:%q temp))
    796   (jge :bad)
     796  (jae :bad)
    797797
    798798  (:anchored-uuo-section :resume)
     
    32323232  (rcmpl (:%l imm) (:%l nargs))
    32333233  (movl (:%l x8664::arg_y) (:%l x8664::arg_z))
    3234   (cmovll (:@ x8664::t-offset (:%l x8664::arg_y)) (:%l  x8664::arg_z))
     3234  (cmovll (:@ (+ x8664::t-offset x8664::symbol.vcell) (:%l x8664::arg_y)) (:%l  x8664::arg_z))
    32353235  (addl (:$b x8664::node-size) (:%l imm))
    32363236  (rcmpl (:%l imm) (:$l (:apply ash num-opt x8664::fixnumshift)))
     
    32433243  (testl (:%l x8664::nargs) (:%l x8664::nargs))
    32443244  (movl (:$l x8664::nil-value) (:%l temp))
    3245   (cmovnel (:@ x8664::t-offset (:%l temp)) (:%l temp))
     3245  (cmovnel (:@ (+ x8664::t-offset x8664::symbol.vcell) (:%l temp)) (:%l temp))
    32463246  (pushq (:%q temp)))
    32473247
     
    32533253  (movl (:$l x8664::nil-value) (:%l temp0))
    32543254  (movl (:%l temp0) (:%l temp1))
    3255   (cmovael (:@ x8664::t-offset (:%l temp0)) (:%l temp0))
    3256   (cmoval (:@ x8664::t-offset (:%l temp1)) (:%l temp1))
     3255  (cmovael (:@ (+ x8664::t-offset x8664::symbol.vcell) (:%l temp0)) (:%l temp0))
     3256  (cmoval (:@ (+ x8664::t-offset x8664::symbol.vcell) (:%l temp1)) (:%l temp1))
    32573257  (pushq (:%q temp0))
    32583258  (pushq (:%q temp1)))
Note: See TracChangeset for help on using the changeset viewer.