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

7681 commits

Author SHA1 Message Date
Ludovic Courtès
da8b47478e Avoid uses of deprecated forms in the VM code.
Reported by Daniel Kraft <d@domob.eu>.

* libguile/frames.c, libguile/vm.c: Include <stdlib.h>, use `size_t'
  instead of `scm_sizet'.

* libguile/objcodes.c, libguile/programs.c, libguile/vm-engine.c,
  libguile/vm-i-loader.c, libguile/vm-i-system.c: Use `scm_list_X ()'
  instead of the deprecated `SCM_LISTX ()'.
2009-04-05 20:15:11 +02:00
daniel
6ab8238d99 Make `--disable-deprecated' work.
* configure.in (enable_deprecated): Set SCM_WARN_DEPRECATED_DEFAULT
  even when --disable-deprecated is passed.
* libguile/deprecation.h: Declare deprecation-issuing methods even
  if SCM_ENABLE_DEPRECATED is not set.
* libguile/deprecation.c: Ditto.
  (scm_init_deprecation): Include full body even for unset
  SCM_ENABLE_DEPRECATED.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2009-04-05 19:54:25 +02:00
Andy Wingo
2c0f99a28b fix nondeterminism in vm-i-system.c
* libguile/vm-i-system.c (br-if-eq, br-if-not-eq): Fix some
  nondeterminism caught by GCC 4.4.
2009-04-04 11:36:18 -07:00
Andy Wingo
6f36dbbe48 no hard-coded stack limitations if the user has getrlimit
* libguile/debug.c (init_stack_limit): Instead of "1 MB or 80% of rlimit,
  whichever is lower", just use 80% of the rlimit, if set.
2009-04-03 10:38:30 -07:00
Andy Wingo
a5fc657043 bugfix: don't dynamic link if we found a registered extension
* libguile/extensions.c (load_extension): Don't do dynamic linking if we
  actually did find an extension in the list.
2009-03-27 18:47:13 -07:00
Andy Wingo
60ae5ca2a3 frame, program, objcode, etc inits use load-extension
* libguile/extensions.h: Define a scm_t_extension_init_func.

* libguile/frames.c:
* libguile/instructions.c:
* libguile/objcodes.c:
* libguile/programs.c:
* libguile/vm.c: Register extension init funcs. Should play nicer with a
  static Guile, in addition to working on Darwin with non-default
  installation prefixes without munging DYLD_LIBRARY_PATH.

* 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: Use load-extension.
2009-03-27 18:40:15 -07:00
Andy Wingo
845952664b fix distcheck hopefully, by cleaning the vm-i-*.i files
* libguile/Makefile.am (CLEANFILES): Clean vm-i-*.i.
2009-03-27 16:21:20 -07:00
Andy Wingo
23ccb831ff rely on getrlimit to DTRT, don't make stack calibration file
* libguile/measure-hwm.scm: Remove.

* .gitignore: Update for removal.

* test-suite/standalone/test-fast-slot-ref.in:
* test-suite/standalone/test-use-srfi.in:
* am/guilec:
* check-guile.in: Revert back to normal guile invocation.

* libguile/Makefile.am: Don't make a stack calibration file, as the
  getrlimit-based limit setting should work fine.
2009-03-27 15:51:16 -07:00
Andy Wingo
ec900eacb7 getrlimit-based stack limits
* libguile/debug.c (init_stack_limit): Initialize the stack limit based
  on operating system limits (via getrlimit(2)), or 1 MB -- whichever is
  smaller.
2009-03-27 15:44:17 -07:00
Andy Wingo
4ea9429edc add getrlimit and setrlimit wrappers
* README: Some rewording.

* configure.in: Check for getrlimit and setrlimit.

* libguile/posix.h:
* libguile/posix.c: Add some getrlimit and setrlimit wrappers. They're
  documented, but I suspect something else has to be done to get them
  into the manual.
2009-03-27 15:06:41 -07:00
Ludovic Courtès
0fe95f9c4c Improve wording in `libguile/Makefile.am' regarding stack calibration.
* libguile/Makefile.am (stack-limit-calibration.scm): Improve wording of
  the comment.  Suggested by Neil Jerram.
