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

19988 commits

Author SHA1 Message Date
Andy Wingo
e9729cbb2c define* usage in boot-9
* module/ice-9/boot-9.scm (make-module, make-mutable-parameter): Use
  define*.
2010-08-29 11:59:10 -07:00
Andy Wingo
a2220d7ea4 add flag to vtables to indicate that their layout is valid
* libguile/struct.h (SCM_VTABLE_FLAG_VALIDATED): New flag, indicates
  that the layout of a vtable has been validated. The other flags have
  been renumbered.

* libguile/struct.c (scm_i_struct_inherit_vtable_magic): Set the
  VALIDATED flag if everything goes through.
  (scm_struct_vtable_p): If the struct should be a vtable but isn't
  validated, throw an error.
  (scm_make_vtable_vtable): Validate the incoming user_fields layout
  bit. Set the VALIDATED flag.
  (scm_c_make_structv): Add a comment about the case in which we delay
  scm_i_struct_inherit_vtable_magic.
2010-08-29 11:41:42 -07:00
PCPA
e98ff58a7e Also reset alloca_slack after jit_prolog in i386.
There is no guarantee of order of jit_function calls, so, it must
reset it for every function. This should correct possible issues in
OS/X, and will be required when i386 code is updated to use MMX/SSE*
registers, possibly as some kind of extended interface, and then,
would require 16 bytes aligned stack. This is already an issue if
calling C code that uses SSE, and currently requires "manually"
padding the stack by using jit_allocai.
2010-08-29 11:55:48 +02:00
PCPA
d2239c223a Revert change aliasing jit_movi_p to jit_movi_ul.
It cannot "optimize" to use 32 bits opcode or zero the register
because that would break jit_patch_movi.
2010-08-29 11:55:11 +02:00
PCPA
3749bc71d8 Correct ALU add and sub operations with 64 bit immediate operands.
The problems would also happen with 32 bit unsigned operands that would
happen to have the topmost bit set, so, now it only uses 32 bit immediates
when bit 31 is not set.
  This patch correct all the issues found by the test cases alu_add.tst and
alu_sub.tst in http://code.google.com/p/exl/source/browse/trunk/check/lightning
2010-08-29 11:55:11 +02:00
PCPA
7b330c81b9 Define some extra fp-common macros when sizeof(long) == sizeof(int). 2010-08-29 11:55:11 +02:00
PCPA
8665ce16da Change _ASM_SAFETY register width check to accept valid alternate values.
The checks were moved from i386/asm.h to i386/asm-{32,64}.h, as well
as some macros from core-{32,64}.h. Now it checks if the value is in the
range of a valid register, and in the proper register class, what should
prevent the common mistake of calling a jit*r_x macro passing an immediate
as argument.
  Now it pass lightning's make check in i386/x86_64, as well as all test
cases in http://code.google.com/p/exl/source/browse/trunk/check/lightning
when compiled with -D_ASM_SAFETY.
2010-08-29 11:55:11 +02:00
Paulo Cesar Pereira de Andrade
d4a2a1ba07 Correct branches and several ALU operations with 64 immediates
jit_bra_l had the logic reversed, and correcting that also corrected
jit_b{lt,le,eq,ge,gt,ne}i_l.
  TESTQir and _ALUQir were not properly working with 64 bit immediates,
that require using a temporary register (JIT_REXTMP) as there are no
related opcodes for 64 bit immediates. This corrected jit_bm{s,c}i_l and
jit_bo{add,sub}i_l.
  Now, the tests in
