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

10514 commits

Author SHA1 Message Date
Andy Wingo
373d251b4d disable start-stack in compiled code
* module/language/scheme/translate.scm (primitive-syntax-table): Disable
  semantics of start-stack in compiled code. I think start-stack
  semantics aren't bad, but they don't have vm-based implementations at
  this point.
2008-09-02 11:00:27 -07:00
Andy Wingo
060cce72db remove the-environment, the-root-environment, environment-module
* ice-9/boot-9.scm (the-environment, the-root-environment)
  (environment-module): Remove these representation of the interpreter's
  idea of the environment, because they are not valid in the compiled
  case, and are not part of the scheme spec anyway.
2008-09-02 10:30:39 -07:00
Andy Wingo
3bf2760867 avoid local-eval in record constructors and accessors
* ice-9/boot-9.scm (record-constructor, record-accessor)
  (record-modifier): Avoid local-eval when possible, because it uses the
  interpreter's representation of environments; and when we need to eval,
  use primitive-eval instead. Slight semantic change in that this
  evaluates relative to the current module rather than the root module,
  but not really a biggie. Should make this compilable in the future,
  somehow.
2008-09-02 10:30:39 -07:00
Andy Wingo
1b68d041a5 nits picked on boot-9.scm
* ice-9/boot-9.scm (defmacro): Indentation fix.
  (begin-deprecated): Don't cons in the `begin' macro itself, only the
  symbol `begin'.
2008-09-02 10:30:39 -07:00
Andy Wingo
115b9ee8ab enter into the (guile) module when compiling boot-9.scm
* ice-9/boot-9.scm: Before doing very much, put us into the (guile)
  module when compiling. This avoids some circularity in the module boot
  process, whereby symbols are seen to resolve to the (guile-user)
  module, whereas in fact they originally pertain to the (guile) module.
2008-09-02 10:30:39 -07:00
Andy Wingo
c09346521e Fix compilation #ifndef STACK_CHECKING.
* libguile/debug.c (scm_debug_options): Fix compilation #ifndef
  STACK_CHECKING.
2008-09-02 10:30:39 -07:00
Andy Wingo
049af8259b fix Makefile.am in module/language
* module/language/Makefile.am: Actually recurse into scheme/.
2008-09-02 10:30:39 -07:00
Andy Wingo
5c4926209f ditch the 8-bit compiled form of program parameters
* libguile/vm-i-loader.c (load-program):
* module/system/vm/assemble.scm (dump-object!): There are cases in which
  we use the 16-bit representation for program params (nargs, nexts,
  etc), but the actual 16-bit number actually fits into 8 bits -- which
  is then misinterpreted by the loader as the 8-bit form. So ditch the
  8-bit form entirely (it was never much of an optimization), and just
  use the 16-bit form. Make sure to clear out all your .go files before
  recompiling this one!
2008-09-02 10:30:39 -07:00
Andy Wingo
7950b4cffb fix a bug loading functions with 8 or more arguments
* libguile/vm-i-loader.c: A combination of superstition and a bugfix:
  make sure that we treat bits as being of a type as wide as we think it
  is, and, more importantly, allow for programs with 8 <= nargs < 16.
2008-09-02 10:30:39 -07:00
Andy Wingo
124c52d8bb fix nested quasiquotes (yeepers)
* module/language/scheme/translate.scm (primitive-syntax-table)
  (trans-quasiquote): Fix handling of nested quasiquotes.

* testsuite/Makefile.am (vm_test_files):
* testsuite/t-quasiquote.scm: Add a quasiquote test case.
2008-09-02 10:30:39 -07:00
Andy Wingo
e0b20b68b0 shamefully disable some more gc asserts
* libguile/gc-freelist.c: Disable some more asserts. I have no idea why
  they're hitting, however.
2008-08-27 17:19:41 -07:00
Andy Wingo
72f7452826 move guilec and guile-disasm to be guile-tools scripts
* .gitignore: Some touchups.

* configure.in:
* src/.cvsignore:
* src/Makefile.am:
* Makefile.am: No more src/.

* scripts/compile:
* scripts/disassemble: Moved here from src/ and changed into guile-tools
  scripts.

* scripts/Makefile.am: Add the new scriptes.

* guilec.mk: Adapt to new way of invoking the compiler.
2008-08-27 17:17:30 -07:00
Andy Wingo
89c95c460b fix guile-disasm
* src/guile-disasm.in: Adapt to the split-up of (system vm core).
  Detabify.

Patch by C. K. Jester-Young <cky944 <at> gmail.com>.
2008-08-26 13:55:05 -07:00
Andy Wingo
515bc96855 m4 quoting foo in labels-as-values.m4.
* m4/labels-as-values.m4: More m4 quoting love.

Patch from C. K. Jester-Young <cky944 <at> gmail.com>.
2008-08-26 13:52:20 -07:00
Andy Wingo
1976ad74b8 fix casting-pointers-to-ints bug
* libguile/vm.c: Cast pointers to intptr_t, not int.

Patch from C. K. Jester-Young <cky944 <at> gmail.com>.
2008-08-26 13:48:19 -07:00
Andy Wingo
b264227691 fetch an inum's bits into a scm_bits_t, not an int
* libguile/vm-i-scheme.c (FUNC1): Remove, cause it's not used.
  (FUNC2): Don't assume an inum can fit into an int, use scm_bits_t
  instead. In reality though we should probably do use different checks,
  i.e. for multiplication probably we overflow. (That would be a bug.)

Based on a patch by C. K. Jester-Young <cky944 <at> gmail.com>.
2008-08-26 13:48:12 -07:00
Andy Wingo
bc73abc5ff suppress autoconf warning
* guile-tools.in: Suppress ``WARNING: $ac_file_inputs seems to ignore the
  --datarootdir setting'' message.

Patch from C. K. Jester-Young <cky944 <at> gmail.com>
2008-08-26 13:33:55 -07:00
Andy Wingo
05ddc073c3 disable gc statistics asserts
* libguile/gc.c: Disable the statistics asserts; see
  http://thread.gmane.org/gmane.lisp.guile.devel/7505
2008-08-26 13:29:55 -07:00
Andy Wingo
fdc0a82263 merge from guile master
Had to fix up .gitignore for some conflicts.
2008-08-26 12:51:19 -07:00
Andy Wingo
ce66d60be2 start compiling ice-9
* ice-9/Makefile.am: Integrate with guilec.mk, and start compiling
  sources. Have to figure out what to do with procedure->memoized-macro
  though, to get boot-9.scm compiling.
2008-08-26 12:40:25 -07:00
Ludovic Courtès
582a4997ab Use $(GCC_CFLAGS) for `-Werror' et al. so that it's not used to compile
Gnulib code.
2008-08-25 22:11:53 +02:00
Andy Wingo
75a09d5ae6 module compilation fixen, post-integration
Thanks to Dale Smith.

