Changeset 14468 for release


Ignore:
Timestamp:
Dec 6, 2010, 8:09:49 PM (8 years ago)
Author:
rme
Message:

Merge r14459 through r14465 from trunk.

ftype declarations for (setf x) broken
fix for ticket:786
better error checking in alphatizer for FUNCTION
fix protocol handling for Cocotron objc runtime

Location:
release/1.6/source
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • release/1.6/source

  • release/1.6/source/compiler/nx1.lisp

    r14381 r14468  
    13081308  (nx1-treat-as-call w))
    13091309
    1310 
    13111310(defnx1 nx1-function function (arg &aux fn afunc)
    1312   (if (symbolp arg)
    1313     (progn
    1314       (when (macro-function arg *nx-lexical-environment*)
    1315         (nx-error
    1316          "~S can't be used to reference lexically visible macro ~S."
    1317          'function arg))
    1318       (if (multiple-value-setq (fn afunc) (nx-lexical-finfo arg))
    1319         (progn
    1320           (when afunc
    1321             (incf (afunc-fn-refcount afunc))
    1322             (when (%ilogbitp $fbitbounddownward (afunc-bits afunc))
    1323               (incf (afunc-fn-downward-refcount afunc))))
    1324           (nx1-symbol (%cddr fn)))
    1325         (progn
    1326           (while (setq fn (assq arg *nx-synonyms*))
    1327             (setq arg (%cdr fn)))
    1328           (nx1-form `(%function ',arg)))))
    1329     (if (and (consp arg) (eq (%car arg) 'setf))
    1330       (nx1-form `(function ,(nx-need-function-name arg)))
    1331       (nx1-ref-inner-function nil arg))))
     1311  (cond ((symbolp arg)
     1312         (when (macro-function arg *nx-lexical-environment*)
     1313           (nx-error
     1314            "~S can't be used to reference lexically visible macro ~S."
     1315            'function arg))
     1316         (if (multiple-value-setq (fn afunc) (nx-lexical-finfo arg))
     1317           (progn
     1318             (when afunc
     1319               (incf (afunc-fn-refcount afunc))
     1320               (when (%ilogbitp $fbitbounddownward (afunc-bits afunc))
     1321                 (incf (afunc-fn-downward-refcount afunc))))
     1322             (nx1-symbol (%cddr fn)))
     1323           (progn
     1324             (while (setq fn (assq arg *nx-synonyms*))
     1325               (setq arg (%cdr fn)))
     1326             (nx1-form `(%function ',arg)))))
     1327        ((setf-function-name-p arg)
     1328         (nx1-form `(function ,(nx-need-function-name arg))))
     1329        ((lambda-expression-p arg)
     1330         (nx1-ref-inner-function nil arg))
     1331        (t
     1332         (nx-error "~S is not a function name or lambda expression" arg))))
    13321333
    13331334(defnx1 nx1-nfunction nfunction (name def)
  • release/1.6/source/level-1/l1-streams.lisp

    r14453 r14468  
    56035603          (io-buffer-count buf) 0
    56045604          (ioblock-eof ioblock) nil)
    5605       (when (or read-p (setq avail (stream-listen s)))
     5605      (when (or read-p (setq avail (fd-input-available-p fd 0)))
    56065606        (unless avail
    56075607          (let* ((deadline (ioblock-deadline ioblock))
  • release/1.6/source/level-1/linux-files.lisp

    r14433 r14468  
    11231123                                    :direction :input
    11241124                                    :element-type element-type
    1125                                     :interactive nil
     1125                                    :interactive t
    11261126                                    :basic t
    11271127                                    :sharing sharing
     
    12311231                                                   :sharing :private
    12321232                                                   :encoding encoding
     1233                                                   :interactive t
    12331234                                                   :line-termination line-termination)))
    12341235                                     in-fds) out-streams)))
     
    15481549                                    :direction :input
    15491550                                    :element-type element-type
    1550                                     :interactive nil
     1551                                    :interactive t
    15511552                                    :basic t
    15521553                                    :sharing sharing
     
    18251826                                                           :sharing :private
    18261827                                                           :encoding encoding
     1828                                                           :interactive t
    18271829                                                           :line-termination line-termination)))
    18281830                                   in-fds)
  • release/1.6/source/objc-bridge/objc-support.lisp

    r14381 r14468  
    4848        (incf n)))))
    4949
     50
    5051(defun %note-protocol (p)
    51   (with-macptrs ((cname (objc-message-send p "name" :address)))
     52  ;; In Cocotron (which is ultimately based on the GNU ObjC runtime),
     53  ;; it may be the case that some Protocol objects aren't fully initialized
     54  ;; when this code runs, hence the sleazy use of PREF here.
     55  (with-macptrs ((cname #+cocotron-objc (pref p #>Protocol.nameCString)
     56                        #-cocotron-objc (objc-message-send p "name" :address)))
    5257    (let* ((namelen (%cstrlen cname))
    5358           (name (make-string namelen)))
     
    6469
    6570(defun note-class-protocols (class)
    66   #-(or apple-objc-2.0 cocotron-objc)
     71  #-(or apple-objc-2.0)
    6772  (do* ((protocols (pref class :objc_class.protocols)
    6873                   (pref protocols :objc_protocol_list.next)))
     
    7378          (with-macptrs ((p (paref list (:* (:* (:struct :<P>rotocol))) i)))
    7479            (%note-protocol p))))))
    75   #+(or apple-objc-2.0 cocotron-objc)
     80  #+(or apple-objc-2.0)
    7681  (rlet ((p-out-count :int 0))
    7782    (with-macptrs ((protocols (#_class_copyProtocolList class p-out-count)))
Note: See TracChangeset for help on using the changeset viewer.