http://code.google.com/p/exl/source/browse/trunk/check/lightning/branch.tst
pass.
2010-08-29 11:55:11 +02:00
Andy Wingo
c89920a71f deprecate passing a number as the destination to `format'
* module/ice-9/format.scm (format): Deprecate having a number as the
  destination.
* doc/ref/misc-modules.texi (Formatted Output): Update docs.
2010-08-28 13:44:00 -07:00
Andy Wingo
877514dab0 threadsafety in deprecation, extensions
* libguile/deprecation.c (scm_c_issue_deprecation_warning):
* libguile/extensions.c (scm_c_register_extension, load_extension): Add
  locks around global data structures.
2010-08-28 12:15:53 -07:00
Andy Wingo
fb61f4b826 net-db.test tweak
* test-suite/tests/net-db.test: Throw 'unresolved if we have a crap DNS
  that is returning results for all addresses.
2010-08-28 12:02:12 -07:00
Andy Wingo
f5e854388b threadsafe object properties
* libguile/objprop.c: Add locking around the properties weak hash, to
  avoid corrupting the whash.
2010-08-28 11:57:51 -07:00
Andy Wingo
35b6730879 README fix for PKG_CONFIG=true
* README: Add note that if you override pkg-config, you need to set
  libffi flags as well. Thanks to Mark Weaver.
2010-08-28 10:41:27 -07:00
Andreas Rottmann
23988e8c50 Several fixes to R6RS libraries
* module/rnrs/arithmetic/fixnums.scm (fixnum-width): Make this return an
  an exact integer instead of an inexact number.

* module/rnrs/base.scm (assertion-violation): Implement.

* module/rnrs/conditions.scm (simple-conditions): Allow also simple
  conditions as argument.

* module/rnrs/enums.scm (define-enumeration): Properly construct empty
  enumeration sets.

* module/rnrs/exceptions.scm (guard): Don't restrict the body to a
  single expression.

* module/rnrs/records/syntactic.scm (define-record-type0): Expand into a
  series of definitions only.
2010-08-28 10:16:30 -07:00
Andy Wingo
7d0e17389c Revert "don't autocompile while snarfing"
This reverts commit 176ee5c82a, which
added autocomp inhibitions in the wrong place.
2010-08-27 13:11:17 -07:00
Andy Wingo
34cbb05331 Revert "[build] Rewrite guile-func-name-check in Scheme, adding features."
This reverts commit 6832604efa. Not only
does this fail on a fresh build due to a lack of "guile", but even if it
did have its Makefile fixed, it would take too long to run, because the
rest of Guile isn't compiled.

The right thing is to avoid invoking Guile until after at least psyntax
and boot-9 have been compiled.

This commit can be reinstated if we move doc snarfing to a phase that
happens after module/ is compiled.
2010-08-27 13:05:23 -07:00
Andy Wingo
176ee5c82a don't autocompile while snarfing
* am/snarf (GUILE_SNARF): Don't autocompile while snarfing, as we
  probably don't have a compiled Guile at this point.
2010-08-27 12:56:54 -07:00
Ludovic Courtès
358663caf5 Document (ice-9 match).
* doc/ref/Makefile.am (guile_TEXINFOS): Add `match.texi'.

* doc/ref/guile.texi (Guile Modules): Include `match.texi'.

* doc/ref/match.texi: New file.

* doc/ref/sxml-match.texi (sxml-match): Add xref to `match.texi'.

* module/ice-9/match.scm: Note lack of support for `(pat => exp)'.
2010-08-27 18:59:43 +02:00
Ludovic Courtès
d3cc00f65d SRFI-1: Choose better benchmark names.
* benchmark-suite/benchmarks/srfi-1.bm ("fold"): Rename sub-tests to
  "big" and "small".
2010-08-27 18:59:43 +02:00
Ludovic Courtès
b86d230932 SRFI-1: Rewrite break' and break!' in Scheme.
This partially reverts commit 6e9f3c2676
(Tue May 3 2005).

* module/srfi/srfi-1.scm (break, break!): New procedures.

* srfi/srfi-1.c (scm_srfi1_break, scm_srfi1_break_x): Rewrite as
  proxies to the corresponding Scheme procedures.

* test-suite/standalone/test-srfi-1.c (failure): New function.
  (tests): Add `scm_srfi1_break' test.  Use `failure'.
2010-08-27 18:59:42 +02:00
Ludovic Courtès
d7418e60a5 SRFI-1: Rewrite fifth', sixth', etc. in Scheme.
This partially reverts commit 03731332d5
(Tue May 3 2005).

