Changeset 7791


Ignore:
Timestamp:
Nov 30, 2007, 12:46:28 PM (17 years ago)
Author:
Gary Byers
Message:

Don't set the "puntable" bit on constant-valued pointers that have
dynamic-extent.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/compiler/nx0.lisp

    r6897 r7791  
    979979  (let* ((bits (nx-var-bits var))
    980980         (mask (%ilogior (%ilsl $vbitsetq 1) (ash -1 $vbitspecial) (%ilsl $vbitclosed 1)))
    981          ;(count (%i+ (%ilogand $vrefmask bits) (%ilsr 8 (%ilogand $vsetqmask bits))))
    982981         (nrefs (%ilogand $vrefmask bits))
    983982         (val (nx-untyped-form initform))
     
    986985      (if
    987986        (or
    988          ;(%izerop count)  ; unreferenced vars can still have side effects
    989987         (nx-t val)
    990988         (nx-null val)
    991          (and (eql nrefs 1) ( acode-absolute-ptr-p val t))
     989         (and (eql nrefs 1) (not (logbitp $vbitdynamicextent bits)) ( acode-absolute-ptr-p val t))
    992990         (eq op (%nx1-operator fixnum))
    993991         (eq op (%nx1-operator immediate)))
    994         (nx-set-var-bits var (%ilogior (%ilsl $vbitpuntable 1) bits))))
     992        (progn
     993          (nx-set-var-bits var (%ilogior (%ilsl $vbitpuntable 1) bits)))))
    995994    (when (and (%ilogbitp $vbitdynamicextent bits)
    996995               (or (eq op (%nx1-operator closed-function))
     
    12191218           (boundtobits (nx-var-bits boundto)))
    12201219      (declare (fixnum varbits boundtobits))
    1221 
    12221220      (unless (eq (%ilogior
    12231221                    (%ilsl $vbitsetq 1)
     
    12281226                      (%ilsl $vbitclosed 1))
    12291227                    boundtobits))
    1230         ; Can't happen -
     1228        ;; Can't happen -
    12311229        (unless (%izerop (%ilogand (%ilogior
    12321230                                     (%ilsl $vbitsetq 1)
Note: See TracChangeset for help on using the changeset viewer.