At 22:37 on 02/06/2002 EST, Jason Gloudon <[EMAIL PROTECTED]> wrote:

> On Wed, Feb 06, 2002 at 12:09:22PM -0800, Steve Fink wrote:
> 
> > but I think that's because re_backtrack returns a void*. run_native()
> > returns an opcode_t*, which is fine for the regular core_ops.c but
> > gets returned as void** in core_ops_prederef.c. I think the computed
> > goto path does a third thing, but I don't know how to invoke that.
> 
> goto ADDRESS() for prederef needs the same type of calculation that expr_pop
> uses to convert opcode_t * values to the corresponding void **.
> 
> CGoto is used by pbc2c.pl. There isn't actually a computed goto runops at the
> moment. Enternative is only used by the C programs pbc2c generates. This code
> doesn't enable prederef (no option parsing), so enternative in prederef mode
> isn't possible yet.


OK.  As I lack the knowledge to actually do it right, here's a patch which 
just makes it compile and (hopefully) makes it obvious that this needs to 
be fixed later if this op is to work.

Index: lib/Parrot/OpTrans/CPrederef.pm
===================================================================
RCS file: /home/perlcvs/parrot/lib/Parrot/OpTrans/CPrederef.pm,v
retrieving revision 1.5
diff -u -r1.5 CPrederef.pm
--- lib/Parrot/OpTrans/CPrederef.pm     15 Jan 2002 16:10:46 -0000      1.5
+++ lib/Parrot/OpTrans/CPrederef.pm     7 Feb 2002 06:16:21 -0000
@@ -69,6 +69,10 @@
     return "return cur_opcode + $offset";
 }
 
+sub goto_address {
+    return "return NULL; /* THIS IS BROKEN, but this op is for pbc2c.pl, so pre
deref isn't used yet. */";
+}
+
 #
 # access_arg()
 #-

Reply via email to