2009-03-27 09:50:06 +01:00
Ludovic Courtès
7ca96180f0 Run the stack calibration script before running the compiler.
* am/guilec (.scm.go): Use `pre-inst-guile' and load
  `stack-limit-calibration.scm'.  This is particularly useful when
  building the first `.go' files where the compiler is run using the
  interpreter, which may end up using a lot of stack space.

* libguile/Makefile.am (BUILT_SOURCES): Add
  `stack-limit-calibration.scm'.
  (TESTS, TESTS_ENVIRONMENT): Remove.
  (stack-limit-calibration.scm): Prepend `-' so that any errors during
  the calibration are ignored.
2009-03-26 19:17:26 +01:00
Ludovic Courtès
6cc323e2ff Remove multiple definition of `scm_i_marking'.
* libguile/private-gc.h (scm_i_marking): Turn definition into a
  declaration.
  (scm_mark_all): Mark as `SCM_INTERNAL'.

* libguile/gc-mark.c (scm_i_marking): New definition.
2009-03-26 18:47:28 +01:00
Ludovic Courtès
020348bb87 Include <alloca.h> in `gsubr.c'.
* libguile/gsubr.c: Include <alloca.h>.  Reported by Carlo Bramini
  <carlo.bramix@libero.it>.
2009-03-24 23:37:41 +01:00
Ludovic Courtès
49c9839eae Remove unneeded SMOB mark procedure in `i18n.c'.
* libguile/i18n.c (smob_locale_mark): Remove.
  (scm_init_i18n): Remove `scm_set_smob_mark ()' call.
2009-03-22 16:20:53 +01:00
Ludovic Courtès
85d7012ec3 Remove references to `scm_in_heap_p ()'.
* libguile/gc.c (scm_i_expensive_validation_check): Don't call
  `scm_in_heap_p ()'.  Cells don't necessarily live in the heap
  nowadays.

* libguile/gc.h (scm_in_heap_p): Remove declaration.
2009-03-22 16:13:12 +01:00
Ludovic Courtès
3d94d862f8 Remove unneeded VM SMOB mark/free procedures.
* libguile/vm.c (vm_mark_stack, vm_cont_mark, vm_cont_free, vm_mark,
  vm_free): Remove.
  (scm_bootstrap_vm): Remove corresponding `scm_set_smob_mark ()' and
  `scm_set_smob_free ()' calls.

* libguile/frames.c (vm_frame_mark, vm_frame_free): Remove.
  (scm_bootstrap_frames): Remove `scm_set_smob_mark ()' and
  `scm_set_smob_free ()' calls.

* libguile/objcodes.c (objcode_mark): Remove.
  (scm_bootstrap_objcodes): Remove call to `scm_set_smob_mark ()'.

* libguile/programs.c (program_mark): Remove.
  (scm_bootstrap_programs): Remove call to `scm_set_smob_mark ()'.
2009-03-22 16:00:10 +01:00
Ludovic Courtès
d9e59f894e Merge branch 'master' into boehm-demers-weiser-gc
Conflicts:
	libguile/continuations.c
	libguile/gc-freelist.c
	libguile/gc-mark.c
	libguile/symbols.c
	libguile/threads.c
	module/ice-9/boot-9.scm
2009-03-22 15:28:35 +01:00
Andy Wingo
17dd267a35 fix casts to unsigned long in objcodes.c
* libguile/objcodes.c (scm_c_make_objcode_slice): Fix casts to unsigned
  long.
