1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-12 00:30:20 +02:00
guile/check
pcpa 839341a498 Implement jit_frame and jit_tramp interfaces
* include/lightning.h, include/lightning/jit_private.h,
	lib/jit_aarch64-cpu.c, lib/jit_alpha-cpu.c, lib/jit_arm-cpu.c,
	lib/jit_hppa-cpu.c, lib/jit_ia64-cpu.c, lib/jit_mips-cpu.c,
	lib/jit_ppc-cpu.c, lib/jit_s390x-cpu.c, lib/jit_sparc-cpu.c,
	lib/jit_x86-cpu.c, lib/lightning.c: Implement the new
	jit_frame and jit_tramp interfaces, that allow writing
	trampoline like calls, where a single dispatcher jit buffer
	is written, and later other jit buffers are created, with
	the same stack frame layout as the dispatcher. This is the
	logic that GNU Smalltalk used in lightning 1.x, and is required
	to make a sane port for lighting 2.x.

	* jit_ia64-cpu.c: Implement support for jit_frame and jit_tramp,
	and also correct wrong encoding for B4 instructions, that
	implement jmpr, as well as correct reverse logic in _jmpr,
	that was moving the branch register to the jump register,
	and not vice-versa.
	Also, if a stack frame is to be assumed, always assume it may
	call a function with up to 8 arguments, regardless of the
	hint frame argument.

	* lib/jit_arm.c: Add a new must_align_p() interface to ensure
	function prologs are always aligned. This condition was
	previously always true, somewhat by accident, but with
	jit_tramp it is not guaranteed.

	* jit_ia64-cpu.c: lib/jit_ppc.c: Add minor special handling
	required to implement jit_tramp, where a function descriptor
	should not be added before a prolog, as jit_tramp means omit
	prolog.

	* check/lightning.c: Update test driver for the new interfaces.

	* check/Makefile.am, check/tramp.tst, check/tramp.ok: Add
	a simple test and example of the jit_frame and jit_tramp
	usage implementing a simple Fibonacci function using a
	simulation of an interpreter stack and how it would handle
	state in language specific variables.

	* doc/body.texi: Add documentation for jit_frame and
	jit_tramp.
