1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-28 22:10:29 +02:00
Commit graph

20172 commits

Author SHA1 Message Date
pcpa
565c3a064e MIPS: Correct abi detection.
* include/lightning/jit_mips.h: Add proper mips abi detection.
2013-10-02 23:18:06 -03:00
pcpa
f42a251ff1 Correct misplaced check for already visited blocks 2013-10-01 13:51:01 -03:00
Andy Wingo
0a7340ac98 Emit a placeholder .debug_line section.
* module/system/vm/assembler.scm (link-debug): Emit a .debug_line
  section also.
  (link-objects): Expect .debug_line.
2013-09-30 21:49:12 +02:00
Andy Wingo
e675e9bd39 Add new "source" macro instruction; compile-rtl emits it.
* module/system/vm/assembler.scm (<asm>): Add "sources" field.
  (make-assembler): Adapt to make-asm change.
  (source): New macro assembler.

* module/language/cps/compile-rtl.scm (emit-rtl-sequence):
  (compile-fun): Emit source instructions as appropriate.
2013-09-30 21:48:07 +02:00
Mark H Weaver
84af582d1e Fix minor mistakes in documentation.
Fixes <http://bugs.gnu.org/15487>.
Reported by Josep Portella Florit <jpf@primfilat.com>.

* doc/ref/api-i18n.texi (i18n Introduction, Text Collation,
  Internationalization, Internationalization):
  LC_MESSAGE --> LC_MESSAGES.

* doc/ref/api-procedures.texi (Compiled Procedures):
  program-lambda-alist --> program-lambda-list.

* THANKS: Fix alignment of Josep Portella Florit.
2013-09-30 12:46:01 -04:00
pcpa
1bd169cfa3 X86: %r12 may be used as an index register.
* lib/jit_x86-cpu.c: Correct not properly tested case of using
	%r12 as index register, what was causing an invalid assertion.
	%r12 is mapped to the "extra" JIT_R3 register, and test cases
	only test "standard" lightning registers.
2013-09-30 13:30:21 -03:00
pcpa
ff73547603 IA64: Force sync of instructions in get-jit-size build mode. 2013-09-28 14:19:33 -03:00
Andy Wingo
6371e368e6 DWARF linker: encode strings using the correct form
* module/system/vm/assembler.scm (link-debug): Encode strings using the
  strp form.
2013-09-28 18:15:50 +02:00
Andy Wingo
a862d8c138 Emit minimal DWARF information
* module/system/vm/assembler.scm (link-debug): New function, creates the
  necessary DWARF debugging sections.
  (link-objects): Emit debugging sections.
2013-09-28 14:50:48 +02:00
Andy Wingo
35558f75f8 add DWARF parser
* module/Makefile.am:
* module/system/vm/dwarf.scm: New module, a DWARF parser.
2013-09-28 14:41:08 +02:00
pcpa
0ad5e08ee5 ARM: Correct build when disassembler is disabled. 2013-09-27 13:19:49 -03:00
pcpa
ae6101f662 IA64: Correct some wrong checks value range checks.
* lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c: Correct some
	off by one range checks (that were only accepting values
	one less than the maximum allowed) and an invalid test
	condition check that was forcing it to always use
	indirect jumps even when reachable with an immediate
	displacement.
2013-09-25 00:30:42 -03:00
pcpa
2e209eb61d GNU lightning 2.0.1 release 2013-09-24 18:20:41 -03:00
pcpa
b768fab8b1 Add code to calculate code buffer size based on devel time information.
* lib/jit_aarch64-sz.c, lib/jit_arm-sz.c, lib/jit_hppa-sz.c,
	lib/jit_ia64-sz.c, lib/jit_mips-sz.c, lib/jit_ppc-sz.c,
	lib/jit_s390x-sz.c, lib/jit_size.c, lib/jit_sparc-sz.c,
	lib/jit_x86-sz.c: New files implementing static tables
	with longest known instructions length generated to match
	a lightning instruction. These tables should make it easier
	to make it very unlikely to ever miscalculate, or by too
	much, the size of a code buffer.

	* lib/jit_size.c: New file that aids to either collect
	jit code size information, or use the information depending
	on build options.

	* size.c: New helper file that parses input for, and create
	an initial jit_$arch-sz.c file, that needs some minor edit
	for arches with multiple configurations.

	* configure.ac, Makefile.am: Add the new, devel mode only
	--enable-devel-get-jit-size configure option, that sets
	compile time flags to collect jit code size information,
	that will be used as input for the "noinst size program".

	* lib/jit_aarch64.c, lib/jit_arm.c, lib/jit_disasm.c,
	lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_memory.c,
	lib/jit_mips.c, lib/jit_ppc.c, lib/jit_s390x.c,
	lib/jit_sparc.c, lib/jit_x86.c, lib/lightning.c: Minor
	changes for the --enable-devel-get-jit-size build mode,
	as well as the "production build mode" with jit code
	size information.
