Matt Birkholz [Fri, 15 May 2009 15:16:36 +0000 (08:16 -0700)]
Fixed gtk-thread crash. Raised pixbuf-loader interface.
* src/.gitignore:
Added exceptions for src/gtk/Clean.sh and src/gtk/Tags.sh.
* src/gtk/gobject.scm:
Wrap <pixbuf-loader>s' GdkPixbufs with a <pixbuf>, a new type of
<gobject> that will free a GdkPixbuf when it is GCed. Provide hooks
so that users of <pixbuf-loader>s do not have to register low-level C
callbacks. Support "late" hooking by cacheing size and pixbuf and
providing them immediately to latecomers. (The update hook, on the
other hand, might never call.) The close hook is run in the loader's
thread (or the latecomer's) after gdk_pixbuf_loader_close has been
closed, and any error status collected.
* src/gtk/: gobject.scm, gtk-object.scm, scm-layout.scm:
Use "cleanup" instead of "finalize" to avoid confusion with Gtk's
notion of finalization. Assume gc-cleanups are without-interrupts.
Do NOT run gc-cleanups in a gc-daemon; run them in gtk-thread. Added
more tracing; named more lambdas.
* src/gtk/gtk.pkg:
Declare new pixbuf-loader interface. Rename (gtk object) package
"(gtk gtk-object)". Punt gobject-finalize! (same as gobject-unref).
Move (gtk main) to load after (gtk gobject), so the gc-cleanup list is
initialized before gtk-thread is launched.
* src/gtk/main.scm:
Added program "name" parameter to gtk-init, to correctly (re)construct
the command line.
* src/gtk/scm-layout.scm:
Use the new pixbuf-loader hooks instead of low-level gsignals.
"%trace" -> "trace" for consistency.
* src/gtk/thread.scm:
Disable interrupts BEFORE calling out with run-gtk as now required by
the FFI. Run gc-cleanups whenever the gc-timestamp increases. Punt
signal-thread-events, which was trouble when run WITH interrupts.
maybe-signal-io-thread-events after run-gtk should be sufficient.
* src/gtk/thread.scm, src/runtime/thread.scm:
"tracing?" -> "trace?" for consistency.
Matt Birkholz [Fri, 15 May 2009 07:09:40 +0000 (00:09 -0700)]
GNOME Toolkit Interface, as released 2009-03-18.
* doc/Makefile.in:
Include gtk in SUBDIRS.
* doc/configure.ac:
Include gtk/Makefile.
* doc/gtk/Makefile.in:
Build the Users' Manual for the GTK.
* doc/gtk/gtk.texinfo:
The Users' Manual for the GTK.
* doc/index.html:
Include mit-scheme-gtk/index.html.
* src/Clean.sh:
Clean up new symlinks config.sub and config.guess, used by
AZ_CANONICAL_HOST in configure.ac.
* src/Makefile.in:
Added new file category "FFIS". Include gtk in FFIS.
`make generate' in FFIS before compiling their Scheme source, so
they can C-include later -- much later.
`make build' in FFIS after dumping the new bands, so the FFIS are
compiled with the shims installed in lib/lib/. The new bands are
not strictly necessary, but they complete lib/lib/, so the
commandline in FFI Makefiles can be this simple:
`../microcode/scheme --library ../lib'.
Added similar commands to the all-liarc target, though I have yet
to build a lairc-based system.
Install conses.png in lib/ for the scm-layout-demo.
* src/README.txt:
Describe gtk as part of the core.
* src/Setup.sh:
Include gtk in INSTALLED_SUBDIRS. Include rcs in OTHER_SUBDIRS,
so `make tags' does not fail.
Symlink to microcode/config.sub and config.guess, so configure.ac
can share with microcode/configure.ac. Create lib/lib/prgtkio.so
and lib/gtk symlinks too.
* src/configure.ac:
Include AC_CANONICAL_HOST and related C compilation variables,
esp. SHIM_CFLAGS and SHIM_LDFLAGS, shared with
microcode/configure.ac via microcode/achost.ac. Echo the
create-makefiles.sh commandline. Generate gtk/Makefile. Added
gtk to liarc BUNDLEs.
* src/etc/create-makefiles.sh:
Include gtk in BUNDLES.
* src/etc/optiondb.scm:
Define loadable option GTK.
* src/etc/std-makefile-prefix:
Added C compilation variables, esp. COMPILE_SHIM and LINK_SHIM.
* src/gtk/Clean.sh:
Clean up after building the shim.
* src/gtk/Includes/: cairo-xlib.cdecl, cairo.cdecl,
gdk-pixbuf-core.cdecl, gdk-pixbuf-loader.cdecl,
gdk-pixbuf.cdecl, gdk.cdecl, gdkcolor.cdecl, gdkcursor.cdecl,
gdkdrawable.cdecl, gdkevents.cdecl, gdkfont.cdecl, gdkgc.cdecl,
gdkkeys.cdecl, gdkkeysyms.cdecl, gdkrgb.cdecl, gdktypes.cdecl,
gdkwindow.cdecl, genums.cdecl, gerror.cdecl, glib.cdecl,
gobject.cdecl, gparam.cdecl, gparamspecs.cdecl, gquark.cdecl,
gsignal.cdecl, gtk.cdecl, gtkadjustment.cdecl, gtkbox.cdecl,
gtkenums.cdecl, gtkobject.cdecl, gtkstyle.cdecl,
gtktypeutils.cdecl, gtkvbox.cdecl, gtkwidget.cdecl, gtype.cdecl,
gtypes.cdecl, gvalue.cdecl, gvaluetypes.cdecl,
pango-context.cdecl, pango-font.cdecl, pango-layout.cdecl,
pango-types.cdecl, pango.cdecl, pangocairo.cdecl:
C declarations corresponding to SOME of
/usr/include/g{lib,tk}-2.0/**/*.h.
* src/gtk/Makefile-fragment:
Generate the gtk shim, and build Scheme code that uses it. Keep
the ScmWidget methods in a .c.stay file so it does not get cleaned
up by `Clean.sh maintainer-clean' nor `Clean.sh c-clean'. Create
conses.png from conses.png.uu because I cannot distribute a binary
in a patchfile.
* src/gtk/Tags.sh:
Include auxiliary ScmWidget code, and NOT gtk-const.scm.
* src/gtk/compile.scm:
Build the GTK system. Expects the shim to be available in ../lib.
* src/gtk/conses.png.uu:
Because I cannot distribute a binary in a patchfile.
* src/gtk/: demo.scm, gtk-ev.scm, hello.scm, pango-cairo.scm:
Peripheral hacks.
* src/gtk/: gobject.scm, gtk-object.scm, gtk.pkg, gtk.scm, load.scm,
main.scm, scm-layout.scm, scm-widget.scm:
The core of the GTK system.
* src/gtk/gtk.cdecl:
The C types and externs needed in the GTK shim.
* src/gtk/gtk-shim.h:
C declarations for gtk-shim.c, gtk-const.c and scmwidget.c. Includes
the ScmWidget and ScmWidgetClass struct declarations.
* src/gtk/scmwidget.c.stay:
ScmWidget methods. The ".stay" suffix keeps this code from being
"cleaned up" by `Clean.sh maintainer-clean' or `Clean.sh c-clean'.
* src/gtk/thread.scm:
The Scheme thread that "runs" the toolkit.
* src/microcode/configure.ac, src/microcode/achost.ac:
Moved the AC_CANONICAL_HOST code from microcode/configure.ac to
microcode/achost.ac, so it can be shared with configure.ac.
Implement a --with-gtk argument.
* src/microcode/makegen/: Makefile.in.in, files-optional.scm:
Added new module prgtkio.so.
* src/microcode/makegen/makeinit.sh:
Use --batch-mode and `mit-scheme' instead of `scheme'.
* src/microcode/osio.h, microcode/prosio.c:
Changed the declarations of OS_select_registry_entry and
arg_select_registry so they can be used in the new prgtkio module.
* src/microcode/prgtkio.c:
The prgtkio module. New primitives that arrange to run Scheme in an
idle task of a GMainLoop.
* src/microcode/utabmd.sh:
Use --batch-mode and `mit-scheme'. Echo the commandline.
* src/microcode/uxio.c:
Added an OS_select_registry_entry function that extracts a file
descriptor and a mode from an indexed registry entry, for prgtkio.
* src/runtime/Makefile-fragment:
Install runtime-*.pkd so lusers can cref imports.
* src/runtime/thread.scm:
Added some tracing, conditioned on a tracing? binding.
Taylor R Campbell [Wed, 7 Jul 2010 19:34:05 +0000 (19:34 +0000)]
Add O(1) ADD-TO-POPULATION!/UNSAFE to the runtime (unexported).
This does not check whether the population already holds the object
to be added; hence it is unsafe.
Change MAKE-1D-TABLE and MAKE-THREAD to use it: newly allocated
objects are guaranteed not to be in the population.
Taylor R Campbell [Wed, 7 Jul 2010 18:50:37 +0000 (18:50 +0000)]
Fix bug in INTEGER->FLONUM primitive on 64-bit systems.
Not all fixnums can be converted losslessly into flonums.
Taylor R Campbell [Sun, 27 Jun 2010 22:18:10 +0000 (22:18 +0000)]
Work around a buggy IMAP server that returns bogus UNSEEN counts.
Chris Hanson [Sun, 27 Jun 2010 08:33:25 +0000 (01:33 -0700)]
Clean up top level controller. Don't use Scheme packages as a
substitute for Lisp packages; instead use environments. Implement
support for slime-repl. Fix broken implementation of apropos. Hide
restarts and stack frames that aren't relevant to the Emacs user.
Chris Hanson [Sun, 27 Jun 2010 05:22:58 +0000 (22:22 -0700)]
Add INDEX matcher since that's so common.
Chris Hanson [Sat, 26 Jun 2010 09:14:24 +0000 (02:14 -0700)]
Fix broken implementation of completion.
Chris Hanson [Sat, 26 Jun 2010 08:50:16 +0000 (01:50 -0700)]
Add suggested elisp code for using this.
Chris Hanson [Sat, 26 Jun 2010 08:41:39 +0000 (01:41 -0700)]
Gobble up swank support and integrate it.
Chris Hanson [Tue, 15 Jun 2010 10:54:16 +0000 (03:54 -0700)]
Merge branch 'master' of git.sv.gnu.org:/srv/git/mit-scheme
Chris Hanson [Mon, 14 Jun 2010 04:05:08 +0000 (21:05 -0700)]
Add some more named patterns.
Chris Hanson [Mon, 14 Jun 2010 03:52:52 +0000 (20:52 -0700)]
Fix bug: logic for ->URI wasn't handling no-error case right.
Matt Birkholz [Sun, 13 Jun 2010 00:50:08 +0000 (17:50 -0700)]
Finished the disassembler. Debugging the machine (too).
* src/Makefile.in: Make sure the assembler-compiler ran, generating
compiler/machines/svm/svm1-defns.h, assembler-db.scm, etc.
* src/Stage.sh: Punt avoiding subdirs with nothing to stage. A few
empty STAGE subdirs should not hurt, and maybe_mv is quiet.
* src/compiler/Clean.sh (distclean, maintainer-clean): Use maybe_rm
and clean up assembler compilation products.
* src/compiler/Stage.sh, src/etc/Stage.sh: Use maybe_mv to avoid
errors when the subdir has not been compiled, so that an incomplete
compile can be stashed and unstashed without horror.
* src/compiler/machines/svm/assembler-compiler.scm
(write-copyright+license): Resurrected with the 9.0.1 runtime system's
procedures. Used to generate the standard copyright though the GNU
standards suggest assembler-db's copyright should be copied.
(rt-defn-encoder-constructor): Include the opcode byte.
* src/compiler/machines/svm/assembler-rules.scm (interrupt-test-closure):
Folded into the enter-closure instruction, which knows the index.
* src/compiler/machines/svm/assembler-runtime.scm
(init-assembler-instructions!): Build fixed instruction assemblers in
smallest-to-largest order, else the largest encoding is always chosen.
(assemble-fixed-instruction): Punt consing a new bit-string.
(pc-relative-stats, pc-relative-selector): New. The former computes
static info about a class of variable-width instructions so that the
latter need only cons a handler. Use these in the variable-width
instruction encoders.
(fix-offset): Fix the width of a pc-relative offset, to force a wider
encoding than required by the actual magnitude. Use this procedure in
the primitive encoders. The bit tensioner cannot always find an
optimal solution, where no instruction is wider than its operands
require. Warn when this happens.
(decode-rt-coding-type): Return a list headed by the rt-defn name,
else signal a coding-error.
(coding-error): Signals a condition that the disassembler wants to
catch.
(define-pvt-signed, encode-signed-*, write-bytes): Accept bit-strings
as well as integers. See fix-offset.
(encode-unsigned-integer-8): Fixed.
(decode-rref): Give symbolic names to the fixed registers.
* src/compiler/machines/svm/compiler.pkg: Moved the (compiler
disassembler) package to inherit from (compiler assembler). The
disassembler uses many definitions in assembler-runtime.scm.
* src/compiler/machines/svm/compiler.sf: Syntax make.scm. It is not
mentioned in compiler.pkg, from which syntax-files!(decls.scm) gets
its list of files to syntax.
* src/compiler/machines/svm/decls.scm: Moved lapgen.scm from
lapgen-base to lapgen-body because it depends on assembler-runtime.
* src/compiler/machines/svm/disassembler.scm: New.
* src/compiler/machines/svm/lapgen.scm: Get the entry-types right with
those used in svm1-interp.c.
(encode-procedure-type): Take the frame size min/max per the RTL,
and convert them to required/optional arg counts. Use this in
generate/cons-*closure as well as make-procedure-label.
(encode-internal-procedure-offset): Punted. This encoding is also
generated by encode-continuation-offset.
* src/compiler/machines/svm/machine.scm (ea:uuo-entry-address): New,
encoding a peculiar type of pc-relative address.
(trap:set!, trap:define, trap:unbound?, trap:access): Not defined in
svm1-interp.c.
(interrupt-test-closure): Folded into the enter-closure instruction.
(closure-entry-size, entry-type-size, closure-first-offset): Added an
cc-entry type field to each closure entry.
* src/compiler/machines/svm/rules.scm (POP-RETURN): Added entry-type
and gc-offset half words before inst:interrupt-test-continuation, so
that this instruction can push its address on the stack.
(INVOCATION:UUO-LINK, INVOCATION:GLOBAL-LINK): Use the new
ea:uuo-entry-address.
(PROCEDURE-HEADER): Pass min/max directly to make-procedure-label
(generate/cons-closure, generate/cons-multiclosure): Added a cc-entry
type field before each entry point. Do NOT tag the target register.
No need to interrupt-test-closure after entering.
(generate-uuos): This is not actually generating LAP.
(interpreter-call:cache-reference, interpreter-call:cache-assignment):
(interpreter-call:cache-unassigned?): Need an entry point after the
trap instructions.
(Interpreter Calls, lookup-call, assignment-call): Removed. I could
not find the corresponding compiler utilities: comutil_access,
comutil_define, comutil_set, comutil_unbound_p_trap. The utilities I
DID find want a cache address. Removing these rules left lookup-call
and assignment-call unused.
* src/etc/compile-svm.sh: Use src/Stage.sh to un/stash the
cross-compiler.
* src/microcode/cmpint.c, src/microcode/cmpint.h: Move
trampoline_type_t to cmpint.h, where svm1-interp.c can include it.
* src/microcode/cmpintmd/svm1.c: Use new closure entry point type
field in read_cc_entry_type.
(store_trampoline_insns): Translate from abstract trampoline kinds to
trap-0 operations, e.g. TRAMPOLINE_K_APPLY to
SVM1_TRAP_0_OPERATOR_APPLY.
* src/microcode/cmpintmd/svm1.h:
* src/microcode/svm1-defns.h:
* src/microcode/svm1-interp.c:
Chris Hanson [Tue, 8 Jun 2010 19:08:13 +0000 (12:08 -0700)]
Merge branch 'master' of git.sv.gnu.org:/srv/git/mit-scheme
Chris Hanson [Tue, 8 Jun 2010 19:08:03 +0000 (12:08 -0700)]
Implement ENCODE-URI-PATH-SEGMENT.
Taylor R Campbell [Sun, 6 Jun 2010 15:04:38 +0000 (15:04 +0000)]
Fix fencepost in ASCII-RANGE->CHAR-SET.
Matt Birkholz [Sat, 5 Jun 2010 16:01:04 +0000 (09:01 -0700)]
Alien address offsets are byte offsets.
Matt Birkholz [Sat, 5 Jun 2010 04:19:01 +0000 (21:19 -0700)]
Restored more copyright dates.
Chris Hanson [Wed, 2 Jun 2010 09:10:25 +0000 (02:10 -0700)]
Use properties in RUN-SUB-TEST where appropriate. Change tests to run
properly now that argument SVLs may contain null ranges.
Chris Hanson [Wed, 2 Jun 2010 09:08:06 +0000 (02:08 -0700)]
Change RUN-SUB-TEST to allow it to take properties.
Chris Hanson [Wed, 2 Jun 2010 08:44:09 +0000 (01:44 -0700)]
Fix thinko in previous change.
Chris Hanson [Wed, 2 Jun 2010 08:39:21 +0000 (01:39 -0700)]
Change MAKE-RANDOM-SVL to generate empty ranges.
Chris Hanson [Wed, 2 Jun 2010 08:39:02 +0000 (01:39 -0700)]
Change MAKE-RANDOM-SVL to generate empty ranges.
Chris Hanson [Wed, 2 Jun 2010 08:38:16 +0000 (01:38 -0700)]
Change MAPPER->GENERATOR to generate empty ranges.
Chris Hanson [Wed, 2 Jun 2010 08:36:42 +0000 (01:36 -0700)]
Change %CANONICALIZE-SCALAR-VALUE-LIST to eliminate empty ranges.
Chris Hanson [Wed, 2 Jun 2010 08:34:20 +0000 (01:34 -0700)]
Don't restrict character sets to Unicode characters.
Chris Hanson [Wed, 2 Jun 2010 08:30:43 +0000 (01:30 -0700)]
More simplification and restyling.
Chris Hanson [Wed, 2 Jun 2010 08:06:10 +0000 (01:06 -0700)]
Fix compilation errors. Simplify part of the code by a suitable
macro. Do a little style tweaking.
Chris Hanson [Wed, 2 Jun 2010 08:04:30 +0000 (01:04 -0700)]
Fix broken reference: "load.scm" -> "make.scm".
Chris Hanson [Wed, 2 Jun 2010 08:03:50 +0000 (01:03 -0700)]
Add name for CALLBACK_HANDLER slot.
Chris Hanson [Wed, 2 Jun 2010 07:58:57 +0000 (00:58 -0700)]
Eliminate trailing whitespace.
Chris Hanson [Wed, 2 Jun 2010 07:58:08 +0000 (00:58 -0700)]
Restore copyright dates.
Chris Hanson [Wed, 2 Jun 2010 06:53:33 +0000 (23:53 -0700)]
Merge branch 'master' of git.sv.gnu.org:/srv/git/mit-scheme
Chris Hanson [Tue, 1 Jun 2010 05:31:29 +0000 (22:31 -0700)]
Put back alphabet compatibility, in a different form.
Matt Birkholz [Mon, 31 May 2010 20:39:18 +0000 (13:39 -0700)]
A fairly straightforward merge of the FFI.
* src/etc/Clean.sh (maintainer-clean): Clean up src/*/TAGS.
* src/ffi/Clean.sh (maintainer-clean): Clean up prhello-const*.
* src/ffi/ffi.cbf, src/ffi/ffi.sf: Separate syntaxing and compiling.
Temporarily hacked to load the (runtime ffi) package when necessary.
Replaces compile.scm.
* src/ffi/make.scm: Replaces load.scm.
* src/ffi/compile.scm, src/ffi/load.scm: Replaced by ffi.sf, ffi.cbf
and make.scm.
Chris Hanson [Mon, 31 May 2010 10:04:43 +0000 (03:04 -0700)]
Implement SCALAR-VALUE-IN-CHAR-SET?.
Chris Hanson [Mon, 31 May 2010 09:54:18 +0000 (02:54 -0700)]
Eliminate PREDICATE->CHAR-SET, and tweak documentation.
Chris Hanson [Mon, 31 May 2010 09:41:21 +0000 (02:41 -0700)]
Eliminate all trace of the alphabet abstraction.
Chris Hanson [Mon, 31 May 2010 08:32:12 +0000 (01:32 -0700)]
Fix swapped conditional arms in RE-COMPILE-CHAR-SET; then split off
part of it as RE-CHAR-PATTERN->SCALAR-VALUES.
Chris Hanson [Mon, 31 May 2010 00:37:45 +0000 (17:37 -0700)]
Move Unicode char predicates to "char.scm".
Chris Hanson [Mon, 31 May 2010 00:37:11 +0000 (17:37 -0700)]
Improve test reporting for errors. Add boolean equality assertions.
Chris Hanson [Mon, 31 May 2010 00:36:11 +0000 (17:36 -0700)]
Don't restrict CHAR-SET-MEMBERS; it gets used on the inversion of
8-bit char sets, which aren't 8-bit.
Chris Hanson [Sun, 30 May 2010 23:43:57 +0000 (16:43 -0700)]
Fix thinko.
Chris Hanson [Sun, 30 May 2010 23:43:40 +0000 (16:43 -0700)]
Fix typo.
Chris Hanson [Sun, 30 May 2010 23:26:47 +0000 (16:26 -0700)]
Fix fencepost error.
Chris Hanson [Sun, 30 May 2010 23:26:32 +0000 (16:26 -0700)]
Add membership test.
Chris Hanson [Sun, 30 May 2010 11:10:30 +0000 (04:10 -0700)]
Fix broken reference.
Chris Hanson [Sun, 30 May 2010 11:09:06 +0000 (04:09 -0700)]
Update to use new test framework.
Chris Hanson [Sun, 30 May 2010 11:04:34 +0000 (04:04 -0700)]
Refactor test infrastructure to use conditions and to have more flexible reporting.
Chris Hanson [Sun, 30 May 2010 11:03:39 +0000 (04:03 -0700)]
Rewrite, this time to use "signal processing" mode for high segments.
Also, don't use combinators at top level; instead use combinations
called at run time.
Chris Hanson [Mon, 24 May 2010 08:42:26 +0000 (01:42 -0700)]
When re-loading unit-testing, unlink the previous copy so it will be
garbage collected.
Chris Hanson [Mon, 24 May 2010 08:40:04 +0000 (01:40 -0700)]
Restructure test to use new multiple-result mechanism.
Chris Hanson [Mon, 24 May 2010 08:39:28 +0000 (01:39 -0700)]
Allow each sub-test to return multiple test results.
Chris Hanson [Mon, 24 May 2010 05:12:54 +0000 (22:12 -0700)]
Use new ASSERT-ERROR.
Chris Hanson [Mon, 24 May 2010 05:11:40 +0000 (22:11 -0700)]
Fix some bugs discovered by unit testing.
Chris Hanson [Mon, 24 May 2010 05:11:11 +0000 (22:11 -0700)]
Add LOAD-WITH-BOOT-INITS! for testing.
Chris Hanson [Mon, 24 May 2010 05:09:30 +0000 (22:09 -0700)]
Get unit tests working.
Chris Hanson [Mon, 24 May 2010 05:09:08 +0000 (22:09 -0700)]
Add ASSERT-ERROR. Small reorganization to improve readability.
Taylor R Campbell [Mon, 24 May 2010 01:02:35 +0000 (01:02 +0000)]
Fix parsing of multiline comments from ports without line numbers.
Taylor R Campbell [Sun, 23 May 2010 20:23:19 +0000 (20:23 +0000)]
Fix parsing of comments.
Comment handlers should return CONTINUE-PARSING, not UNSPECIFIC.
Chris Hanson [Sun, 23 May 2010 12:11:02 +0000 (05:11 -0700)]
Implement alphabet as char-set.
Chris Hanson [Sun, 23 May 2010 11:50:46 +0000 (04:50 -0700)]
Change char-set abstraction to handle unicode.
Chris Hanson [Sun, 23 May 2010 11:50:00 +0000 (04:50 -0700)]
Implement VECTOR-HEAD!.
Chris Hanson [Sun, 23 May 2010 11:49:42 +0000 (04:49 -0700)]
Rename DEFAULT_STAGE0 to STAGE0.
Taylor R Campbell [Mon, 10 May 2010 22:29:07 +0000 (22:29 +0000)]
Fix x86-64 lapgen rules for simple float offsets.
This should fix flonum vector references in cases where type and
range checks are disabled.
Taylor R Campbell [Sun, 25 Apr 2010 15:27:32 +0000 (11:27 -0400)]
Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/mit-scheme
Taylor R Campbell [Sun, 25 Apr 2010 15:24:54 +0000 (11:24 -0400)]
Make the m4 test in microcode/configure.ac less strict.
Some luser might run `./configure M4=/usr/frobblethorpe/bin/m4'.
This requires makegen/m4.sh to accept the m4 program as an argument.
(Don't try to pass any extra arguments to the m4 program that way...)
Chris Hanson [Sun, 25 Apr 2010 04:34:55 +0000 (21:34 -0700)]
Merge branch 'master' of git.sv.gnu.org:/srv/git/mit-scheme
Chris Hanson [Sun, 25 Apr 2010 04:34:25 +0000 (21:34 -0700)]
Fix bug: when merging register maps, if a pseudo register was saved
into its home on some of the maps, and not saved on the other maps,
then the resulting map would show that it was saved. Instead, it
should show that it is NOT saved. That's less optimal but correct.
Chris Hanson [Sun, 25 Apr 2010 04:31:36 +0000 (21:31 -0700)]
Handle case where INPUT-LINE port operation isn't available; was
breaking use of comments in Edwin evaluation.
Taylor R Campbell [Sat, 24 Apr 2010 19:18:24 +0000 (15:18 -0400)]
In dist/make-native-files, don't rmdir src/lib/lib.
src/lib/lib is a symbolic link to ../microcode, created by
src/Setup.sh.
Taylor R Campbell [Sat, 17 Apr 2010 06:10:44 +0000 (02:10 -0400)]
Under Linux/ELF on i386 and x86-64, mark the stack nonexecutable.
This is apparently what a `.note.GNU-stack' section does.
Taylor R Campbell [Sat, 17 Apr 2010 05:33:28 +0000 (01:33 -0400)]
Use AC_MSG_ERROR rather than AC_ERROR.
Taylor R Campbell [Sat, 17 Apr 2010 05:32:21 +0000 (01:32 -0400)]
Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/mit-scheme
Taylor R Campbell [Sat, 17 Apr 2010 05:28:16 +0000 (01:28 -0400)]
Make makegen/m4.sh report m4 failure by returning 1.
Previously, the return code of m4 was totally ignored, because it was
invoked only in a pipeline not at the end. Because of brain damage
in shell script, we have to use a temporary file to let the subshell
in which we run m4 report the failure to the script so that the
script can know to return 1.
Taylor R Campbell [Sat, 17 Apr 2010 05:25:45 +0000 (01:25 -0400)]
If native code is enabled, check for m4 in microcode/configure.
Matt Birkholz [Sat, 10 Apr 2010 23:20:27 +0000 (16:20 -0700)]
Got the svm1 back end to assemble... something.
No disassembler yet. Added lapgen rules until it compiled the whole
system.
* src/Makefile.in (microcode/svm1-defns.h): Detect changes to machine
definition and re-compile it, BEFORE compile-microcode.
(subdir-list): New. Cough up SUBDIRS.
* src/Stage.sh: New. Uses `make subdir-list' to get SUBDIRS from the
Makefile, allowing this script to be invoked with arguments, via
shell command line, not make.
* src/compiler/Clean.sh: Added make.bin to the remove list.
* src/compiler/Stage.sh, src/etc/Stage.sh (make-cross): This new Stage
command stashes compilation AND cross-compilation products.
* src/compiler/machines/svm/assembler-compiler.scm: Added rule-matcher
anti-syntax, so that assembler-runtime.scm can be loaded.
* src/compiler/machines/svm/assembler-rules.scm: Changed the offset
addressing mode to take signed 8 and 16 bit offsets.
* src/compiler/machines/svm/assembler-runtime.scm: Added variable-width
instruction encoders to the fixed-width encoders of the machine
description.
Punted symbolic-expressions. All such are now passed up to the assembler
top-level.
(match-pattern): Get the list of values leftmost-first.
(register-reference?): Punt these redundant definitions. Register
references are now part of machine.scm.
(any-register?, word-register?, float-register?): Not used.
(word-register-reference?, float-register-reference?): Use the register
reference munging procedures.
(encode-rref): The machine expects float register numbers to start with 0.
* src/compiler/machines/svm/compile-assembler.scm: Load assembler-compiler
before assembler-runtime.
* src/compiler/machines/svm/compiler.pkg: Import instructions;
add-instruction! is not sufficient for this assembler. And the register
reference procedures are now in scope via the (compiler) package.
* src/compiler/machines/svm/lapgen.scm: Punt environment register. Move
register reference procedures to machine.scm.
Fixed applications of inst:copy.
Use BLOCK-OFFSET directives in external labels.
Move evaluation of parse-memory-address rule bodies into lapgen rule
bodies, where procedures like word-source can gen. LAP.
* src/compiler/machines/svm/machine.scm: Added a new fixed register -- the
interpreter-register-block -- for easy access to the interpreter's
interrupt-mask, lexpr-actuals, etc. Punted the environment register, now
accessible via interpreter-register-block.
(define-generic-unary-operations, define-generic-binary-operations):
Punted. These instructions do not need type parameters. Added them to the
corresponding define-bi/unary-operations lists.
(load-immediate-operand?): Typo.
(ea:environment, ea:lexpr-actuals): New, using the new interpreter-
register-block register.
Fixed the other ea: procedures to use register references, not numbers.
(define-traps): Allow the C-friendly synonyms to be specified. Provide the
necessary synonyms for +, -, *, /, 1+, -1+, =, < and >. Punt non-existent
traps: the lookup-apply, conditionally-serialize and *-trap traps. The
reference-trap trap is actually the lookup trap. The unassigned?-trap trap
is actually the unassigned? trap. Etc.
(register-reference, register-reference?, etc.): Create the fixed registers
and register references from one list. Provide the register reference
procedures here, for the (compiler assembler) and (compiler lap-syntaxer)
packages, AND assembler-compiler.
* src/compiler/machines/svm/make.scm: Initialize the assembler instructions.
* src/compiler/machines/svm/rules.scm: Get the right type of target/source
for inst:load/store.
Fixed applications of inst:copy, inst:increment.
Expect a thunk from parse-memory-address.
There is no single-arg predicate LT, but there is an SLT.
(OVERFLOW-TEST): Without a register argument (or implicit condition
register) fixnum methods must test for overflow.
Added a few rules to recognize float constants being loaded into registers,
used as the second arg. in flonum-pred-2-args instructions, or as an
argument to flonum-1/2-arg instructions.
Get the correct type of register for flonum instructions.
(INVOCATION:CACHE-REFERENCE): Punt fixed registers. Use the extension
register if possible, and temporaries for the rest.
(INVOCATION:LOOKUP): No such utility, and the lookup-apply trap is no more.
(INVOCATION:PRIMITIVE): trap:primitive-lexpr-apply takes just one arg.
Store the arg count in the interpreter's lexpr-actuals register.
(move-frame-up): Compare registers (numbers), not references. The arg is a
reference.
inst:load-pointer does not take an address, just a register.
(generate/closure-header): Don't skip the external/internal equate when
nentries is zero.
(generate/quotation-header, generate/remote-link): Rename registers to
indicate usage.
(generate/remote-links): Keep the interpreter's environment in a temporary
register.
Typos.
Punted several rewrite rules that replace registers with their known
values. This is useless here, where instructions like + and load-pointer
only take register operands.
* src/etc/compile-svm.sh: Re-written to do a proper cross-compilation, with
host-compiled cross-compiler. Swaps host and cross compiler products
in/out of stages X and 0, respectively. Thus a rebuild does not have to
recompile much, not even the previously cross-compiled files.
* src/etc/create-makefiles.sh, src/microcode/makegen/makeinit.sh: Use
--batch-mode.
* src/etc/functions.sh (run_cmd_in_dir): Echo dir name as well as command
line.
(maybe_mv): New. Punts moving e.g. *.moc if there are none.
* src/microcode/svm1-defns.h: New machine definition. See changes to
assembler-rules.scm and machine.scm.
* src/microcode/svm1-interp.c (initialize_svm1): Initialize new fixed
register interpreter-register-block. Fix initialization of the float
registers.
Added new offset address decoders.
Joe Marshall [Thu, 1 Apr 2010 00:36:51 +0000 (17:36 -0700)]
Change keyword implementation to be based on symbols rather than structs.
Joe Marshall [Wed, 31 Mar 2010 05:20:39 +0000 (22:20 -0700)]
Collapse chains of CAR/CDR.
Joe Marshall [Tue, 30 Mar 2010 23:32:49 +0000 (16:32 -0700)]
Add ENCODE- and DECODE-GENERAL-CAR-CDR.
Joe Marshall [Tue, 30 Mar 2010 22:26:28 +0000 (15:26 -0700)]
Export new fixnum ops and guarantees.
Joe Marshall [Tue, 30 Mar 2010 22:25:46 +0000 (15:25 -0700)]
POSITIVE-FIXNUM? and NEGATIVE-FIXNUM? and appropriate guarantees.
Joe Marshall [Tue, 30 Mar 2010 00:46:50 +0000 (17:46 -0700)]
Declare r-rename and r-compare as IGNORABLE.
Joe Marshall [Mon, 29 Mar 2010 18:16:32 +0000 (11:16 -0700)]
Handle edge case of : as a symbol.
Joe Marshall [Mon, 29 Mar 2010 17:14:45 +0000 (10:14 -0700)]
Make STRING-LENGTH a foldable operator.
Joe Marshall [Sun, 28 Mar 2010 22:40:46 +0000 (15:40 -0700)]
Can't fold non-primitives.
Joe Marshall [Sun, 28 Mar 2010 22:07:46 +0000 (15:07 -0700)]
Make SYMBOL? and SYMBOL->STRING foldable operators.
Joe Marshall [Sun, 28 Mar 2010 22:06:46 +0000 (15:06 -0700)]
Export symbol->keyword.
Joe Marshall [Sun, 28 Mar 2010 22:05:10 +0000 (15:05 -0700)]
Add symbol->keyword.
Joe Marshall [Sun, 28 Mar 2010 20:50:36 +0000 (13:50 -0700)]
Add keyword-style:none to attributes.
Joe Marshall [Sun, 28 Mar 2010 20:48:12 +0000 (13:48 -0700)]
Allow keyword-style attribute to be none or false. Fix typo.
Joe Marshall [Sun, 28 Mar 2010 20:26:01 +0000 (13:26 -0700)]
Typo.
Joe Marshall [Sun, 28 Mar 2010 19:40:34 +0000 (12:40 -0700)]
Enable parsing of file attributes line.
Joe Marshall [Sun, 28 Mar 2010 19:39:08 +0000 (12:39 -0700)]
Support for parsing the file attributes line.
Joe Marshall [Sat, 27 Mar 2010 21:46:20 +0000 (14:46 -0700)]
Add simple restart to sf/internal.
Joe Marshall [Sat, 27 Mar 2010 19:54:36 +0000 (12:54 -0700)]
Checkpoint. Parser ready to deal with file attributs line.
Joe Marshall [Fri, 26 Mar 2010 23:02:42 +0000 (16:02 -0700)]
Export new control variables.
Joe Marshall [Fri, 26 Mar 2010 22:59:52 +0000 (15:59 -0700)]
Initialize new control variables.
Joe Marshall [Fri, 26 Mar 2010 22:54:24 +0000 (15:54 -0700)]
Add new parser control variables.