1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-01 18:00:23 +02:00
Commit graph

18255 commits

Author SHA1 Message Date
Mark H Weaver
54cded99dc Fix 'weak-vector?' doc: Weak hash tables are not weak vectors.
* doc/ref/api-memory.texi (Weak vectors): In 'weak-vector?' entry, don't
  claim that weak hash tables are weak vectors.  Remove statement that
  weak vectors are mainly useful for implementing weak hash tables.
2014-02-07 16:26:38 -05:00
Andy Wingo
2f3b7e9a41 Fix truncated-print for uniform vectors
* module/ice-9/pretty-print.scm (truncated-print): Use bytevector?
  instead of uniform-vector?; the latter could be true for shared arrays
  with non-zero lower bounds.
2014-02-07 18:04:20 +01:00
Andy Wingo
85d3339d7e (srfi srfi-4 gnu) uses private define-bytevector-type from (srfi srfi-4)
* module/srfi/srfi-4/gnu.scm: Re-use implementation of
  define-bytevector-type from srfi-4.
2014-02-07 18:00:04 +01:00
Andy Wingo
b5f9ba49db Remove private unused duplicate c32/c64vector definitions
* module/srfi/srfi-4.scm: Remove vestigial definitions for c32vectors
  and c64vectors.  Those are defined in (srfi srfi-4 gnu).
2014-02-07 17:57:30 +01:00
Andy Wingo
a675a2e81b SRFI-4 predicates, length accessors only accept bytevectors (not arrays)
* module/srfi/srfi-4.scm (define-bytevector-type): For the predicates
  and length accessors, only accept bytevectors.  Since arrays don't
  work for u32vector-ref et al, they shouldn't pass u32vector?.
2014-02-07 17:53:01 +01:00
Andy Wingo
9db57a19e1 Merge commit '9b5da400dd'
Conflicts:
	libguile/vectors.c
	test-suite/tests/weaks.test
2014-02-07 15:36:06 +01:00
Andy Wingo
cc620af7ca Merge commit '1e3fd6a0c8'
Conflicts:
	doc/ref/api-memory.texi
	libguile/weaks.c
	libguile/weaks.h
	module/ice-9/weak-vector.scm
2014-02-07 15:27:28 +01:00
Andy Wingo
7affd3141b Merge commit '40a723a922' 2014-02-07 15:26:18 +01:00
Andy Wingo
01a8d00ca3 Merge commit 'c8e839cfeb' 2014-02-07 15:26:02 +01:00
Andy Wingo
479fc9a5ca Merge commit '5e69ceb7a6' 2014-02-07 15:25:49 +01:00
Andy Wingo
b00c9b2214 Merge commit '866af5da3d'
Removes the special arity handler, and instead relies on the procedure
returning the correct number of values.
2014-02-07 15:24:43 +01:00
Andy Wingo
cd36c69619 Merge commit '34e8987734'
Conflicts:
	module/Makefile.am
2014-02-07 15:13:22 +01:00
Andy Wingo
04f59ec2e7 Merge commit '58147d6780' 2014-02-07 15:12:35 +01:00
Andy Wingo
08224c56fa Merge commit 'e6c1c5f6cb' 2014-02-07 15:06:26 +01:00
Andy Wingo
ae7f13be4b Merge commit 'ca5e0414e9'
Conflicts:
	module/language/tree-il/primitives.scm
2014-02-07 15:05:55 +01:00
Andy Wingo
dc7a33fa87 Merge commit '60617d819d'
Conflicts:
	libguile/continuations.c
	libguile/eval.c
	libguile/goops.c
	libguile/instructions.c
2014-02-07 15:03:17 +01:00
Andy Wingo
a1aae2c3a0 Merge commit 'f6ddf827f8'
Conflicts:
	module/ice-9/boot-9.scm
	module/oop/goops.scm
