1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-19 03:00:25 +02:00
Commit graph

10652 commits

Author SHA1 Message Date
Ludovic Court`es
f41cb00ce2 Fixed a stack leak. Now observing actual performance.
* src/*.[ch]:  Replaced `scm_mem2symbol' by `scm_from_locale_symboln' and
  `scm_ulong2num' by `scm_from_ulong'.
* src/vm_system.c (tail-call):  Fixed stack leak (SP lacked decrement by
  one more Scheme object in the tail-recursive case).
* benchmark/measure.scm (measure):  Make sure we are using the compiled
  procedure (i.e. a program object) when measuring.  This yields better
  results than before.  :-)
* doc/guile-vm.texi:  Augmented the instruction set documentation with
  branch instructions, `call' and `tail-call'.

git-archimport-id: lcourtes@laas.fr--2004-libre/guile-vm--revival--0.6--patch-7
2008-04-25 19:09:30 +02:00
Ludovic Court`es
2d80426a3e Improved the VM's efficiency. The VM is as fast as the interpreter. :-(
* benchmark/lib.scm:  New file.
* benchmark/measure.scm:  New file.
* README:  Added useful pointers to various threads.
* doc/guile-vm.texi:  Fixed the description of `load-program' (it now expects
  _immediate_ integers).
* src/*.[ch]:  Use immediate integers whereever possible, as in the original
  code.  For `CONS', use `scm_cell' rather than `scm_cons'.

git-archimport-id: lcourtes@laas.fr--2004-libre/guile-vm--revival--0.6--patch-6
2008-04-25 19:09:30 +02:00
Ludovic Court`es
238e7a11a8 Got the VM up and running! Augmented the documentation.
* src/*.[ch]:  Replaced the remaining `SCM_MAKINUM', and changed `SCM_VELTS'
  into `scm_vector_elements ()'.
* src/vm_loader.c (link):  Fixed so that it pushed a variable object on
  the stack.
* src/vm_system.c (variable-ref):  Fixed so that it uses `scm_variable_ref ()'
  and friends.
* module/system/vm/assemble.scm (dump-object!):  Fixed the string case.
* src/vm_engine.h (CONS):  Use `scm_cons' instead of `SCM_NEWCELL'.
* doc/guile-vm.texi:  Added actual instruction definitions, explanations of
  the program invocation mechanism, programs' object tables, etc., in the
  `Instruction Set' chapter.

git-archimport-id: lcourtes@laas.fr--2004-libre/guile-vm--revival--0.6--patch-5
2008-04-25 19:09:30 +02:00
Ludovic Court`es
fa19602c28 Fixed the compiler, got the disassembler working.
* doc/guile-vm.texi:  Texified and cleaned up.
* src/vm.c:  Use `scm_from_locale_string ()' instead of `scm_makfrom0str ()'.
* src/vm_engine.c:  Likewise.
* src/programs.c (scm_program_bytecode):  Return a u8vector instead of a string.
* module/system/vm/conv.scm (make-byte-decoder):  Fixed a few things wrt. to
  the string to u8vector transition.
* src/objcodes.c (bytecode->objcode):  Fixed a bug where the last 10 bytes of
  the bytecode where ignored.
* module/system/vm/assemble.scm (dump-object!):  Don't convert everything
  to a u8vector, keep strings where it makes sense.
* module/system/vm/conv.scm (code->bytes):  Accordingly, convert strings to
  u8vectors when needed.
  (make-byte-decoder):  Accordingly too, when decoding instructions, return
  variable-length instructions' argument as strings except for `load-program'.
* module/system/vm/disasm.scm:  Export `disassemble-bytecode'.

git-archimport-id: lcourtes@laas.fr--2004-libre/guile-vm--revival--0.6--patch-4
2008-04-25 19:09:30 +02:00
Ludovic Court`es
054599f117 Updated the assembly process so that `u8vectors' are used. Compilation works.
* module/system/vm/conv.scm (encode-length):  Use u8vectors.
  (code->bytes):  Likewise.
* module/system/vm/assemble.scm (codegen):  Use u8vectors instead
  of strings.
* src/objcodes.c (objcode->string):  Removed.
  (objcode->u8vector):  New function.
* module/system/base/compile.scm (compile-file):  Use `objcode->u8vector'
  and `uniform-vector-write'.

git-archimport-id: lcourtes@laas.fr--2004-libre/guile-vm--revival--0.6--patch-3
2008-04-25 19:09:29 +02:00
Ludovic Court`es
d8eeb67c89 Translation from Scheme to GHIL, and compilation to GLIL work.
* src/*.c:  Removed calls to `scm_must_malloc', `SCM_MUST_MALLOC' and
  `scm_must_free'.  Same for `SCM_INUMP', `SCM_INUM', `SCM_STRING_CHARS',
  and the likes.
* module/system/base/syntax.scm:  Do not import `(ice-9 match)' and do
  not re-export `match', do not export `syntax-error' which was not
  defined here.
* module/system/base/compile.scm (call-with-compile-error-catch):  Use
  the `catch' form instead of `try'.
* src/instructions.c:  Use `scm_from_char ()' instead of the deprecated
  macro `SCM_MAKINUM ()'.
* src/instructions.h (scm_instruction):  Made `npop' a signed char.

git-archimport-id: lcourtes@laas.fr--2004-libre/guile-vm--revival--0.6--patch-2
2008-04-25 19:09:29 +02:00
Ludovic Court`es
f9e8c09d42 Updated the C code base so that it compiles with Guile 1.7.2.
* src/*.[ch]:  Introduced changes so that it compiles with Guile 1.7.2.

git-archimport-id: lcourtes@laas.fr--2004-libre/guile-vm--revival--0.6--patch-1
2008-04-25 19:09:29 +02:00
Ludovic Courtès
535b3592b2 Don't use "-I$(srcdir)", so that our "random.h" doesn't shadow libc's on Tru64. 2008-04-24 19:37:54 +02:00
Neil Jerram
839e63263c Document file-exists? 2008-04-17 21:37:47 +01:00
Ludovic Courtès
6bb1dc98b9 Add `read' benchmark. 2008-04-17 10:24:10 +02:00
Ludovic Courtès
be10cba84b Update `NEWS'. 2008-04-16 12:01:09 +02:00
Ludovic Courtès
f5c2af4be0 Inline scm_getc', scm_putc' and `scm_puts'. 2008-04-16 09:45:05 +02:00
Ludovic Courtès
c3455f571a Merge branch 'master' of ssh://civodul@git.sv.gnu.org/srv/git/guile 2008-04-16 09:06:02 +02:00
Ludovic Courtès
c4d088f54c Don't use "echo -n" in `guile-readline/configure.in'. 2008-04-16 09:01:33 +02:00
Neil Jerram
f0c88df7de Add TAGS to .gitignore 2008-04-16 00:14:24 +01:00
Neil Jerram
ee9e3a93f7 A few elisp fixes and enhancements 2008-04-16 00:13:40 +01:00
Neil Jerram
b1860cb342 * gds-client.scm (gds-debug-trap): Ensure that frame index passed to Emacs is always positive. 2008-04-16 00:12:52 +01:00
Ludovic Courtès
904fabb602 Revert "Fix typo in `read.c'."
This reverts commit 6ddb3ca825.
2008-04-15 20:14:44 +02:00
Ludovic Courtès
6ddb3ca825 Fix typo in `read.c'. 2008-04-15 20:01:40 +02:00
Ludovic Courtès
ef4cbc08c8 Add support for SRFI-88-like postfix keyword read syntax. 2008-04-15 19:52:43 +02:00
Ludovic Courtès
cac3960028 Test the interaction of GOOPS objects with `struct-{ref,set!}'. 2008-04-13 20:41:23 +02:00
Ludovic Courtès
9dca89355f Slightly simplify inline machinery. 2008-04-13 19:39:10 +02:00
Ludovic Courtès
07db6fcd4c Really fix inline machinery for MacOS X. 2008-04-13 19:39:03 +02:00
Ludovic Courtès
7dc9ae7179 Fix inline machinery in C99 mode on MacOS X. 2008-04-10 23:57:24 +02:00
Ludovic Courtès
f1c212b156 Add `NEWS' entries for Andy's fixes. 2008-04-10 23:21:30 +02:00
Andy Wingo
4650d11502 fix struct-ref and struct-set! on "light" structs
* libguile/struct.c (scm_struct_ref, scm_struct_set_x): "Light" structs
have no hidden words (members of the SCM_STRUCT_DATA(x) array accessed
with negative indices). In that case, determine the number of fields
from the length of the struct layout descriptor. (Most GOOPS instances
are light structs.)
2008-04-10 23:21:30 +02:00
Andy Wingo
4125c76761 initialize 'u' slots to 0, not SCM_UNPACK(SCM_GOOPS_UNBOUND)
* goops.c (wrap_init): Initialize 'u' slots to 0, not some random
SCM value.
2008-04-10 23:21:30 +02:00
Andy Wingo
54ee7cdfce respect slot allocation, e.g. for <read-only-slot>
* libguile/goops.c (get_slot_value, set_slot_value): In the struct
	allocation case, don't poke the slots array directly -- we should
	go through struct-ref/struct-set! code so that we get the
	permissions and allocation ('u' versus 'p') correct.
2008-04-10 23:21:30 +02:00
Neil Jerram
08365ce400 Fix manual typo. 2008-04-08 00:08:34 +02:00
Ludovic Courtès
4b824aae11 Update/remove references to the CVS repository. 2008-04-08 00:08:27 +02:00
Ludovic Courtès
5995c6d801 Fix "#include" directives in stand-alone C tests. 2008-04-07 23:59:36 +02:00
Ludovic Courtès
979eade651 Fix inline machinery for GCC 4.3 and later in C99 mode. 2008-04-07 23:57:03 +02:00
Ludovic Courtès
90ace3e1c1 More `.gitignore'. 2008-04-07 23:55:58 +02:00
Ludovic Courtès
89e3e0dcea More `.gitignore'. 2008-04-07 23:48:48 +02:00
Neil Jerram
2a1d06886e (to_timespec): Change 1000000 multiplier to
1000000000.
(unchecked_unlock_sym, allow_external_unlock_sym,
recursive_sym): Use SCM_SYMBOL.
(scm_make_mutex_with_flags): When raising unsupported option
error, report what the unsupported option was.
(fat_mutex_unlock): When raising errors, unlock m->lock first.
(fat_cond_timedwait): Removed.
(scm_timed_wait_condition_variable): Call fat_mutex_unlock
directly instead of via fat_cond_timedwait.
2008-03-24 21:51:09 +00:00
Neil Jerram
9c9b203b80 (Mutexes and Condition Variables): Change
`flag' to `flags' in docstring.
2008-03-24 21:50:51 +00:00
Neil Jerram
09499546b9 (command-loop): Use
needed modules.
2008-03-19 22:56:17 +00:00
Neil Jerram
24dbb5ed10 * api-debug.texi (Low Level Trap Calls): Removed (material
duplicated elsewhere); doc for with-traps and debug-object? moved
to section on evaluator trap options.
(High Level Traps): Renamed just `Traps'.  Add references to
evaluator trap options and debug options.  Make language
appropriate for core Guile (as opposed to previously separate
package).
(Location Traps): Corrected to reflect that location traps now
specify a specific position, not a range of positions.
(Debugging Examples): New (content moved here from
scheme-debugging.texi, and updated to use traps instead of
breakpoints).

* api-modules.texi (Included Guile Modules): Change `Debugging
Features' reference to `Tracing'.

* api-options.texi (Evaluator trap options): Doc for with-traps
and debug-object? is now here.

* guile.texi, scheme-debugging.texi: Move the `Tracing' content of
scheme-debugging.texi to the Modules section.

* scheme-using.texi (Using Guile in Emacs, GDS Getting Started):
Minor edits.

* scheme-debugging.texi (Debugging Features, Intro to
Breakpoints): Removed.
(Examples): Moved to api-debug.texi.
(Tracing, Old Tracing): Promoted one level.
(New Tracing, Tracing Compared): Removed.
2008-03-19 22:51:24 +00:00
Ludovic Courtès
cc7e01cedd Use SRFI-1 in `(oop goops util)'. 2008-03-18 09:10:45 +00:00
Ludovic Courtès
eedcb08a25 Honor $TMPDIR in the test suite. 2008-03-13 14:03:58 +00:00
Ludovic Courtès
62c5382b88 Fix SRFI-37 `args-fold' with short option names of argument-less options. 2008-03-12 17:01:19 +00:00
Ludovic Courtès
bbb6fc4fc2 Provide describe' feature in (oop goops describe)'. 2008-03-12 17:00:07 +00:00
Ludovic Courtès
c2ad98ad41 Fix `alloca' on FreeBSD 6. 2008-03-10 22:34:40 +00:00
Neil Jerram
bca69a9fba Only define scm_from_complex_double if it will
actually be used.
2008-03-09 21:57:00 +00:00
Neil Jerram
6180e336b2 Core enhancements, by Julian Graham, to Guile's thread, mutex and
condvar primitives, in preparation for SRFI-18 support.
2008-03-08 16:22:40 +00:00
Ludovic Courtès
61b6542aa6 Fix type-checking for the second argument of `eval'. 2008-03-06 09:51:44 +00:00
Ludovic Courtès
3f52096714 Fix "mixed linkage" errors in `inline.h'. 2008-03-02 17:03:42 +00:00
Neil Jerram
fa80e2809e (errno): Remove declarations that have been there
forever, and are known to conflict on some platforms with that
provided by <errno.h>, which we include unconditionally.  If
<errno.h> doesn't provide a errno declaration, what is the point
of it?
2008-02-27 23:00:37 +00:00
Neil Jerram
d53f85dd85 * FAQ: New file.
* Makefile.am (EXTRA_DIST): Add FAQ
2008-02-23 18:30:00 +00:00
Neil Jerram
2018147881 Updated to GNU coding
standards; added standard license statement.
2008-02-23 18:29:45 +00:00