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

12610 commits

Author SHA1 Message Date
Jose A. Ortega Ruiz
aa49787b5e Improved handling of callers cache in (system xref).
* We cache callees in each module, and keep a list of modified
    ('tainted') modules, which is used to reconstruct the callers
    database incrementally.
  * `procedure-callers' now returns an a-list, keyed by module name.
2009-04-04 11:55:50 -07: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
a44c43368b add test case for load-extension bug, fix gdb-uninstalled-guile
* test-suite/standalone/test-extensions:
* test-suite/standalone/test-extensions-lib.c:
* test-suite/standalone/Makefile.am: Add a test case for the
  load-extension bug.

* meta/gdb-uninstalled-guile.in: Fix the path to include meta/.
2009-03-30 20:28:30 -07:00
Andy Wingo
9c0cd73e61 Merge branch 'wingo' 2009-03-28 22:31:20 -07:00
Andy Wingo
6ecae97fb8 fix duplicates in procedure-callers
* module/system/xref.scm (ensure-callers-db): OK! Since we can see the
  same variable twice, e.g. in different modules, keep a unified hash of
  seen vars and modules. Prevents duplicates in procedure-callers.
2009-03-28 22:21:00 -07:00
Andy Wingo
154a611669 fix spurious duplicates in procedure-callees and callers
* module/system/xref.scm (program-callee-rev-vars): It's possible to get
  duplicates when combining callees of inner procedures, so ignore dups.
  Quadratic, boo.
2009-03-28 21:57:47 -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
7f86474488 fix "linking" of guile-config
* meta/guile-config.in: Adjust "linking"; @bindir@ doesn't get fully
  expanded. So instead use a shell trampoline.
2009-03-27 16:11:43 -07:00
Andy Wingo
9893417165 fix check for guile-tools running uninstalled
* meta/guile-tools.in (mydir): Fix check for running uninstalled.
2009-03-27 16:01:12 -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
Andy Wingo
0b6d8fdc28 allow building against uninstalled guile; move some things to meta/
* README: Add more info about building against an uninstalled Guile.

* meta/: New directory. The proximate cause of its creation is that I
  want to be able to build external packages against uninstalled Guile,
  and to do that I need guile-tools in the PATH, but I don't want
  $top_builddir/libtool in the path. But it seems like a good
  reorganization, for things that are /about/ Guile: pkg-config files, m4
  files, guile-config... then we also include uninstalled info: the
  environment, the pre-inst-guile script, etc.

* meta/guile-1.8-uninstalled.pc.in: New pkg-config template. pkg-config
  prefers -uninstalled pkg-config files, if they are in its path.

* meta/Makefile.am:
* meta/ChangeLog-2008:
* meta/gdb-uninstalled-guile.in:
* meta/guile-1.8.pc.in:
* meta/guile-config.in:
* meta/guile.m4:
* meta/guile-tools.in: Moved to meta/.

* meta/guile.in: This is the new name of pre-inst-guile.in.

* meta/uninstalled-env.in: And this, pre-inst-guile-env.in.

* Makefile.am:
* am/guilec:
* am/pre-inst-guile:
* check-guile.in:
* configure.in:
* doc/ref/Makefile.am:
* gc-benchmarks/run-benchmark.scm:
* test-suite/standalone/Makefile.am:
* test-suite/standalone/README:
* testsuite/Makefile.am: Adapt to meta/ change.
2009-03-27 14:03:03 -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
fc0b6e29cc Fix testsuite/Makefile.am' for distcheck'.
* testsuite/Makefile.am (check_SCRIPTS): Remove, renamed to `TESTS'.
  (EXTRA_DIST): Add $(TESTS).
2009-03-25 00:23:23 +01:00
Ludovic Courtès
0ea47a3a09 Aggregate Makefile.am' files under examples/'.
* configure.in: Don't produce `examples/*/Makefile'.

* examples/Makefile.am (SUBDIRS): Remove.
  (EXTRA_DIST, AM_CFLAGS, AM_LIBS): New.
  (box/box, box/box.o, box-module/box, box-module/box.o, libbox.la,
  box-dynamic/box.lo, libbox-module.la, box-dynamic-module/box.lo,
  installcheck, CLEANFILES, clean-local): New targets, aggregated from
  `Makefile.am' files formerly in sub-directories.

* examples/check.test: New file, aggregated from `check.test' files in
  sub-directories.
2009-03-24 23:54:38 +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
80540f3914 speed up goops rehashing
* module/oop/goops/dispatch.scm (cache-try-hash!): Speed up goops
  rehashing, in theory. I haven't measured, though.
