Jens Rieks <[EMAIL PROTECTED]> wrote:

> The _parrotlib bytecode is working, but it disables DOD ATM :-(

The problem is that now the runloop is entered already in the
lexer for the first time (for loading includes). When entering the
run loop the first time, the stack top is set, which is now somewhere in
imcc code.

When the "real" code is run then the stacktop isn't set again.
(see RESUME_INITIAL in src/interpreter.c)

The following patch fixes the problem:

--- parrot/src/library.c        Tue May 25 12:01:37 2004
+++ parrot-leo/src/library.c    Tue May 25 14:44:15 2004
@@ -68,6 +68,8 @@
     PMC *sub, *prop;
     STRING *str, *name;
     char *csig;
+    INTVAL resume = interpreter->resume_flag;
+
     va_start(args, func_name);

     if (!init_done) {
@@ -96,6 +98,7 @@

     ret = Parrot_runops_fromc_arglist_save(interpreter, sub, csig, args);
     va_end(args);
+    interpreter->resume_flag = resume;

     return ret;
 }

> jens

leo

Reply via email to