On Wednesday 19 March 2008 17:40:03 James Keenan wrote: > Revisions made in r26491 today to src/jit/ppc/jit_emit.h have broken > 'make' for me on Darwin PPC.
Actually, it's a lack of changes made to that file. Does this patch fix things for you? -- c
=== src/jit/ppc/core.jit ================================================================== --- src/jit/ppc/core.jit (revision 26508) +++ src/jit/ppc/core.jit (local) @@ -1258,31 +1258,29 @@ } Parrot_pic_callr___pc { - int offset, here, op_i; - PackFile_Constant ** constants; - PMC *sig_params, *sig_result; - opcode_t *params; + PackFile_Constant **constants = CONTEXT(interp)->constants; + PMC **sig_result = constants[CUR_OPCODE[1]]->u.key; + opcode_t *params = jit_info->optimizer->sections->begin; + PMC *sig_params = constants[params[1]]->u.key; + int offset = jit_info->arena.op_map[op_i].offset; + int here = NATIVECODE - jit_info->arena.start; + int op_i = SIG_ELEMS(sig_params) + 2; int skip; - constants = CONTEXT(interp->ctx)->constants; - params = jit_info->optimizer->sections->begin; - sig_params = constants[params[1]]->u.key; - op_i = 2 + SIG_ELEMS(sig_params); - - offset = jit_info->arena.op_map[op_i].offset; /* TODO preserve necessary regs */ assert(*CUR_OPCODE == PARROT_OP_get_results_pc); - constants = CONTEXT(interp->ctx)->constants; - sig_result = constants[CUR_OPCODE[1]]->u.key; + if (!SIG_ELEMS(sig_result)) - skip = -1; + skip = -1; + /* skip result - save rest */ else - skip = MAP(2); /* skip result - save rest */ + skip = MAP(2); - here = NATIVECODE - jit_info->arena.start; offset -= here; - _emit_bx(NATIVECODE, 1, offset); /* bl */ + /* bl */ + _emit_bx(NATIVECODE, 1, offset); + jit_restore_regs_call(jit_info, interp, skip); } @@ -1302,13 +1300,12 @@ offsetof(parrot_context_t, current_results), ISR2); } else { - PackFile_Constant ** constants; - PMC *sig_result; + PackFile_Constant **constants = CONTEXT(interp)->constants; + PMC *sig_result = constants[CUR_OPCODE[1]]->u.key; - constants = CONTEXT(interp->ctx)->constants; - sig_result = constants[CUR_OPCODE[1]]->u.key; if (!SIG_ELEMS(sig_result)) return; + /* result is r3 TODO Nums */ jit_emit_mov_rr(NATIVECODE, MAP(2), r3); }