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.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
ef9fc1bc by Raymond Toy at 2021-01-15T13:59:13-08:00
Minor tweak to put use the right EI_OSABI value
Previously, the EI_OSABI value was either ELFOSAB_SOLARIS for solaris
or ELFOSABI_FREEBSD for everything else. Let's update this to include
NetBSD and Linux. Unlikely we'll ever support other things like
HP-UX, AIX, IRIX, Tru64, etc.
The value currently doesn't seem matter, but it seems nice to get it
right.
- - - - -
1 changed file:
- src/lisp/elf.c
Changes:
=====================================
src/lisp/elf.c
=====================================
@@ -132,8 +132,15 @@ write_elf_header(int fd)
eh.e_ident[EI_VERSION] = EV_CURRENT;
#ifdef SOLARIS
eh.e_ident[EI_OSABI] = ELFOSABI_SOLARIS;
-#else
+#elif defined(__FREEBSD__)
eh.e_ident[EI_OSABI] = ELFOSABI_FREEBSD;
+#elif defined(__NetBSD__)
+ eh.e_ident[EI_OSABI] = ELFOSABI_NETBSD;
+#elif defined(__linux__)
+ eh.e_ident[EI_OSABI] = ELFOSABI_LINUX;
+#else
+ /* Default to NONE */
+ eh.e_ident[EI_OSABI] = ELFOSABI_NONE;
#endif
#ifdef SOLARIS
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/ef9fc1bced6dbad3b63213d…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/ef9fc1bced6dbad3b63213d…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
22e573f3 by Raymond Toy at 2021-01-12T16:44:14-08:00
Address #89: Remove C code to scavenge read-only space
Since we got rid of the symbol `*scavenge-read-only-space*`, we can
never scavenge the read-only space, so remove the C code that
scavenges the space.
Get rid of the unused var `read_only_space_size` too.
- - - - -
3593ca90 by Raymond Toy at 2021-01-13T01:05:13+00:00
Merge branch 'issue-89-unused-var' into 'master'
Address #89: Remove C code to scavenge read-only space
See merge request cmucl/cmucl!66
- - - - -
1 changed file:
- src/lisp/gencgc.c
Changes:
=====================================
src/lisp/gencgc.c
=====================================
@@ -7722,7 +7722,7 @@ static void
garbage_collect_generation(int generation, int raise)
{
unsigned long i;
- unsigned long read_only_space_size, static_space_size;
+ unsigned long static_space_size;
#if defined(i386) || defined(__x86_64)
invalid_stack_start = (void *) control_stack;
@@ -7865,17 +7865,6 @@ garbage_collect_generation(int generation, int raise)
printf("Done scavenging the scavenger hooks.\n");
#endif
-#if 0
- if (SymbolValue(SCAVENGE_READ_ONLY_SPACE) != NIL) {
- read_only_space_size =
- (lispobj *) SymbolValue(READ_ONLY_SPACE_FREE_POINTER) -
- read_only_space;
- fprintf(stderr, "Scavenge read only space: %ld bytes\n",
- read_only_space_size * sizeof(lispobj));
- scavenge(read_only_space, read_only_space_size);
- }
-#endif
-
static_space_size = (lispobj *) SymbolValue(STATIC_SPACE_FREE_POINTER)
- static_space;
if (gencgc_verbose > 1)
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/9c0c857dd10067e1cf90ec…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/9c0c857dd10067e1cf90ec…
You're receiving this email because of your account on gitlab.common-lisp.net.