1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 11:50:28 +02:00
Commit graph

2091 commits

Author SHA1 Message Date
Andy Wingo
0dd7c54075 Merge remote-tracking branch 'origin/stable-2.0'
Conflicts:
	libguile/deprecated.c
	libguile/ports.c
	libguile/ports.h
	libguile/strports.c
	test-suite/tests/cse.test
2012-06-22 13:18:02 +02:00
Andy Wingo
2874f66017 add char->integer, number->string etc to interesting primitives
* module/language/tree-il/primitives.scm (*interesting-primitive-names*):
  (*effect-free-primitives*): Add string->number, number->string,
  integer->char, and char->integer to allow for constant folding and
  better effects analysis.
2012-06-22 12:33:20 +02:00
Andy Wingo
5cfa385db7 update version-etc copyright year
* module/ice-9/command-line.scm (version-etc): Update copyright year to
  2012.
2012-06-22 12:33:20 +02:00
Andy Wingo
4d1ae11279 cse: expressions evaluated for effect do not provide predicates
* module/language/tree-il/cse.scm (cse): When trying to fold
  conditionals, only look at entries in the database that were added in
  test context.

* test-suite/tests/cse.test ("cse"): Add a test case.
2012-06-22 12:33:20 +02:00
Andy Wingo
378daa5fa5 scandir: select? takes basenames, operates on (sub)dirs also
* module/ice-9/ftw.scm (scandir): Run the select? procedure on all
  items, including subdirs and the `.' and `..' entries.  Pass it the
  basename of the file in question instead of the full name.

* test-suite/tests/ftw.test ("scandir"): Adapt expectation for the .test
  selector.  Add test for a selector that rejects everything.
2012-06-22 12:33:20 +02:00
Ludovic Courtès
ecb48dccba Make SRFI-6 string ports Unicode-capable.
Partly addresses <http://bugs.gnu.org/11197>.
Reported by Klaus Stehle <klaus.stehle@uni-tuebingen.de>.

* module/srfi/srfi-6.scm (open-input-string, open-output-string): New
  procedures.

