mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-11 22:31:12 +02:00
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.
This commit is contained in:
parent
a04df966c0
commit
0b89a17ca2
39 changed files with 165 additions and 70 deletions
24
ChangeLog
24
ChangeLog
|
@ -1,3 +1,27 @@
|
|||
2012-12-12 Paulo Andrade <pcpa@gnu.org>
|
||||
|
||||
* 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 <pcpa@gnu.org>
|
||||
|
||||
* lib/jit_ppc-cpu.c: Make movr a function that checks arguments
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -28,8 +28,9 @@
|
|||
AND(19, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff)
|
||||
#endif
|
||||
|
||||
prepare 1
|
||||
prepare
|
||||
pushargi ok
|
||||
ellipsis
|
||||
finishi @printf
|
||||
ret
|
||||
epilog
|
||||
|
|
|
@ -25,8 +25,9 @@
|
|||
COM(9, 0x8000000000000001, 0x7ffffffffffffffe)
|
||||
#endif
|
||||
|
||||
prepare 1
|
||||
prepare
|
||||
pushargi ok
|
||||
ellipsis
|
||||
finishi @printf
|
||||
ret
|
||||
epilog
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -49,8 +49,9 @@
|
|||
LSH(30, 0xffffffffff, 47, 0xffff800000000000)
|
||||
#endif
|
||||
|
||||
prepare 1
|
||||
prepare
|
||||
pushargi ok
|
||||
ellipsis
|
||||
finishi @printf
|
||||
ret
|
||||
epilog
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -28,8 +28,9 @@
|
|||
OR(19, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff)
|
||||
#endif
|
||||
|
||||
prepare 1
|
||||
prepare
|
||||
pushargi ok
|
||||
ellipsis
|
||||
finishi @printf
|
||||
ret
|
||||
epilog
|
||||
|
|
|
@ -68,8 +68,9 @@
|
|||
UREM(26,0xffffffffffffffff, 0xffffffffffffffff, 0)
|
||||
#endif
|
||||
|
||||
prepare 1
|
||||
prepare
|
||||
pushargi ok
|
||||
ellipsis
|
||||
finishi @printf
|
||||
ret
|
||||
epilog
|
||||
|
|
|
@ -77,8 +77,9 @@
|
|||
URSH(31,0xffff800000000000, 47, 0x1ffff)
|
||||
#endif
|
||||
|
||||
prepare 1
|
||||
prepare
|
||||
pushargi ok
|
||||
ellipsis
|
||||
finishi @printf
|
||||
ret
|
||||
epilog
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -28,8 +28,9 @@
|
|||
XOR(20, 0xffffffffffffffff, 0xffffffffffffffff, 0)
|
||||
#endif
|
||||
|
||||
prepare 1
|
||||
prepare
|
||||
pushargi ok
|
||||
ellipsis
|
||||
finishi @printf
|
||||
ret
|
||||
epilog
|
||||
|
|
|
@ -41,8 +41,9 @@
|
|||
ADDX(10,0x8000000000000000, 0x8000000000000000, 1)
|
||||
#endif
|
||||
|
||||
prepare 1
|
||||
prepare
|
||||
pushargi ok
|
||||
ellipsis
|
||||
finishi @printf
|
||||
ret
|
||||
epilog
|
||||
|
|
|
@ -41,8 +41,9 @@
|
|||
SUBX(10,1, 0x8000000000000000, -1)
|
||||
#endif
|
||||
|
||||
prepare 1
|
||||
prepare
|
||||
pushargi ok
|
||||
ellipsis
|
||||
finishi @printf
|
||||
ret
|
||||
epilog
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue