1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-14 17:50:22 +02:00
Commit graph

14736 commits

Author SHA1 Message Date
Andy Wingo
e610dc3851 merge guile-vm to guile
An attempt to pull in the original history from guile-vm into guile itself.
2008-08-02 11:40:32 +02:00
Neil Jerram
091baf9edf Single stepping through code from Emacs
When you use GDS to evaluate Scheme code from Emacs, you can now use
`C-u' to indicate that you want to single step through that code. See
`Evaluating Scheme Code' in the manual for more details.

	* scheme-using.texi (Evaluating Scheme Code): Document use of
        `C-u' prefix with evaluation commands.

        * gds-scheme.el (gds-eval-region, gds-eval-expression)
        (gds-eval-defun, gds-eval-last-sexp): Support `C-u' prefix,
        meaning that user wants to single step through the code.

        * gds-client.scm (handle-nondebug-protocol): Add support for
        setting a trap on code that is about to be evaluated.
2008-07-17 23:05:57 +01:00
Neil Jerram
0d751d4720 ChangeLog for "Improve stack direction test" 2008-07-17 22:27:34 +01:00
Neil Jerram
2b3df509f6 ChangeLog for "Improved MIPS/Linux gc_os_dep.c definitions" 2008-07-17 22:26:41 +01:00
Ludovic Courtès
450be18dff Handle lack of struct dirent64' and readdir64_r ()' on HP-UX 11.11. 2008-07-17 00:20:31 +02:00
Neil Jerram
4696a66693 Improve stack direction test
* configure.in: Update stack direction test to be like that in
	Autoconf _AC_LIBOBJ_ALLOCA and Gnulib; specifically in involving a
	function calling itself.
2008-07-12 19:33:29 +01:00
Neil Jerram
c0a658c4db Improved MIPS/Linux gc_os_dep.c definitions
From Thiemo Seufer <ths@networkno.de>:

	* gc_os_dep.c (CPP_WORDSZ, ALIGN_DOUBLE, DATAEND,
	DYNAMIC_LOADING): Added #defines.
	(_fdata, _end): Added declarations.
	(DATASTART): Use _fdata instead of __data_start.
	(STACKBOTTOM): Changed from 0x80000000 to 0x7fff8000.
2008-07-12 19:33:21 +01:00
Ludovic Courtès
8722d99a45 Use `-q' when running standalone tests. 2008-07-06 23:58:38 +02:00
Ludovic Courtès
61c8bf343c Update `INSTALL'. 2008-07-06 19:55:18 +02:00
Ludovic Courtès
4bdc8fb5ac Update to Autoconf 2.61. 2008-07-06 19:53:49 +02:00
Ludovic Courtès
3d8c00e725 Update Gnulib files. 2008-07-05 20:24:51 +02:00
Ludovic Courtès
071bb6a840 Add `scm_c_symbol_length ()'. 2008-07-05 20:16:12 +02:00
Ludovic Courtès
b6137ed741 Don't declare scm_i_locale_mutex' as SCM_INTERNAL'. 2008-07-04 22:22:06 +02:00
Ludovic Courtès
a572acb2c2 Update `THANKS'. 2008-07-04 22:03:08 +02:00
Ludovic Courtès
3e28462ffb Fix `SCM_INTERNAL' with GCC 4.3. 2008-07-04 22:02:56 +02:00
Ludovic Courtès
7b28af22c0 Add `NEWS' entry for SRFI-18. 2008-06-30 19:48:50 +02:00
Julian Graham
e68f492a43 srfi-modules.texi (SRFI-18): New sections.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2008-06-30 19:47:21 +02:00
Ludovic Courtès
47871d5a16 Modernize Automake files. 2008-06-28 22:15:52 +02:00
Ludovic Courtès
c8779dde04 Fix doc typo regarding `use-syntax' and "syntax transformers". 2008-06-28 20:37:21 +02:00
Ludovic Courtès
994e8417d2 Fix harmless typo in SRFI-19. 2008-06-28 20:32:17 +02:00
Ludovic Courtès
95c6523b03 Disable type-checking of `SCM_UNPACK' for the broken HP compilers. 2008-06-28 20:31:01 +02:00
Ludovic Courtès
83bd8c1223 Update `THANKS'. 2008-06-02 21:47:53 +02:00
Ludovic Courtès
589d9eb814 guile-config: Show -L$libdir' before -lguile'. 2008-06-02 21:47:41 +02:00
Ludovic Courtès
6eadcdab98 Work around `#define except' on Tru64. 2008-06-02 21:43:07 +02:00
Ludovic Courtès
fcbc08686c Support systems whose <inttypes.h> doesn't define `PRIiMAX'. 2008-06-02 21:34:57 +02:00
Ludovic Courtès
e36280cb28 Fix SRFI-88 URL in the manual. 2008-06-01 13:09:36 +02:00
Ludovic Courtès
8c40b75d38 Update `NEWS'. 2008-05-31 23:21:24 +02:00
Ludovic Courtès
102dbb6f6c Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
Andy Wingo
87c4242ca8 Updated loop disassembly
* benchmark/lib.scm: Update loop disassembly, with inlining. Neat!
2008-05-25 13:43:26 +02:00
Andy Wingo
6cc3f99e83 add inline macros for zero? and 1-
* module/system/il/inline.scm (zero?, 1-): New inlines. Neat :) The loop
  benchmark speedup is now up to 5x.
2008-05-25 13:38:17 +02:00
Andy Wingo
e677365cbc Speed up the self-tail-recursive case (1x->2x)
* benchmark/lib.scm: Add a comment, update the loop disassembly. Loop is
  now faster in the VM, thankfully.

* src/vm_engine.h (CACHE_PROGRAM): Only release and regrab the object
  array handle if the program changed. That is to say, optimize the
  self-tail-recursive case. But perhaps the thing to optimize here are
  the procedure calls themselves. Worth looking at in the future.
2008-05-25 13:34:50 +02:00
Andy Wingo
22bcbe8cc9 enable inlining; speed!
* module/system/il/inline.scm: New module, implements generic inlining of
  scheme functions. It even does the right thing regarding (define
  arity:nopt caddr) and such. So now there are many more inlines: the
  arithmetics, `apply', the caddr family, etc. This makes the benchmarks
  *much* faster.

* module/language/scheme/translate.scm (trans): Remove the
  %scheme-primitives code in favor of the generic (scheme il inline)
  code. Adds inlining for +, -, =, etc.

* src/vm.c (vm_puts): Fix to work.

* module/system/base/compile.scm (system): Export load/compile also.

* module/system/il/compile.scm (optimize): Further debitrotting, but I
  haven't tried this function yet. It seems that <ghil-inst> was what
  <ghil-inline> is.

* module/system/il/ghil.scm (*core-primitives*, *macro-module*)
  (ghil-primitive-macro?, ghil-macro-expander, ghil-primitive?): Remove
  these unused things.

* module/system/il/macros.scm: Removed, replaced with inline.scm.

* module/system/vm/assemble.scm (stack->bytes): Before, the final
  serialization code did an (apply u8vector (apply append (map
  u8vector->list ...))). Aside from the misspelling of append-map, this
  ends up pushing all elements of the u8vector on the stack -- assuredly
  not what you want. But besides even that, I think that pushing more
  than 32k arguments on the stack brings out some other bug that I think
  was hidden before, because now we actually use the `apply' VM
  instruction. Further testing is needed here, I think. Fixed the code to
  be more efficient, which fixes the manifestation of this particular
  bug: a failure to self-compile after inlining was enabled.

* module/system/vm/bootstrap.scm: New module, serves to bootstrap
  boot-9's `load-compiled'. That way when we load (system vm core), we're
  loading compiled code already.

* module/system/vm/core.scm: Use (system vm bootstrap).

* src/guilec.in: Use the bootstrap code, so that we really are compiling
  with an entirely compiled compiler.

* module/system/repl/repl.scm (default-catch-handler): An attempt at
  making the repl print a backtrace; more work needed here.

* module/system/vm/frame.scm (make-frame-chain): Fix some misspellings --
  I think, anyway.
2008-05-25 13:13:15 +02:00
Julian Graham
b046219e51 Scheme SRFI-18 implementation and tests file 2008-05-24 10:44:09 +01:00
Andy Wingo
5feb8b6529 update news
* NEWS: Update news for 0.7 release
2008-05-20 13:30:21 +02:00
Andy Wingo
51f6b8f377 distcheck works now
* guilec.mk: New file, to be included when building .go files.

* module/language/scheme/Makefile.am:
* module/system/base/Makefile.am:
* module/system/il/Makefile.am:
* module/system/repl/Makefile.am:
* module/system/vm/Makefile.am: Use guilec.mk.

* module/system/base/compile.scm (compiled-file-name): Work on the
  basename of a file, so that we always create files in the directory
  where we run. Perhaps should add a -o option to guilec in the future.

* Makefile.am: Actually recurse into module/ in a normal build.
2008-05-20 12:54:14 +02:00
Andy Wingo
292bb8fc68 include local copy of guile.m4
* acinclude.m4: Add guile.m4 to this, because I really can't be arsed
  with aclocal.

* autogen.sh: More better vanilla.
2008-05-20 12:21:40 +02:00
Andy Wingo
1f246cb782 autotooling, version bump to 0.7
* acconfig.h: Removed.

* acinclude.m4: Use the extended AC_DEFINE for HAVE_LABELS_AS_VALUES, so
  as to remove the need for acconfig.h.

* autogen.sh: Use autoreconf.

* configure.in: Update info, don't warn about non-gnu make, bump version
  to 0.7.

* doc/texinfo.tex: Automagically updated. (Should this be in VCS?)
2008-05-20 12:10:18 +02:00
Andy Wingo
b571a648d5 fix distcheck
* src/Makefile.am (AM_CFLAGS, libguile_vm_la_LDFLAGS): Don't build with
  -pg. (There are better profilers out there.)
  (CLEANFILES): Add guilev and guile-disasm.

* testsuite/Makefile.am (GUILE_VM): s/srcdir/builddir/.
2008-05-20 11:54:05 +02:00
Andy Wingo
13c4775352 properly include config.h in source files, not headers
* src/Makefile.am: Add $(DEFAULT_INCLUDES) to a couple of our custom
  rules so we pick up the -I for config.h.

* src/*.[ch]: Include the config.h in the C files, not in the headers.
2008-05-20 11:46:52 +02:00
Andy Wingo
d79d908ef0 guile-vm is completely self-compiling now!
* module/language/scheme/translate.scm (*the-compile-toplevel-symbol*):
  Reset to compile-toplevel, which requires a patch to guile.

* module/system/base/compile.scm (compile-file): Some foo so that we load
  up the scheme language before call-with-output-file. Fixes compilation
  of (language scheme) modules.

* module/system/base/language.scm (define-language): Don't unquote in
  make-language; refer to it by name instead, and export it.

* module/system/repl/Makefile.am (vm_DATA): Don't compile describe.scm,
  because we really can't deal with goops yet.

* module/system/repl/repl.scm (compile-toplevel): If we're compiling, put
  in a stub definition of start-stack, which is closely tied to the
  interpreter.

* src/vm_loader.c (load-program): Fix a very tricky corruption bug!
2008-05-20 11:33:28 +02:00
Andy Wingo
5163e95138 fix syntax error in describe.scm
* module/system/repl/describe.scm (format-documentation): Remove bad
  string syntax. This file doesn't compile though, due to define-macro
  being a procedure->syntax macro.
2008-05-19 21:38:09 +02:00
Andy Wingo
9246a48606 fix immediate linkage, some other fixes to allow vm/ to compile
* module/language/scheme/translate.scm (lookup-transformer): Allow for
  undefined variables when doing the transformation -- it's possible that
  they come from a module definition's forward declaration.

* module/system/repl/command.scm (import): Make into legal Scheme, caught
  by the compiler :-)

* module/system/vm/assemble.scm (<vlink-now>): Remove the module field.
  Immediate bindings will now always be relative to the current module.
  Fixes some mess about process-define-module not being defined when
  loading modules, probably because we destructively modified the
  ghil-env.
  (codegen, dump-object!): Don't dump a module name.

* src/vm_loader.c (link-now): Just use scm_lookup.
2008-05-19 21:29:18 +02:00
Andy Wingo
6297d22907 bind all module-level variables lazily
comments in ghil-lookup are pertinent.

* module/system/il/compile.scm (make-glil-var): Require that ghil vars
  have environments. Remove the 'unresolved case -- we'll treat all
  module-level variables as late bound.

* module/system/il/ghil.scm (ghil-lookup): Treat all module level vars as
  late bound.

* module/system/vm/assemble.scm: Instead of vlink and vlate-bound, have
  vlink-now and vlink-later.
  (codegen): Add a bunch of crap to get the various cases right.
  (object-assoc, dump-object!): Handle the new cases, remove the old
  cases.

* src/vm_loader.c (link-now, link-later): Change from link and lazy-bind.
  Include the module in which the link is to be done, so that callers
  from other modules get the right behavior.

* src/vm_system.c (late-variable-ref, late-variable-set): Instead of a
  sym, the unbound representation is a module name / symbol pair.

* testsuite/run-vm-tests.scm (run-vm-tests): Remove some debugging.
2008-05-19 19:37:39 +02:00
Andy Wingo
9cc649b880 Add instructions for doing very late binding
Fixes the mutually-recursive toplevel definitions case. This could be
fixed by rewriting bodies as letrecs, as r6 does, but that's not really
repl-compatible.

* module/system/il/ghil.scm (ghil-lookup): Ok, if we can't locate a
  variable, mark it as unresolved.

* module/system/il/compile.scm (make-glil-var): Compile unresolved
  variables as <glil-late-bound> objects.

* module/system/il/glil.scm: Add <glil-late-bound> definition.

* module/system/vm/assemble.scm (codegen): And, finally, when we see a
  <vlate-bound> object, allocate a slot for it in the object vector,
  setting it to a symbol. Add a new pair of instructions to resolve that
  symbol to a variable at the last minute.

* src/vm_loader.c (load-number): Bugfix: the radix argument should be
  SCM_UNDEFINED in order to default to 10.
  (late-bind): Add an unresolved symbol to the object vector. Could be
  replaced with load-symbol I guess.

* src/vm_system.c (late-variable-ref, late-variable-set): New
  instructions to do late symbol binding.

* testsuite/Makefile.am (vm_test_files):
* testsuite/t-mutual-toplevel-defines.scm: New test, failing for some
  reason involving the core even? and odd? definitions.
2008-05-19 17:46:05 +02:00
Andy Wingo
1b8abe5514 compile all of base/; some arbitrary changes; more "fixes" to `link'
* module/language/scheme/translate.scm (lookup-transformer): When
  expanding syncase macros, use the eval closure from the ghil-env.
  Probably doesn't make any difference whatsoever.

* module/system/base/Makefile.am (SOURCES): Compile pmatch.scm, now that
  it works :-))

* module/system/base/compile.scm (compile-in): Compile inside a
  save-module-excursion, so that side effects of evaluation don't leak
  out.

* module/system/base/pmatch.scm: Change from :use-syntax/:export-syntax
  to simply :use-modules/:export. Also probably has no effect.

* module/system/il/ghil.scm (fix-ghil-mod!): Suppress warnings resulting
  from compilation of define-module.

* src/vm_loader.c (link): So, referencing variables defined but not
  exported from the current module didn't work. Fixed that, but it's
  hacky. There are still some uncaught cases.
2008-05-19 12:57:48 +02:00
Andy Wingo
8f43eb2b42 syncase macros compiling!
* module/system/base/compile.scm: Also import load-objcode from (system
  vm core).

* module/language/scheme/translate.scm (lookup-transformer): Use
  sc-expand3 in compilation mode when compiling macros. Yay, syncase
  macros compile!
2008-05-19 10:38:18 +02:00
Andy Wingo
a52b96a70a rudimentary syncase support; some dash symbol syncase removal
* module/system/vm/assemble.scm (dump-object!):
* src/vm_loader.c (VM_DEFINE_LOADER): Use scm_from_locale_keywordn, not
  the krazy dash symbol stuff.

* module/language/scheme/translate.scm (lookup-transformer): Add a
  special case for syncase macros.
2008-05-15 23:38:52 +02:00
Andy Wingo
7f52f9e3b4 avoid zealous unquotation
* module/system/base/syntax.scm (define-record): Again, don't unquote in
  actual objects, because this is uncompilable. Ah well. At least now all
  of base/ is compiling.

* module/system/vm/assemble.scm (dump-object!): More debug info.
2008-05-15 18:57:33 +02:00
Andy Wingo
cd702346f2 fix else in cond, letrec env corruption, syntax.scm compile, define-module side effects
* module/language/scheme/translate.scm (primitive-syntax-table):
  Translate the `else' clause of a cond as (begin ...). We used to use
  trans-body, which processes internal defines, which are not legal
  syntax here.

* module/system/base/syntax.scm (define-record): Unfortunately, we can't
  unquote in the actual procedure for `%compute-initargs', because that
  doesn't work with compilation. So reference %compute-initargs by name,
  and export it.

* module/system/il/ghil.scm (apopq!): Gaaaaar. The order of the arguments
  to assq-remove! was reversed, which was the badness, causing corruption
  to the env after calling call-with-ghil-bindings. Grrrrrr.

  (fix-ghil-mod!, ghil-lookup, ghil-define): As amply commented in the
  code, deal with compile-time side effects to the current module by
  lazily noticing and patching up the compile-time environment. A hacky
  solution until such a time as we special-case something for
  `define-module'.
2008-05-15 18:48:22 +02:00
Andy Wingo
6167de4f72 `link' instruction links to symbols by module
* module/system/il/compile.scm (make-glil-var): Only dump the module if
  we actually have one.

* module/system/il/ghil.scm (ghil-define): Make sure that ghil-var-env is
  a ghil-env.

* src/vm_loader.c (link):
* module/system/vm/assemble.scm (dump-object!): Rewrite `link' to take
  two Scheme arguments on the stack: the symbol, as before, and the
  module in which the symbol was found at compile time. This introduces
  some undesireable early binding, but it does let the vm load up
  modules, and (potentially) have multiple modules in one .go file. On a
  practical level, I can now compile modules and have their .go files
  load up the modules' dependencies as necessary.
2008-05-15 13:55:33 +02:00