* know. Run now! Hope is in speed!" --Gandalf
*/
-dEXT char **watchaddr = 0;
-dEXT char *watchok;
-
-#ifndef DEBUGGING
+#ifdef PERL_OBJECT
+#define CALLOP this->*op
+#else
+#define CALLOP *op
+#endif
int
-runops() {
+runops_standard(void)
+{
dTHR;
- SAVEI32(runlevel);
- runlevel++;
- while ( op = (*op->op_ppaddr)(ARGS) ) ;
+ while ( op = (CALLOP->op_ppaddr)(ARGS) ) ;
TAINT_NOT;
return 0;
}
-#else
+#ifdef DEBUGGING
+
+dEXT char **watchaddr = 0;
+dEXT char *watchok;
+#ifndef PERL_OBJECT
static void debprof _((OP*o));
+#endif
+
+#endif /* DEBUGGING */
int
-runops() {
+runops_debug(void)
+{
+#ifdef DEBUGGING
dTHR;
if (!op) {
warn("NULL OP IN RUN");
return 0;
}
- SAVEI32(runlevel);
- runlevel++;
-
do {
if (debug) {
if (watchaddr != 0 && *watchaddr != watchok)
DEBUG_s(debstack());
DEBUG_t(debop(op));
DEBUG_P(debprof(op));
-#ifdef USE_THREADS
- DEBUG_L(YIELD()); /* shake up scheduling a bit */
-#endif /* USE_THREADS */
}
- } while ( op = (*op->op_ppaddr)(ARGS) );
+ } while ( op = (CALLOP->op_ppaddr)(ARGS) );
TAINT_NOT;
return 0;
+#else
+ return runops_standard();
+#endif /* DEBUGGING */
}
I32
-debop(o)
-OP *o;
+debop(OP *o)
{
+#ifdef DEBUGGING
SV *sv;
deb("%s", op_name[o->op_type]);
switch (o->op_type) {
break;
}
PerlIO_printf(Perl_debug_log, "\n");
+#endif /* DEBUGGING */
return 0;
}
void
-watch(addr)
-char **addr;
+watch(char **addr)
{
+#ifdef DEBUGGING
watchaddr = addr;
watchok = *addr;
PerlIO_printf(Perl_debug_log, "WATCHING, %lx is currently %lx\n",
(long)watchaddr, (long)watchok);
+#endif /* DEBUGGING */
}
-static void
-debprof(o)
-OP* o;
+STATIC void
+debprof(OP *o)
{
+#ifdef DEBUGGING
if (!profiledata)
New(000, profiledata, MAXO, U32);
++profiledata[o->op_type];
+#endif /* DEBUGGING */
}
void
-debprofdump()
+debprofdump(void)
{
+#ifdef DEBUGGING
unsigned i;
if (!profiledata)
return;
PerlIO_printf(Perl_debug_log,
"%u\t%lu\n", i, (unsigned long)profiledata[i]);
}
+#endif /* DEBUGGING */
}
-
-#endif
-