2014-10-14 17:04:40 -03:00
..
3to2.ok Big merge with new lightning semantics aiming for lightning 2.0. 2012-12-02 19:44:36 -02:00
3to2.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
add.ok Big merge with new lightning semantics aiming for lightning 2.0. 2012-12-02 19:44:36 -02:00
add.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
all.tst Implement the qmul and qdiv instructions. 2013-02-04 18:54:37 -02:00
allocai.ok Big merge with new lightning semantics aiming for lightning 2.0. 2012-12-02 19:44:36 -02:00
allocai.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
alu.inc Correct float division and LX with stop code generation. 2013-04-27 04:37:57 -03:00
alu_add.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alu_add.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
alu_and.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alu_and.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
alu_com.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alu_com.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
alu_div.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alu_div.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
alu_lsh.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alu_lsh.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
alu_mul.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alu_mul.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
alu_neg.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alu_neg.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
alu_or.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alu_or.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
alu_rem.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alu_rem.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
alu_rsh.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alu_rsh.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
alu_sub.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alu_sub.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
alu_xor.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alu_xor.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
alux_add.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alux_add.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
alux_sub.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
alux_sub.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
bp.ok Big merge with new lightning semantics aiming for lightning 2.0. 2012-12-02 19:44:36 -02:00
bp.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
branch.ok Add several arithmetic and branch tests cases. 2012-12-09 19:13:33 -02:00
branch.tst Correct wrong and confusing reverse float comparison logic 2012-12-29 18:55:11 -02:00
call.ok Add simple test case to test argument and return values. 2012-12-23 20:28:05 -02:00
call.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
carry.ok Add new carry test case. 2012-12-23 11:51:41 -02:00
carry.tst Add new carry test case. 2012-12-23 11:51:41 -02:00
ccall.c Cosmetic removal of white spaces in end of lines. 2013-08-10 11:38:43 -03:00
check.arm.sh Properly check tests output. 2013-07-28 14:01:22 -03:00
check.nodata.sh Implement the new jit_set_data interface. 2014-03-12 14:50:31 -03:00
check.sh Properly check tests output. 2013-07-28 14:01:22 -03:00
check.swf.sh Properly check tests output. 2013-07-28 14:01:22 -03:00
check.x87.nodata.sh x86: Build and pass all tests under cygwin64 (Windows x64) 2014-09-24 11:03:20 -03:00
check.x87.sh Properly check tests output. 2013-07-28 14:01:22 -03:00
clobber.ok Add new register clobber detection test case. 2012-12-22 12:15:03 -02:00
clobber.tst Correct float division and LX with stop code generation. 2013-04-27 04:37:57 -03:00
cvt.ok Add new test case for int/float to/from conversion. 2012-12-06 15:16:23 -02:00
cvt.tst Add jit_ellipis and remove jit_prepare argument. 2012-12-12 22:59:52 -02:00
divi.ok Big merge with new lightning semantics aiming for lightning 2.0. 2012-12-02 19:44:36 -02:00
divi.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
fib.ok Big merge with new lightning semantics aiming for lightning 2.0. 2012-12-02 19:44:36 -02:00
fib.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
float.ok Add new extensive float comparison and conversion test case 2012-12-29 14:16:45 -02:00
float.tst ALPHA: Implement lightning Alpha port. 2014-08-10 11:48:35 -03:00
fop_abs.ok Add two extra test cases for float operations. 2012-12-17 17:55:38 -02:00
fop_abs.tst Add two extra test cases for float operations. 2012-12-17 17:55:38 -02:00
fop_sqrt.ok Add two extra test cases for float operations. 2012-12-17 17:55:38 -02:00
fop_sqrt.tst Add two extra test cases for float operations. 2012-12-17 17:55:38 -02:00
jmpr.ok Consider all callee_save_p regs as live on non trackable jumps 2014-09-07 15:32:32 -03:00
jmpr.tst Consider all callee_save_p regs as live on non trackable jumps 2014-09-07 15:32:32 -03:00
ldst.inc Add functional hppa port. All tests pass. 2013-06-01 01:53:33 -03:00
ldsti.ok Add new test cases to exercise memory load/store. 2012-12-05 15:57:33 -02:00
ldsti.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
ldstr-c.ok Add new ldst variant test cases to check base/index register clobber. 2012-12-06 10:00:30 -02:00
ldstr-c.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
ldstr.ok Add new test cases to exercise memory load/store. 2012-12-05 15:57:33 -02:00
ldstr.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
ldstxi-c.ok Add new ldst variant test cases to check base/index register clobber. 2012-12-06 10:00:30 -02:00
ldstxi-c.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
ldstxi.ok Add new test cases to exercise memory load/store. 2012-12-05 15:57:33 -02:00
ldstxi.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
ldstxr-c.ok Add new ldst variant test cases to check base/index register clobber. 2012-12-06 10:00:30 -02:00
ldstxr-c.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
ldstxr.ok Add new test cases to exercise memory load/store. 2012-12-05 15:57:33 -02:00
ldstxr.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
lightning.c Implement jit_frame and jit_tramp interfaces 2014-10-14 17:04:40 -03:00
Makefile.am Implement jit_frame and jit_tramp interfaces 2014-10-14 17:04:40 -03:00
nodata.c Implement the new jit_set_data interface. 2014-03-12 14:50:31 -03:00
qalu.inc Implement the qmul and qdiv instructions. 2013-02-04 18:54:37 -02:00
qalu_div.ok Implement the qmul and qdiv instructions. 2013-02-04 18:54:37 -02:00
qalu_div.tst Implement the qmul and qdiv instructions. 2013-02-04 18:54:37 -02:00
qalu_mul.ok Implement the qmul and qdiv instructions. 2013-02-04 18:54:37 -02:00
qalu_mul.tst New s390x port built on the hercules emulator and fedora 16 image. 2013-07-28 14:13:39 -03:00
ret.ok Implement the "live" code to explicitly tell a register is live. 2013-02-05 14:14:25 -02:00
ret.tst Implement the "live" code to explicitly tell a register is live. 2013-02-05 14:14:25 -02:00
rpn.ok Correct integer multiplication and add extra test case. 2012-12-03 00:07:29 -02:00
rpn.tst Add the new jit_name call to mark function boundaries 2013-01-18 18:05:57 -02:00
run-test Add support to test different/alternate code generation setups. 2012-12-14 22:40:08 -02:00
self.c Rerun tests on supported backends after bogus self test correction 2013-10-07 17:04:00 -03:00
setcode.c Implement the new jit_set_code interface. 2014-03-11 11:40:42 -03:00
stack.ok Add new test case to check stack integrity on complex stack frames. 2012-12-19 18:07:12 -02:00
stack.tst Adjust lightning to work on ppc AIX. 2013-06-07 21:27:52 -03:00
varargs.ok Add functional hppa port. All tests pass. 2013-06-01 01:53:33 -03:00
varargs.tst Add functional hppa port. All tests pass. 2013-06-01 01:53:33 -03:00