2013-09-24 03:31:54 -03:00
pcpa
95e3fbc8bc Add the new jit_pointer_p predicate interface.
* include/lightning.h, lib/lightning.c: Add the new
	jit_pointer_p interface, that returns a boolean value
	telling if the pointer argument is inside the jit
	code buffer. This is useful to avoid the need to add
	extra labels and calls to jit_address to figure bounds
	of code buffer, and still keep internal data private.
2013-09-14 14:43:05 -03:00
pcpa
948315f45e Make jit_get_note a public interface.
* include/lightning.h, include/lightning/jit_private.h,
	lib/jit_note.c: Change the code argument of jit_get_note
	to a jit_pointer_t and make jit_get_note a public interface.
	It was intended so since start, as a way to map an offset
	in the code to a function name, file name and line number
	mapping.
2013-09-13 18:57:32 -03:00
Mark H Weaver
c04bf4337b Merge remote-tracking branch 'origin/stable-2.0'
Conflicts:
	module/srfi/srfi-9.scm
	module/web/server.scm
2013-09-13 00:24:04 -04:00
Mark H Weaver
803c087e6b Fix truncated documentation for 'put-char'.
Fixes <http://bugs.gnu.org/15152>.
Reported by Josep Portella Florit <jpf@primfilat.com>.

* doc/ref/api-io.texi (R6RS Textual Output): Fix truncated docs
  for 'put-char'.

* THANKS: Add Josep Portella Florit to fixes section.
2013-09-13 00:00:43 -04:00
Mark H Weaver
76702cdcef Web: Use functional setters in extend-request and extend-response.
* module/web/client.scm (extend-request):
* module/web/server.scm (extend-response): Reimplement using
  functional setters.
2013-09-12 18:45:13 -04:00
Mark H Weaver
3b2226ec91 Web client+server: Add Content-Length header for empty bodies.
* module/web/client.scm (sanitize-request): Add a Content-Length
  header if a body if given, even if the body is empty.

* module/web/server.scm (sanitize-response): Add a Content-Length
  header if a body if given, even if the body is empty.
2013-09-12 18:36:45 -04:00
Mark H Weaver
361553b49d Adapt srfi-9.test to error reporting improvements; update copyright dates.
* module/srfi/srfi-9.scm: Add 2013 copyright date.

* test-suite/tests/srfi-9.test: Adapt to recent error reporting
  improvements to procedures defined by 'define-tagged-inlinable'.
2013-09-12 18:14:54 -04:00
Mark H Weaver
89ffbb1c2e Improve error reporting of procedures defined by define-inlinable.
* module/ice-9/boot-9.scm (define-inlinable): Improve error reporting
  when procedures defined using 'define-inlinable' are applied to the
  wrong number of arguments.

* module/srfi/srfi-9.scm (define-tagged-inlinable): Improve error
  reporting when procedures defined using 'define-tagged-inlinable' are
  applied to the wrong number of arguments.
2013-09-12 18:04:08 -04:00
pcpa
5a2df005c5 Correct wrong example and mt unsafe code in the arm backend.
* doc/body.texi: Correct reversed arguments in example of
	usage in a (possibly) multi threaded, multiple jit_state_t
	environments.

	* include/lightning/jit_arm.h, include/lightning/jit_private.h,
	lib/jit_arm-cpu.c, lib/jit_arm.c: Make a previously, non
	documented, global state private to the related jit_state_t
	generating code.
