On Sun, Aug 18, 2002 at 02:35:09PM +0000, Jarkko Hietaniemi wrote:
>
> Tru64 finds the following objectionable spots from a fresh CVS checkout:
Does this patch fix it? (Though even if it does, I wouldn't be at all
surprised if some other compiler choked on it.)
Index: rx.ops
===================================================================
RCS file: /cvs/public/parrot/rx.ops,v
retrieving revision 1.24
diff -p -u -r1.24 rx.ops
--- rx.ops 17 Aug 2002 01:11:08 -0000 1.24
+++ rx.ops 18 Aug 2002 17:19:19 -0000
@@ -189,7 +189,7 @@ is the string to match against.
op rx_allocinfo(out pmc, in str) {
$1=pmc_new(interpreter, enum_class_Pointer);
- $1->cache.struct_val = rx_mark;
+ $1->cache.struct_val = F2DPTR(rx_mark);
rx_allocate_info(interpreter, $2, &$1->data);
goto NEXT();
@@ -197,7 +197,7 @@ op rx_allocinfo(out pmc, in str) {
op rx_allocinfo(out pmc, in pmc) {
$1=pmc_new(interpreter, enum_class_Pointer);
- $1->cache.struct_val = rx_mark;
+ $1->cache.struct_val = F2DPTR(rx_mark);
rx_allocate_info(interpreter, $2->vtable->get_string(interpreter, $2),
&$1->data);
goto NEXT();
Index: classes/pointer.pmc
===================================================================
RCS file: /cvs/public/parrot/classes/pointer.pmc,v
retrieving revision 1.4
diff -p -u -r1.4 pointer.pmc
--- classes/pointer.pmc 17 Aug 2002 01:08:30 -0000 1.4
+++ classes/pointer.pmc 18 Aug 2002 17:19:20 -0000
@@ -24,7 +24,7 @@ pmclass Pointer {
}
PMC* mark (PMC *end_of_used_list) {
- PMC* (*mark_function)(struct Parrot_Interp*, void*, PMC *) =
SELF->cache.struct_val;
+ PMC* (*mark_function)(struct Parrot_Interp*, void*, PMC *) = (PMC*(*)(struct
+Parrot_Interp*, void*, PMC*)) D2FPTR(SELF->cache.struct_val);
if (SELF->data == NULL) return end_of_used_list;
if (SELF->cache.struct_val == NULL) return end_of_used_list;
return (*mark_function)(INTERP, SELF->data, end_of_used_list);