Changeset 15024
- Timestamp:
- 06/01/17 06:45:18 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/logcount.java
r12288 r15024 46 46 } 47 47 48 // FIXME Optimize fixnum case!49 48 @Override 50 49 public LispObject execute(LispObject arg) 51 50 { 52 BigInteger n; 53 if (arg instanceof Fixnum) 54 n = ((Fixnum)arg).getBigInteger(); 55 else if (arg instanceof Bignum) 56 n = ((Bignum)arg).value; 51 int n; 52 if (arg instanceof Fixnum) { 53 int value = ((Fixnum)arg).value; 54 n = Integer.bitCount(value < 0 ? ~value : value); 55 } else if (arg instanceof Bignum) 56 n = ((Bignum)arg).value.bitCount(); 57 57 else 58 58 return type_error(arg, Symbol.INTEGER); 59 return Fixnum.getInstance(n .bitCount());59 return Fixnum.getInstance(n); 60 60 } 61 61
Note: See TracChangeset
for help on using the changeset viewer.