* module/srfi/srfi-1.scm (fifth, sixth, seventh, eighth, ninth, tenth):
  New procedures.

* srfi/srfi-1.c (scm_srfi1_fifth, scm_srfi1_sixth, scm_srfi1_seventh,
  scm_srfi1_eighth, scm_srfi1_ninth, scm_srfi1_tenth): Rewrite as
  proxies to the corresponding Scheme procedure.

* test-suite/tests/srfi-1.test ("eighth")["() -1"]: Change exception
  type to `exception:wrong-type-arg'.
  ("fifth")["() -1"]: Likewise.
  ("ninth")["() -1"]: Likewise.
  ("seventh")["() -1"]: Likewise.
  ("sixth")["() -1"]: Likewise.
  ("tenth")["() -1"]: Likewise.
2010-08-27 18:59:42 +02:00
Ludovic Courtès
ea975f72cf Remove unneeded #:use-module.
* module/system/vm/frame.scm: Remove use of (srfi srfi-1).
2010-08-27 18:59:42 +02:00
Ludovic Courtès
93003b16b0 Assorted `syntax-check' fixes.
* doc/ref/Makefile.am ($(snarf_doc).am): Untabify.

* libguile/eval.c: Remove unnecessary <assert.h> inclusion.

* .x-sc_m4_quote_check: Update.