2014-02-07 14:51:42 +01:00
Andy Wingo
0dbc5e571a Merge commit '45a28515c1' 2014-02-07 14:43:42 +01:00
Andy Wingo
7d484bfa15 Merge commit 'a5cbbaa66a' 2014-02-07 14:43:23 +01:00
Andy Wingo
e4eb0e39b4 Merge commit '8ca97482b0'
Conflicts:
	libguile/r6rs-ports.c
2014-02-07 14:42:40 +01:00
Andy Wingo
e140d85d53 Merge commit '122f24cc8a'
Conflicts:
	libguile/fports.c
	libguile/ports.c
2014-02-07 14:39:01 +01:00
Andy Wingo
c9647bfb7e Add weak-vector-length, weak-vector-ref, weak-vector-set!
* libguile/weak-vectors.h:
* libguile/weak-vectors.c (scm_is_weak_vector, scm_c_weak_vector_length):
  (scm_c_weak_vector_ref, scm_c_weak_vector_set_x): New interfaces for
  dealing with weak vectors from C.
  (scm_weak_vector_length, scm_weak_vector_ref, scm_weak_vector_set_x):
  New Scheme interfaces to weak vectors; to be used instead of
  vector-length, vector-ref, etc.

* module/ice-9/weak-vector.scm: Export the new interfaces.
2014-02-07 13:00:41 +01:00
Andy Wingo
9b5da400dd Deprecate vector-ref, vector-length, vector-set! on weak vectors
* libguile/vectors.c (scm_vector_length, scm_c_vector_length):
  (scm_c_vector_ref, scm_c_vector_set_x): Deprecate the use of these
  procedures on weak vectors.

* test-suite/tests/guardians.test:
* test-suite/tests/weaks.test: Adapt test suites.
2014-02-07 12:42:44 +01:00
Andy Wingo
1e3fd6a0c8 Add weak-vector-length, weak-vector-ref, weak-vector-set!
* libguile/weaks.c (scm_is_weak_vector, scm_c_weak_vector_length):
  (scm_c_weak_vector_ref, scm_c_weak_vector_set_x): New interfaces for
  dealing with weak vectors from C.
  (scm_weak_vector_length, scm_weak_vector_ref, scm_weak_vector_set_x):
  New Scheme interfaces to weak vectors; to be used instead of
  vector-length, vector-ref, etc.

* module/ice-9/weak-vector.scm: Export the new interfaces.

* doc/ref/api-memory.texi (Weak vectors): Document them.
2014-02-07 12:25:05 +01:00
Daniel Llorens
13af75bfe0 Fix bad uses of base and lbnd on rank 1 arrays
* libguile/array-map.c
   - rafill, ramap, rafe, racp: object from SCM_I_ARRAY_V always
     has base 0, lbnd 0 and inc 1; make use of this.
 * libguile/arrays.c
   - array_handle_ref, array_handle_set: idem.
   - array_get_handle: sanity check.
 * libguile/generalized-vectors.c
   - scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x:
     pos should be base when idx is lbnd. Furthermore, pos should be signed and
     have its overflow checked; do this by handling the job to
     scm_c_array_ref_1, scm_c_array_set_1_x.
 * libguile/generalized-vectors.h
   - fix prototypes.
2014-02-07 10:36:55 +01:00
Daniel Llorens
69843ac1b9 Reorder arrays.test
* test-suite/tests/arrays.test: dependence reordering: first sanity, then
  make-array, then array-equal?, then make-shared-array, shared-array-root,
  then the rest, many of which use make-shared-array.
2014-02-06 21:40:38 +01:00
Daniel Llorens
a6f8d3ddd8 Don't use scm_is_generalized_vector in transpose-array
* libguile/arrays.c (scm_transpose_array)
  - Use scm_c_array_rank(), which contains an implicit is_array test.
  - Handle the rank 0 case.
* test-suite/tests/arrays.test
  - Add test for rank 0 case.
  - Add failure test for non array argument.
