+164
−0
+284
−0
+242
−0
+4
−1
+65
−1
File changed.
Preview size limit exceeded, changes collapsed.
Loading
What works:
o Cross-compile works on sparc and a lisp.core is created. This core
is able to build code and appears to use 16-bit strings.
What doesn't:
o The sparc version is not able to rebuild itself. It hangs when
trying to create a new lisp.core.
o The x86 version will cross-compile, but worldload fails. The files
being loaded have bizarre names. Probably some deftransform not
working correctly.
Issues:
o Characters are still essentially 8 bits. This needs to be fixed.
o All input/output is basically still 8 bits. Only the low 8 bits of
a character are output. For input, characters are assumed to be
8-bit.
o No external formats or anything is supported.
o Readtable support not done.
Use boot-2008-05-cross-unicode-{sparc,x86}.lisp to cross-compile the
unicode changes.
Untested whether this code can still be compiled without :unicode.
Changes:
code/array.lisp:
o Base-char strings are 16 bits wide, not 8.
code/c-call.lisp:
o Define versions of DEPORT-GEN, %NATURALIZE-C-STRING to "handle"
unicode strings.
code/debug-info.lisp:
o Adjust READ-VAR-STRING to use 16-bit strings. (Needed to at least
to make the disassembler work.)
code/debug.lisp:
o Add address when printing out objects that can't be printed.
(Generally useful and not just for unicode.)
code/fd-stream.lisp:
o Hack output routines to only use the low 8-bits of the character.
(This needs significant work!)
code/filesys.lisp:
o Some debugging %primitive prints left in, but commented out, in
PARSE-UNIX-NAMESTRING.
code/lispinit.lisp:
o Debugging %primitive print's for top-level forms.
code/load.lisp:
o Update FOP-SHORT-CHARACTER for unicode. But still only output the
low 8 bits of a character to a fasl/core. This needs updating.
o Hack routines for symbols to explicitly read in the individual bytes
of the symbol/package name because READ-N-BYTES isn't working for us
right now.
o Update FOP-STRING/FOP-SMALL-STRING to read in 16-bit elements for
strings. Full 16-bit strings supported.
o Currently only write 8-bit chars for foreign names. This needs
fixing.
code/misc.lisp:
o Register :unicode runtime feature.
code/pathname.lisp:
o Debugging %primitive prints left in, but commented out.
code/stream.lisp:
o Replace %primitive byte-blt with REPLACE for now to get the desired
characters.
code/unix-glibc2.lisp:
o Workaround for unix-current-directory to return 16-bit strings.
(Not necessary anymore?)
o UNIX-RESOLVE-LINKS doesn't seem to like MAKE-STRING with an
INITIAL-ELEMENT specified. Remove initial-element. (Needs fixing.)
code/unix.lisp:
o Same as for unix-glibc2.lisp
compiler/array-tran.lisp:
o Turn off the MAKE-STRING deftransform.
o Update ARRAY-INFO to create 16-bit arrays for an element-type of
base-char.
compiler/dump.lisp:
o Only dump 8-bit chars to a fasl for foreign fixups.
o Explicitly dump the characters of symbol name. DUMP-BYTES not quite
working for us now?
o Make DUMP-SIMPLE-STRING dump all 16 bits of each character.
o Characters are dumped as the low 8 bits. Needs fixing.
compiler/generic/new-genesis.lisp:
o STRING-TO-CORE writes 16-bit strings to the core file.
o FOP-SHORT-CHARACTER for unicode added, but we still only write 8
bits to the core. (Needs fixing.)
o COLD-LOAD-SYMBOL modified to read 16-bit characters from the fasl
file to create a symbol.
o FOP-UNINTERNED-SYMBOL-SAVE and FOP-UNINTERNED-SMALL-SYMBOL-SAVE
reads 16-bit characters for symbol names.
o FOP-STRING/FOP-SMALL-STRING reads 16-bit characters for strings.
o FOP-FOREIGN-FIXUP and FOP-FOREIGN-DATA-FIXUP still only read 8-bit
characters for foreign names. (Needs fixing.)
compiler/generic/vm-tran.lisp:
o New deftransforms to support unicode. Not the most efficient but
should be workable for now. Old deftransforms didn't copy enough
bits.
o Deftransform for concatenate completely disabled. This needs
fixing.
compiler/sparc/array.lisp:
o Change simple-string accessor to use halfword accessors instead of
byte accessors.
compiler/x86/array.lisp:
o Change simple-string accessor to use halfword accessors instead of
byte accessors.
lisp/Config.linux_gencgc:
o Define -DUNICODE as needed
lisp/Config.sun4_solaris_sunc
o Define -DUNICODE as needed.
lisp/alloc.c:
o alloc_string needs to allocate 16-bit strings
lisp/backtrace.c:
o Tell ldb backtrace how to print out 16-bit strings. This is a hack!
lisp/gencgc.c:
o Tell GC how long the 16-bit strings are now.
lisp/interr.c:
o Not really needed but make debug_print (aka %primitive print)
support all objects by calling ldb's print function to print the
object.
lisp/os-common.c:
o Add hack convert_lisp_string to take a 16-bit Lisp string and create
a new string containing just the low 8 bits of each Lisp character.
o OS foreign linkage stuff needs 8-bit strings, so we need to convert
Lisp strings to the desired size. Very hackish!
lisp/print.c:
o Teach ldb how to print Lisp 16-bit strings. Currently, just dump
out each byte of the 16-bit string. This needs major work!
lisp/purify.c:
o Teach purify about the 16-bit strings.
File changed.
Preview size limit exceeded, changes collapsed.