* libguile/error.c (scm_error_scm): Use `EXIT_FAILURE' instead of 1.
* libguile/init.c (fixconfig, scm_boot_guile): Likewise.
* libguile/null-threads.h (scm_i_pthread_exit): Likewise.
* libguile/script.c (scm_compile_shell_switches): Likewise.
* test-suite/standalone/test-conversion.c: Likewise.
* test-suite/standalone/test-list.c: Likewise.
* test-suite/standalone/test-unwind.c: Likewise.

* libguile/async.c: Remove unnecessary inclusion of <signal.h>.

* NEWS: "filesystem" -> "file system".
* doc/ref/r6rs.texi: Ditto.

* cfg.mk (local-checks-to-skip): New variable.

* .x-sc_m4_quote_check, .x-sc_obsolete_symbols, .x-sc_program_name,
  .x-sc_prohibit_atoi_atof, .x-sc_prohibit_magic_number_exit: New
  files.

* .gitignore: Update.
2010-08-27 18:59:42 +02:00
Andy Wingo
172988eeb4 fix <letrec> docs
* doc/ref/compiler.texi (Tree-IL): Fix docs for external representation
  of letrec. Thanks to No Itisnt.
2010-08-27 09:16:44 -07:00
Thien-Thi Nguyen
6832604efa [build] Rewrite guile-func-name-check in Scheme, adding features.
* libguile/guile-func-name-check: Rewrite in Scheme; add inhibition
  directives, string-literal handling, failureful exit on error.
* libguile/guile-snarf-docs.in: Use ‘@top_builddir@/meta/guile’.
* libguile/pairs.c: Add guile-func-name-check inhibition directive.
2010-08-26 23:34:49 +02:00
Thien-Thi Nguyen
e6d67f1e69 [build] Refine libguile/*.doc snarfing.
* libguile/guile-snarf-docs.in: Rewrite to incorporate all
  three phases of snarfing: func-name check, cpp, tokenization.
  Also, require/check new command-line syntax.
* libguile/Makefile.am (AM_V_FILTER): Delete var.
  (AM_V_FILTER_, AM_V_FILTER_0): Likewise.
  (.c.doc): Run ./guile-snarf-docs; use new command-line syntax.
2010-08-26 18:36:48 +02:00
Paulo Cesar Pereira de Andrade
67e1051827 Account stack alignment on jit functions with odd number of arguments.
The x86_64 correction to keep stack aligned in jit_finish* was only
correct for functions being called, but did not correctly handle alignment
of stack arguments.
2010-08-25 20:50:41 -03:00
Andy Wingo
d5a1a8cd1b consolidate sitedir definition
* configure.ac (sitedir): Fix definition to point to the
  version-specific sitedir.

* libguile/Makefile.am (libpath.h): Take sitedir definition from
  configure.ac.
2010-08-25 10:24:27 -04:00
Andy Wingo
3c4ecdddab update download location in manual
* doc/ref/intro.texi (Obtaining and Installing Guile): Update download
  location.
2010-08-25 09:49:09 -04:00
PCPA
fe9f114745 Implement x86_64 support for multiple integer and float arguments.
This changes the usage of some of the jit_local_state fields, and add
two extra ones. Since jit_arg_x now returns either a register offset or
an stack offset, it does not add _XMM0 to nextarg_putfp to distinguish
from stack offsets.
  The nextarg_puti field is used to known when run out of integer register
arguments, and should push arguments on the stack.
  The new framesize field is used to keep track of jit_arg_x offset on
the stack, when jit_arg_x runs out of registers.
  The argssize field is used in a slightly different way now, and is
used to keep track of number of stack slots used to pass arguments, and
nextarg_puti is used in its previous semantics, to also match nextarg_putfp
logic.
2010-08-25 07:02:52 -03:00
PCPA
d04cfb05ac Change jit_finish to work with varargs functions in x86_64.
It is required to set %al to 0-8 inclusive, telling the number of
xmm registers used to pass arguments.
  This also corrects the calculation of _jitl.nextarg_putfp, that
would be incorrect if calling a function with both, float and double
arguments.
2010-08-25 06:55:50 -03:00
PCPA
100fbd17fb Change JIT_FPR_NUM to 7 to prevent clobber of JIT_FPR(7)
Lightning provides at least 6 float registers, so, in this commit,
reduce from 8 to 7 so that code respecting JIT_FPR_NUM should be
safe again't use of JIT_FPTMP.
2010-08-25 06:47:42 -03:00
PCPA
ec36c13183 Change JIT_REXTMP to not clobber 6th argument.
To not clobber JIT_R2, JIT_REXTMP is defined to the callee save register
%r12, instead of the expected, scratch register %r11.
  To have JIT_V_NUM at least at 3, it now also uses %r14, but does not add
%r15, that could be JIT_V(4) to simplify logic of keeping stack 16 bytes
aligned.
2010-08-25 06:45:42 -03:00
Paulo Cesar Pereira de Andrade
3eb42b42b6 Change JIT_REXTMP, JIT_R, JIT_V to use 64-bit registers 2010-08-24 12:37:29 +02:00
Paulo Cesar Pereira de Andrade
58043d717d Add safety check on number of integer and float arguments on x86_64. 2010-08-24 12:37:29 +02:00
Paulo Cesar Pereira de Andrade
adc42ad2ad Define extra SSE2 xmmN registers and set JIT_FPTMP to the topmost one. 2010-08-24 12:37:29 +02:00
Paulo Cesar Pereira de Andrade
fb86d498a4 Change jit_getarg_{c,uc,s,us,i,ui} to extr_l to sign extend on 64 bits. 2010-08-24 12:37:20 +02:00
Paolo Bonzini
9564132c94 more fixes to fp branches
2010-08-20  Paolo Bonzini  <bonzini@gnu.org>

	* lightning/i386/fp-64.h: Return patch address from jit_bXYr_{f,d}.
	Reported by Paulo César Pereira de Andrade.
	* lightning/ppc/fp.h: Likewise.
	* lightning/sparc/fp.h: Implement FP branches.
2010-08-20 10:08:43 +02:00
Thien-Thi Nguyen
bfebf099d9 [build] Use AM_SILENT_RULES for generating cpp-E.c, cpp-SIG.c.
* libguile/Makefile.am (.syms.c): Prefix first command
  with $(AM_V_GEN); unconditionally silence second command.
2010-08-19 11:15:08 +02:00
Paolo Bonzini
688e75a092 fix x86_64 jit_bner_{f,d}
2010-08-18  Paolo Bonzini  <bonzini@gnu.org>

	* lightning/i386/fp-64.h: Fix jp in jit_bner_{f,d}.
2010-08-19 09:44:35 +02:00
Andy Wingo
4b02bf47f4 objcodes.c comments
* libguile/objcodes.c: Comments from Noah Lavine
2010-08-18 23:00:42 -07:00
Noah Lavine
9a690dfb45 Whitespace fix
Add a space in libguile/objcodes.c to comply with the GNU Coding Standards.
2010-08-18 23:00:42 -07:00
Thien-Thi Nguyen
319b53dd1c [build] Fix sed portability bug: Don't use '\n' in sed script.
Regression introduced 2010-07-22, "[build] Overhaul
<errno.h>, <signal.h> cpp symbol extraction/checking".
See: <http://autobuild.josefsson.org/guile/log-201008181002653292000.txt>

* libguile/Makefile.am (.syms.c): Convert
  one-liner sed script to while-read-echo loop.
2010-08-18 19:48:12 +02:00
Thien-Thi Nguyen
b405cdb4c5 [build] Create libguile/version.h using the configure script.
* configure.ac (AC_CONFIG_FILES): Add libguile/version.h.

* libguile/Makefile.am (version.h): Delete target.
  (EXTRA_DIST): Remove version.h.in.
  (BUILT_SOURCES): Remove version.h.
  (MOSTLYCLEANFILES): Remove version.h, version.h.tmp.
* libguile/version.h.in (SCM_MAJOR_VERSION): Use conventional
  @VAR@ instead of @-VAR-@ for ‘GUILE_MAJOR_VERSION’.
  (SCM_MINOR_VERSION, SCM_MICRO_VERSION, SCM_EFFECTIVE_VERSION): Likewise
  for ‘GUILE_MINOR_VERSION’, ‘GUILE_MICRO_VERSION’, ‘GUILE_EFFECTIVE_VERSION’.
2010-08-18 19:48:12 +02:00
Paolo Bonzini
7e19a3da19 fix -D_ASM_SAFETY compilation of beqr_d and bne_d
2010-08-18  Paolo Bonzini  <bonzini@gnu.org>

	* lightning/i386/fp-32.h: Fix -D_ASM_SAFETY compilation.
	Reported by Paulo César Pereira de Andrade.
2010-08-18 10:05:42 +02:00
Andy Wingo
8996d00ee4 update scsh doc
* doc/ref/scsh.texi (The Scheme shell (scsh)): Remove broken link to
  arglist.com/guile/, and add note about bitrotting.
2010-08-17 08:48:49 -07:00
Andy Wingo
833263ec4a further discouraged excision
* libguile/gen-scmconfig.h.in: Remove a DISCOURAGED define.
2010-08-16 21:36:14 -07:00
Andy Wingo
7545ddd42a a number of doc fixes
* doc/ref/api-control.texi (Handling Errors): Update docs for
  display-error.

* libguile/backtrace.h (scm_i_display_error): Change prototype to
  s/stack/frame/.
* libguile/throw.c (handler_message): Change invocation of
  scm_i_display_error to pass a frame.

* doc/ref/api-deprecated.texi (Deprecation): Update wording.

* doc/ref/api-evaluation.texi (Local Evaluation): Remove section on
  local-eval.

* doc/ref/api-macros.texi: Fix a couple typos.

* doc/ref/api-memory.texi (Objects): Remove terrible section.
* doc/ref/api-procedures.texi (Procedure Properties): Remove docs for
  closure?.
  (Compiled Procedures): Update wording.

* doc/ref/guile.texi (API Reference): Remove reference to "Objects".
2010-08-16 21:36:14 -07:00
Andy Wingo
46088b2629 minor NEWS tweaks
* NEWS: Minor tweaks.
2010-08-16 21:36:14 -07:00
Andy Wingo
8fad25c25f reindent psyntax.scm
* module/ice-9/psyntax.scm: Reindent.
2010-08-16 21:36:14 -07:00