2014-02-06 21:40:38 +01:00
Daniel Llorens
ee23869521 Tests for transpose-array
* test-suite/tests/arrays.test: test transpose-array for ranks 1, 2, 3.
2014-02-06 21:40:38 +01:00
Daniel Llorens
c2cb82f85a Don't use scm_is_generalized_vector in shared-array-root
* libguile/arrays.c: (scm_shared_array_root): replace check for
  scm_is_generalized_vector.
2014-02-06 21:40:38 +01:00
Daniel Llorens
1080ce25bc Tests for shared-array-root
* test-suite/tests/arrays.test: check shared-array-root against
  make-shared-array, array-contents.
2014-02-06 21:40:38 +01:00
Daniel Llorens
2bee653acb Remove unnecessary conditions in array constructors
* libguile/arrays.c: (scm_make_type_array, scm_from_contigous_typed_array,
  scm_from_contigous_array): Remove conditions known to be true.
2014-02-06 21:37:34 +01:00
Daniel Llorens
ac350da42c Remove generalized-vectors.h includes
* libguile/srfi-4.c, libguile/uniform.h: ditto.
2014-02-06 21:37:34 +01:00
Andy Wingo
828ada1326 Fix array-index-map refactor
* libguile/ramap.c (array_index_map_1): Fix to use array handle
  properly.
2014-02-06 21:36:15 +01:00
Andy Wingo
f0521cdabc Array-map refactors
* libguile/array-map.c (scm_ra_matchp): Refactor logic a bit.
  (array_index_map_1, array_index_map_n)
  (scm_array_index_map_x): Internally refactor array-index-map! to use
  separate implementations for rank 1 versus rank >1 arrays.
2014-02-06 20:44:47 +01:00
Daniel Llorens
16259ae3dc Don't use generalized-vector in array-map.c (II)
* libguile/array-map.c
  - replace scm_is_generalized_vector by scm_is_array && !SCM_I_ARRAY_P.
  - replace scm_c_generalized_vector_length by scm_c_array_length.
  - remove header.
2014-02-06 11:35:29 +01:00
Daniel Llorens
5e8c9d4ad5 Don't use generalized-vector in array-map.c (I)
* array-map.c: (AREF, ASET): Rename from GVREF, GVSET and use rank-1
  array accessors.
2014-02-06 11:33:08 +01:00
Daniel Llorens
c4aca3b9da Don't use generalized-vector functions in uniform.c
* libguile/uniform.c (scm_is_uniform_vector): Replace
  scm_is_generalized_vector and scm_generalized_vector_get_handle by
  scm_is_array and manual rank check.
  (scm_c_uniform_vector_length): Use scm_c_array_length.
  (scm_c_uniform_vector_ref): Use scm_c_array_ref_1.
  (scm_c_uniform_vector_set): Use scm_c_array_set_1_x.
  (scm_uniform_vector_writable_elements): Use scm_array_get_handle, and
  assert that the rank is 1.

* test-suite/test/arrays.test: Rename the uniform-vector-ref block to
  uniform-vector.  Exercise uniform-vector-length and shared arrays
  remaining uniform.

Modifications by Andy Wingo <wingo@pobox.com>.
2014-02-06 11:17:47 +01:00
Andy Wingo
1fadf369b8 Replace generalized-vector calls in array_handle_ref/set
* libguile/arrays.c: (array-handle-ref, array-handle-set): Use the
  rank-1 array accessors.
2014-02-06 11:02:20 +01:00
Daniel Llorens
9da9c22f84 Replace scm_c_generalized_vector_length in arrays.c
* libguile/arrays.c: (scm_array_contents, scm_make_shared_array):
  arrays are known of rank 1 so replace by scm_c_array_length.
2014-02-06 10:51:56 +01:00
Daniel Llorens
4a7dac39a9 Replace scm_c_generalized_vector_length in random.c
* libguile/random.c: (random:solid-sphere!): array is of known
  rank 1, so use scm_c_array_length() instead.