2009-03-20 16:20:00 +01:00
Ludovic Courtès
05588a1ace Have `scm_take_locale_symbol ()' return an interned symbol (fixes bug #25865).
* libguile/symbols.c (intern_symbol): New function, with code formerly
  duplicated in `scm_i_c_mem2symbol ()' and `scm_i_mem2symbol ()'.
  (scm_i_c_mem2symbol, scm_i_mem2symbol): Use it.
  (scm_take_locale_symboln): Use `intern_symbol ()'.  This fixes
  bug #25865.

* test-suite/standalone/Makefile.am
  (test_scm_take_locale_symbol_SOURCES,
  test_scm_take_locale_symbol_CFLAGS,
  test_scm_take_locale_symbol_LDADD): New variables.
  (check_PROGRAMS, TESTS): Add `test-scm-take-locale-symbol'.
2009-03-19 22:17:40 +01:00
Andy Wingo
aeeff258c6 non-srcdir build fixes
* guile-tools.in: Fix the checks to account for non-srcdir builds.

* libguile/frames.c:
* libguile/objcodes.c:
* libguile/programs.c:
* libguile/instructions.c:
* libguile/vm.c: Fix snarf-includes to cope with non-srcdir builds.

* libguile/instructions.h:
* libguile/instructions.c: Fix the stubs inclusion to be non-srcdir
  compatible.

* libguile/vm-expand.h (VM_DEFINE_INSTRUCTION): Fix some things so as not
  to require the instructions.h defintitions, since we have the codes
  already. Not important tho :)

* pre-inst-guile-env.in: Minor tweak that should have no effect.

* test-suite/standalone/Makefile.am (all-local): Remove a chmod +x step,
  the configure.ac rule should do that if necessary.
2009-03-17 16:47:55 +01:00
Andy Wingo
8992a9e318 try a new way of checking byte order 2009-03-17 16:47:50 +01:00
Andy Wingo
bb06fceef0 Merge commit 'cb9d473112' into vm-check 2009-03-17 16:41:01 +01:00
Andy Wingo
3b91e017e3 Merge commit 'e20d7001c3' into vm-check
Conflicts:

	libguile/stacks.c
2009-03-17 16:40:52 +01:00
Andy Wingo
325226dad9 fix marking of double-cell subrs
* libguile/gc-mark.c (scm_gc_mark_dependencies): Mark the name, generic,
  and properties of subrs.
