Changeset 11505


Ignore:
Timestamp:
12/29/08 20:07:24 (12 years ago)
Author:
ehuelsmann
Message:

Consolidate code-path with existing function PROCESS-ARGS.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp

    r11504 r11505  
    28942894                                  (list +lisp-object+ +lisp-object-array+)
    28952895                                  +lisp-object+)))))
    2896     (let ((must-clear-values nil))
    2897       (declare (type boolean must-clear-values))
    2898       (cond ((> (length args) call-registers-limit)
    2899              (emit-push-constant-int (length args))
    2900              (emit 'anewarray +lisp-object-class+)
    2901              (let ((i 0))
    2902                (dolist (arg args)
    2903                  (emit 'dup)
    2904                  (emit-push-constant-int i)
    2905                  (compile-form arg 'stack nil)
    2906                  (emit 'aastore) ; store value in array
    2907                  (unless must-clear-values
    2908                    (unless (single-valued-p arg)
    2909                      (setf must-clear-values t)))
    2910                  (incf i)))) ; array left on stack here
    2911             (t
    2912              (dolist (arg args)
    2913                (compile-form arg 'stack nil)
    2914                (unless must-clear-values
    2915                  (unless (single-valued-p arg)
    2916                    (setf must-clear-values t)))))) ; args left on stack here
    2917       (when must-clear-values
    2918         (emit-clear-values)))
     2896    (process-args args)
    29192897    (let* ((arg-count (length args))
    29202898           (arg-types (if (<= arg-count call-registers-limit)
Note: See TracChangeset for help on using the changeset viewer.