[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 150/437: Add jit_ellipis and remove jit_prepare argument
From: |
Andy Wingo |
Subject: |
[Guile-commits] 150/437: Add jit_ellipis and remove jit_prepare argument. |
Date: |
Mon, 2 Jul 2018 05:14:07 -0400 (EDT) |
wingo pushed a commit to branch lightning
in repository guile.
commit 0b89a17ca2709fbd4765a9758b73e07b6b5d9a52
Author: pcpa <address@hidden>
Date: Wed Dec 12 22:59:52 2012 -0200
Add jit_ellipis and remove jit_prepare argument.
* include/lightning.h, lib/jit_arm.c, lib/jit_mips.c,
lib/jit_ppc.c, lib/jit_x86.c, lib/lightning.c: Change jit_prepare
to no longer receive an argument. If receiving an argument, it
should be an ABI specifier, not a boolean if varargs or not,
and add the new jit_ellipsis call, to specify where the
ellipsis is in the C prototype of the function being called.
Note that currently it is not supported to define varargs
functions and it will be ignored if calling jit_ellipsis not
in a prepare/finish* block, but this should be addressed.
* check/allocai.tst, check/alu_add.tst, check/alu_and.tst,
check/alu_com.tst, check/alu_div.tst, check/alu_lsh.tst,
check/alu_mul.tst, check/alu_neg.tst, check/alu_or.tst,
check/alu_rem.tst, check/alu_rsh.tst, check/alu_sub.tst,
check/alu_xor.tst, check/alux_add.tst, check/alux_sub.tst,
check/bp.tst, check/branch.tst, check/cvt.tst, check/divi.tst,
check/fib.tst, check/ldsti.tst, check/ldstr-c.tst,
check/ldstr.tst, check/ldstxi-c.tst, check/ldstxi.tst,
check/ldstxr-c.tst, check/ldstxr.tst, check/rpn.tst,
check/lightning.c: Update for the change to jit_prepare and
addition of jit_ellipsis.
---
ChangeLog | 24 ++++++++++++++++++++++++
check/3to2.tst | 10 ++++++----
check/add.tst | 5 +++--
check/all.tst | 9 +++++----
check/allocai.tst | 16 ++++++++++------
check/alu_add.tst | 3 ++-
check/alu_and.tst | 3 ++-
check/alu_com.tst | 3 ++-
check/alu_div.tst | 3 ++-
check/alu_lsh.tst | 3 ++-
check/alu_mul.tst | 3 ++-
check/alu_neg.tst | 3 ++-
check/alu_or.tst | 3 ++-
check/alu_rem.tst | 3 ++-
check/alu_rsh.tst | 3 ++-
check/alu_sub.tst | 3 ++-
check/alu_xor.tst | 3 ++-
check/alux_add.tst | 3 ++-
check/alux_sub.tst | 3 ++-
check/bp.tst | 9 +++++----
check/branch.tst | 3 ++-
check/cvt.tst | 3 ++-
check/divi.tst | 9 +++++----
check/fib.tst | 7 ++++---
check/ldsti.tst | 3 ++-
check/ldstr-c.tst | 3 ++-
check/ldstr.tst | 3 ++-
check/ldstxi-c.tst | 3 ++-
check/ldstxi.tst | 3 ++-
check/ldstxr-c.tst | 3 ++-
check/ldstxr.tst | 3 ++-
check/lightning.c | 8 ++++----
check/rpn.tst | 34 ++++++++++++++++++++++------------
include/lightning.h | 7 +++++--
lib/jit_arm.c | 6 ++++++
lib/jit_mips.c | 6 ++++++
lib/jit_ppc.c | 6 ++++++
lib/jit_x86.c | 6 ++++++
lib/lightning.c | 4 ++--
39 files changed, 165 insertions(+), 70 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 2415689..2fe54b3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2012-12-12 Paulo Andrade <address@hidden>
+
+ * include/lightning.h, lib/jit_arm.c, lib/jit_mips.c,
+ lib/jit_ppc.c, lib/jit_x86.c, lib/lightning.c: Change jit_prepare
+ to no longer receive an argument. If receiving an argument, it
+ should be an ABI specifier, not a boolean if varargs or not,
+ and add the new jit_ellipsis call, to specify where the
+ ellipsis is in the C prototype of the function being called.
+ Note that currently it is not supported to define varargs
+ functions and it will be ignored if calling jit_ellipsis not
+ in a prepare/finish* block, but this should be addressed.
+
+ * check/allocai.tst, check/alu_add.tst, check/alu_and.tst,
+ check/alu_com.tst, check/alu_div.tst, check/alu_lsh.tst,
+ check/alu_mul.tst, check/alu_neg.tst, check/alu_or.tst,
+ check/alu_rem.tst, check/alu_rsh.tst, check/alu_sub.tst,
+ check/alu_xor.tst, check/alux_add.tst, check/alux_sub.tst,
+ check/bp.tst, check/branch.tst, check/cvt.tst, check/divi.tst,
+ check/fib.tst, check/ldsti.tst, check/ldstr-c.tst,
+ check/ldstr.tst, check/ldstxi-c.tst, check/ldstxi.tst,
+ check/ldstxr-c.tst, check/ldstxr.tst, check/rpn.tst,
+ check/lightning.c: Update for the change to jit_prepare and
+ addition of jit_ellipsis.
+
2012-12-11 Paulo Andrade <address@hidden>
* lib/jit_ppc-cpu.c: Make movr a function that checks arguments
diff --git a/check/3to2.tst b/check/3to2.tst
index 10de7f8..1e4a30e 100644
--- a/check/3to2.tst
+++ b/check/3to2.tst
@@ -18,13 +18,14 @@ test_double_##a##_##b##_##c: \
retr_d %a \
epilog
#define test_double(a, b, c, x, y) \
- prepare 0 \
+ prepare \
pushargi_d x \
pushargi_d y \
finishi test_double_##a##_##b##_##c \
retval_d %f0 \
- prepare 1 \
+ prepare \
pushargi dfmt \
+ ellipsis \
pushargr_d %f0 \
finishi @printf
@@ -39,13 +40,14 @@ test_int_##a##_##b##_##c: \
retr %a \
epilog
#define test_int(a, b, c, x, y) \
- prepare 0 \
+ prepare \
pushargi x \
pushargi y \
finishi test_int_##a##_##b##_##c \
retval %r0 \
- prepare 1 \
+ prepare \
pushargi ifmt \
+ ellipsis \
pushargr %r0 \
finishi @printf
diff --git a/check/add.tst b/check/add.tst
index 03a6962..d849fce 100644
--- a/check/add.tst
+++ b/check/add.tst
@@ -17,13 +17,14 @@ test:
main:
prolog
- prepare 0
+ prepare
pushargi 5
pushargi 4
finishi test
retval %r0
- prepare 1
+ prepare
pushargi fmt
+ ellipsis
pushargi 5
pushargi 4
pushargr %r0
diff --git a/check/all.tst b/check/all.tst
index aa8856c..d8d4769 100644
--- a/check/all.tst
+++ b/check/all.tst
@@ -196,11 +196,12 @@ label:
jmpi label
callr %r0
calli label
- prepare 0
+ prepare
pushargr %r0
finishr %r0
- prepare 1
+ prepare
pushargi 1
+ ellipsis
finishi 0x80000000
ret
retr %r1
@@ -303,7 +304,7 @@ unordi:
bordi_f unordi %f0 0.5
bunordr_f unord %f0 %f1
bunordi_f unordi %f0 0.5
- prepare 0
+ prepare
pushargr_f %f1
pushargi_f 0.5
finishi 0x80000000
@@ -395,7 +396,7 @@ unordi:
bordi_d unordi %f0 0.5
bunordr_d unord %f0 %f1
bunordi_d unordi %f0 0.5
- prepare 0
+ prepare
pushargr_d %f1
pushargi_d 0.5
finishi 0x80000000
diff --git a/check/allocai.tst b/check/allocai.tst
index b613a41..9bb6cbe 100644
--- a/check/allocai.tst
+++ b/check/allocai.tst
@@ -23,8 +23,9 @@ identify:
prolog
arg $i
getarg %v0 $i
- prepare 1
+ prepare
pushargi idfmt
+ ellipsis
pushargr %v0
finishi @printf
retr %v0
@@ -45,7 +46,7 @@ identity_func:
stxi $neg %fp %r2
/* Invoke FUNC. */
- prepare 0
+ prepare
pushargr %r1
finishi identify
@@ -64,8 +65,9 @@ identity_func:
/* Display a failure message. */
branch:
- prepare 1
+ prepare
pushargi failure_message
+ ellipsis
finishi @printf
/* Leave. */
@@ -74,19 +76,21 @@ branch:
main:
prolog
- prepare 0
+ prepare
pushargi 7777
finishi identity_func
beqi succeeded %ret 7777
- prepare 1
+ prepare
pushargi report_message
+ ellipsis
pushargr %ret
pushargi 7777
finishi @printf
reti 1
succeeded:
- prepare 1
+ prepare
pushargi succeeded_message
+ ellipsis
finishi @printf
reti 0
epilog
diff --git a/check/alu_add.tst b/check/alu_add.tst
index 221b6ac..16cdf38 100644
--- a/check/alu_add.tst
+++ b/check/alu_add.tst
@@ -39,8 +39,9 @@
ADD(0, _d, -0.5, 0.5, 0.0)
ADD(1, _d, 0.25, 0.75, 1.0)
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/alu_and.tst b/check/alu_and.tst
index 2f0da9a..7474271 100644
--- a/check/alu_and.tst
+++ b/check/alu_and.tst
@@ -28,8 +28,9 @@
AND(19, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff)
#endif
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/alu_com.tst b/check/alu_com.tst
index 4722813..581c940 100644
--- a/check/alu_com.tst
+++ b/check/alu_com.tst
@@ -25,8 +25,9 @@
COM(9, 0x8000000000000001, 0x7ffffffffffffffe)
#endif
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/alu_div.tst b/check/alu_div.tst
index 37c1a2b..97e024d 100644
--- a/check/alu_div.tst
+++ b/check/alu_div.tst
@@ -75,8 +75,9 @@
DIV(0, _d, -0.5, 0.5, -1.0)
DIV(1, _d, 1.25, 0.5, 2.5)
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/alu_lsh.tst b/check/alu_lsh.tst
index 1b3118f..c05fda0 100644
--- a/check/alu_lsh.tst
+++ b/check/alu_lsh.tst
@@ -49,8 +49,9 @@
LSH(30, 0xffffffffff, 47, 0xffff800000000000)
#endif
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/alu_mul.tst b/check/alu_mul.tst
index edf9777..748417c 100644
--- a/check/alu_mul.tst
+++ b/check/alu_mul.tst
@@ -51,8 +51,9 @@
MUL(0, _d, -0.5, 0.5, -0.25)
MUL(1, _d, 0.25, 0.75, 0.1875)
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/alu_neg.tst b/check/alu_neg.tst
index 73b1b30..3264d13 100644
--- a/check/alu_neg.tst
+++ b/check/alu_neg.tst
@@ -34,8 +34,9 @@
NEG(2, _d, $(1.0 / 0), $(-1 / 0.0))
NEG(3, _d, -1.25, 1.25)
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/alu_or.tst b/check/alu_or.tst
index 31aa0c6..1e55a86 100644
--- a/check/alu_or.tst
+++ b/check/alu_or.tst
@@ -28,8 +28,9 @@
OR(19, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff)
#endif
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/alu_rem.tst b/check/alu_rem.tst
index f6c6074..5aea7cf 100644
--- a/check/alu_rem.tst
+++ b/check/alu_rem.tst
@@ -68,8 +68,9 @@
UREM(26,0xffffffffffffffff, 0xffffffffffffffff, 0)
#endif
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/alu_rsh.tst b/check/alu_rsh.tst
index f32c3c9..93f8c7b 100644
--- a/check/alu_rsh.tst
+++ b/check/alu_rsh.tst
@@ -77,8 +77,9 @@
URSH(31,0xffff800000000000, 47, 0x1ffff)
#endif
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/alu_sub.tst b/check/alu_sub.tst
index 4e8fd3c..8f07b62 100644
--- a/check/alu_sub.tst
+++ b/check/alu_sub.tst
@@ -41,8 +41,9 @@
SUB(0, _d, -0.5, 0.5, -1.0)
SUB(1, _d, 0.25, 0.75, -0.5)
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/alu_xor.tst b/check/alu_xor.tst
index 5c98e27..d1976ab 100644
--- a/check/alu_xor.tst
+++ b/check/alu_xor.tst
@@ -28,8 +28,9 @@
XOR(20, 0xffffffffffffffff, 0xffffffffffffffff, 0)
#endif
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/alux_add.tst b/check/alux_add.tst
index 68cf8e5..ddc4e57 100644
--- a/check/alux_add.tst
+++ b/check/alux_add.tst
@@ -41,8 +41,9 @@
ADDX(10,0x8000000000000000, 0x8000000000000000, 1)
#endif
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/alux_sub.tst b/check/alux_sub.tst
index edef15f..8a2838d 100644
--- a/check/alux_sub.tst
+++ b/check/alux_sub.tst
@@ -41,8 +41,9 @@
SUBX(10,1, 0x8000000000000000, -1)
#endif
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/bp.tst b/check/bp.tst
index a331244..487217b 100644
--- a/check/bp.tst
+++ b/check/bp.tst
@@ -13,11 +13,11 @@ rfibs:
blti_u out %v0 2
subi %v1 %v0 1 /* V1 = N-1 */
subi %v2 %v0 2 /* V1 = N-2 */
- prepare 0
+ prepare
pushargr %v1
finishi rfibs
retval %v1 /* V1 = rfibs(N-1) */
- prepare 0
+ prepare
pushargr %v2
finishi rfibs
retval %v2 /* V2 = rfibs(N-2) */
@@ -31,12 +31,13 @@ out:
main:
prolog
- prepare 0
+ prepare
pushargi 32
finishi rfibs
retval %v0
- prepare 1
+ prepare
pushargi fmt
+ ellipsis
pushargi 32
pushargr %v0
finishi @printf
diff --git a/check/branch.tst b/check/branch.tst
index 5fd54d5..b8ec071 100644
--- a/check/branch.tst
+++ b/check/branch.tst
@@ -554,8 +554,9 @@ unordi_f_0:
unordi_f_1:
// just to know did not crash or abort
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
diff --git a/check/cvt.tst b/check/cvt.tst
index e645cc2..1828259 100644
--- a/check/cvt.tst
+++ b/check/cvt.tst
@@ -371,8 +371,9 @@ xdf:
EXTDF(f0, f1, f2, f3, f4, f5)
// just to know did not abort
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
diff --git a/check/divi.tst b/check/divi.tst
index 6a21152..94bd3d6 100644
--- a/check/divi.tst
+++ b/check/divi.tst
@@ -34,7 +34,7 @@ test_divider_##divisor: \
loop_##divisor: \
bger done_##divisor %v0 %v1 \
ldr_i %v2 %v0 \
- prepare 0 \
+ prepare \
pushargr %v2 \
finishi divider_##divisor \
retval %v2 \
@@ -42,8 +42,9 @@ loop_##divisor: \
divi %r0 %r2 divisor \
/* save div result */ \
stxi_i $loc %fp %r0 \
- prepare 1 \
+ prepare \
pushargi fmt \
+ ellipsis \
pushargr %r2 \
pushargi divisor \
pushargr %v2 \
@@ -63,12 +64,12 @@ generate_test_divider(32768)
main:
prolog
- prepare 0
+ prepare
pushargi small_ops
pushargi 3
finishi test_divider_8
bnei fail %ret 0
- prepare 0
+ prepare
pushargi large_ops
pushargi 3
finishi test_divider_32768
diff --git a/check/fib.tst b/check/fib.tst
index 2df7b23..6891de0 100644
--- a/check/fib.tst
+++ b/check/fib.tst
@@ -34,7 +34,7 @@ main:
getarg %r0 $argv
addi %r0 %r0 $(__WORDSIZE >> 3)
ldr %r0 %r0
- prepare 0
+ prepare
pushargr %r0
finishi @atoi
retval %r0
@@ -45,12 +45,13 @@ default:
call:
movr %v0 %r0
- prepare 0
+ prepare
pushargr %r0
finishi nfibs
retval %r0
- prepare 1
+ prepare
pushargi format
+ ellipsis
pushargr %v0
pushargr %r0
finishi @printf
diff --git a/check/ldsti.tst b/check/ldsti.tst
index 3fd7f31..59d598b 100644
--- a/check/ldsti.tst
+++ b/check/ldsti.tst
@@ -141,8 +141,9 @@ Ld:
LDST(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5)
// just to know did not abort
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/ldstr-c.tst b/check/ldstr-c.tst
index 6644f98..7f85cda 100644
--- a/check/ldstr-c.tst
+++ b/check/ldstr-c.tst
@@ -150,8 +150,9 @@ Ll:
LDST(v0, v1, v2, r0, r1, r2)
// just to know did not abort
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/ldstr.tst b/check/ldstr.tst
index 2b9fd0d..1eb03d6 100644
--- a/check/ldstr.tst
+++ b/check/ldstr.tst
@@ -178,8 +178,9 @@ Ld:
LDST(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5)
// just to know did not abort
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/ldstxi-c.tst b/check/ldstxi-c.tst
index 7951a60..9491bf1 100644
--- a/check/ldstxi-c.tst
+++ b/check/ldstxi-c.tst
@@ -153,8 +153,9 @@ Ll:
LDST(v0, v1, v2, r0, r1, r2)
// just to know did not abort
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/ldstxi.tst b/check/ldstxi.tst
index 5dc224f..4aa0cc7 100644
--- a/check/ldstxi.tst
+++ b/check/ldstxi.tst
@@ -149,8 +149,9 @@ Ld:
LDST(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5)
// just to know did not abort
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/ldstxr-c.tst b/check/ldstxr-c.tst
index bf85416..13056bc 100644
--- a/check/ldstxr-c.tst
+++ b/check/ldstxr-c.tst
@@ -214,8 +214,9 @@ Ll1:
LDST(v0, v1, v2, r0, r1, r2)
// just to know did not abort
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/ldstxr.tst b/check/ldstxr.tst
index 32ddd24..95c1891 100644
--- a/check/ldstxr.tst
+++ b/check/ldstxr.tst
@@ -204,8 +204,9 @@ Ld:
LDST(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5)
// just to know did not abort
- prepare 1
+ prepare
pushargi ok
+ ellipsis
finishi @printf
ret
epilog
diff --git a/check/lightning.c b/check/lightning.c
index cf5dff1..2226da9 100644
--- a/check/lightning.c
+++ b/check/lightning.c
@@ -242,7 +242,7 @@ static void call_forward(void *value, label_t *label);
static void make_arg(long value);
static long get_arg(void);
static long get_imm(void);
-static void prolog(void);
+static void prolog(void); static void ellipsis(void);
static void allocai(void);
static void arg(void);
static void getarg_c(void); static void getarg_uc(void);
@@ -533,7 +533,7 @@ static char *data;
static size_t data_offset, data_length;
static instr_t instr_vector[] = {
#define entry(value) { NULL, #value, value }
- entry(prolog),
+ entry(prolog), entry(ellipsis),
entry(allocai),
entry(arg),
entry(getarg_c), entry(getarg_uc),
@@ -1211,7 +1211,7 @@ name(void)
\
jit_##name(value); \
}
-entry(prolog)
+entry(prolog) entry(ellipsis)
void
allocai(void) {
symbol_t *symbol;
@@ -1360,7 +1360,7 @@ entry_lb_ir_ir(bxsubr) entry_lb_ir_im(bxsubi)
entry_lb_ir_ir(bxsubr_u) entry_lb_ir_im(bxsubi_u)
entry_ir(jmpr) entry_lb(jmpi)
entry_ir(callr) entry_fn(calli)
-entry_im(prepare)
+entry(prepare)
entry_ir(pushargr) entry_im(pushargi)
entry_ir(finishr) entry_fn(finishi)
entry(ret)
diff --git a/check/rpn.tst b/check/rpn.tst
index fe12557..939e0a5 100644
--- a/check/rpn.tst
+++ b/check/rpn.tst
@@ -106,64 +106,74 @@ f2c:
main:
prolog
- prepare 1
+ prepare
pushargi C
+ ellipsis
finishi @printf
movi %v0 0
loopC:
- prepare 1
+ prepare
pushargi format
+ ellipsis
pushargr %v0
finishi @printf
addi %v0 %v0 10
blei loopC %v0 100
- prepare 1
+ prepare
pushargi F
+ ellipsis
finishi @printf
movi %v0 0
loopC2F:
- prepare 0
+ prepare
pushargr %v0
finishi c2f
retval %r0
- prepare 2
+ prepare
pushargi format
+ ellipsis
pushargr %r0
finishi @printf
addi %v0 %v0 10
blei loopC2F %v0 100
- prepare 1
+ prepare
pushargi newline
+ ellipsis
finishi @printf
- prepare 1
+ prepare
pushargi F
+ ellipsis
finishi @printf
movi %v0 32
loopF:
- prepare 2
+ prepare
pushargi format
+ ellipsis
pushargr %v0
finishi @printf
addi %v0 %v0 18
blei loopF %v0 212
- prepare 1
+ prepare
pushargi C
+ ellipsis
finishi @printf
movi %v0 32
loopF2C:
- prepare 0
+ prepare
pushargr %v0
finishi f2c
retval %r0
- prepare 2
+ prepare
pushargi format
+ ellipsis
pushargr %r0
finishi @printf
addi %v0 %v0 18
blei loopF2C %v0 212
- prepare 1
+ prepare
pushargi newline
+ ellipsis
finishi @printf
ret
diff --git a/include/lightning.h b/include/lightning.h
index 997a936..56cefe5 100644
--- a/include/lightning.h
+++ b/include/lightning.h
@@ -114,6 +114,7 @@ typedef enum {
#define jit_prolog() _jit_prolog(_jit)
jit_code_prolog,
+#define jit_ellipsis() _jit_ellipsis(_jit)
#define jit_allocai(u) _jit_allocai(_jit,u)
#define jit_arg() _jit_arg(_jit)
@@ -406,7 +407,7 @@ typedef enum {
#define jit_calli(u) jit_new_node_p(jit_code_calli,u)
jit_code_callr, jit_code_calli,
-#define jit_prepare(u) _jit_prepare(_jit,u)
+#define jit_prepare() _jit_prepare(_jit)
#define jit_pushargr(u) _jit_pushargr(_jit,u)
#define jit_pushargi(u) _jit_pushargi(_jit,u)
#define jit_finishr(u) _jit_finishr(_jit,u)
@@ -739,6 +740,7 @@ extern void _jit_link(jit_state_t*, jit_node_t*);
extern void _jit_prolog(jit_state_t*);
extern jit_int32_t _jit_allocai(jit_state_t*, jit_int32_t);
+extern void _jit_ellipsis(jit_state_t*);
extern jit_int32_t _jit_arg(jit_state_t*);
extern void _jit_getarg_c(jit_state_t*, jit_gpr_t, jit_int32_t);
@@ -751,7 +753,8 @@ extern void _jit_getarg_ui(jit_state_t*, jit_gpr_t,
jit_int32_t);
extern void _jit_getarg_l(jit_state_t*, jit_gpr_t, jit_int32_t);
#endif
-extern void _jit_prepare(jit_state_t*, jit_int32_t);
+extern void _jit_prepare(jit_state_t*);
+extern void _jit_ellipsis(jit_state_t*);
extern void _jit_pushargr(jit_state_t*, jit_gpr_t);
extern void _jit_pushargi(jit_state_t*, jit_word_t);
extern void _jit_finishr(jit_state_t*, jit_gpr_t);
diff --git a/lib/jit_arm.c b/lib/jit_arm.c
index b706440..adafcb2 100644
--- a/lib/jit_arm.c
+++ b/lib/jit_arm.c
@@ -243,6 +243,12 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(_jit->function->regset);
}
+void
+_jit_ellipsis(jit_state_t *_jit)
+{
+ _jit->function->call.kind = jit_call_varargs;
+}
+
jit_int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
{
diff --git a/lib/jit_mips.c b/lib/jit_mips.c
index f365e3c..7b6f99d 100644
--- a/lib/jit_mips.c
+++ b/lib/jit_mips.c
@@ -150,6 +150,12 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(_jit->function->regset);
}
+void
+_jit_ellipsis(jit_state_t *_jit)
+{
+ _jit->function->call.kind = jit_call_varargs;
+}
+
jit_int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
{
diff --git a/lib/jit_ppc.c b/lib/jit_ppc.c
index 19eeca6..618adef 100644
--- a/lib/jit_ppc.c
+++ b/lib/jit_ppc.c
@@ -156,6 +156,12 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(_jit->function->regset);
}
+void
+_jit_ellipsis(jit_state_t *_jit)
+{
+ _jit->function->call.kind = jit_call_varargs;
+}
+
jit_int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
{
diff --git a/lib/jit_x86.c b/lib/jit_x86.c
index 416e72a..918af41 100644
--- a/lib/jit_x86.c
+++ b/lib/jit_x86.c
@@ -320,6 +320,12 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(_jit->function->regset);
}
+void
+_jit_ellipsis(jit_state_t *_jit)
+{
+ _jit->function->call.kind = jit_call_varargs;
+}
+
jit_int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
{
diff --git a/lib/lightning.c b/lib/lightning.c
index a416872..1a49ffe 100644
--- a/lib/lightning.c
+++ b/lib/lightning.c
@@ -708,10 +708,10 @@ _jit_link(jit_state_t *_jit, jit_node_t *node)
}
void
-_jit_prepare(jit_state_t *_jit, jit_int32_t kind)
+_jit_prepare(jit_state_t *_jit)
{
assert(_jit->function);
- _jit->function->call.kind = kind;
+ _jit->function->call.kind = jit_call_default;
_jit->function->call.argi =
_jit->function->call.argf =
_jit->function->call.size = 0;
- [Guile-commits] 124/437: Also reset alloca_slack after jit_prolog in i386., (continued)
- [Guile-commits] 124/437: Also reset alloca_slack after jit_prolog in i386., Andy Wingo, 2018/07/02
- [Guile-commits] 154/437: Correct test cases to work with x87 in ix86., Andy Wingo, 2018/07/02
- [Guile-commits] 148/437: Add better ppc support code, but still not functional., Andy Wingo, 2018/07/02
- [Guile-commits] 153/437: Make it clear stdarg like abstraction is not supported., Andy Wingo, 2018/07/02
- [Guile-commits] 76/437: fix several load/store patterns for x86-64., Andy Wingo, 2018/07/02
- [Guile-commits] 81/437: fix stack alignment for Apple 32-bit ABI, Andy Wingo, 2018/07/02
- [Guile-commits] 98/437: always set and replace lightning_frag, Andy Wingo, 2018/07/02
- [Guile-commits] 166/437: Correct extra regressions found by the call.tst test case., Andy Wingo, 2018/07/02
- [Guile-commits] 165/437: Add simple test case to test argument and return values., Andy Wingo, 2018/07/02
- [Guile-commits] 158/437: Add new test case to check stack integrity on complex stack frames., Andy Wingo, 2018/07/02
- [Guile-commits] 150/437: Add jit_ellipis and remove jit_prepare argument.,
Andy Wingo <=
- [Guile-commits] 108/437: fix x86_64 jit_bner_{f,d}, Andy Wingo, 2018/07/02
- [Guile-commits] 122/437: Correct ALU add and sub operations with 64 bit immediate operands., Andy Wingo, 2018/07/02
- [Guile-commits] 119/437: Correct branches and several ALU operations with 64 immediates, Andy Wingo, 2018/07/02
- [Guile-commits] 135/437: Correct implementation problems on ix86., Andy Wingo, 2018/07/02
- [Guile-commits] 169/437: Correct wrong and confusing reverse float comparison logic, Andy Wingo, 2018/07/02
- [Guile-commits] 139/437: Implement sqrt codes in mips., Andy Wingo, 2018/07/02
- [Guile-commits] 134/437: Correct make distcheck., Andy Wingo, 2018/07/02
- [Guile-commits] 156/437: Simplify listing of test cases with alternate jit generation options, Andy Wingo, 2018/07/02
- [Guile-commits] 157/437: Add two extra test cases for float operations., Andy Wingo, 2018/07/02
- [Guile-commits] 161/437: Add new register clobber detection test case., Andy Wingo, 2018/07/02