cvsuser 04/10/28 04:24:39
Modified: classes delegate.pmc fixedpmcarray.pmc sub.pmc
include/parrot interpreter.h
lib/Parrot Pmc2c.pm
src events.c inter_cb.c inter_run.c mmd.c objects.c
packfile.c py_func.c
Log:
indirect register frame 10 - cleanup: runops functions
Revision Changes Path
1.33 +2 -2 parrot/classes/delegate.pmc
Index: delegate.pmc
===================================================================
RCS file: /cvs/public/parrot/classes/delegate.pmc,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- delegate.pmc 28 Oct 2004 07:59:18 -0000 1.32
+++ delegate.pmc 28 Oct 2004 11:24:32 -0000 1.33
@@ -1,6 +1,6 @@
/*
Copyright: 2003 The Perl Foundation. All Rights Reserved.
-$Id: delegate.pmc,v 1.32 2004/10/28 07:59:18 leo Exp $
+$Id: delegate.pmc,v 1.33 2004/10/28 11:24:32 leo Exp $
=head1 NAME
@@ -137,7 +137,7 @@
}
return;
}
- Parrot_run_meth_fromc_save(interpreter, method, obj, meth);
+ Parrot_run_meth_fromc(interpreter, method, obj, meth);
}
pmclass delegate {
1.24 +2 -24 parrot/classes/fixedpmcarray.pmc
Index: fixedpmcarray.pmc
===================================================================
RCS file: /cvs/public/parrot/classes/fixedpmcarray.pmc,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- fixedpmcarray.pmc 28 Oct 2004 07:59:18 -0000 1.23
+++ fixedpmcarray.pmc 28 Oct 2004 11:24:32 -0000 1.24
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-$Id: fixedpmcarray.pmc,v 1.23 2004/10/28 07:59:18 leo Exp $
+$Id: fixedpmcarray.pmc,v 1.24 2004/10/28 11:24:32 leo Exp $
=head1 NAME
@@ -35,31 +35,13 @@
return mmd_dispatch_i_pp(the_interp, pa, pb, MMD_CMP);
}
-static void
-runops_fast_cmp(Interp *interpreter, PMC *sub, PMC *left, PMC *right)
-{
- opcode_t offset, *dest;
-
- dest = VTABLE_invoke(interpreter, sub, NULL);
- REG_PMC(5) = left;
- REG_PMC(6) = right;
- offset = dest - interpreter->code->byte_code;
- runops_int(interpreter, offset);
-}
-
-/* #define RUN_FAST_CMP */
static int
sort_ext_compare(void *a, void *b)
{
PMC *pa = *(PMC**)a;
PMC *pb = *(PMC**)b;
-#ifdef RUN_FAST_CMP
- runops_fast_cmp(the_interp, sort_cmp_pmc, pa, pb);
- return INTERP_REG_INT(the_interp, 5);
-#else
- return Parrot_runops_fromc_args_save_reti(the_interp,
+ return Parrot_runops_fromc_args_reti(the_interp,
sort_cmp_pmc, "IPP", pa, pb);
-#endif
}
pmclass FixedPMCArray need_ext does array {
@@ -130,10 +112,6 @@
*/
func = sort_ext_compare;
sort_cmp_pmc = cmp_func;
-#ifdef RUN_FAST_CMP
- REG_PMC(1) = new_ret_continuation_pmc(interpreter, NULL);
- /* TODO create one exception frame */
-#endif
/*
* TODO fix errors with JIT or prederefed core
*/
1.58 +14 -12 parrot/classes/sub.pmc
Index: sub.pmc
===================================================================
RCS file: /cvs/public/parrot/classes/sub.pmc,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -r1.57 -r1.58
--- sub.pmc 28 Oct 2004 07:59:18 -0000 1.57
+++ sub.pmc 28 Oct 2004 11:24:32 -0000 1.58
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-$Id: sub.pmc,v 1.57 2004/10/28 07:59:18 leo Exp $
+$Id: sub.pmc,v 1.58 2004/10/28 11:24:32 leo Exp $
=head1 NAME
@@ -238,27 +238,29 @@
* P1 ... continuation
* P2 ... object, if it's a method call
*
- * update the context
+ * create new register frame, remember old
*/
- interpreter->ctx.current_sub = SELF;
- interpreter->ctx.current_cont = REG_PMC(1);
- interpreter->ctx.current_object = REG_PMC(2);
-#if INDIRECT_REGS
caller_regs = interpreter->ctx.bp;
interpreter->ctx.bp = stack_prepare_push(interpreter,
&interpreter->ctx.reg_stack);
- /* called from runops_fromc - regs are setup there */
+ /*
+ * when next == NULL the call creates ags in the
+ * new frame, e.g.
+ * called from runops_fromc
+ */
if (next) {
+ /* copy function arguments */
copy_regs(interpreter, caller_regs);
/*
- * for now copy P0..P2, S0
+ * and copy P0..P2, S0
*/
- REG_PMC(2) = caller_regs->pmc_reg.registers[2];
+ interpreter->ctx.current_sub = REG_PMC(0) = SELF;
+ interpreter->ctx.current_cont = REG_PMC(1) =
+ caller_regs->pmc_reg.registers[1];
+ interpreter->ctx.current_object = REG_PMC(2) =
+ caller_regs->pmc_reg.registers[2];
REG_STR(0) = caller_regs->string_reg.registers[0];
}
- REG_PMC(0) = SELF;
- REG_PMC(1) = caller_regs->pmc_reg.registers[1];
-#endif
return sub->address;
}
1.157 +24 -34 parrot/include/parrot/interpreter.h
Index: interpreter.h
===================================================================
RCS file: /cvs/public/parrot/include/parrot/interpreter.h,v
retrieving revision 1.156
retrieving revision 1.157
diff -u -r1.156 -r1.157
--- interpreter.h 28 Oct 2004 07:59:21 -0000 1.156
+++ interpreter.h 28 Oct 2004 11:24:35 -0000 1.157
@@ -1,7 +1,7 @@
/* interpreter.h
* Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
* CVS Info
- * $Id: interpreter.h,v 1.156 2004/10/28 07:59:21 leo Exp $
+ * $Id: interpreter.h,v 1.157 2004/10/28 11:24:35 leo Exp $
* Overview:
* The interpreter api handles running the operations
* Data Structure and Algorithms:
@@ -373,43 +373,33 @@
/* &end_gen */
-Interp *make_interpreter(Parrot_Interp parent, Interp_flags);
-void Parrot_init(Parrot_Interp);
-void Parrot_destroy(Parrot_Interp);
+Interp *make_interpreter(Interp * parent, Interp_flags);
+void Parrot_init(Interp *);
+void Parrot_destroy(Interp *);
INTVAL interpinfo(Interp *interpreter, INTVAL what);
PMC* interpinfo_p(Interp *interpreter, INTVAL what);
void runops(Interp *, size_t offset);
void runops_int(Interp *, size_t offset);
-void Parrot_runops_fromc(Parrot_Interp, PMC *sub);
-void Parrot_runops_fromc_save(Parrot_Interp, PMC *sub);
-void* Parrot_runops_fromc_args(Parrot_Interp, PMC *sub, const char *sig, ...);
-void* Parrot_runops_fromc_args_save(Parrot_Interp, PMC *, const char *, ...);
-INTVAL Parrot_runops_fromc_args_save_reti(Parrot_Interp, PMC *,
- const char *, ...);
-FLOATVAL Parrot_runops_fromc_args_save_retf(Parrot_Interp, PMC *,
- const char *, ...);
-
-void* Parrot_runops_fromc_arglist_save(Parrot_Interp, PMC *,
- const char *sig, va_list);
-
-void* Parrot_run_meth_fromc(Parrot_Interp, PMC *sub, PMC* obj, STRING *meth);
-void Parrot_run_meth_fromc_save(Parrot_Interp, PMC *sub,
- PMC* obj, STRING *meth);
-void* Parrot_run_meth_fromc_args_save(Parrot_Interp, PMC *sub,
+void Parrot_runops_fromc(Interp *, PMC *sub);
+void* Parrot_runops_fromc_args(Interp *, PMC *sub, const char *sig, ...);
+INTVAL Parrot_runops_fromc_args_reti(Interp *, PMC *, const char *, ...);
+FLOATVAL Parrot_runops_fromc_args_retf(Interp *, PMC *, const char *, ...);
+
+void* Parrot_runops_fromc_arglist(Interp *, PMC *, const char *sig, va_list);
+
+void* Parrot_run_meth_fromc(Interp *, PMC *sub, PMC* obj, STRING *meth);
+void* Parrot_run_meth_fromc_args(Interp *, PMC *sub,
PMC* obj, STRING *meth, const char *signature, ...);
-INTVAL Parrot_run_meth_fromc_args_save_reti(Parrot_Interp, PMC *sub,
+INTVAL Parrot_run_meth_fromc_args_reti(Interp *, PMC *sub,
PMC* obj, STRING *meth, const char *signature, ...);
-FLOATVAL Parrot_run_meth_fromc_args_save_retf(Parrot_Interp, PMC *sub,
+FLOATVAL Parrot_run_meth_fromc_args_retf(Interp *, PMC *sub,
PMC* obj, STRING *meth, const char *signature, ...);
-void *Parrot_save_register_frames(Parrot_Interp, PMC *sub);
-void Parrot_restore_register_frames(Parrot_Interp, void *data);
-
void Parrot_callback_C(void *external_data, PMC *callback_info);
void Parrot_callback_D(PMC *callback_info, void *external_data);
-PMC* Parrot_make_cb(Parrot_Interp interpreter, PMC* sub, PMC* user_data,
+PMC* Parrot_make_cb(Interp * interpreter, PMC* sub, PMC* user_data,
STRING* cb_signature);
typedef opcode_t *(*native_func_t)(Interp * interpreter,
@@ -418,20 +408,20 @@
VAR_SCOPE native_func_t run_native;
-void Parrot_compreg(Parrot_Interp interpreter, STRING *type, PMC *func);
-INTVAL sysinfo_i(Parrot_Interp interpreter, INTVAL info_wanted);
-STRING *sysinfo_s(Parrot_Interp interpreter, INTVAL info_wanted);
+void Parrot_compreg(Interp * interpreter, STRING *type, PMC *func);
+INTVAL sysinfo_i(Interp * interpreter, INTVAL info_wanted);
+STRING *sysinfo_s(Interp * interpreter, INTVAL info_wanted);
void exec_init_prederef(Interp *interpreter,
void *prederef_arena);
-void prepare_for_run(Parrot_Interp interpreter);
-void *init_jit(Parrot_Interp interpreter, opcode_t *pc);
-void dynop_register(Parrot_Interp interpreter, PMC* op_lib);
-void do_prederef(void **pc_prederef, Parrot_Interp interpreter, int type);
+void prepare_for_run(Interp * interpreter);
+void *init_jit(Interp * interpreter, opcode_t *pc);
+void dynop_register(Interp * interpreter, PMC* op_lib);
+void do_prederef(void **pc_prederef, Interp * interpreter, int type);
void clone_interpreter(PMC* dest, PMC* self);
-void enter_nci_method(Parrot_Interp, int type,
+void enter_nci_method(Interp *, int type,
void *func, const char *name, const char *proto);
#else
1.47 +2 -2 parrot/lib/Parrot/Pmc2c.pm
Index: Pmc2c.pm
===================================================================
RCS file: /cvs/public/parrot/lib/Parrot/Pmc2c.pm,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- Pmc2c.pm 15 Oct 2004 10:28:04 -0000 1.46
+++ Pmc2c.pm 28 Oct 2004 11:24:37 -0000 1.47
@@ -1,5 +1,5 @@
# Copyright: 2004 The Perl Foundation. All Rights Reserved.
-# $Id: Pmc2c.pm,v 1.46 2004/10/15 10:28:04 leo Exp $
+# $Id: Pmc2c.pm,v 1.47 2004/10/28 11:24:37 leo Exp $
=head1 NAME
@@ -1444,7 +1444,7 @@
$ret_def
STRING *meth = CONST_STRING(interpreter, "__$meth");
PMC *sub = find_or_die(interpreter, pmc, meth);
- ${func_ret}Parrot_run_meth_fromc_args_save$ret_type(interpreter, sub,
+ ${func_ret}Parrot_run_meth_fromc_args$ret_type(interpreter, sub,
pmc, meth, "$sig"$arg);
$ret
}
1.41 +2 -3 parrot/src/events.c
Index: events.c
===================================================================
RCS file: /cvs/public/parrot/src/events.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- events.c 1 Oct 2004 12:06:37 -0000 1.40
+++ events.c 28 Oct 2004 11:24:38 -0000 1.41
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-$Id: events.c,v 1.40 2004/10/01 12:06:37 leo Exp $
+$Id: events.c,v 1.41 2004/10/28 11:24:38 leo Exp $
=head1 NAME
@@ -1110,8 +1110,7 @@
break;
case EVENT_TYPE_TIMER:
/* run ops, save registers */
- Parrot_runops_fromc_save(interpreter,
- event->u.timer_event.sub);
+ Parrot_runops_fromc(interpreter, event->u.timer_event.sub);
break;
case EVENT_TYPE_CALL_BACK:
edebug((stderr, "starting user cb\n"));
1.4 +4 -4 parrot/src/inter_cb.c
Index: inter_cb.c
===================================================================
RCS file: /cvs/public/parrot/src/inter_cb.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- inter_cb.c 13 Oct 2004 07:36:01 -0000 1.3
+++ inter_cb.c 28 Oct 2004 11:24:38 -0000 1.4
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-$Id: inter_cb.c,v 1.3 2004/10/13 07:36:01 leo Exp $
+$Id: inter_cb.c,v 1.4 2004/10/28 11:24:38 leo Exp $
=head1 NAME
@@ -11,7 +11,7 @@
NCI callback functions may run, whenever the C code executes the callback.
To be prepared for async callbacks these are converted to callback events.
-Often callbacks should run synchronously. This can only happen when
+Often callbacks should run synchronously. This can only happen when
the C-library calls the callback, because Parrot called a function in
the C-library.
@@ -187,7 +187,7 @@
{
PMC *passed_interp; /* the interp that originated the CB */
- PMC *passed_synchronous; /* flagging synchronous execution */
+ PMC *passed_synchronous; /* flagging synchronous execution */
int synchronous = 0; /* cb is hitting this sub somewhen inmidst, or not */
STRING *sc;
/*
@@ -319,7 +319,7 @@
internal_exception(1, "unhandled signature char '%c' in run_cb", *p);
}
pasm_sig[3] = '\0';
- Parrot_runops_fromc_args_save(interpreter, sub, pasm_sig,
+ Parrot_runops_fromc_args(interpreter, sub, pasm_sig,
user_data, param);
}
/*
1.13 +60 -87 parrot/src/inter_run.c
Index: inter_run.c
===================================================================
RCS file: /cvs/public/parrot/src/inter_run.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- inter_run.c 28 Oct 2004 07:59:26 -0000 1.12
+++ inter_run.c 28 Oct 2004 11:24:38 -0000 1.13
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-$Id: inter_run.c,v 1.12 2004/10/28 07:59:26 leo Exp $
+$Id: inter_run.c,v 1.13 2004/10/28 11:24:38 leo Exp $
=head1 NAME
@@ -126,25 +126,19 @@
/*
-=item C<void
-Parrot_runops_fromc_save(Parrot_Interp, PMC *sub)>
-
-Like above but preserve registers.
+=item C<void *
+Parrot_run_meth_fromc(Parrot_Interp, PMC *sub, PMC *obj, STRING *meth)>
-=item C<void
-Parrot_run_meth_fromc_save(Parrot_Interp, PMC *sub, PMC *obj, STRING *meth)>
+Run a method sub from C. The function arguments are
+already setup according to Parrot calling conventions, the C<sub> argument
+is an invocable C<Sub> PMC.
-Run a method sub from C.
+If registers a PMC return values, it is returned.
=cut
*/
-void
-Parrot_runops_fromc_save(Parrot_Interp interpreter, PMC *sub)
-{
- Parrot_runops_fromc(interpreter, sub);
-}
/*
@@ -154,36 +148,36 @@
const char *sig, ...)>
=item C<void *
-Parrot_runops_fromc_args_save(Parrot_Interp interpreter, PMC *sub,
+Parrot_runops_fromc_args(Parrot_Interp interpreter, PMC *sub,
const char *sig, ...)>
=item C<INTVAL
-Parrot_runops_fromc_args_save_reti(Parrot_Interp interpreter, PMC *sub,
+Parrot_runops_fromc_args_reti(Parrot_Interp interpreter, PMC *sub,
const char *sig, ...)>
=item C<FLOATVAL
-Parrot_runops_fromc_args_save_retf(Parrot_Interp interpreter, PMC *sub,
+Parrot_runops_fromc_args_retf(Parrot_Interp interpreter, PMC *sub,
const char *sig, ...)>
=item C<void *
-Parrot_runops_fromc_arglist_save(Parrot_Interp interpreter, PMC *sub,
+Parrot_runops_fromc_arglist(Parrot_Interp interpreter, PMC *sub,
const char *sig, va_list args)>
=item C<void *
-Parrot_run_meth_fromc_args_save(Parrot_Interp interpreter, PMC *sub,
+Parrot_run_meth_fromc_args(Parrot_Interp interpreter, PMC *sub,
PMC* obj, STRING* meth, const char *sig, ...)>
=item C<INTVAL
-Parrot_run_meth_fromc_args_save_reti(Parrot_Interp interpreter, PMC *sub,
+Parrot_run_meth_fromc_args_reti(Parrot_Interp interpreter, PMC *sub,
PMC* obj, STRING* meth, const char *sig, ...)>
=item C<FLOATVAL
-Parrot_run_meth_fromc_args_save_retf(Parrot_Interp interpreter, PMC *sub,
+Parrot_run_meth_fromc_args_retf(Parrot_Interp interpreter, PMC *sub,
PMC* obj, STRING* meth, const char *sig, ...)>
Run parrot ops, called from C code, function arguments are passed as
C<va_args> according to signature the C<sub> argument is an invocable
-C<Sub> PMC. The C<_save> variants preserve registers.
+C<Sub> PMC.
Signatures are similar to NCI:
@@ -212,9 +206,9 @@
ret_c = new_ret_continuation_pmc(interpreter, NULL);
dest = VTABLE_invoke(interpreter, sub, NULL);
- REG_PMC(1) = ret_c;
- REG_PMC(0) = sub;
- REG_PMC(2) = obj;
+ interpreter->ctx.current_sub = REG_PMC(0) = sub;
+ interpreter->ctx.current_cont = REG_PMC(1) = ret_c;
+ interpreter->ctx.current_object = REG_PMC(2) = obj;
REG_STR(0) = meth;
REG_INT(0) = 1; /* kind of a prototyped call */
REG_INT(1) = 0; /* # of I params */
@@ -224,8 +218,8 @@
while (*++sig) {
/*
- * TODO handle overflow: if any argcount reaches 16 create
- * overflow array in P3 and additional pass args in the
+ * TODO handle overflow: if any next[] reaches 16 create
+ * overflow array in P3 and pass additional args in the
* array
*/
switch (*sig) {
@@ -279,23 +273,16 @@
switch (sig_ret) {
case 'S':
return VTABLE_get_string(interpreter, bp->pmc_reg.registers[5]);
- case 'I':
- return (void*)VTABLE_get_integer(interpreter,
- bp->pmc_reg.registers[5]);
- case 'N':
- internal_exception(1,
- "unhandle signature '%c' in set_retval", sig_ret);
- /* no signature or P */
- default:
+ case 'P':
+ case 0:
return (void*) bp->pmc_reg.registers[5];
}
}
switch (sig_ret) {
+ case 0:
case 'v': break;
- case 'I': retval = (void* )&bp->int_reg.registers[5]; break;
case 'S': retval = (void* ) bp->string_reg.registers[5]; break;
case 'P': retval = (void* ) bp->pmc_reg.registers[5]; break;
- case 'N': retval = (void* )&bp->num_reg.registers[5]; break;
default:
internal_exception(1,
"unhandle signature '%c' in set_retval", sig_ret);
@@ -303,6 +290,32 @@
return retval;
}
+static INTVAL
+set_retval_i(Parrot_Interp interpreter, int sig_ret, struct parrot_regs_t *bp)
+{
+ if (sig_ret == 'I') {
+ if (bp->int_reg.registers[3] == 1)
+ return VTABLE_get_integer(interpreter, bp->pmc_reg.registers[5]);
+ /* else if (bp->int_reg.registers[1] == 1) */
+ return bp->int_reg.registers[5];
+ }
+ Parrot_warn(interpreter, PARROT_WARNINGS_ALL_FLAG, "argument mismatch");
+ return 0;
+}
+
+static FLOATVAL
+set_retval_f(Parrot_Interp interpreter, int sig_ret, struct parrot_regs_t *bp)
+{
+ if (sig_ret == 'N') {
+ if (bp->int_reg.registers[3] == 1)
+ return VTABLE_get_number(interpreter, bp->pmc_reg.registers[5]);
+ /* else if (bp->int_reg.registers[4] == 1) */
+ return bp->num_reg.registers[5];
+ }
+ Parrot_warn(interpreter, PARROT_WARNINGS_ALL_FLAG, "argument mismatch");
+ return 0;
+}
+
void *
Parrot_run_meth_fromc(Parrot_Interp interpreter,
PMC *sub, PMC *obj, STRING *meth)
@@ -330,13 +343,6 @@
return set_retval(interpreter, 0, bp);
}
-void
-Parrot_run_meth_fromc_save(Parrot_Interp interpreter,
- PMC *sub, PMC *obj, STRING *meth)
-{
- (void) runops_args(interpreter, sub, obj, meth, "v", 0);
-}
-
void *
Parrot_runops_fromc_args(Parrot_Interp interpreter, PMC *sub,
const char *sig, ...)
@@ -350,107 +356,74 @@
return set_retval(interpreter, *sig, bp);
}
-/*
- * generic return pointer or void
- */
-void *
-Parrot_runops_fromc_args_save(Parrot_Interp interpreter, PMC *sub,
- const char *sig, ...)
-{
- struct parrot_regs_t *bp;
- va_list args;
-
- va_start(args, sig);
- bp = runops_args(interpreter, sub, PMCNULL, NULL, sig, args);
- va_end(args);
- return set_retval(interpreter, *sig, bp);
-}
INTVAL
-Parrot_runops_fromc_args_save_reti(Parrot_Interp interpreter, PMC *sub,
+Parrot_runops_fromc_args_reti(Parrot_Interp interpreter, PMC *sub,
const char *sig, ...)
{
va_list args;
struct parrot_regs_t *bp;
- void *ret;
- INTVAL ri;
va_start(args, sig);
bp = runops_args(interpreter, sub, PMCNULL, NULL, sig, args);
va_end(args);
- ret = set_retval(interpreter, *sig, bp);
- ri = *(INTVAL*) ret;
- return ri;
+ return set_retval_i(interpreter, *sig, bp);
}
FLOATVAL
-Parrot_runops_fromc_args_save_retf(Parrot_Interp interpreter, PMC *sub,
+Parrot_runops_fromc_args_retf(Parrot_Interp interpreter, PMC *sub,
const char *sig, ...)
{
va_list args;
- void *ret;
- FLOATVAL rf;
struct parrot_regs_t *bp;
va_start(args, sig);
bp = runops_args(interpreter, sub, PMCNULL, NULL, sig, args);
va_end(args);
- ret = set_retval(interpreter, *sig, bp);
- rf = *(FLOATVAL*) ret;
- return rf;
+ return set_retval_f(interpreter, *sig, bp);
}
void*
-Parrot_run_meth_fromc_args_save(Parrot_Interp interpreter,
+Parrot_run_meth_fromc_args(Parrot_Interp interpreter,
PMC *sub, PMC *obj, STRING *meth, const char *sig, ...)
{
va_list args;
- void *ret;
struct parrot_regs_t *bp;
va_start(args, sig);
bp = runops_args(interpreter, sub, obj, meth, sig, args);
va_end(args);
- ret = set_retval(interpreter, *sig, bp);
- return ret;
+ return set_retval(interpreter, *sig, bp);
}
INTVAL
-Parrot_run_meth_fromc_args_save_reti(Parrot_Interp interpreter,
+Parrot_run_meth_fromc_args_reti(Parrot_Interp interpreter,
PMC *sub, PMC *obj, STRING *meth, const char *sig, ...)
{
va_list args;
- void *ret;
- INTVAL ri;
struct parrot_regs_t *bp;
va_start(args, sig);
bp = runops_args(interpreter, sub, obj, meth, sig, args);
va_end(args);
- ret = set_retval(interpreter, *sig, bp);
- ri = *(INTVAL*) ret;
- return ri;
+ return set_retval_i(interpreter, *sig, bp);
}
FLOATVAL
-Parrot_run_meth_fromc_args_save_retf(Parrot_Interp interpreter,
+Parrot_run_meth_fromc_args_retf(Parrot_Interp interpreter,
PMC *sub, PMC *obj, STRING *meth, const char *sig, ...)
{
va_list args;
- void *ret;
struct parrot_regs_t *bp;
- FLOATVAL rf;
va_start(args, sig);
bp = runops_args(interpreter, sub, obj, meth, sig, args);
va_end(args);
- ret = set_retval(interpreter, *sig, bp);
- rf = *(FLOATVAL*) ret;
- return rf;
+ return set_retval_f(interpreter, *sig, bp);
}
void *
-Parrot_runops_fromc_arglist_save(Parrot_Interp interpreter, PMC *sub,
+Parrot_runops_fromc_arglist(Parrot_Interp interpreter, PMC *sub,
const char *sig, va_list args)
{
struct parrot_regs_t *bp;
1.45 +6 -6 parrot/src/mmd.c
Index: mmd.c
===================================================================
RCS file: /cvs/public/parrot/src/mmd.c,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- mmd.c 2 Oct 2004 15:22:05 -0000 1.44
+++ mmd.c 28 Oct 2004 11:24:38 -0000 1.45
@@ -1,6 +1,6 @@
/*
Copyright: 2003 The Perl Foundation. All Rights Reserved.
-$Id: mmd.c,v 1.44 2004/10/02 15:22:05 jrieks Exp $
+$Id: mmd.c,v 1.45 2004/10/28 11:24:38 leo Exp $
=head1 NAME
@@ -222,7 +222,7 @@
if (is_pmc) {
sub = (PMC*)real_function;
- Parrot_runops_fromc_args_save(interpreter, sub, "vPPP",
+ Parrot_runops_fromc_args(interpreter, sub, "vPPP",
left, right, dest);
}
else {
@@ -244,7 +244,7 @@
left_type, 0, function, &is_pmc);
if (is_pmc) {
sub = (PMC*)real_function;
- Parrot_runops_fromc_args_save(interpreter, sub, "vPIP",
+ Parrot_runops_fromc_args(interpreter, sub, "vPIP",
left, right, dest);
}
else {
@@ -266,7 +266,7 @@
left_type, 0, function, &is_pmc);
if (is_pmc) {
sub = (PMC*)real_function;
- Parrot_runops_fromc_args_save(interpreter, sub, "vPNP",
+ Parrot_runops_fromc_args(interpreter, sub, "vPNP",
left, right, dest);
}
else {
@@ -288,7 +288,7 @@
left_type, 0, function, &is_pmc);
if (is_pmc) {
sub = (PMC*)real_function;
- Parrot_runops_fromc_args_save(interpreter, sub, "vPSP",
+ Parrot_runops_fromc_args(interpreter, sub, "vPSP",
left, right, dest);
}
else {
@@ -322,7 +322,7 @@
if (is_pmc) {
sub = (PMC*)real_function;
- ret = Parrot_runops_fromc_args_save_reti(interpreter, sub, "IPP",
+ ret = Parrot_runops_fromc_args_reti(interpreter, sub, "IPP",
left, right);
}
else {
1.121 +7 -7 parrot/src/objects.c
Index: objects.c
===================================================================
RCS file: /cvs/public/parrot/src/objects.c,v
retrieving revision 1.120
retrieving revision 1.121
diff -u -r1.120 -r1.121
--- objects.c 28 Oct 2004 07:59:26 -0000 1.120
+++ objects.c 28 Oct 2004 11:24:38 -0000 1.121
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-$Id: objects.c,v 1.120 2004/10/28 07:59:26 leo Exp $
+$Id: objects.c,v 1.121 2004/10/28 11:24:38 leo Exp $
=head1 NAME
@@ -605,10 +605,10 @@
int default_meth;
if (meth) {
if (init)
- Parrot_run_meth_fromc_args_save(interpreter, meth,
+ Parrot_run_meth_fromc_args(interpreter, meth,
object, meth_str, "vP", init);
else
- Parrot_run_meth_fromc_save(interpreter, meth,
+ Parrot_run_meth_fromc(interpreter, meth,
object, meth_str);
}
/*
@@ -644,10 +644,10 @@
default_meth = 0;
if (meth) {
if (init)
- Parrot_run_meth_fromc_args_save(interpreter, meth,
+ Parrot_run_meth_fromc_args(interpreter, meth,
object, meth_str, "vP", init);
else
- Parrot_run_meth_fromc_save(interpreter, meth,
+ Parrot_run_meth_fromc(interpreter, meth,
object, meth_str);
}
else if (meth_str != NULL &&
@@ -669,10 +669,10 @@
default_meth = 0;
if (meth) {
if (init)
- Parrot_run_meth_fromc_args_save(interpreter, meth,
+ Parrot_run_meth_fromc_args(interpreter, meth,
object, meth_str, "vP", init);
else
- Parrot_run_meth_fromc_save(interpreter, meth,
+ Parrot_run_meth_fromc(interpreter, meth,
object, meth_str);
}
else if (meth_str != NULL && string_length(interpreter, meth_str) != 0
1.177 +2 -2 parrot/src/packfile.c
Index: packfile.c
===================================================================
RCS file: /cvs/public/parrot/src/packfile.c,v
retrieving revision 1.176
retrieving revision 1.177
diff -u -r1.176 -r1.177
--- packfile.c 2 Oct 2004 15:22:05 -0000 1.176
+++ packfile.c 28 Oct 2004 11:24:38 -0000 1.177
@@ -2,7 +2,7 @@
Copyright (C) 2001-2002 Gregor N. Purdy. All rights reserved.
This program is free software. It is subject to the same license as
Parrot itself.
-$Id: packfile.c,v 1.176 2004/10/02 15:22:05 jrieks Exp $
+$Id: packfile.c,v 1.177 2004/10/28 11:24:38 leo Exp $
=head1 NAME
@@ -255,7 +255,7 @@
interpreter->run_core != PARROT_SLOW_CORE &&
interpreter->run_core != PARROT_FAST_CORE)
interpreter->run_core = PARROT_FAST_CORE;
- Parrot_runops_fromc_save(interpreter, sub_pmc);
+ Parrot_runops_fromc(interpreter, sub_pmc);
interpreter->run_core = old;
}
1.46 +4 -7 parrot/src/py_func.c
Index: py_func.c
===================================================================
RCS file: /cvs/public/parrot/src/py_func.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- py_func.c 7 Aug 2004 14:13:36 -0000 1.45
+++ py_func.c 28 Oct 2004 11:24:38 -0000 1.46
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2004 The Perl Foundation. All Rights Reserved.
-$Id: py_func.c,v 1.45 2004/08/07 14:13:36 dan Exp $
+$Id: py_func.c,v 1.46 2004/10/28 11:24:38 leo Exp $
=head1 NAME
@@ -250,8 +250,7 @@
/* run filter func -
* TODO save registers once around loop
*/
- PMC *t = Parrot_runops_fromc_args_save(interpreter, func,
- "PP", item);
+ PMC *t = Parrot_runops_fromc_args(interpreter, func, "PP", item);
if (!VTABLE_get_bool(interpreter, t))
continue;
}
@@ -303,8 +302,7 @@
/* an object constructor */
}
else {
- item = Parrot_runops_fromc_args_save(interpreter, func,
- "PP", item);
+ item = Parrot_runops_fromc_args(interpreter, func, "PP", item);
}
}
VTABLE_set_pmc_keyed_int(interpreter, res, i++, item);
@@ -356,8 +354,7 @@
/* run filter func -
* TODO save registers once around loop
*/
- res = Parrot_runops_fromc_args_save(interpreter, func,
- "PPP", res, item);
+ res = Parrot_runops_fromc_args(interpreter, func, "PPP", res, item);
}
return res;
}