Ignore:
Timestamp:
08/09/10 12:23:20 (13 years ago)
Author:
ehuelsmann
Message:

Move the u2, s1 and s2 helper functions to jvm.lisp.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/generic-class-file/abcl/src/org/armedbear/lisp/jvm.lisp

    r12881 r12882  
    6363  (declare (ignore ignored)))
    6464
     65(declaim (inline u2 s1 s2))
     66
     67(defknown u2 (fixnum) cons)
     68(defun u2 (n)
     69  (declare (optimize speed))
     70  (declare (type (unsigned-byte 16) n))
     71  (when (not (<= 0 n 65535))
     72    (error "u2 argument ~A out of 65k range." n))
     73  (list (logand (ash n -8) #xff)
     74        (logand n #xff)))
     75
     76(defknown s1 (fixnum) fixnum)
     77(defun s1 (n)
     78  (declare (optimize speed))
     79  (declare (type (signed-byte 8) n))
     80  (when (not (<= -128 n 127))
     81    (error "s2 argument ~A out of 16-bit signed range." n))
     82  (if (< n 0)
     83      (1+ (logxor (- n) #xFF))
     84      n))
     85
     86
     87(defknown s2 (fixnum) cons)
     88(defun s2 (n)
     89  (declare (optimize speed))
     90  (declare (type (signed-byte 16) n))
     91  (when (not (<= -32768 n 32767))
     92    (error "s2 argument ~A out of 16-bit signed range." n))
     93  (u2 (if (< n 0) (1+ (logxor (- n) #xFFFF))
     94          n)))
     95
     96
     97
     98
    6599
    66100(defmacro with-saved-compiler-policy (&body body)
Note: See TracChangeset for help on using the changeset viewer.