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;
   }
  
  
  

Reply via email to