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
-
New patch
by Daniel Grunblatt