2014-02-06 10:49:23 +01:00
Daniel Llorens
7e7e3b7f06 Tests for array-copy!, empty case
* test-suite/tests/ramap.test: test array-copy! with empty destination.
  Fix uses of constant array as destination.
2014-02-06 10:44:02 +01:00
Mark H Weaver
40a723a922 Remove outdated documentation of LTDL_LIBRARY_PATH.
* doc/ref/guile-invoke.texi (Environment Variables): Remove
  documentation of 'LTDL_LIBRARY_PATH'.
2014-02-05 23:40:25 -05:00
Mark H Weaver
8acd457958 Document 'equal?' in list of R6RS incompatibilities.
* doc/ref/r6rs.texi (R6RS Incompatibilities): Mention that 'equal?'
  may not terminate when applied to cyclic datums.
2014-02-05 23:25:32 -05:00
Andy Wingo
b914b236c3 Various VM stack management fixes
* libguile/vm.c (vm_increase_sp): New interface, to increase the SP to
  some new level, possibly expanding the stack.
  (vm_push_sp, vm_restore_sp): Intefaces to vm_increase_sp.
  (vm_return_to_continuation): Don't throw an error if there's not
  enough space; instead, expand.
  (vm_reinstate_partial_continuation): Use the new helper.
  (return_unused_stack_to_os): Avoid off-by-one error (sp points to
  valid memory.)
  (scm_call_n): Never write beyond the sp.
2014-02-05 22:52:00 +01:00
Mark H Weaver
8a114e1b54 REPL Server: Remove unneeded error case in 'run-server'.
* module/system/repl/server.scm (run-server): Remove case that handled
  'interrupt' exceptions specially.  It is no longer needed since
  e6c8e6047e (REPL Server: Don't establish
  a SIGINT handler.)
2014-02-04 15:15:12 -05:00
Mark H Weaver
5e74217c7c REPL Server: Redirect warnings to client socket.
* module/system/repl/server.scm (serve-client): Use parameterize.
  Redirect warnings to client socket.
2014-02-04 15:15:00 -05:00
Mark H Weaver
c8e839cfeb Don't check HAVE_ALARM, which no longer exists.
* libguile/scmsigs.c (scm_alarm): Remove check for HAVE_ALARM.
  Conditionalize only on HAVE_DECL_ALARM.
2014-02-03 23:09:23 -05:00
Mark H Weaver
5e69ceb7a6 Update Gnulib to v0.1-77-gd9361da 2014-02-03 21:05:52 -05:00
Mark H Weaver
866af5da3d define-values: Blackhole 'dummy'; work around lack of toplevel hygiene.
* module/ice-9/boot-9.scm (define-values): Use 'generate-temporaries' to
  generate a fresh name for 'dummy', to work around the lack of hygiene
  for macro-introduced toplevel identifiers.  Blackhole 'dummy' to avoid
  keeping garbage alive.  Add more comments.
2014-02-02 21:43:35 -05:00
Andy Wingo
b3ae2b5068 Add VM and compiler support for calls to known procedures
* module/language/cps.scm ($callk): New expression type, for calls to
  known labels.  Part of "low CPS".
* module/language/cps/arities.scm:
* module/language/cps/closure-conversion.scm:
* module/language/cps/compile-bytecode.scm:
* module/language/cps/dce.scm:
* module/language/cps/dfg.scm:
* module/language/cps/effects-analysis.scm:
* module/language/cps/simplify.scm:
* module/language/cps/slot-allocation.scm:
* module/language/cps/verify.scm: Adapt call sites.

* libguile/vm-engine.c (call-label, tail-call-label): New instructions.
  Renumber the rest; this is an ABI change.

* libguile/_scm.h (SCM_OBJCODE_MINOR_VERSION):
* module/system/vm/assembler.scm (*bytecode-minor-version*): Bump.

* doc/ref/compiler.texi (CPS in Guile): Document $callk.
2014-02-02 23:19:22 +01:00