cvsuser 04/12/17 01:58:17
Modified: ops pmc.ops
src inter_run.c
Log:
remove old cruft
* runops_fromc is for running Subs - catch NULL address
* revert change to get_repr that could hide external bugs
Revision Changes Path
1.34 +2 -3 parrot/ops/pmc.ops
Index: pmc.ops
===================================================================
RCS file: /cvs/public/parrot/ops/pmc.ops,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- pmc.ops 16 Dec 2004 10:37:15 -0000 1.33
+++ pmc.ops 17 Dec 2004 09:58:16 -0000 1.34
@@ -207,9 +207,8 @@
=cut
-inline op get_repr(out STR, in PMC) {
- STRING *s = $2->vtable->get_repr(interpreter, $2);
- $1 = s;
+op get_repr(out STR, in PMC) {
+ $1 = $2->vtable->get_repr(interpreter, $2);
goto NEXT();
}
1.26 +13 -13 parrot/src/inter_run.c
Index: inter_run.c
===================================================================
RCS file: /cvs/public/parrot/src/inter_run.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- inter_run.c 15 Dec 2004 08:45:48 -0000 1.25
+++ inter_run.c 17 Dec 2004 09:58:16 -0000 1.26
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-$Id: inter_run.c,v 1.25 2004/12/15 08:45:48 leo Exp $
+$Id: inter_run.c,v 1.26 2004/12/17 09:58:16 leo Exp $
=head1 NAME
@@ -131,11 +131,11 @@
* Passing a dummy true destination copies registers
*/
dest = VTABLE_invoke(interpreter, sub, (void*) 1);
+ if (!dest)
+ internal_exception(1, "Subroutine retuned a NULL address");
bp = interpreter->ctx.bp;
- if (dest) {
- offset = dest - interpreter->code->byte_code;
- runops(interpreter, offset);
- }
+ offset = dest - interpreter->code->byte_code;
+ runops(interpreter, offset);
REG_PMC(1) = p1;
return bp;
}
@@ -232,6 +232,8 @@
interpreter->ctx.current_cont = ret_c;
interpreter->ctx.current_object = obj;
dest = VTABLE_invoke(interpreter, sub, NULL);
+ if (!dest)
+ internal_exception(1, "Subroutine retuned a NULL address");
/*
* count arguments, check for overflow
@@ -343,10 +345,8 @@
}
bp = interpreter->ctx.bp;
- if (dest) {
- offset = dest - interpreter->code->byte_code;
- runops(interpreter, offset);
- }
+ offset = dest - interpreter->code->byte_code;
+ runops(interpreter, offset);
return bp;
}
@@ -425,11 +425,11 @@
REG_PMC(1) = new_ret_continuation_pmc(interpreter, NULL);
interpreter->ctx.current_object = obj;
dest = VTABLE_invoke(interpreter, sub, (void*)1);
+ if (!dest)
+ internal_exception(1, "Subroutine retuned a NULL address");
bp = interpreter->ctx.bp;
- if (dest) {
- offset = dest - interpreter->code->byte_code;
- runops(interpreter, offset);
- }
+ offset = dest - interpreter->code->byte_code;
+ runops(interpreter, offset);
REG_PMC(1) = p1;
REG_PMC(2) = p2;
REG_STR(0) = s0;