Changeset 11543


Ignore:
Timestamp:
01/04/09 22:03:41 (12 years ago)
Author:
vvoutilainen
Message:

Little helper for p2-plus/minus/times.

File:
1 edited

Legend:

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

    r11542 r11543  
    64026402    (emit-move-from-stack target representation)))
    64036403
     6404(defun two-long-ints-times/plus/minus (arg1 arg2 instruction representation)
     6405  (compile-form arg1 'stack :int)
     6406  (emit 'i2l)
     6407  (compile-form arg2 'stack :int)
     6408  (emit 'i2l)
     6409  (maybe-emit-clear-values arg1 arg2)
     6410  (emit instruction)
     6411  (convert-long representation))
     6412
    64046413(defun p2-times (form target representation)
    64056414  (case (length form)
     
    64306439                     (unless (eq representation :int)
    64316440                       (emit-invokespecial-init +lisp-fixnum-class+ '("I"))
    6432                        (fix-boxing representation 'fixnum))
    6433                      (emit-move-from-stack target representation))
     6441                       (fix-boxing representation 'fixnum)))
    64346442                    (t
    6435                      (compile-form arg1 'stack :int)
    6436                      (emit 'i2l)
    6437                      (compile-form arg2 'stack :int)
    6438                      (emit 'i2l)
    6439                      (maybe-emit-clear-values arg1 arg2)
    6440                      (emit 'lmul)
    6441                      (convert-long representation)
    6442                      (emit-move-from-stack target representation))))
     6443         (two-long-ints-times/plus/minus
     6444          arg1 arg2 'lmul representation)))
     6445        (emit-move-from-stack target representation))
    64436446             ((and (java-long-type-p type1)
    64446447                   (java-long-type-p type2)
     
    65866589         (emit-fixnum-init representation))
    65876590                    (t
    6588                      (compile-form arg1 'stack :int)
    6589                      (emit 'i2l)
    6590                      (compile-form arg2 'stack :int)
    6591                      (emit 'i2l)
    6592                      (maybe-emit-clear-values arg1 arg2)
    6593                      (emit 'ladd)
    6594                      (convert-long representation)))
     6591         (two-long-ints-times/plus/minus
     6592          arg1 arg2 'ladd representation)))
    65956593              (emit-move-from-stack target representation))
    65966594             ((and (java-long-type-p type1)
     
    66976695         (emit-fixnum-init representation))
    66986696                    (t
    6699                      (compile-form arg1 'stack :int)
    6700                      (emit 'i2l)
    6701                      (compile-form arg2 'stack :int)
    6702                      (emit 'i2l)
    6703                      (maybe-emit-clear-values arg1 arg2)
    6704                      (emit 'lsub)
    6705                      (convert-long representation)))
     6697         (two-long-ints-times/plus/minus
     6698          arg1 arg2 'lsub representation)))
    67066699              (emit-move-from-stack target representation))
    67076700             ((and (java-long-type-p type1) (java-long-type-p type2)
Note: See TracChangeset for help on using the changeset viewer.