Taylor R Campbell [Sat, 26 Apr 2014 21:00:01 +0000 (21:00 +0000)]
Correct types in BIGNUM_REDUCE_LENGTH and use output parameter as such.
Taylor R Campbell [Sat, 26 Apr 2014 20:58:24 +0000 (20:58 +0000)]
Make definition of VERIFY-HEAP primitive unconditional.
Define a verify_heap stub that always returns true if
!ENABLE_DEBUGGING_TOOLS.
Matt Birkholz [Sat, 26 Apr 2014 15:00:13 +0000 (08:00 -0700)]
Fix string-head! to hide the unused (non-marked) words.
This quiets 3 of the 17 complaints from verify_heap during `make
check'. The remaining 14 appear to be caused by SIGFPE recovery.
Matt Birkholz [Sat, 26 Apr 2014 04:10:43 +0000 (21:10 -0700)]
Fix BIGNUM_REDUCE_LENGTH to hide the unused (non-marked) words.
This quiets 7093 of the 7110 complaints from verify_heap during the
tests.
Matt Birkholz [Fri, 25 Apr 2014 23:47:06 +0000 (16:47 -0700)]
Call verify_heap before GC to scan for bogosities.
Trap recovery (on Unix) occasionally fails the assert in
linkage_section_type when its scan of the heap encounters non-marked
words that are not "hidden" by a non-marked vector header.
The new verify_heap function scans the heap in the same way, and
complains on stderr about any invalid linkage section types, object
types, etc. If the GC_Debug flag is set, verify_heap is called by the
garbage-collect primitive to scan maximal heap.
The new dump_heap_at function can be used to inspect the heap around a
reported bogosity.
Taylor R Campbell [Sun, 6 Apr 2014 22:10:20 +0000 (22:10 +0000)]
Fix technically incorrect malloc size in re_match. Omit needless cast.
Taylor R Campbell [Sun, 6 Apr 2014 22:09:47 +0000 (22:09 +0000)]
Nix dead initialization in scan_ephemerons.
Taylor R Campbell [Sun, 6 Apr 2014 22:09:32 +0000 (22:09 +0000)]
Mark scan unused in non-debug builds.
Taylor R Campbell [Sun, 6 Apr 2014 22:08:53 +0000 (22:08 +0000)]
Make (cd "/nonexistent") fail.
Kinda kludgey, but it'll do for interactive use.
See XXX comment for what a proper solution should look like.
Taylor R Campbell [Sun, 16 Mar 2014 17:30:55 +0000 (17:30 +0000)]
Remove vestigial unused variable in FAST-DIVISION.
Taylor R Campbell [Sun, 16 Mar 2014 15:21:38 +0000 (15:21 +0000)]
Revert "Assemble (JMP (@PCR FOO)) (LABEL FOO) to zero bits on amd64."
This reverts commit
f4dda7bf4a6f9f529fd2b295a0f51ee9ed6dc22b.
Apparently this doesn't work.
Taylor R Campbell [Sun, 16 Mar 2014 14:56:10 +0000 (14:56 +0000)]
Clarify comment over amd64 fixnum_shift hook.
Taylor R Campbell [Sun, 16 Mar 2014 14:50:30 +0000 (14:50 +0000)]
Open-code non-2^n quotients and remainders by multiplication on amd64.
Taylor R Campbell [Sun, 16 Mar 2014 14:49:26 +0000 (14:49 +0000)]
Assemble (JMP (@PCR FOO)) (LABEL FOO) to zero bits on amd64.
Taylor R Campbell [Sun, 16 Mar 2014 14:48:35 +0000 (14:48 +0000)]
Reorder branches in FIX:QUOTIENT/FIX:REMAINDER code on amd64.
Make the negative numerator case a forward branch so it will be
statically predicted not-taken.
Taylor R Campbell [Sat, 15 Mar 2014 20:32:07 +0000 (20:32 +0000)]
Avoid modifying rcx in amd64 fixnum_shift assembly hook.
Taylor R Campbell [Sat, 15 Mar 2014 20:30:09 +0000 (20:30 +0000)]
Fix sf/cgen so it doesn't just drop declarations for the compiler.
Taylor R Campbell [Sun, 23 Feb 2014 21:19:03 +0000 (21:19 +0000)]
Attempt to fix an undefined variable reference in svm disassembler.
Guessing here what the right way is; I don't know this code well
enough to say for sure.
Taylor R Campbell [Sun, 23 Feb 2014 17:57:35 +0000 (17:57 +0000)]
Generate all OS constructors for compiler.
Taylor R Campbell [Sun, 23 Feb 2014 17:30:43 +0000 (17:30 +0000)]
Remove obsolete AC_SYS_RESTARTABLE_SYSCALLS.
We don't use the result anyway, and it always causes an annoying
delay in configure.
Taylor R Campbell [Sun, 23 Feb 2014 17:10:24 +0000 (17:10 +0000)]
Use FLO:NEGATE, not (FLO:- 0. ...), to apply sign in NUMBER->STRING.
Taylor R Campbell [Sun, 23 Feb 2014 17:08:55 +0000 (17:08 +0000)]
Don't rewrite (flo:- 0. x) as (flo:negate x) on amd64.
This is wrong because (flo:- 0. 0.) is 0. but (flo:negate 0.) is -0.
This caused some broken code to be miscompiled and yield the correct
result accidentally!
Taylor R Campbell [Sun, 23 Feb 2014 16:42:02 +0000 (16:42 +0000)]
More hacks to get liarc to build.
Taylor R Campbell [Sun, 23 Feb 2014 16:40:46 +0000 (16:40 +0000)]
Try builtin objects before fasl files in liarc FASLOAD.
Taylor R Campbell [Sun, 23 Feb 2014 16:39:24 +0000 (16:39 +0000)]
Generate code for -0. constants correctly in liarc.
Taylor R Campbell [Sun, 23 Feb 2014 03:43:01 +0000 (03:43 +0000)]
compile-liarc-bundle rules depend on some tools in microcode/.
Taylor R Campbell [Sun, 23 Feb 2014 01:17:57 +0000 (01:17 +0000)]
Fix up fni->bci files in crsend.scm.
Taylor R Campbell [Sat, 22 Feb 2014 22:31:17 +0000 (22:31 +0000)]
Temporary kludge: bake a fresh runtime into the toolchain.
This is practically necessary for now because of the SEQUENCE-2 mess.
It may continue to be necessary in the future until we have proper
cross-compilation tools that can handle macros and fasdump format
changes sanely.
Taylor R Campbell [Sat, 22 Feb 2014 22:30:09 +0000 (22:30 +0000)]
Put back some temporary SEQUENCE-2 scaffolding.
Taylor R Campbell [Sat, 22 Feb 2014 22:29:31 +0000 (22:29 +0000)]
Simplify x86 fenv structures.
Avoid needless typedefs and unions.
Taylor R Campbell [Sat, 22 Feb 2014 22:28:39 +0000 (22:28 +0000)]
On i386, avoid FCOM[P] and FTST in favour of FUCOM[P].
The FCOM[P] and FTST instructions trap even on quiet NaN; the
FUCOM[P] instructions don't.
Taylor R Campbell [Sat, 22 Feb 2014 20:59:52 +0000 (20:59 +0000)]
Avoid using new-style SEQUENCE stuff in LIAR.
Taylor R Campbell [Sat, 22 Feb 2014 19:20:29 +0000 (19:20 +0000)]
Fix default (ISO-8859-1) char image strings.
We previously used `ANSI' char image strings, which really meant
Windows-1252 for some reason. Now we use ISO-8859-1 so things get
displayed correctly in X at least. Some characters may not display
*nicely* on Windows, but they will display *correctly* (with an octal
escape).
Matt Birkholz [Fri, 29 Nov 2013 18:26:29 +0000 (11:26 -0700)]
svm: Fix the disassembler.
Re-wrote it with a "cursor" that wraps up the block and offset and
symbol-table previously passed around and/or fluid-bound to *block,
*current-offset, *symbol-table, etc.
Matt Birkholz [Tue, 26 Nov 2013 17:08:59 +0000 (10:08 -0700)]
svm: Convert program_counter from a static variable to an argument.
This seems to speed the machine up 20%. Before this patch, the
compile-everything phase ("Use the new machine and compiler to
re-compile everything.") took ~67 minutes on a 3.2GHz Core i3-550.
After applying this patch, that phase took ~53 minutes (21% less).
This conversion was incomplete in the original implementation (in
6ae556b). I backed it out in order to get a simpler machine working.
Matt Birkholz [Tue, 26 Nov 2013 17:07:29 +0000 (10:07 -0700)]
ffi: Avoid longjmps in C-CALL primitive (callout_continue).
Rather than abort after every callout (in callout_continue), call the
second trampoline directly, after unsealing the Scheme stack.
Matt Birkholz [Mon, 18 Nov 2013 18:43:29 +0000 (11:43 -0700)]
make.so is supposed to be found in the compiler bundle.
It must have been Chaos that slipped in this bogus fix.
Matt Birkholz [Mon, 18 Nov 2013 18:41:26 +0000 (11:41 -0700)]
src/Makefile.tools.in: Missing dependency made cross-compiler crawl.
Matt Birkholz [Thu, 31 Oct 2013 19:23:20 +0000 (12:23 -0700)]
ffi: Add flovec_* functions and abort_to_c for shims.
Add flovec_length, flovec_loc and flovec_ref. The abort_to_c function
allows the Gtk shim's run_gtk() to stop Scheme and return to the
toolkit.
Matt Birkholz [Thu, 31 Oct 2013 19:05:52 +0000 (12:05 -0700)]
ffi/build.scm.in: Install compile-file:sf-only?ed options.
Copy the .bin if there is no .com. Copy .ext too.
Matt Birkholz [Thu, 31 Oct 2013 19:03:12 +0000 (12:03 -0700)]
doc/ffi: typo
Matt Birkholz [Thu, 31 Oct 2013 19:02:10 +0000 (12:02 -0700)]
mhash: Simplify configure.ac.
Matt Birkholz [Wed, 16 Oct 2013 00:01:35 +0000 (17:01 -0700)]
doc/user-manual (Unix Installation): Added plugin building.
Matt Birkholz [Tue, 15 Oct 2013 18:05:32 +0000 (11:05 -0700)]
src/Makefile.in: Make xml/xml-unx.pkd depend on cref-star-parser.
Matt Birkholz [Tue, 15 Oct 2013 17:55:39 +0000 (10:55 -0700)]
dist/make-src-files: Fix $plugin-config log file names.
Matt Birkholz [Tue, 15 Oct 2013 17:19:42 +0000 (10:19 -0700)]
Revert
13b5bca. Use the host's runtime, not a cross runtime.
Revert
41c0070 and
5cf6bfc too, and the "training" in cref/make.scm
(for the compiler) and runtime.sf (for a cross runtime).
Matt Birkholz [Tue, 15 Oct 2013 16:18:50 +0000 (09:18 -0700)]
dist/make-src-files: Autoconf plugins (FFI wrappers).
Fix a confusing error message too.
Matt Birkholz [Tue, 15 Oct 2013 16:15:54 +0000 (09:15 -0700)]
ffi: Add DESTDIR support.
Matt Birkholz [Sun, 13 Oct 2013 08:03:15 +0000 (01:03 -0700)]
Fix LIAR/svm build to cross from 9.1.1.
As for LIAR/C, do not cross compile host .bins containing sequence-3s.
Chuck them to STAGEX/ and re-syntax with cross runtime. And syntax
compiler/base/crsend AFTER said chucking.
Matt Birkholz [Sun, 13 Oct 2013 07:48:19 +0000 (00:48 -0700)]
Make compile-xml dependent on cref-star-parser.
xml.pkg wants (global-definitions "../star-parser/parser") else
;Warning: Could not find global definitions: ...
Matt Birkholz [Sun, 13 Oct 2013 07:44:16 +0000 (00:44 -0700)]
Fix LIAR/C build to cross from 9.1.1.
Toss the .bins generated by the host runtime (which include
sequence-3). Only cross-compile .bins generated by the cross runtime.
Matt Birkholz [Sun, 13 Oct 2013 02:58:57 +0000 (19:58 -0700)]
More FFI cleanups: no need to include microcode/achost.ac.
Matt Birkholz [Sun, 13 Oct 2013 01:17:44 +0000 (18:17 -0700)]
Fix new build to cross from 9.1.1.
On a 9.1.1 host, the new build dies while compiling the compiler.
; Generating SCode for file: "fggen/canon.scm" => "fggen/canon.bin"...
;MICROCODE-TYPE: Unknown name sequence
The usual remedies did not suffice. In fact now the temporary code in
cref/make.scm is not needed. The compiler is compiled with a cross
runtime that provides the necessary patch via its utabs.scm, where
access to type-aliases and returns-aliases is easy, though
insufficient to train the host. 9.1.1 still needs the training in
runtime.sf.
Unlike a cross compile, a cross runtime was not used by this build(?).
Use a new compile-cross-runtime target and --fasl make.com to make
tools/syntaxer.com. Make syntax-cross-cref and syntax-cross-sf
dependent on syntax-cross-runtime for its runtime.pkd (pinching off a
little parallelism, but allowing them to proceed while the runtime
compiles). Did not try to syntax anything but the new compiler with
the new star-parser.
Matt Birkholz [Wed, 9 Oct 2013 18:59:26 +0000 (11:59 -0700)]
Eliminate compile-system.
Taylor R Campbell [Tue, 8 Oct 2013 02:56:57 +0000 (02:56 +0000)]
Automatically clean tree and build tools if necessary.
Taylor R Campbell [Tue, 8 Oct 2013 02:55:57 +0000 (02:55 +0000)]
Turn some phony rules into explicit file rules to reduce rebuilds. [retry]
Unfinished conversion; some of the explicit file rules still depend
on phony rules. Finishing this is left as an exercise for the
reader.
Taylor R Campbell [Tue, 8 Oct 2013 02:54:21 +0000 (02:54 +0000)]
Revert "Turn some phony rules into explicit file rules to reduce rebuilds."
This reverts commit
54e7f433ab16f65cd12779b7a672edf713c72427.
That commit wasn't supposed to revert an earlier change to SVM1; not
sure how that snuck in there.
Taylor R Campbell [Mon, 7 Oct 2013 22:57:53 +0000 (22:57 +0000)]
Turn some phony rules into explicit file rules to reduce rebuilds.
Unfinished conversion; some of the explicit file rules still depend
on phony rules. Finishing this is left as an exercise for the
reader.
Taylor R Campbell [Mon, 7 Oct 2013 22:35:16 +0000 (22:35 +0000)]
Reduce SVM1 address decoding indirection.
This must have hammered horrendously on the CPU's branch target
predictor. No measurements yet but I'm sure SVM1 should be a lot
faster now.
Taylor R Campbell [Mon, 7 Oct 2013 22:07:19 +0000 (22:07 +0000)]
Tweak svm1-interp a little.
- Mark several routines inline.
- Add branch predictions.
- Fail gracefully, don't abort, on illegal instructions.
Taylor R Campbell [Mon, 7 Oct 2013 21:07:26 +0000 (21:07 +0000)]
Add a few more file types for save/restore targets.
Taylor R Campbell [Mon, 7 Oct 2013 20:54:45 +0000 (20:54 +0000)]
In COMPILE-SYSTEM, load the bin if cross-compiling too.
XXX COMPILE-SYSTEM is completely wrong; it needs to be eliminated in
favour of a principled way to identify macro dependencies, like in
Scheme48 and Racket.
Taylor R Campbell [Mon, 7 Oct 2013 20:52:57 +0000 (20:52 +0000)]
Call it `saved-objects', not `obj', to avoid confusing BSD make.
Taylor R Campbell [Mon, 7 Oct 2013 20:46:08 +0000 (20:46 +0000)]
Don't list compiler twice in SUBDIRS.
Taylor R Campbell [Mon, 7 Oct 2013 20:36:55 +0000 (20:36 +0000)]
Load ffimacro.bin in win32.sf, not ffimacro.
Avoids accidentally loading cross-compiled gobbledegook which the
toolchain barfs on.
Taylor R Campbell [Mon, 7 Oct 2013 19:16:33 +0000 (19:16 +0000)]
Explain what the `cross-target' target does.
Taylor R Campbell [Mon, 7 Oct 2013 18:43:19 +0000 (18:43 +0000)]
toolchain target should really depend on tools/syntaxer.com too.
Taylor R Campbell [Mon, 7 Oct 2013 18:37:10 +0000 (18:37 +0000)]
Remove unfinished kludge to build IMAIL with LIARC.
Taylor R Campbell [Mon, 7 Oct 2013 18:32:32 +0000 (18:32 +0000)]
Recompile edwin/edwin.bld only if necessary.
Taylor R Campbell [Mon, 7 Oct 2013 17:30:55 +0000 (17:30 +0000)]
Recompile *.pkd files for liarc only if necessary.
Taylor R Campbell [Mon, 7 Oct 2013 17:30:11 +0000 (17:30 +0000)]
Fasload errors should fail gracefully, not terminate Scheme.
Taylor R Campbell [Mon, 7 Oct 2013 17:17:47 +0000 (17:17 +0000)]
Lots of changes toward making liarc build use new structure.
Doesn't fully work yet, but it's progress!
Old build system is still all there; you must use `make all-native'
to try the new one.
Taylor R Campbell [Mon, 7 Oct 2013 17:14:23 +0000 (17:14 +0000)]
Use $@ and $< for liarc .c.o rule, not $*.o and $*.c.
Otherwise, it won't work in subdirectories.
Taylor R Campbell [Mon, 7 Oct 2013 14:25:20 +0000 (14:25 +0000)]
Update links created by Setup.sh to reflect installed lib directory.
Taylor R Campbell [Mon, 7 Oct 2013 02:26:29 +0000 (02:26 +0000)]
Compile IMAIL in --batch-mode.
Taylor R Campbell [Sun, 6 Oct 2013 23:07:37 +0000 (23:07 +0000)]
OOPS! Don't forget to build compiler/rtlopt...
Taylor R Campbell [Sun, 6 Oct 2013 22:23:48 +0000 (22:23 +0000)]
Dependents of cross-target must be conditionalized on @IF_CROSS@.
Taylor R Campbell [Sun, 6 Oct 2013 22:22:09 +0000 (22:22 +0000)]
First whack at making new build system work for liarc.
Taylor R Campbell [Sun, 6 Oct 2013 22:21:43 +0000 (22:21 +0000)]
Rename cross-barrier/cross-end to cross-host/cross-target.
Taylor R Campbell [Sun, 6 Oct 2013 22:21:13 +0000 (22:21 +0000)]
Add cast to avoid negative arguments to isalnum.
Taylor R Campbell [Sun, 6 Oct 2013 21:46:08 +0000 (21:46 +0000)]
compile-imail needs cross-end, not just cross-barrier.
Taylor R Campbell [Sun, 6 Oct 2013 21:14:04 +0000 (21:14 +0000)]
Just cast to long; don't check whether %td will work for ptrdiff_t.
Taylor R Campbell [Sun, 6 Oct 2013 18:15:08 +0000 (18:15 +0000)]
Don't reset AS_FLAGS and M4_FLAGS to empty in microcode/configure.
Taylor R Campbell [Sun, 6 Oct 2013 18:14:53 +0000 (18:14 +0000)]
Use a compile-test, not a run-test, for __ELF__.
Taylor R Campbell [Sun, 6 Oct 2013 18:14:28 +0000 (18:14 +0000)]
Use CAREFUL-OBJECT-DATUM in i386 MULTIPLY-OBJECT-BY-2.
Taylor R Campbell [Sun, 6 Oct 2013 18:11:00 +0000 (18:11 +0000)]
Merge branch 'make-cross-tools'
Taylor R Campbell [Sun, 6 Oct 2013 18:10:33 +0000 (18:10 +0000)]
Make the `save' makefile targets fail noisily.
Taylor R Campbell [Sun, 6 Oct 2013 16:17:19 +0000 (16:17 +0000)]
Fix missing close paren in Makefile.in.
Taylor R Campbell [Sun, 6 Oct 2013 16:07:06 +0000 (16:07 +0000)]
Call it the toolchain, not the bootstrap toolchain.
Rename Makefile.boot -> Makefile.tools, boot/ -> tools/.
`Bootstrap toolchain' sounds like something that is useful only to
bootstrap MIT Scheme, when in fact the object of the exercise is to
make it a general-purpose cross-compilation toolchain application
that you can use to cross-compile anything.
Taylor R Campbell [Sat, 5 Oct 2013 21:55:06 +0000 (21:55 +0000)]
Tweak native rules so they work for svm too.
Taylor R Campbell [Sat, 5 Oct 2013 21:54:52 +0000 (21:54 +0000)]
Rename @CROSS@ to @IF_CROSS@.
Taylor R Campbell [Sat, 5 Oct 2013 21:42:03 +0000 (21:42 +0000)]
Load crsend.scm into the right environment.
Taylor R Campbell [Sat, 5 Oct 2013 20:53:11 +0000 (20:53 +0000)]
Remove Makefile.boot on distclean too.
Taylor R Campbell [Sat, 5 Oct 2013 20:33:00 +0000 (20:33 +0000)]
Avoid CBF in win32.sf.
Taylor R Campbell [Sat, 5 Oct 2013 20:28:33 +0000 (20:28 +0000)]
Use CREF/GENERATE-TRIVIAL-CONSTRUCTOR for makefile cref-* rules.
That way cref-foo need not wait for syntax-foo to complete, which
substantially increases parallelism of the build.
Taylor R Campbell [Sat, 5 Oct 2013 19:59:04 +0000 (19:59 +0000)]
Make cross-compilation a configure-time option.
Eventually I would like to get rid of non-cross-compilation, but it's
probably a good idea to keep it for now.
Taylor R Campbell [Sat, 5 Oct 2013 19:03:49 +0000 (19:03 +0000)]
Make every build a cross-build.
Taylor R Campbell [Sat, 5 Oct 2013 19:02:13 +0000 (19:02 +0000)]
Parallelize compiling compiler subdirectories.
All the compiler.cbfs are the same except for the machine directory,
which is available as a symlink.
Taylor R Campbell [Sat, 5 Oct 2013 18:06:59 +0000 (18:06 +0000)]
Separate tools from target in the build.
To build a native Scheme, instead of just running `make', you must
first run
make -f Makefile.boot
to get a bootstrap toolchain in boot/, every time you want to use a
new compiler or cref or sf or star-parser to compile Scheme.
Taylor R Campbell [Mon, 30 Sep 2013 22:56:19 +0000 (22:56 +0000)]
Write files atomically in the microcode makefile.
Use a temporary file and rename it over the permanent one only if the
command succeeded. That way, we don't leave truncated files around
on failure.