Skip to content

Commit 9fbe866

Browse files
committed
Implement UPGRADED-ARRAY-ELEMENT-TYPE for non-specialized byte types
Addresses <#508>.
1 parent d2979ee commit 9fbe866

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

src/org/armedbear/lisp/Lisp.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1736,6 +1736,27 @@ public static final LispObject getUpgradedArrayElementType(LispObject type)
17361736
}
17371737
}
17381738
}
1739+
else if (car.equals(Symbol.UNSIGNED_BYTE))
1740+
{
1741+
LispObject bits = type.cadr();
1742+
if (!(bits instanceof Fixnum)) {
1743+
simple_error("bad size specified for UNSIGNED-BYTE type specifier: ~a", bits);
1744+
}
1745+
int b = ((Fixnum)bits).value;
1746+
if (0 == b) {
1747+
simple_error("bad size specified for UNSIGNED-BYTE type specifier: ~a", bits);
1748+
} else if (1 == b) {
1749+
return Symbol.BIT;
1750+
} else if (1 <= b && b <= 8) {
1751+
return UNSIGNED_BYTE_8;
1752+
} else if (9 <= b && b <= 16) {
1753+
return UNSIGNED_BYTE_16;
1754+
} else if (17 <= b && b <= 32) {
1755+
return UNSIGNED_BYTE_32;
1756+
} else {
1757+
return T;
1758+
}
1759+
}
17391760
else if (car == Symbol.EQL)
17401761
{
17411762
LispObject obj = type.cadr();

0 commit comments

Comments
 (0)