[svn:parrot] r41352 - branches/kill_jit/src
darbelo at svn.parrot.org
darbelo at svn.parrot.org
Sat Sep 19 05:19:38 UTC 2009
Author: darbelo
Date: Sat Sep 19 05:19:37 2009
New Revision: 41352
URL: https://trac.parrot.org/parrot/changeset/41352
Log:
Another batch of JIT leftovers removed.
Modified:
branches/kill_jit/src/frame_builder.c
branches/kill_jit/src/frame_builder.h
Modified: branches/kill_jit/src/frame_builder.c
==============================================================================
--- branches/kill_jit/src/frame_builder.c Sat Sep 19 03:27:17 2009 (r41351)
+++ branches/kill_jit/src/frame_builder.c Sat Sep 19 05:19:37 2009 (r41352)
@@ -460,387 +460,7 @@
emitm_jumpl(jit_info->native_ptr, 0xc0def00d);
}
-# define CONST(i) (int *)(jit_info->cur_op[i] * \
- sizeof (PackFile_Constant) + \
- offsetof(PackFile_Constant, u))
-
-/* for vtable calls registers are already saved back */
-void
-Parrot_jit_vtable_n_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP, int n, int *args)
-{
- int nvtable = NULL; /*op_jit[*jit_info->cur_op].extcall;*/
- size_t offset;
- op_info_t *op_info = &interp->op_info_table[*jit_info->cur_op];
- int pi;
- int idx, i, op;
- int st = 0; /* stack pop correction */
- char *L4 = NULL;
-
- /* get the offset of the first vtable func */
- offset = offsetof(VTABLE, absolute);
- offset += nvtable * sizeof (void *);
- op = *jit_info->cur_op;
-
- /* get params $i, 0 is opcode */
- for (idx = n; idx > 0; idx--) {
- i = args[idx-1];
- pi = *(jit_info->cur_op + i);
-
- switch (op_info->types[i - 1]) {
- case PARROT_ARG_S:
- emitm_movl_m_r(interp, jit_info->native_ptr,
- emit_EAX, emit_EBX, emit_None, 1, REG_OFFS_STR(pi));
- emitm_pushl_r(jit_info->native_ptr, emit_EAX);
- break;
- case PARROT_ARG_K:
- case PARROT_ARG_P:
- emitm_movl_m_r(interp, jit_info->native_ptr,
- emit_EAX, emit_EBX, emit_None, 1, REG_OFFS_PMC(pi));
- /* push $i, the left most Pi stays in eax, which is used
- * below, to call the vtable method
- */
- emitm_pushl_r(jit_info->native_ptr, emit_EAX);
- break;
- case PARROT_ARG_KI:
- case PARROT_ARG_I:
- if (MAP(i))
- emitm_pushl_r(jit_info->native_ptr, MAP(i));
- else {
- emitm_movl_m_r(interp, jit_info->native_ptr,
- emit_EAX, emit_EBX, emit_None, 1, REG_OFFS_INT(pi));
- emitm_pushl_r(jit_info->native_ptr, emit_EAX);
- }
- break;
- break;
- case PARROT_ARG_KIC:
- case PARROT_ARG_IC:
- /* XXX INTVAL_SIZE */
- /* push value */
- emitm_pushl_i(jit_info->native_ptr, pi);
- break;
- case PARROT_ARG_N:
- /* push num on st(0) */
- if (MAP(i))
- emitm_fld(jit_info->native_ptr, MAP(i));
- else
- jit_emit_fload_mb_n(interp, jit_info->native_ptr,
- emit_EBX, REG_OFFS_NUM(pi));
- goto store;
- case PARROT_ARG_NC:
- /*
- * TODO not all constants are shared between interpreters
- */
- jit_emit_fload_m_n(interp, jit_info->native_ptr,
- &interp->code->const_table->
- constants[pi]->u.number);
-store:
- /* make room for double */
- emitm_addb_i_r(jit_info->native_ptr, -8, emit_ESP);
- emitm_fstpl(interp, jit_info->native_ptr, emit_ESP, emit_None, 1, 0);
- /* additional stack adjustment */
- st += 4;
- break;
-
- case PARROT_ARG_SC:
- emitm_pushl_i(jit_info->native_ptr,
- interp->code->const_table->
- constants[pi]->u.string);
- break;
-
- case PARROT_ARG_KC:
- case PARROT_ARG_PC:
- emitm_pushl_i(jit_info->native_ptr,
- interp->code->const_table->
- constants[pi]->u.key);
- break;
-
- default:
- Parrot_ex_throw_from_c_args(interp, NULL, 1,
- "jit_vtable_n_op: unimp type %d, arg %d vtable %d",
- op_info->types[i - 1], i, nvtable);
- break;
- }
- }
-
- /* push interpreter */
- Parrot_jit_emit_get_INTERP(interp, jit_info->native_ptr, emit_ECX);
- emitm_pushl_r(jit_info->native_ptr, emit_ECX);
-
- if (L4) {
- emitm_callr(jit_info->native_ptr, emit_ESI);
- }
- else {
- /* mov (offs)%eax, %eax i.e. $1->vtable */
- emitm_movl_m_r(interp, jit_info->native_ptr, emit_EAX, emit_EAX, emit_None, 1,
- offsetof(struct PMC, vtable));
- /* call *(offset)eax */
- emitm_callm(jit_info->native_ptr, emit_EAX, emit_None, emit_None, offset);
- }
-
- emitm_addb_i_r(jit_info->native_ptr,
- st + sizeof (void *) * (n + 1), emit_ESP);
-
- /* L4: */
- if (L4)
- L4[1] = (char)(jit_info->native_ptr - L4 - 2);
-}
-
-void
-Parrot_jit_store_retval(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- op_info_t *op_info = &interp->op_info_table[*jit_info->cur_op];
- int p1 = *(jit_info->cur_op + 1);
-
- /* return result is in EAX or ST(0) */
- switch (op_info->types[0]) {
- case PARROT_ARG_I:
- emitm_movl_r_m(interp, jit_info->native_ptr,
- emit_EAX, emit_EBX, emit_None, 1, REG_OFFS_INT(p1));
- break;
- case PARROT_ARG_S:
- emitm_movl_r_m(interp, jit_info->native_ptr,
- emit_EAX, emit_EBX, emit_None, 1, REG_OFFS_STR(p1));
- break;
- case PARROT_ARG_P:
- emitm_movl_r_m(interp, jit_info->native_ptr,
- emit_EAX, emit_EBX, emit_None, 1, REG_OFFS_PMC(p1));
- break;
- case PARROT_ARG_N:
- jit_emit_fstore_mb_n(interp, jit_info->native_ptr, emit_EBX,
- REG_OFFS_NUM(p1));
- break;
- default:
- Parrot_ex_throw_from_c_args(interp, NULL, 1, "jit_vtable1r: ill LHS");
- break;
- }
-}
-
-/* emit a call to a vtable func
- * $1->vtable(interp, $1)
- */
-void
-Parrot_jit_vtable1_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- int a[] = { 1 };
- Parrot_jit_vtable_n_op(jit_info, interp, 1, a);
-}
-
-/* emit a call to a vtable func
- * $1 = $2->vtable(interp, $2)
- */
-void
-Parrot_jit_vtable1r_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- int a[] = { 2 };
- Parrot_jit_vtable_n_op(jit_info, interp, 1, a);
- Parrot_jit_store_retval(jit_info, interp);
-}
-
-
-/* emit a call to a vtable func
- * $1 = $2->vtable(interp, $2, $3)
- */
-void
-Parrot_jit_vtable_1r223_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- int a[] = { 2 , 3};
- Parrot_jit_vtable_n_op(jit_info, interp, 2, a);
- Parrot_jit_store_retval(jit_info, interp);
-}
-
-/* emit a call to a vtable func
- * $1 = $3->vtable(interp, $3, $2)
- */
-void
-Parrot_jit_vtable_1r332_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- int a[] = { 3 , 2};
- Parrot_jit_vtable_n_op(jit_info, interp, 2, a);
- Parrot_jit_store_retval(jit_info, interp);
-}
-/* emit a call to a vtable func
- * $1->vtable(interp, $1, $2)
- */
-void
-Parrot_jit_vtable_112_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- int a[] = { 1, 2 };
- Parrot_jit_vtable_n_op(jit_info, interp, 2, a);
-}
-
-/* emit a call to a vtable func
- * $1->vtable(interp, $1, $1)
- */
-void
-Parrot_jit_vtable_111_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- int a[] = { 1, 1 };
- Parrot_jit_vtable_n_op(jit_info, interp, 2, a);
-}
-/* emit a call to a vtable func
- * $2->vtable(interp, $2, $1)
- */
-void
-Parrot_jit_vtable_221_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- int a[] = { 2, 1 };
- Parrot_jit_vtable_n_op(jit_info, interp, 2, a);
-}
-
-/* emit a call to a vtable func
- * $2->vtable(interp, $2, $3, $1)
- */
-void
-Parrot_jit_vtable_2231_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- int a[] = { 2, 3, 1 };
- Parrot_jit_vtable_n_op(jit_info, interp, 3, a);
-}
-
-/* emit a call to a vtable func
- * $1->vtable(interp, $1, $2, $3)
- */
-void
-Parrot_jit_vtable_1123_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- int a[] = { 1, 2, 3 };
- Parrot_jit_vtable_n_op(jit_info, interp, 3, a);
-}
-
-/* emit a call to a vtable func
- * $1->vtable(interp, $1, $2, $1)
- */
-void
-Parrot_jit_vtable_1121_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- int a[] = { 1, 2, 1 };
- Parrot_jit_vtable_n_op(jit_info, interp, 3, a);
-}
-
-
-/* if_p_ic, unless_p_ic */
-void
-Parrot_jit_vtable_if_unless_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP, int unless)
-{
- int ic = *(jit_info->cur_op + 2); /* branch offset */
-
- /* emit call vtable function i.e. get_bool, result eax */
- Parrot_jit_vtable1_op(jit_info, interp);
- /* test result */
- jit_emit_test_r_i(jit_info->native_ptr, emit_EAX);
- jit_emit_jcc(jit_info, unless ? emitm_jz : emitm_jnz, ic);
-}
-
-/* unless_p_ic */
-void
-Parrot_jit_vtable_unlessp_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- Parrot_jit_vtable_if_unless_op(jit_info, interp, 1);
-}
-
-/* if_p_ic */
-void
-Parrot_jit_vtable_ifp_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP)
-{
- Parrot_jit_vtable_if_unless_op(jit_info, interp, 0);
-}
-
-# define CALL(f) Parrot_exec_add_text_rellocation_func(jit_info->objfile, \
- jit_info->native_ptr, (f)); \
- emitm_calll(jit_info->native_ptr, EXEC_CALLDISP);
-
-# undef IREG
-# undef NREG
-# undef SREG
-# undef PREG
-# undef CONST
-# undef CALL
-
# define NATIVECODE jit_info->native_ptr
-# define CUR_OPCODE jit_info->cur_op
-# define CONST(i) PCONST(jit_info->cur_op[(i)])
-
-void
-jit_get_params_pc(Parrot_jit_info_t *jit_info, PARROT_INTERP)
-{
- PMC *sig_pmc;
- INTVAL *sig_bits, i, n;
-
- sig_pmc = Parrot_pcc_get_pmc_constant(interp, CURRENT_CONTEXT(interp), CUR_OPCODE[1]);
- GETATTR_FixedIntegerArray_int_array(interp, sig_pmc, sig_bits);
- n = VTABLE_elements(interp, sig_pmc);
- jit_info->n_args = n;
- emitm_movl_m_r(interp, NATIVECODE, emit_EAX, emit_EBP, emit_None, 1, 16);
- for (i = 0; i < n; ++i) {
- switch (sig_bits[i] & PARROT_ARG_TYPE_MASK) {
- case PARROT_ARG_INTVAL:
- emitm_movl_m_r(interp, NATIVECODE, MAP(2+i), emit_EAX, emit_None,
- 1, 4 + i*4);
- break;
- case PARROT_ARG_FLOATVAL:
- emitm_movl_m_r(interp, NATIVECODE, emit_EAX, emit_EAX, emit_None,
- 1, 4+ i*4);
- jit_emit_fload_mb_n(interp, NATIVECODE, emit_EAX, 0);
- emitm_fstp(NATIVECODE, (MAP(2+i) + 1));
- if (i < n - 1)
- emitm_movl_m_r(interp, NATIVECODE, emit_EAX, emit_EBP,
- emit_None, 1, 16);
- break;
- default:
- break;
- }
- }
-}
-
-/*
- * preserve registers
- * a) all callee saved on function entry
- */
-void
-jit_save_regs(Parrot_jit_info_t *jit_info, PARROT_INTERP)
-{
- int i, used_i, save_i;
- const jit_arch_regs *reg_info;
-
- used_i = Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_INT);
- reg_info = &jit_info->arch_info->regs[jit_info->code_type];
- save_i = reg_info->n_preserved_I;
- for (i = save_i; i < used_i; ++i) {
- emitm_pushl_r(jit_info->native_ptr, reg_info->map_I[i]);
- }
-}
-
-/* restore saved regs, see above */
-void
-jit_restore_regs(Parrot_jit_info_t *jit_info, PARROT_INTERP)
-{
-
- int i, used_i, save_i;
- const jit_arch_regs *reg_info;
-
- used_i = Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_INT);
- reg_info = &jit_info->arch_info->regs[jit_info->code_type];
- save_i = reg_info->n_preserved_I;
- /* note - reversed order of jit_save_regs */
- for (i = used_i - 1; i >= save_i; --i) {
- emitm_popl_r(jit_info->native_ptr, reg_info->map_I[i]);
- }
-}
/*
* preserve registers around a functioncall
@@ -911,181 +531,8 @@
(used_i * sizeof (INTVAL) + used_n * sizeof (FLOATVAL)));
}
-void
-jit_set_returns_pc(Parrot_jit_info_t *jit_info, PARROT_INTERP,
- int recursive)
-{
- PMC *sig_pmc;
- INTVAL *sig_bits, sig;
-
- sig_pmc = Parrot_pcc_get_pmc_constant(interp, CURRENT_CONTEXT(interp), CUR_OPCODE[1]);
- if (!VTABLE_elements(interp, sig_pmc))
- return;
- GETATTR_FixedIntegerArray_int_array(interp, sig_pmc, sig_bits);
- sig = sig_bits[0];
- if (!recursive) {
- /* mov 16(%ebp), %eax - fetch args ptr */
- emitm_movl_m_r(interp, NATIVECODE, emit_EAX, emit_EBP, emit_None, 1, 16);
- emitm_movl_m_r(interp, NATIVECODE, emit_EAX, emit_EAX, emit_None, 1, 0);
- }
- /*
- * recursive returns according to ABI */
- switch (sig & (PARROT_ARG_TYPE_MASK|PARROT_ARG_CONSTANT)) {
- case PARROT_ARG_INTVAL:
- if (recursive) {
- jit_emit_mov_rr_i(NATIVECODE, emit_EAX, MAP(2));
- }
- else {
- emitm_movl_r_m(interp, NATIVECODE, MAP(2), emit_EAX, 0, 1, 0);
- }
- break;
- case PARROT_ARG_INTVAL|PARROT_ARG_CONSTANT:
- if (recursive) {
- jit_emit_mov_ri_i(interp, NATIVECODE, emit_EAX, CUR_OPCODE[2]);
- }
- else {
- emitm_movl_i_m(NATIVECODE, CUR_OPCODE[2], emit_EAX, 0, 1, 0);
- }
- break;
- case PARROT_ARG_FLOATVAL:
- if (recursive) {
- jit_emit_mov_rr_n(NATIVECODE, FSR1, MAP(2));
- }
- else {
- emitm_fld(NATIVECODE, MAP(2));
- jit_emit_fstore_mb_n(interp, NATIVECODE, emit_EAX, 0);
- }
- break;
- case PARROT_ARG_FLOATVAL|PARROT_ARG_CONSTANT:
- if (recursive) {
- jit_emit_mov_ri_n(interp, NATIVECODE, FSR1, &CONST(2)->u.number);
- }
- else {
- jit_emit_mov_ri_n(interp, NATIVECODE, FSR1, &CONST(2)->u.number);
- jit_emit_fstore_mb_n(interp, NATIVECODE, emit_EAX, 0);
- }
- break;
- default:
- Parrot_ex_throw_from_c_args(interp, NULL, 1,
- "set_returns_jit - unknown typ");
- break;
- }
-}
-
-void
-jit_set_args_pc(Parrot_jit_info_t *jit_info, PARROT_INTERP,
- int recursive)
-{
- PMC *sig_args, *sig_params, *sig_result;
- INTVAL *sig_bits, sig, i, n;
- opcode_t *params, *result;
- char params_map;
- int skip, used_n;
- char collision[16];
- const jit_arch_regs *reg_info;
-
- reg_info = &jit_info->arch_info->regs[jit_info->code_type];
-
- /* create args array */
- if (!recursive)
- Parrot_ex_throw_from_c_args(interp, NULL, 1,
- "set_args_jit - can't do that yet ");
-
- sig_args = Parrot_pcc_get_pmc_constant(interp, CURRENT_CONTEXT(interp), CUR_OPCODE[1]);
-
- if (!VTABLE_elements(interp, sig_args))
- return;
- params = jit_info->optimizer->sections->begin;
- sig_params = Parrot_pcc_get_pmc_constant(interp, CURRENT_CONTEXT(interp), params[1]);
- ASSERT_SIG_PMC(sig_params);
- GETATTR_FixedIntegerArray_int_array(interp, sig_args, sig_bits);
- n = VTABLE_elements(interp, sig_args);
- /*
- * preserve registers - need get_results, because we skip the
- * return value
- */
- result = CUR_OPCODE + 2 + n + 3; /* set_args, set_p_pc */
- PARROT_ASSERT(*result == PARROT_OP_get_results_pc);
- sig_result = Parrot_pcc_get_pmc_constant(interp, CURRENT_CONTEXT(interp), result[1]);
- ASSERT_SIG_PMC(sig_result);
-
- if (!VTABLE_elements(interp, sig_result))
- skip = -1;
- else
- skip = MAP(2 + n + 3 + 2);
- used_n = jit_save_regs_call(jit_info, interp, skip);
- memset(collision, 0, 16);
- for (i = 0; i < n; ++i) {
- sig = sig_bits[i];
- /* move args to params regs */
- params_map = jit_info->optimizer->map_branch[2 + i];
- switch (sig & (PARROT_ARG_TYPE_MASK|PARROT_ARG_CONSTANT)) {
- case PARROT_ARG_INTVAL:
- /* if the arg was already set,
- * we can't use the src again - fetch from stack
- *
- * XXX skip
- *
- * TODO write a general reg_move
- */
- if (collision[(int)MAP(2+i)]) {
- int j;
- for (j = 0; j < reg_info->n_mapped_I; ++j) {
- if (reg_info->map_I[j] == MAP(2+i)) {
- emitm_movl_m_r(interp, NATIVECODE, params_map, emit_ESP,
- emit_None, 1,
- (used_n * sizeof (FLOATVAL) +
- j * sizeof (INTVAL)));
- break;
- }
- }
- }
- else {
- if (params_map != MAP(2+i)) {
- jit_emit_mov_rr_i(NATIVECODE, params_map, MAP(2 + i));
- }
- }
- collision[(int)params_map] = 1;
- break;
- case PARROT_ARG_INTVAL|PARROT_ARG_CONSTANT:
- /* TODO move constants last */
- jit_emit_mov_ri_i(interp, NATIVECODE, params_map, CUR_OPCODE[2 + i]);
- break;
- case PARROT_ARG_FLOATVAL:
- if (collision[(int)MAP(2+i)]) {
- int j;
- for (j = 0; j < reg_info->n_mapped_F; ++j) {
- if (reg_info->map_F[j] == MAP(2+i)) {
- jit_emit_fload_mb_n(interp, NATIVECODE, emit_ESP,
- (j * sizeof (FLOATVAL)));
- emitm_fstp(NATIVECODE, (1+params_map));
- break;
- }
- }
- }
- else {
- jit_emit_mov_rr_n(NATIVECODE, params_map, MAP(2 + i));
- }
- collision[(int)params_map] = 1;
- break;
- case PARROT_ARG_FLOATVAL|PARROT_ARG_CONSTANT:
- jit_emit_mov_ri_n(interp, NATIVECODE, params_map,
- &CONST(2 + i)->u.number);
- break;
- default:
- Parrot_ex_throw_from_c_args(interp, NULL, 1,
- "set_args_jit - unknown type");
- break;
- }
- }
-}
-
-# undef CONST
-
int control_word = 0x27f;
-extern int jit_op_count(void);
-
/*
* params are put rigth to left on the stack
* parrot registers are counted left to right
Modified: branches/kill_jit/src/frame_builder.h
==============================================================================
--- branches/kill_jit/src/frame_builder.h Sat Sep 19 03:27:17 2009 (r41351)
+++ branches/kill_jit/src/frame_builder.h Sat Sep 19 05:19:37 2009 (r41352)
@@ -1811,111 +1811,6 @@
emitm_popl_r((pc), emit_EBP); \
} while (0)
-#if JIT_VTABLE_OPS
-
-# undef Parrot_jit_vtable1_op
-# undef Parrot_jit_vtable1r_op
-
-# undef Parrot_jit_vtable_111_op
-# undef Parrot_jit_vtable_112_op
-# undef Parrot_jit_vtable_221_op
-# undef Parrot_jit_vtable_1121_op
-# undef Parrot_jit_vtable_1123_op
-# undef Parrot_jit_vtable_2231_op
-
-# undef Parrot_jit_vtable_1r223_op
-# undef Parrot_jit_vtable_1r332_op
-
-# undef Parrot_jit_vtable_ifp_op
-# undef Parrot_jit_vtable_unlessp_op
-# undef Parrot_jit_vtable_newp_ic_op
-
-/* emit a call to a vtable func
- * $X->vtable(interp, $X [, $Y...])
- */
-# define MAP(i) jit_info->optimizer->map_branch[jit_info->op_i + (i)]
-
-# include "parrot/oplib/ops.h"
-
-INTVAL Parrot_FixedIntegerArray_get_integer_keyed_int(Interp*, PMC*, INTVAL);
-void Parrot_FixedIntegerArray_set_integer_keyed_int(Interp*, PMC*, INTVAL, INTVAL);
-
-char * jit_set_i_p_ki(Parrot_jit_info_t *jit_info, PARROT_INTERP,
- size_t offset);
-
-char * jit_set_p_ki_i(Parrot_jit_info_t *jit_info, PARROT_INTERP,
- size_t offset);
-
-/*
- * for vtable calls registers are already saved back
- */
-void Parrot_jit_vtable_n_op(Parrot_jit_info_t *jit_info, PARROT_INTERP,
- int n, int *args);
-
-void Parrot_jit_store_retval(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-
-/* emit a call to a vtable func
- * $1->vtable(interp, $1)
- */
-void Parrot_jit_vtable1_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-
-/* emit a call to a vtable func
- * $1 = $2->vtable(interp, $2)
- */
-void Parrot_jit_vtable1r_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-
-/* emit a call to a vtable func
- * $1 = $2->vtable(interp, $2, $3)
- */
-void Parrot_jit_vtable_1r223_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-
-/* emit a call to a vtable func
- * $1 = $3->vtable(interp, $3, $2)
- */
-void Parrot_jit_vtable_1r332_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-
-/* emit a call to a vtable func
- * $1->vtable(interp, $1, $2)
- */
-void Parrot_jit_vtable_112_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-
-/* emit a call to a vtable func
- * $1->vtable(interp, $1, $1)
- */
-void Parrot_jit_vtable_111_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-
-/* emit a call to a vtable func
- * $2->vtable(interp, $2, $1)
- */
-void Parrot_jit_vtable_221_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-
-/* emit a call to a vtable func
- * $2->vtable(interp, $2, $3, $1)
- */
-void Parrot_jit_vtable_2231_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-
-/* emit a call to a vtable func
- * $1->vtable(interp, $1, $2, $3)
- */
-void Parrot_jit_vtable_1123_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-
-/* emit a call to a vtable func
- * $1->vtable(interp, $1, $2, $1)
- */
-void Parrot_jit_vtable_1121_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-
-/* if_p_ic, unless_p_ic */
-void Parrot_jit_vtable_if_unless_op(Parrot_jit_info_t *jit_info,
- PARROT_INTERP, int unless);
-
-/* unless_p_ic */
-void Parrot_jit_vtable_unlessp_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-
-/* if_p_ic */
-void Parrot_jit_vtable_ifp_op(Parrot_jit_info_t *jit_info, PARROT_INTERP);
-
-#endif /* JIT_VTABLE_OPS */
-
# define jit_emit_end(pc) { \
jit_emit_add_ri_i((interp), (pc), emit_ESP, 4); \
emitm_popl_r((pc), emit_EDI); \
More information about the parrot-commits
mailing list