* guilec.mk: Rework to expect the includer to define $(modpath), then
  make $(moddir) from that.

* module/language/Makefile.am:
* 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: Define modpath instead.

* src/guilec.in: Don't import (system vm bootstrap), it is no more.
2008-08-25 13:05:16 -07:00
Han-Wen Nienhuys
4b7513463d Fix 2 indentation nitpicks. 2008-08-21 23:21:57 -03:00
Han-Wen Nienhuys
1f5844000e Style nitpicks: space before () in function call. 2008-08-21 23:16:20 -03:00
Andy Wingo
83495480e8 merge guile-vm into libguile itself
* ice-9/boot-9.scm: Only define load-compiled as #f if it's not already
  defined, which won't normally be the case.

* libguile/guile-vm.c: Removed, there's no more guile-vm binary.

* libguile/frames.c: (with change frame? -> heap-frame?)
* libguile/frames.h:
* libguile/instructions.c:
* libguile/instructions.h:
* libguile/objcodes.c:
* libguile/objcodes.h:
* libguile/programs.c:
* libguile/programs.h:
* libguile/vm-bootstrap.h: (was bootstrap.h)
* libguile/vm-engine.c: (was vm_engine.c)
* libguile/vm-engine.h: (was vm_engine.h)
* libguile/vm-expand.h: (was vm_expand.h)
* libguile/vm-i-loader.c: (was vm_loader.c)
* libguile/vm-i-scheme.c: (was vm_scheme.c)
* libguile/vm-i-system.c: (was vm_system.c)
* libguile/vm.c:
* libguile/vm.h: These files moved here from src/, as guile-vm is now a
  part of libguile.

* libguile/init.c: Bootstrap the VM. Yay!

* libguile/Makefile.am: The necessary chicanery here.

* module/system/vm/Makefile.am:
* module/system/vm/bootstrap.scm:
* module/system/vm/frame.scm:
* module/system/vm/instruction.scm:
* module/system/vm/objcode.scm:
* module/system/vm/program.scm:
* module/system/vm/vm.scm:

* pre-inst-guile-env.in: Add builddirs to the load path; add module/ to
  the path in the empty-$GUILE_LOAD_PATH case as well.

* src/Makefile.am: Moved out everything except guilec and guile-disasm,
  which probably should be moved to the scripts directory?

* testsuite/Makefile.am: Update to find guile-vm in the right place.

* module/system/vm/Makefile.am:
* module/system/vm/bootstrap.scm: Removed bootstrap.scm, scm_init_guile
  handles the bootstrapping for us.

* module/system/vm/frame.scm:
* module/system/vm/instruction.scm:
* module/system/vm/objcode.scm:
* module/system/vm/program.scm:
* module/system/vm/vm.scm: Call the init functions in libguile; should
  fix at some point to avoid the dlopen?
2008-08-21 18:39:30 -07:00
Andy Wingo
be52b55a32 make pre-inst-guile use pre-inst-guile-env
* pre-inst-guile-env.in:
* pre-inst-guile.in: Change so that pre-inst-guile uses
  pre-inst-guile-env. Fixed inconsistency regarding $subdirs_with_ltlibs.
2008-08-21 15:11:27 -07:00
Andy Wingo
9106a44eaa chmod -x guilec.in.
* src/guilec.in: Chmod -x.
2008-08-21 14:49:12 -07:00
Ludovic Courtès
103dc4d4d2 Add Gnulib-provided files for convenience.
These come from Gnulib's Git commit
ae3a0d62f26d8156b403e40d6007475006f3136f, dated 2008-08-19.
2008-08-21 22:23:59 +02:00
Andy Wingo
fcd4901bef fix some compilation warnings, in anticipation of moving to libguile/
* src/Makefile.am: Use standard guile CFLAGS, which has -Werror and
  -Wmissing-prototypes.

* src/frames.h:
* src/instructions.h:
* src/objcodes.h:
* src/programs.h:
* src/vm.h:
* src/vm.c: Fix warnings, mostly about prototypes.

* src/vm_system.c: Fix a tricky x-is-not-initialized error. Thanks, GCC!
2008-08-20 14:32:36 -07:00
Andy Wingo
22e95889ff remove unused "envs" code from guile-vm
* src/Makefile.am:
* src/envs.c:
* src/envs.h: Remove the envs code, which was historically used to
  implement modules. But since we use Guile's modules, these aren't
  necessary.

* src/vm.c:
* src/vm_loader.c:
* module/system/vm/assemble.scm: Remove code bits that trafficked in yon
  deprecation.
2008-08-20 14:11:35 -07:00
Ludovic Courtès
417566ebc9 Never define _GNU_SOURCE' explicitly since AC_USE_SYSTEM_EXTENSIONS'
takes care of it.

Conflicts:

	ChangeLog
	configure.in
	libguile/eval.c
	libguile/srfi-14.c
	libguile/threads.c