2009-03-20 16:20:00 +01:00
Andy Wingo
32e49fa355 fix interpreted methods with empty bodies
* module/oop/goops.scm (method): If a method has no body, subst in `(if
  #f #f)' instead of `(begin)', to please the memoizer.
2009-03-20 16:20:00 +01:00
Andy Wingo
4e2f1e9edd add generic method-formals; fixes to method-source
* module/oop/goops.scm (method-source): Don't throw an error if this
  method has no source.
  (method-formals): New generic function, the complement of
  method-specializers for introspection.
2009-03-20 16:20:00 +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
e0a3ad670b rework procedure-callers to stay correct as callees are redefined
* module/system/xref.scm (procedure-callers): Rework to calculate the
  callers of a *variable*, not of a value. This is because the
  module-observers only get fired when the module changes, not with the
  variables change values. Also accept either a variable, a symbol
  (resolved in the current module), or a modname . symname pair.
2009-03-18 01:49:28 +01:00
Andy Wingo
7eba9c99c2 doubly-weak callers db
* module/system/xref.scm (ensure-callers-db): Store the callers db as a
  doubly-weak hash table.
2009-03-18 00:46:16 +01:00
Andy Wingo
b190790255 implement procedure-callers
* module/system/xref.scm: Implement procedure-callers, as the inverse of
  procedure-callees, with a cache invalidated by changes in modules.

* module/ice-9/boot-9.scm (module-use!): Don't poke module observers when
  module-use! is called for an already-used module.
2009-03-18 00:44:26 +01:00
Andy Wingo
4f96d42b2d add xref stub for interpreted procedures
* module/system/xref.scm (hacky-procedure-callees): Add a
  procedure-callees implementation for procedures with source, that
  currently does nothing. Not sure what to do, going into the future.
2009-03-17 23:16:35 +01:00
Andy Wingo
e04894e1ac add xref.scm
* module/system/xref.scm: New module, will provide callers/callees info.

* module/Makefile.am (SOURCES): Add xref.scm.
2009-03-17 23:11:56 +01:00
Andy Wingo
c9d5bfad9e tweaks to the un-integrated test cases
* testsuite/Makefile.am: Sortof turn these VM tests into more
  automake-like tests. Needs further work.
2009-03-17 16:48:01 +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
06dc937dd7 decompile source info into <glil-source> annotations.
* module/language/glil/decompile-assembly.scm (decompile-load-program):
  Decompile source information into <glil-source> annotations.
2009-03-17 16:47:43 +01:00
Andy Wingo
ff33605d6a fix bug serializing filenames in source locations
* module/language/glil/compile-assembly.scm (limn-sources): Fix bug
  whereby filename was serialized as a ("foo") instead of "foo".
2009-03-17 16:47:35 +01:00
Andy Wingo
eb7ea0450a tweaks to asm->glil decompiler, perhaps fix a (program-source p 0) bug
* module/language/ghil/compile-glil.scm (codegen): Push a program's
  source locations before copying external args to heap -- perhaps fixes
  (program-source p 0) for some programs.

* module/language/glil/decompile-assembly.scm (decompile-load-program):
  Take another arg, the object vector. Emit <glil-bind> and <glil-unbind>
  correctly. Properly unparse properties. Just have to deal with source
  locations now.
2009-03-17 16:47:28 +01:00
Andy Wingo
860f569a6a add assembly->glil decompiler
* module/language/glil/decompile-assembly.scm: A first pass at an
  assembly->glil decompiler. Works for a small subset of programs.

* module/Makefile.am (GLIL_LANG_SOURCES):
* module/language/glil/spec.scm (glil): Add the decompiler.
2009-03-17 16:47:24 +01:00
Andy Wingo
a3f0ff0faf update disassembler for changes to decompiler
* module/language/assembly/disassemble.scm (disassemble-load-program)
  (code-annotation): And update the disassembler for changes to
  decompiler.
2009-03-17 16:47:19 +01:00
Andy Wingo
6fe6a2a27d parse jumps as labels when decompiling bytecode->assembly
* module/language/assembly/decompile-bytecode.scm (decode-load-program):
  Parse out jumps as labels.
2009-03-17 16:47:14 +01:00
Andy Wingo
1dcf33280d procedure-arity on vm-compile apply: verily, unresolved.
* test-suite/tests/procprop.test ("procedure-arity"): Procedure-property
  'arity on "apply" will fail if "apply" is a program. I suggest that
  procedure-property is actually the wrong interface for this; if we even
  want to preseve the old arity forms, we should have an accessor for
  arity directly that the VM can implement. But in the meantime throw
  this nasty error while we decide.
2009-03-17 16:46:43 +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