develooper Front page | perl.perl6.internals | Postings from September 2005

Re: [svn:parrot] r9165 - in branches/leo-ctx5: languages/tcl/lib/commands src

Thread Previous | Thread Next
From:
Will Coleda
Date:
September 9, 2005 07:24
Subject:
Re: [svn:parrot] r9165 - in branches/leo-ctx5: languages/tcl/lib/commands src
Message ID:
D45EDBAB-D34C-4B9C-9180-D1EBE6F00A8D@coleda.com
Why the change to array.pir here? How was the original way broken?

On Sep 9, 2005, at 10:08 AM, leo@cvs.perl.org wrote:

> Author: leo
> Date: Fri Sep  9 07:08:21 2005
> New Revision: 9165
>
> Modified:
>    branches/leo-ctx5/languages/tcl/lib/commands/array.pir
>    branches/leo-ctx5/src/inter_call.c
> Log:
> fix argument passing for exceptions; fix tcl array exceptions
>
> Modified: branches/leo-ctx5/languages/tcl/lib/commands/array.pir
> ====================================================================== 
> ========
> --- branches/leo-ctx5/languages/tcl/lib/commands/array.pir     
> (original)
> +++ branches/leo-ctx5/languages/tcl/lib/commands/array.pir    Fri  
> Sep  9 07:08:21 2005
> @@ -23,9 +23,8 @@
>    .local pmc subcommand_proc
>    null subcommand_proc
>
> -  push_eh catch
> +  push_eh bad_args
>      subcommand_proc = find_global "_Tcl\0builtins\0array",  
> subcommand_name
> -resume:
>    clear_eh
>    if_null subcommand_proc, bad_args
>
> @@ -65,9 +64,6 @@ array_no:
>  scommand:
>    .return subcommand_proc(is_array,the_array,array_name,argv)
>
> -catch:
> -  goto resume
> -
>  bad_args:
>    $S0  = "bad option \""
>    $S0 .= subcommand_name
> @@ -92,7 +88,7 @@ few_args:
>    argc = argv
>    if argc goto bad_args
>
> -  .return (TCL_OK, is_array)
> +  .return (TCL_OK, is_array)
>
>  bad_args:
>    .return (TCL_ERROR, "wrong # args: should be \"array exists  
> arrayName\"")
> @@ -331,7 +327,7 @@ not_array:
>    .param pmc argv
>
>    .local pmc retval
> -
> +
>    .local int argc
>    argc = argv
>    if argc > 2 goto bad_args
> @@ -341,7 +337,7 @@ not_array:
>    pattern = "*"
>    if argc == 0 goto skip_args
>    if argc == 1 goto skip_mode
> -
> +
>    mode = shift argv
>  skip_mode:
>    pattern = shift argv
> @@ -405,7 +401,7 @@ check_loop:
>    name = shift iter
>    $P0 = rule(name)
>    unless $P0 goto check_loop
> -
> +
>    unless count goto skip_space
>    retval .= " "
>  skip_space:
>
> Modified: branches/leo-ctx5/src/inter_call.c
> ====================================================================== 
> ========
> --- branches/leo-ctx5/src/inter_call.c    (original)
> +++ branches/leo-ctx5/src/inter_call.c    Fri Sep  9 07:08:21 2005
> @@ -678,8 +678,6 @@ parrot_pass_args(Interp *interpreter, st
>          dst_pc = CONTEXT(interpreter->ctx)->current_results;
>          if (!dst_pc)
>              return NULL;
> -        todo = Parrot_init_arg_op(interpreter, dst_seg,
> -                interpreter->ctx.bp, dst_pc, &st.dest);
>          src_pc = interpreter->current_returns;
>          action = "results";
>          if (!src_pc) {    /* no returns */
> @@ -695,6 +693,8 @@ parrot_pass_args(Interp *interpreter, st
>                  return NULL;
>              action = "params";
>          }
> +        todo = Parrot_init_arg_op(interpreter, dst_seg,
> +                interpreter->ctx.bp, dst_pc, &st.dest);
>          Parrot_init_arg_op(interpreter, interpreter->code,
>                  caller_regs, src_pc, &st.src);
>      }
>
>


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About