2013-09-12 00:24:19 -03:00
pcpa
a62f405751 Add the jit_callee_save_p interface and extra register definitions.
* check/self.c, check/self.ok: New files implementing simple
	consistency check assertions. At first validating some macros
	that use values from different sources agree.

	* check/Makefile.am: Update for the new test case.

	* include/lightning.h,  lib/lightning.c: Add the new
	jit_callee_save_p() call, that is intended to be used when
	writing complex code using lightning, so that one does not
	need to verify what backend is being used, or have access to
	private data, to query if a register is callee save or not;
	on several backends the scratch registers are actually callee
	save.

	* include/lightning/jit_aarch64.h, include/lightning/jit_arm.h,
	include/lightning/jit_hppa.h, include/lightning/jit_mips.h,
	include/lightning/jit_ppc.h, include/lightning/jit_sparc.h,
	include/lightning/jit_x86.h: Add an explicit definition for
	JIT_R3-JIT_Rn, JIT_V3-JIT_Vn and JIT_F6-JIT_Fn when applicable.
	This allows one to write code based on "#if defined(JIT_XN)"
	and therefore, not need to check what is the current backend
	or have access to private data structures. This is particularly
	useful when writing virtual machines with several specialized,
	global registers.

	* lib/jit_ia64.c: Properly flag the callee save general
	purpose registers as such, so that jit_callee_save_p() works
	as intended.
2013-09-10 21:41:49 -03:00
pcpa
15a3ec2567 Use the logic to workaround float NaN and Inf Hercules bug conditional
* check/lightning.c, configure.ac: Conditionally use the
	code written to workaround a bug in the Hercules emulator,
	as isnan and isinf are not available at least on HP-UX ia64.
 enter the commit message for your changes. Lines starting
2013-09-10 21:29:15 -03:00
pcpa
13d521bded S390X: Correct values of float registers saved on stack.
* lib/jit_s390x-cpu.c: Spill/reload correct callee save
	float registers.
2013-09-10 21:26:13 -03:00
pcpa
455237673b HPPA: Correct bogus logic when calling function pointers.
* lib/jit_hppa-cpu.c: Correct code to call a function stored
	in a register or a patched function address.
2013-09-10 21:23:25 -03:00
pcpa
183ed91756 IA64: Correct code to save/restore r2 used as lightning JIT_FP.
* lib/jit_ia64-cpu.c: Correct incorrect logic when restoring
	the value of the "r2" callee save register.
2013-09-10 21:17:44 -03:00
Mark H Weaver
f3f7a02600 THANKS Alexandru Cojocaru
* THANKS: Add Alexandru Cojocaru to fixes section.
2013-09-10 02:05:26 -04:00
Mark H Weaver
55e29bb55b web client: HTTP methods are symbols, not strings.
* module/web/client.scm (request, http-get, http-head, http-post,
  http-put, http-delete, http-trace, http-options): HTTP methods are
  symbols.
2013-09-10 01:39:52 -04:00
Alexandru Cojocaru
9c85fd0221 Fix extend-request to preserve method and meta.
* module/web/client.scm (extend-request): Preserve method and meta.
2013-09-10 01:36:00 -04:00
Mark H Weaver
112fc7c2a5 psyntax: cite the paper that psyntax is based on.
* module/ice-9/psyntax.scm: cite the paper.
2013-09-09 22:42:36 -04:00
Mark H Weaver
c4b7ba688a Minor stylistic improvement to 'and-let*' macro.
* module/ice-9/and-let-star.scm (%and-let*): Use 'and' instead of
  'if'.  Suggested by Chris K. Jester-Young <cky944@gmail.com>.
2013-09-09 22:20:09 -04:00
Mark H Weaver
0bf4a5fc2e Rewrite SRFI-2 'and-let*' using syntax-case.
* module/ice-9/and-let-star.scm (%and-let*): Helper macro.
  (and-let*): Reimplement using syntax-case.