2008-08-20 19:31:46 +02:00
Ludovic Courtès
82d8d6d9e8 Add test case for the GOOPS `class-redefinition' memory corruption. 2008-08-20 00:44:20 +02:00
Ludovic Courtès
4a1db3a91f Add ChangeLog and NEWS entry for the GOOPS `class-redefinition' memory
corruption fix.
2008-08-19 19:13:39 +02:00
Ludovic Courtès
bb764c0e3c Complete fix of `hell' allocation in GOOPS. 2008-08-19 19:08:29 +02:00
Han-Wen Nienhuys
408bcd99d3 Fix sizeof() nitpick for goops corruption. 2008-08-18 11:19:59 -03:00
Han-Wen Nienhuys
5bfb683e12 Make marked conservatively statistic accumulative. 2008-08-16 15:34:04 -03:00
Han-Wen Nienhuys
676d9cc553 If realloc() fails in scm_realloc, then do a complete GC with complete
sweep directly.
2008-08-16 15:20:55 -03:00
Han-Wen Nienhuys
40945e5e9f Add a statistic for tracking how many cells are marked conservatively.
This allows an informed choice for deciding how many segments to
create.  After startup, ~2% of the cells are scanned conservatively.
2008-08-16 15:03:48 -03:00
Han-Wen Nienhuys
82ae1b8eb3 Garbage collection cleanup.
* New file gc-segment-table.c: hold code for the segment table.

* Remove data that might be out of date; remove
  scm_i_adjust_min_yield().  We don't store min_yields, since they
  are only accurate at one point in time (when the sweep finishes). 
  We decide the min yield at that point from min_yield_fraction and
  freelist->collected / freelist->swept

* Introduce scm_i_gc_heap_size_delta() replacing
  scm_i_gc_grow_heap_p().
  
* Remove foo_1 fields containing penultimate results.

* After GC, count mark bit vector to discover number of live
  objects. This simplifies hairy updates.

* Many formatting and layout cleanups.

* Fix in scm_i_sweep_card(): return the length of free_list returned,
  rather than number of deleted objects.

* For mtrigger GCs: do not also run a full sweep after the gc() call, as
  this is inconsistent with lazy sweeping.

* Remove scm_i_make_initial_segment().

* Use calloc in scm_i_make_empty_heap_segment() to save on
  initialization code.

* New function scm_i_sweep_for_freelist() which sweeps, with proper
  statistic variable updates.

* New segments are conceptually blocks with 100% reclaimable cells.

* Remove some useless constants/comments: SCM_HEAP_SIZE,
  SCM_INIT_HEAP_SIZE, SCM_EXPHEAP, SCM_HEAP_SEG_SIZE

* Do not increment scm_cells_allocated() from the
  scm_[double]cell(). This would be a race condition.

* Move some deprecation checks in separate functions to not distract
  from main code flow.
2008-08-16 13:57:23 -03:00
Han-Wen Nienhuys
b474ac33ee Remove comments about removed variables. 2008-08-16 13:27:17 -03:00
Han-Wen Nienhuys
d09752ffd1 Introduce scm_i_marking to detect when GC mark bits are touched
outside of marking stage.
2008-08-16 13:21:42 -03:00
Han-Wen Nienhuys
e89b7b3625 Remove unused macro UNMARKED_CELL_P() 2008-08-16 13:21:32 -03:00
Han-Wen Nienhuys
569aa529d5 Use word_2 to store mark bits for freeing structs and vtables in the
correct order.

This ensures that we only use GC Marks during the actual GC Mark.
2008-08-16 13:21:21 -03:00
Han-Wen Nienhuys
b61b5d0ebe Do not include private-gc.h in srfi-60. 2008-08-16 13:20:46 -03:00
Han-Wen Nienhuys
51ef99f7fa Fix memory corruption issue with hell[] array: realloc/calloc need to
factor in sizeof(scm_t_bits)
2008-08-16 02:32:00 -03:00
Han-Wen Nienhuys
01621bf62e Include min-yields in gc-stats output. 2008-08-14 02:16:41 -03:00
Han-Wen Nienhuys
2072309c1c Whitespace and formatting fixes.
Conflicts:

	libguile/gc-freelist.c
	libguile/gc-segment.c
	libguile/gc.h
2008-08-14 01:51:24 -03:00
Ludovic Courtès
c95514b3b4 Remove the now useless `qthreads.m4'. 2008-08-14 00:20:34 +02:00
Andy Wingo
b9d8ed0502 make ,stats work
* module/system/repl/command.scm (display-time-stat, display-mips-stat):
  Always convert to float.

* module/system/vm/frame.scm (print-frame): Write the args, don't display them.

* module/system/repl/command.scm (statistics): gc-sweep-time is no more.
2008-08-11 19:51:33 +02:00
Andy Wingo
482015afec ease-of-use improvement to ,m; catch read errors at the repl
* module/system/repl/command.scm (module): Accept e.g. `,m ice-9 popen'
  in addition to `,m (ice-9 popen)'.

* module/system/repl/repl.scm (start-repl): Call read with a backtrace
  handler too.
2008-08-11 19:27:23 +02:00