2009-03-17 16:36:20 +01:00
Andy Wingo
ccb6d6903d Merge commit 'e092357058' into vm-check 2009-03-17 16:10:14 +01:00
Andy Wingo
3e64d235e9 Merge commit 'feccd2d310' into vm-check 2009-03-17 16:09:41 +01:00
Andy Wingo
b07a3cfda1 Merge commit 'cce8b2ce93' into vm-check 2009-03-17 16:09:02 +01:00
Andy Wingo
51ab250ff4 Merge commit '95a040cd2b' into vm-check 2009-03-17 16:05:47 +01:00
Andy Wingo
c872cc2f37 Merge commit '6290d3f109' into vm-check 2009-03-17 16:05:41 +01:00
Andy Wingo
80a7d5dc8e Merge commit '5bb2d903b9' into vm-check 2009-03-17 16:05:37 +01:00
Andy Wingo
798e66ab10 Merge commit '04795a1cb2' into vm-check 2009-03-17 16:04:04 +01:00
Andy Wingo
997eda2a30 Merge commit '202271f291' into vm-check 2009-03-17 16:01:35 +01:00
Andy Wingo
3924b91748 Merge commit 'ab878b0f8e' into vm-check 2009-03-17 15:57:07 +01:00
Andy Wingo
a5720988bb Merge commit 'cbee5075d6' into vm-check 2009-03-17 15:56:31 +01:00
Andy Wingo
0bf0d96017 Merge commit '32a2609de0' into vm-check 2009-03-17 15:56:22 +01:00
Andy Wingo
a37593c7c8 Merge commit 'e95d11110b' into vm-check 2009-03-17 15:54:42 +01:00
Andy Wingo
fcbf843f56 Merge commit '8b0174c879' into vm-check 2009-03-17 15:52:41 +01:00
Ludovic Courtès
f0eb5ae6c1 Allow the static allocation of all types of subrs.
This is a follow-up to 46f9baf49a ("Allow
the static initialization of subrs.") and
e20d7001c3 ("Remove "compiled closures"
("cclos") in favor of a simpler mechanism.").

* libguile/procs.h (SCM_SUBR_ARITY_TO_TYPE): Return the appropriate type
  for gsubrs instead of returning -1.

* libguile/Makefile.am (snarf-gsubr.h): Remove target.
  (BUILT_SOURCES, nodist_modinclude_HEADERS, MOSTLYCLEANFILES): Remove
  `snarf-gsubr.h'.

* libguile/snarf.h (SCM_DEFINE)[SCM_SUPPORT_STATIC_ALLOCATION]: Don't
  include "libguile/snarf-gsubr.h".
  (SCM_DEFINE_SUBR_reqX_optY_rstZ): Remove.
2009-03-16 19:13:41 +01:00
Ludovic Courtès
a4167c920a Merge branch 'boehm-demers-weiser-gc' into bdw-gc-static-alloc
Conflicts:
	libguile/procs.h
2009-03-16 18:39:16 +01:00
Ludovic Courtès
f307fbcec2 Merge branch 'master' into boehm-demers-weiser-gc
Conflicts:
	libguile/gc-card.c
	libguile/gc-mark.c
2009-03-08 23:04:06 +01:00
Ludovic Courtès
8321ed20f6 Provide a C vararg interface to gsubr invocation.
* libguile/eval.i.c (CEVAL): Update calls to `scm_i_gsubr_apply ()' with
  a fixed number of arguments.  Use `scm_i_gsubr_apply_list ()' for
  calls with a list of arguments of unknown length.
  (SCM_APPLY): Use `scm_i_gsubr_apply_list ()' instead of
  `scm_i_gsubr_apply ()'.

* libguile/gsubr.c (gsubr_apply_raw): New.
  (scm_i_gsubr_apply): Change to take a C vararg list instead of a
  Scheme list.  Use `gsubr_apply_raw ()'.
  (scm_i_gsubr_apply_list): Use `gsubr_apply_raw ()'.

* libguile/gsubr.h (scm_i_gsubr_apply): Update prototype.
  (scm_i_gsubr_apply_list): New declaration.
2009-03-08 16:40:49 +01:00
Ludovic Courtès
d18f4d805e Slightly simplify gsubr invocation in the evaluator.
* libguile/eval.i.c (CEVAL): Remove the `cclon' label; replace jumps to
  `cclon' with `RETURN (scm_i_gsubr_apply (...))'.
2009-03-08 16:40:49 +01:00
Ludovic Courtès
a5f83fd21d Mark `scm_gsubr_apply ()' as internal.
* libguile/gsubr.h (scm_gsubr_apply): Renamed to...
  (scm_i_gsubr_apply): this.  Marked as `SCM_INTERNAL'.  Callers
  updated.
2009-03-02 00:20:44 +01:00
Ludovic Courtès
e20d7001c3 Remove "compiled closures" ("cclos") in favor of a simpler mechanism.
The idea is to introduce `gsubrs' whose arity is encoded in their type
(more precisely in the sizeof (void *) - 8 MSBs).  This removes the
indirection introduced by cclos and simplifies the code.

* libguile/__scm.h (CCLO): Remove.

* libguile/debug.c (scm_procedure_source, scm_procedure_environment):
  Remove references to `scm_tc7_cclo'.

* libguile/eval.c (scm_trampoline_0, scm_trampoline_1,
  scm_trampoline_2): Replace `scm_tc7_cclo' with `scm_tc7_gsubr'.

* libguile/eval.i.c (CEVAL): Likewise.  No longer make PROC the first
  argument.  Directly invoke `scm_gsubr_apply ()' instead of jump to the
  `evap(N+1)' label or call to `SCM_APPLY ()'.

* libguile/evalext.c (scm_self_evaluating_p): Remove reference to
  `scm_tc7_cclo'.

* libguile/gc-card.c (scm_i_sweep_card, scm_i_tag_name): Likewise.

* libguile/gc-mark.c (scm_gc_mark_dependencies): Likewise.

* libguile/goops.c (scm_class_of): Likewise.

* libguile/print.c (iprin1): Likewise.

* libguile/gsubr.c (create_gsubr): Use `unsigned int's for REQ, OPT and
  RST.  Use `scm_tc7_gsubr' instead of `scm_makcclo ()' in the default
  case.
  (scm_gsubr_apply): Remove calls to `SCM_GSUBR_PROC ()'.
  (scm_f_gsubr_apply): Remove.

* libguile/gsubr.h (SCM_GSUBR_TYPE): New definition.
  (SCM_GSUBR_MAX): Changed to 33.
  (SCM_SET_GSUBR_TYPE, SCM_GSUBR_PROC, SCM_SET_GSUBR_PROC,
  scm_f_gsubr_apply): Remove.

* libguile/procprop.c (scm_i_procedure_arity): Remove reference to
  `scm_tc7_cclo'; add proper handling of `scm_tc7_gsubr'.

* libguile/procs.c (scm_makcclo, scm_make_cclo): Remove.
  (scm_procedure_p): Remove reference to `scm_tc7_cclo'.
  (scm_thunk_p): Likewise, plus add proper `scm_tc7_gsubr' handling.

* libguile/procs.h (SCM_CCLO_LENGTH, SCM_MAKE_CCLO_TAG,
  SCM_SET_CCLO_LENGTH, SCM_CCLO_BASE, SCM_SET_CCLO_BASE, SCM_CCLO_REF,
  SCM_CCLO_SET, SCM_CCLO_SUBR, SCM_SET_CCLO_SUBR, scm_makcclo,
  scm_make_cclo): Remove.

* libguile/stacks.c (read_frames): Remove reference to `scm_f_gsubr_apply'.

* libguile/tags.h (scm_tc7_cclo): Remove.
  (scm_tc7_gsubr): New.
  (scm_tcs_subrs): Add `scm_tc7_gsubr'.
2009-03-02 00:20:43 +01:00
Ludovic Courtès
54d14084e2 Change `scm_gsubr_apply ()' to take the gsubr as its first argument.
* libguile/gsubr.c (scm_gsubr_apply): Make SELF the first argument
  instead of the first element of ARGS.

* libguile/gsubr.h: Update.

* libguile/eval.i.c (CEVAL): Update.
2009-03-02 00:20:43 +01:00
Ludovic Courtès
5aec3cf407 Add `DEBUG_GUARDIANS' macro for guardian finalization debugging.
* libguile/guardians.c (finalize_guarded): Use `#ifdef DEBUG_GUARDIANS'
  instead of `#if 0'.  Add "  guardian for %p vanished\n" debugging
  statement.
2009-02-28 16:27:19 +01:00
Andy Wingo
4054d93183 fix variable not initialized spurious warnings
* libguile/vm-i-system.c: Work around some spurious "variable not
  initialized" messages on Etch's gcc.
2009-02-25 00:21:03 +01:00
Andy Wingo
893be93f58 don't crash etch's gcc
* libguile/vm-engine.h: Don't allocate registers in registers if we're on
  Etch's GCC.
2009-02-25 00:16:26 +01:00
Andy Wingo
81d677eb12 implement break and continue, work around overly recursive pmatch expansion
* libguile/vm-i-system.c (goto/args): On a tail call to a different
  procedure, init the locals to valid scheme values. Shouldn't matter for
  well-compiled scheme, but inspecting uninitialized locals could give
  garbage, or badly-compiled code could cause a crash.

* module/language/Makefile.am (NOCOMP_SOURCES): For the moment, don't
  compile compile-ghil.scm. I need to fix this.

* module/language/ecmascript/compile-ghil.scm (load-toplevel): Sigh, and
  disable stack checking in the evaluator too. Grr.
  (comp): Implement (unnamed) break and continue.

* module/language/ecmascript/parse.scm (parse-ecmascript): Fix var
  statements in `for' -- though it still doesn't work.
2009-02-21 20:28:28 +01:00