* test-suite/tests/srfi-6.test ("open-input-string")["read-char,
  Unicode"]: New test.
  ("open-output-string")["λ"]: New test.
2012-06-20 15:50:27 +02:00
Ludovic Courtès
f3b312a19d Fix cross-compilation of GOOPS-using code.
Fixes <http://bugs.gnu.org/11645>.
Reported by Bogdan A. Marinescu <bogdan.a.marinescu@intel.com>.

* module/oop/goops/dispatch.scm (compute-dispatch-procedure)[comp]:
  Wrap `compile' call in (with-target %host-type ...).
2012-06-20 01:11:44 +02:00
Sjoerd van Leent
6b5e918e4f Fix unbound variables and unbound values
* module/language/ecmascript/base.scm: fix two wrong variable names and a wrong
  number of arguments in a function call.
2012-06-08 21:21:08 -04:00
Ludovic Courtès
0a3ac81a1c Update (ice-9 match) from Chibi-Scheme.
Fixes <http://bugs.gnu.org/10651>.

* module/ice-9/match.upstream.scm: Update.
2012-06-08 12:42:08 +02:00
Ludovic Courtès
9f6e3f5a99 Have string ports honor `%default-port-conversion-strategy'.
* libguile/strports.c (scm_mkstrport): Remove initialization of
  `pt->ilseq_handler'.

* module/ice-9/pretty-print.scm (truncated-print)[ellipsis]: Set
  %DEFAULT-PORT-CONVERSION-STRATEGY to 'error.

* test-suite/tests/ports.test ("string
  ports")["%default-port-conversion-strategy is honored"]: New test.
  ["wrong encoding"]: Rename to...
  ["wrong encoding, error"]: ... this.  Explicitly set
  %DEFAULT-PORT-CONVERSION-STRATEGY to 'error.  Return #f when no
  exception is raised.
2012-05-31 00:54:21 +02:00
Andy Wingo
747747ee06 Merge remote-tracking branch 'origin/stable-2.0'
This commit removes code that was newly deprecated in stable-2.0.

Conflicts:
	libguile/deprecated.c
	libguile/deprecated.h
	libguile/modules.c
	module/ice-9/boot-9.scm
	module/ice-9/deprecated.scm
2012-05-23 12:38:56 +02:00
Andy Wingo
2de74cb56e finish deprecating eval closures
* libguile/deprecated.h:
* libguile/deprecated.c (scm_eval_closure_lookup)
  (scm_standard_eval_closure, scm_standard_interface_eval_closure)
  (scm_eval_closure_module): Deprecate these, as they are unused.

* libguile/modules.h:
* libguile/modules.c: Remove deprecated code.

* module/oop/goops/util.scm (top-level-env, top-level-env?): Deprecate.

* module/ice-9/deprecated.scm (set-system-module!): Deprecate.
  (module-eval-closure): Deprecate, by overriding the core definition to
  return a fresh eval closure.

* module/ice-9/boot-9.scm (make-module): Don't set an eval closure on
  the module.
  (the-root-module, the-scm-module): Don't call set-system-module!.
2012-05-23 12:29:15 +02:00
Andy Wingo
74bbb99457 Merge remote-tracking branch 'origin/stable-2.0'
Conflicts:
	module/language/tree-il/analyze.scm
	module/language/tree-il/effects.scm
	module/language/tree-il/fix-letrec.scm
	module/language/tree-il/peval.scm
	test-suite/tests/cse.test
	test-suite/tests/peval.test
2012-05-21 19:20:27 +02:00
Andy Wingo
15bb587f45 fix arity check for applicable structs
* module/language/tree-il/analyze.scm (validate-arity): Fix for
  applicable structs.  Applicable structs are procedures, but not every
  struct has a first slot, and not every struct with a procedure in its
  first slot is applicable.  Besides, the approach in this patch gives
  better errors.
2012-05-21 18:06:34 +02:00
Andy Wingo
6ccc667896 rearrange scheme compilation order
* module/Makefile.am (SOURCES): Move vlists, srfi-1, peval, and cse up
  in the compilation order.  These are exercised a lot in the compiler.
2012-05-21 17:48:45 +02:00
Andy Wingo
688291fe19 add guile-2.2 feature
* module/ice-9/boot-9.scm (%cond-expand-features): Add guile-2.2
  feature.
2012-05-17 10:38:54 +02:00
Andy Wingo
63216d80de cse passes a lookup procedure to the effects analyzer
* module/language/tree-il/cse.scm (cse): Arrange to pass a lookup
  procedure to compute-effects, for better effects analysis.
2012-05-15 17:23:06 +02:00
Andy Wingo
83bd53abb6 better effects analysis for calls to lexically bound procedures
* module/language/tree-il/effects.scm (make-effects-analyzer): The
  analyzer will take an optional second argument, a lookup procedure of
  type sym -> exp.  This can let the analyzer dig into calls to
  lexically bound procedures.
2012-05-15 17:22:05 +02:00
Andy Wingo
86e4479abb fix-letrec tweak
* module/language/tree-il/fix-letrec.scm (make-sequence*, fix-letrec!):
  When turning unreferenced bindings into sequences, don't bother
  emitting trivially constant expressions in effect position.
2012-05-15 17:21:02 +02:00
Andy Wingo
dc1ee62046 CSE in tail position
* module/language/tree-il/cse.scm (singly-valued-expression?, cse):
  Allow CSE to propagate lexicals to tail positions, if the expression
  is singly-valued.
2012-05-15 17:20:01 +02:00
Andy Wingo
9b1750ed42 stronger conditional optimization
* module/language/tree-il/peval.scm (peval): If we can lift one common
  test, see if we can lift others as well.

* test-suite/tests/peval.test: Add a test.
2012-05-15 12:25:37 +02:00
Andy Wingo
f49fd9afd6 optimization for chain of if expressions with common tests
* module/language/tree-il/peval.scm (peval): Optimize common tests in
  chains of "if" expressions, like those generated by matchers.

* test-suite/tests/peval.test ("partial evaluation"): Add a test.
2012-05-15 12:25:37 +02:00
Andy Wingo
1fb39dc55f mvoe tree-il=? and tree-il-hash to tree-il.scm
* module/language/tree-il.scm (tree-il=?, tree-il-hash): Move these
  helpers here, from cse.scm.  Export them.

* module/language/tree-il/cse.scm (cse): Adapt accordingly.
2012-05-15 12:25:37 +02:00
Ludovic Courtès
8a74ffe88a Have -Wformat' remain quiet for any procedure called _' or `N_'.
* module/language/tree-il/analyze.scm (proc-ref?)[special?]: New
  procedure.
  Return #t for any toplevel-ref of `_'.

* test-suite/tests/tree-il.test ("warnings")["format"]("non-literal
  format string using gettext as top-level _"): New test.
2012-05-12 16:11:51 +02:00
Ludovic Courtès
2c5f0bdb0e Have `-Warity-mismatch' handle applicable structs.
* module/language/tree-il/analyze.scm (arity-analysis): Honor applicable
  structs.

* test-suite/tests/tree-il.test ("warnings")["arity
  mismatch"]("top-level applicable struct", "top-level applicable struct
  with wrong arguments"): New tests.
2012-05-12 15:58:23 +02:00
Ludovic Courtès
4c98474782 Improve special-casing of _' in -Wformat'.
* module/language/tree-il/analyze.scm (proc-ref?): Check for
  SPECIAL-NAME in the <module-ref> and <lexical-ref> cases too.

* test-suite/tests/tree-il.test ("warnings")["format"]("non-literal
  format string using gettext as module-ref _", "non-literal format
  string using gettext as lexical _"): New tests.
2012-05-12 15:31:28 +02:00
Andy Wingo
ee6207d6f5 Merge remote-tracking branch 'origin/stable-2.0' 2012-05-11 14:31:17 +02:00
Andy Wingo
da874e5415 fix more assumptions that the frame-procedure is a procedure
* libguile/frames.c (scm_frame_source, scm_frame_previous):
* libguile/stacks.c (scm_make_stack):
* module/ice-9/boot-9.scm (exception-printers):
* module/system/vm/frame.scm (frame-call-representation): Fix more
  assumptions that frame-procedure is a program, or even a procedure.
2012-05-11 14:30:43 +02:00
Andy Wingo
968a9add65 Merge remote-tracking branch 'local-2.0/stable-2.0'
Conflicts:
	libguile/vm-engine.c
	libguile/vm-i-system.c
	libguile/vm.c
2012-05-10 13:02:11 +02:00
Andy Wingo
67b699cc77 refactor vm application of non-programs; boot continuation refactor
* libguile/frames.c (scm_frame_instruction_pointer):
* module/system/vm/frame.scm (frame-bindings):
  (frame-next-source, frame-call-representation): Fix a few locations
  that thought that the frame-procedure will always be a VM
  procedure.  This will not not be the case when traversing the stack of
  an application of a non-procedure.

* libguile/vm-i-system.c (call, tail-call, mv-call): Instead of
  special-casing structs and smobs at these call sites, just set up the
  stack, and jump to a generic apply loop if the proc is not a program.

* libguile/vm-engine.c: The generic apply loop is here.  Also, the boot
  program is now simply a boot continuation, and can handle any number
  of arguments.

* libguile/vm.c (make_boot_program): Update the code that makes the boot
  continuation.
2012-05-10 12:59:45 +02:00
Andy Wingo
a3ded46520 Merge remote-tracking branch 'origin/stable-2.0'
Conflicts:
	libguile/ports.c
	libguile/ports.h
	libguile/read.c
	libguile/vm-i-system.c
2012-05-08 22:43:04 +02:00
Andy Wingo
0eba699d12 docbook->texi fix
* module/texinfo/docbook.scm (*sdocbook->stexi-rules*): Only convert
  ulink to uref if there is a URL attribute.
2012-05-08 16:03:54 +02:00
Andy Wingo
520850ad27 (texinfo docbook) support for @acronym
* module/texinfo/docbook.scm (*sdocbook->stexi-rules*): Recognize
  "acronym" as parsing to the @acronym texinfo command.
2012-05-07 20:39:14 +02:00
Andy Wingo
be52f329b6 add support for texinfo parsed arguments, like @acronym
* module/texinfo.scm (texi-command-specs): Add a new kind of texinfo
  command, inline-text-args, a sort of a cross between inline-args,
  which are unparsed, and inline-text, which is.  Perhaps this should
  supersede inline-args at some point.  In any case, add acronym as an
  inline-text-args element.
  (inline-content?, arguments->attlist, complete-start-command)
  (parse-inline-text-args, make-dom-parser): Adapt for
  inline-text-args.

* module/texinfo/serialize.scm (inline-text-args): Add serialization for
  @acronym.

* test-suite/tests/texinfo.test ("test-texinfo->stexinfo"): Add some
  tests.
2012-05-07 20:29:14 +02:00
Andy Wingo
9d8a10a94c Merge remote-tracking branch 'origin/stable-2.0'
Conflicts:
	test-suite/tests/cse.test
2012-04-26 23:40:57 +02:00
Andy Wingo
0ea5ba9ab9 Merge commit 'f66cbb99ee' 2012-04-26 23:36:02 +02:00
Andy Wingo
79d29f96c7 Merge commit '1cd63115be'
Conflicts:
	module/language/tree-il/peval.scm
	test-suite/tests/peval.test
2012-04-26 23:08:14 +02:00
Andy Wingo
c46e0a8a59 Merge commit 'de1eb420a5'
Conflicts:
	module/language/tree-il/primitives.scm
	test-suite/tests/tree-il.test
2012-04-26 22:56:45 +02:00
Andy Wingo
e7501d4a68 Merge commit 'd10f7b572c'
Conflicts:
	libguile/smob.c
	libguile/smob.h
	test-suite/tests/tree-il.test
2012-04-26 22:17:47 +02:00
Andy Wingo
4bd53c1ba3 vlist performance improvements; allocate vhash data inline
* module/ice-9/vlist.scm (make-block): If we are making a hash table,
  allocate it inline with the contents.  Otherwise don't even add a
  pointer to the block.
  (block-hash-table?): New internal accessor.
  (block-ref*): Remove.  Vhash entries are no longer wrapped.
  (block-ref):
  (block-hash-table-next-offset):
  (block-hash-table-set-next-offset!):
  (block-hash-table-ref):
  (block-hash-table-set!):
  (block-hash-table-add!): Adapt to take content vector explicitly, and
  to expect the hash table inline with the contents.  Some of these
  accessors are new.  Adapt callers.
  (assert-vlist): New helper.
  (vlist-cons): Update comment.
  (vhash?): Update scheme to allocate the hash table and chain links
  inline with the contents.
  (%vhash-fold*, %vhash-assoc): Rewrite to be more performant.
2012-04-23 21:52:25 +02:00
Andy Wingo
985702f713 avoid emitting degenerate aliases in peval
* module/language/tree-il/peval.scm (<operand>, make-operand)
  (make-bound-operands, peval): Avoid emitting needless aliases in
  degenerate cases of let.
  (visit-operand): If we visit an operand with a fresh counter and have
  to abort, record that fact.

* test-suite/tests/peval.test ("partial evaluation"): Add a test.
2012-04-23 21:52:25 +02:00
Andy Wingo
f6a554a6aa vlist-cons micro-optimizations
* module/ice-9/vlist.scm (set-block-next-free!): Define this instead of
  increment-block-next-free!.
  (block-append!): Refactor to take an offset, and only append if the
  offset is the next free value, and there is space in the block.
  (block-cons): Refactor to not be a loop.  The partial evaluator would
  have to understand effects analysis in order to be able to unroll it,
  and there's at most one recursion.

  Recovers the performance loss resulting from the previous commit.
2012-04-23 21:52:25 +02:00
Andy Wingo
299ce911f9 slight vlist refactor
* module/ice-9/vlist.scm: Use define-inlinable instead of define-inline,
  to ensure strict argument evaluation.  There is a slight performance
  penalty, but I hope subsequent hacks make it up.
2012-04-23 21:52:25 +02:00
Andy Wingo
f66cbb99ee new pass: cse
* module/language/tree-il/cse.scm: New pass, some simple common
  subexpression elimination with effects analysis.

* test-suite/tests/cse.test: New test.

* test-suite/Makefile.am:
* module/Makefile.am: Adapt.
2012-04-23 21:52:24 +02:00
Andy Wingo
73001b06f6 fix replacement of CSE with lexical-ref
* module/language/tree-il/cse.scm (cse): Fix dominator unrolling for
  lexical propagation.

* test-suite/tests/cse.test ("cse"): Add test.
2012-04-23 21:52:24 +02:00
Andy Wingo
a36e7870c3 peval uses effects analysis
* module/language/tree-il/peval.scm: Use effects analysis from (language
  tree-il effects) instead of our own constant-expression?.  Eagerly
  mark assigned lexicals as non-copyable.
2012-04-23 21:52:24 +02:00
Andy Wingo
3db8f60977 cse hashing tweak
* module/language/tree-il/cse.scm (cse): Minor tweak to hash depth based
  on time profile of compiling peval.scm.
2012-04-23 21:52:24 +02:00
Andy Wingo
036c366dc2 more inlining in effects.scm
* module/language/tree-il/effects.scm (define-effects)
  (&no-effects, &all-effects-but-bailout):
  (cause, &depends-on, &causes, depends-on-effects?)
  (causes-effects?, effects-commute?): Add ham-fisted inlining.
2012-04-23 21:52:24 +02:00
Andy Wingo
b3f25e6269 better primitives support for bit operations
* module/language/tree-il/primitives.scm
  (*interesting-primitive-names*): Add lognot.
  (*effect-free-primitives*): Add ash, logand, logior, logxor, and
  lognot.
  (logior, logand): Define associative expanders.
2012-04-23 21:52:24 +02:00
Andy Wingo
f7d8efc630 disable optimizations in goops dispatch procedures
* module/oop/goops/dispatch.scm: Disable peval and cse.
2012-04-23 21:52:24 +02:00