Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
74b0de87 by Raymond Toy at 2021-02-03T17:04:16-08:00
Add test for overflow in expt that shouldn't happen
We shouldn't get an overflow, but we do because clang 10 miscompiles
e_pow.c and causes an overflow.
Addresses #101
- - - - -
23d1a1d1 by Raymond Toy at 2021-02-04T01:28:29+00:00
Merge branch 'issue-101-add-test' into 'master'
Add test for overflow in expt that shouldn't happen
See merge request cmucl/cmucl!68
- - - - -
1 changed file:
- tests/issues.lisp
Changes:
=====================================
tests/issues.lisp
=====================================
@@ -544,3 +544,15 @@
;; the correct value.
(assert-false
(funcall (compile nil '(lambda () (array-displacement "aaaaaaaa"))))))
+
+(define-test issue.101
+ (:tag :issues)
+ ;; Verifies that we don't get unexpected overflow. The actual value
+ ;; is not really important. The important part is no overflow is
+ ;; signaled.
+ ;;
+ ;; See https://gitlab.common-lisp.net/cmucl/cmucl/-/issues/101 for
+ ;; more details.
+ (assert-equalp
+ 3.0380154777955097d205
+ (expt 1.7976931348623157d308 0.6666)))
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/e349bf1da7a83e19650aff…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/e349bf1da7a83e19650aff…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
e349bf1d by Raymond Toy at 2021-01-30T09:51:59-08:00
Update notes in preparation for snapshot.
Just updated based on the issues that were closed.
- - - - -
1 changed file:
- src/general-info/release-21e.md
Changes:
=====================================
src/general-info/release-21e.md
=====================================
@@ -19,8 +19,6 @@ public domain.
## New in this release:
* Known issues:
- * Building with gcc8 or later doesn't work with the default -O option. Use -O1 instead. This shouldn't really impact overall speed much.
- * Added simple support to compile with clang instead, which works. (Use x86_linux_clang).
* Feature enhancements
* Changes
* Update to ASDF 3.3.4
@@ -35,6 +33,12 @@ public domain.
* ~~#80~~ Use ASDF to load contribs. cmu-contribs still exists but does nothing. The contrib names are the same, except it's best to use a keyword instead of a string. So, `:contrib-demos` instead of `"contrib-demos"`.
* ~~#81~~ Added contribs from Eric Marsden
* ~~#82~~ Replace bc with expr in GNUMakefile
+ * ~~#86~~ Building with gcc 8 and later works when using -O2 optimization
+ * ~~#90~~ Some static symbols have been removed. This probably makes the fasl files incompatible with older versions.
+ * ~~#91~~ Loop destructuring no longer incorrectly signals an error
+ * ~~#95~~ Disassembler syntax of x86 je and movzx is incorrect
+ * ~~#98~~ fstpd is not an Intel instruction; disassemble as `fstp dword ptr [addr]`
+ * ~~#100~~ ldb prints out unicode base-chars correctly instead of just the low 8 bits.
* Other changes:
* Improvements to the PCL implementation of CLOS:
* Changes to building procedure:
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/e349bf1da7a83e19650aff2…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/e349bf1da7a83e19650aff2…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
19f274f0 by Raymond Toy at 2021-01-29T17:30:03-08:00
ldb prints out Unicode characters
When printing out a base-char, only the low 8 bits of the code were
used. But with Unicode support, we need to take all the bits and
print them out. For control codes we use the form "#\^x". (Was
#\C-x, which isn't a valid supported character form.) Ascii is
printed as normal "#\a", and everything else use uses "#\u+<hex>".
While we're at it, we also added special cases like #\Vt that are
listed in
https://cmucl.org/docs/cmu-user/html/Characters.html#Characters.
With this, we can print out all unicode characters in a form that can
be pasted back into lisp.
- - - - -
832e116a by Raymond Toy at 2021-01-30T01:54:08+00:00
Merge branch 'issue-100-ldb-base-char-printing' into 'master'
ldb prints out Unicode characters
See merge request cmucl/cmucl!67
- - - - -
1 changed file:
- src/lisp/print.c
Changes:
=====================================
src/lisp/print.c
=====================================
@@ -212,12 +212,15 @@ static void
brief_otherimm(lispobj obj)
{
int type, c, idx;
- char buffer[10];
type = TypeOf(obj);
switch (type) {
case type_BaseChar:
- c = (obj >> 8) & 0xff;
+ /*
+ * A base-char should only be 16 bits long now. But
+ * sometimes it uses all 24. So just grab all the bits.
+ */
+ c = (obj >> 8) & 0xfffff;
switch (c) {
case '\0':
printf("#\\Null");
@@ -228,20 +231,35 @@ brief_otherimm(lispobj obj)
case '\b':
printf("#\\Backspace");
break;
+ case '\11':
+ printf("#\\Tab");
+ break;
+ case '\13':
+ printf("#\\Vt");
+ break;
+ case '\15':
+ printf("#\\Return");
+ break;
+ case '\33':
+ printf("#\\Escape");
+ break;
+ case '\40':
+ printf("#\\Space");
+ break;
case '\177':
printf("#\\Delete");
break;
default:
- strcpy(buffer, "#\\");
if (c >= 128) {
- strcat(buffer, "m-");
- c -= 128;
- }
- if (c < 32) {
- strcat(buffer, "c-");
- c += '@';
- }
- printf("%s%c", buffer, c);
+ /* Just print out the code value */
+ printf("#\\u+%04X", c);
+ } else if (c < 32) {
+ /* Print it out as a control character */
+ printf("#\\^%c", c + '@');
+ } else {
+ /* Plain ASCII character */
+ printf("#\\%c", c);
+ }
break;
}
break;
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/ef9fc1bced6dbad3b63213…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/ef9fc1bced6dbad3b63213…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch native-image at cmucl / cmucl
Commits:
9f71e8eb by Raymond Toy at 2021-01-26T22:30:52-08:00
Support type_BaseChar and type_ValueCellHeader
Value cells are dumped as some boxed object.
- - - - -
1 changed file:
- src/lisp/save.c
Changes:
=====================================
src/lisp/save.c
=====================================
@@ -680,6 +680,9 @@ init_asmtab()
asmtab[type_SimpleVector] = asm_simple_vector;
asmtab[type_FuncallableInstanceHeader] = asm_closure_header;
asmtab[type_ComplexVector] = asm_boxed;
+ asmtab[type_BaseChar] = asm_immediate;
+ /* Just use asm_boxed or have a special version for a value cell? */
+ asmtab[type_ValueCellHeader] = asm_boxed;
}
void
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/9f71e8eb109c45a709c03c1…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/9f71e8eb109c45a709c03c1…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch native-image at cmucl / cmucl
Commits:
f6b1c916 by Raymond Toy at 2021-01-26T21:36:17-08:00
Round up length for boxed objects and simple vector
These objects should end on a double-word boundary, so round up the
len (from the header) to a double word before printing out the
contents. If we don't round and we don't end on a boundary, we'll
probably just print an immediate word of 0. Harmless, I think, but
we'll add a label that wastes space.
- - - - -
1 changed file:
- src/lisp/save.c
Changes:
=====================================
src/lisp/save.c
=====================================
@@ -26,6 +26,9 @@
#include "gencgc.h"
#endif
+/* Like (ceiling x y), but y is constrained to be a power of two */
+#define CEILING(x,y) (((x) + ((y) - 1)) & (~((y) - 1)))
+
#ifdef FEATURE_EXECUTABLE
#include "elf.h"
#if !(defined(DARWIN) && defined(__ppc__))
@@ -454,6 +457,7 @@ int
asm_boxed(lispobj* ptr, lispobj object, FILE* f)
{
int len = 1 + HeaderValue(object);
+ len = CEILING(len, 2);
int k;
asm_label(ptr, object, f);
@@ -464,8 +468,6 @@ asm_boxed(lispobj* ptr, lispobj object, FILE* f)
asm_lispobj(ptr + k, ptr[k], f);
}
- asm_align(f);
-
return len;
}
@@ -535,6 +537,7 @@ asm_simple_vector(lispobj* ptr, lispobj object, FILE* f)
{
int k;
int len = ptr[1] >> 2;
+ len = CEILING(len, 2);
lispobj* data = ptr + 2;
asm_label(ptr, object, f);
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/f6b1c916b14484b0d777dd5…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/f6b1c916b14484b0d777dd5…
You're receiving this email because of your account on gitlab.common-lisp.net.