develooper Front page | perl.perl6.internals | Postings from October 2001

New patch

Thread Next
From:
Daniel Grunblatt
Date:
October 29, 2001 12:52
Subject:
New patch
Message ID:
Pine.BSO.4.33.0110291458330.1604-300000@trinity.mali.com.ar
Index: pbc2c.pl
===================================================================
RCS file: /home/perlcvs/parrot/pbc2c.pl,v
retrieving revision 1.3
diff -r1.3 pbc2c.pl
70a71
> my @functions = ();
79a81,82
> 
> void start();
85a89,90
> struct Parrot_Interp *     interpreter;
> 
88,89d92
<     int                        i;
<     struct Parrot_Interp *     interpreter;
134a138,142
> print <<END_C;
>     start();
>     return 0;
> }
> END_C
163c171,172
<         printf("PC_%d: { /* %s */\n%s}\n\n", $pc, $op->full_name, $source);
---
>         push(@functions,$pc);
>         printf("int\nPC_%d(int cur_opcode) /* %s */\n{\n%s}\n\n", $pc, $op->full_name, $source);
168,171c177,181
< PC_$new_pc:
< PC_0: {
<     exit(0);
< }
---
> void
> start()
> {
>     int                        (*functions[$pc])(int);
>     int                        j = 1;
173c183,191
<     return 0;
---
> END_C
>     foreach (0..scalar(@functions) - 1) {
>         print "    functions[" . $functions[$_] . "] = (int (*)(int))PC_" . $functions[$_] . ";\n";
>     }
> 
>     print <<END_C;
> 
>     while (j) { j = (*functions[j])(j); };
>     exit(0);
189c207
<   return sprintf("goto PC_%d", $addr);
---
>   return sprintf "return (" . $addr . ")";
201c219
<   return sprintf("goto PC_%d", $pc + $offset);
---
>   return sprintf "return (cur_opcode+" . $offset . ")";

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