Changeset 11617


Ignore:
Timestamp:
02/01/09 22:15:32 (12 years ago)
Author:
ehuelsmann
Message:

More CONVERT-REPRESENTATIONs.

File:
1 edited

Legend:

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

    r11614 r11617  
    76827682        (emit 'iinc (variable-register variable) 1)
    76837683        (when target
    7684           (case representation
    7685             (:int
    7686              (emit 'iload (variable-register variable)))
    7687             (:long
    7688              (emit 'iload (variable-register variable))
    7689              (emit 'i2l))
    7690             (t
    7691        (new-fixnum)
    7692              (aver (variable-register variable))
    7693              (emit 'iload (variable-register variable))
    7694              (emit-invokespecial-init +lisp-fixnum-class+ '("I"))
    7695              (fix-boxing representation nil)))
     7684          (emit 'iload (variable-register variable))
     7685          (convert-representation :int representation)
    76967686          (emit-move-from-stack target representation))
    76977687        (return-from p2-setq)))
     
    77057695           (emit 'iinc (variable-register variable) 1)
    77067696           (when target
    7707              (cond ((eq representation :int)
    7708                     (emit 'iload (variable-register variable)))
    7709                    (t
    7710                     (dformat t "p2-setq constructing boxed fixnum for ~S~%"
    7711                              (variable-name variable))
    7712         (new-fixnum)
    7713                     (aver (variable-register variable))
    7714                     (emit 'iload (variable-register variable))
    7715                     (emit-invokespecial-init +lisp-fixnum-class+ '("I"))))
     7697             (convert-representation :int representation)
    77167698             (emit-move-from-stack target representation)))
    77177699          ((and (eq (variable-representation variable) :int)
     
    77217703           (emit 'iinc (variable-register variable) -1)
    77227704           (when target
    7723              (cond ((eq representation :int)
    7724                     (emit 'iload (variable-register variable)))
    7725                    (t
    7726                     (dformat t "p2-setq constructing boxed fixnum for ~S~%"
    7727                              (variable-name variable))
    7728         (new-fixnum)
    7729                     (aver (variable-register variable))
    7730                     (emit 'iload (variable-register variable))
    7731                     (emit-invokespecial-init +lisp-fixnum-class+ '("I"))))
     7705             (convert-representation :int representation)
    77327706             (emit-move-from-stack target representation)))
    77337707          ((eq (variable-representation variable) :int)
     
    77407714           (when target
    77417715             ;; int on stack here
    7742              (case representation
    7743                (:int)
    7744                (:long
    7745                 (emit 'i2l))
    7746                (t
    7747                 ;; need to box int
    7748                 (emit 'new +lisp-fixnum-class+) ; stack: int new-fixnum
    7749                 (emit 'dup_x1)                  ; stack: new-fixnum int new-fixnum
    7750                 (emit 'swap)                    ; stack: new-fixnum new-fixnum int
    7751                 (emit-invokespecial-init +lisp-fixnum-class+ '("I")))) ; stack: fixnum
     7716             (convert-representation :int representation)
    77527717             (emit-move-from-stack target representation)))
    77537718          ((eq (variable-representation variable) :char)
     
    77597724           (when target
    77607725             ;; char on stack here
    7761              (when (null representation)
    7762                ;; need to box char
    7763                (emit 'new +lisp-character-class+) ; stack: char new-character
    7764                (emit 'dup_x1)                  ; stack: new-character char new-character
    7765                (emit 'swap)                    ; stack: new-character new-character char
    7766                (emit-invokespecial-init +lisp-character-class+ '("C")) ; stack: character
    7767                (emit-move-from-stack target representation))))
     7726             (convert-representation :char representation)
     7727             (emit-move-from-stack target representation)))
    77687728          ((eq (variable-representation variable) :long)
    77697729     (compile-forms-and-maybe-emit-clear-values value-form 'stack :long)
     
    77737733           (when target
    77747734             ;; long on stack here
    7775              (case representation
    7776                (:int
    7777                 (emit 'l2i))
    7778                (:long)
    7779                (t
    7780                 (convert-representation :long nil)))
     7735             (convert-representation :long representation)
    77817736             (emit-move-from-stack target representation)))
    77827737          ((eq (variable-representation variable) :boolean)
     
    77877742           (when target
    77887743             ;; int on stack here
    7789              (case representation
    7790                (:boolean)
    7791                (t
    7792                 (convert-representation :boolean nil)))
     7744             (convert-representation :boolean representation)
    77937745             (emit-move-from-stack target representation)))
    77947746          (t
Note: See TracChangeset for help on using the changeset viewer.