2013-09-09 19:37:49 -04:00
pcpa
c6ced6662d Add missing jit_clear_state to documentation sample. 2013-09-09 19:21:49 -03:00
pcpa
b279feb7c5 Add fallback logic instead of error if cannot figure __WORDSIZE.
This was an issue on FreeBSD 8.x, and the logic used is the same as
FreeBSD 9.1 stdint.h.
2013-09-09 19:19:45 -03:00
Andy Wingo
6871327742 Micro-optimize char_decimal_value.
* libguile/numbers.c (char_decimal_value): A wee micro-optimization.
2013-08-31 11:15:01 +02:00
Andy Wingo
25752c4d1c Faster scm_from_port_stringn
* libguile/strings.c (scm_from_port_stringn): Always inline to
  scm_from_utf8_string if the byte sequence is valid utf-8.
2013-08-31 10:57:11 +02:00
Andy Wingo
be7ecef05c unread-char: inline conversion from codepoint to bytes
* libguile/ports.c (scm_ungetc_unlocked): Inline the conversion from
  codepoint to bytes for UTF-8 and latin-1 ports.  Speeds up a
  numbers-reading test case by 100% (!).
2013-08-31 10:44:07 +02:00
Andy Wingo
8ac8e2dfeb Add contification pass
* module/Makefile.am:
* module/language/cps/contification.scm: New pass.

* module/language/cps/compile-rtl.scm (optimize): Wire it into the
  compiler.
2013-08-31 09:40:56 +02:00
Andy Wingo
6e8ad82335 Add CPS -> RTL compiler
* module/Makefile.am:
* module/language/cps/compile-rtl.scm:
* module/language/cps/dfg.scm:
* module/language/cps/slot-allocation.scm: New modules.

* module/language/cps/spec.scm: Register the compiler.

* test-suite/Makefile.am:
* test-suite/tests/rtl-compilation.test: Add tests.
2013-08-31 09:40:56 +02:00
Andy Wingo
934e6b9515 Add pass to reify primcalls without corresponding VM ops
* module/Makefile.am:
* module/language/cps/reify-primitives.scm: New pass.
2013-08-31 09:40:56 +02:00
Andy Wingo
026b561154 Add arity-adapting module
* module/Makefile.am:
* module/language/cps/arities.scm: New module.  Adapts call and return
  arities, especially for primcalls.
2013-08-31 09:40:56 +02:00
Andy Wingo
045392f1b2 Add CPS primitives info module
* module/Makefile.am:
* module/language/cps/primitives.scm: New file.
2013-08-31 09:40:56 +02:00
Andy Wingo
43f768f48d RTL language
* module/Makefile.am
 * module/language/rtl.scm:
 * module/language/rtl/spec.scm: Add a stub RTL language.
2013-08-31 09:40:56 +02:00
Andy Wingo
4b8de65e9d Add closure conversion
* module/Makefile.am
* module/language/cps/closure-conversion.scm: New module, implementing a
  closure conversion pass.
2013-08-31 09:40:56 +02:00
Andy Wingo
4fefc3a867 (compile foo #:to 'cps)
* module/language/tree-il/compile-cps.scm: New module implementing CPS
  conversion of Tree-IL.

* module/Makefile.am:
* module/language/tree-il/spec.scm:
* module/language/cps/spec.scm: Integrate CPS in the build and language
  system.
2013-08-31 09:40:56 +02:00
Andy Wingo
80b01fd086 Add CPS language
* module/Makefile.am:
* module/language/cps.scm:
* module/language/cps/verify.scm: Add CPS language.

* .dir-locals.el: Add indentation rules for some CPS forms.
2013-08-31 09:40:56 +02:00
pcpa
b8770059dc Correct wrong test and update of arm thumb offset information.
* lib/jit_arm-cpu.c, lib/jit_arm.c: Correct wrong test and update
	of the thumb offset information, when checking if needing to
	patch a jump from arm to thumb mode. The problem would happen when
	remapping the code buffer, and the new address being lower than
	the previous one.
2013-08-29 17:08:05 -03:00
Andy Wingo
93009a7aca ,xx for RTL images
* module/scripts/disassemble.scm (disassemble):
* module/system/vm/disassembler.scm (disassemble-file): Factor
  disassemble-file out.

* module/system/repl/command.scm (disassemble-file): Map ,xx to
  disassemble RTL images.
2013-08-29 20:50:19 +02:00