Michael Haupt wrote:
Hi,
On 11/9/07, André Wendt andre.wendt@hpi.uni-potsdam.de wrote:
However, modifying the interpreter loop to:
while (1) { printNumtoFile(currentBytecode, foo->vmLogFile); switch (currentBytecode) { .. } }
didn't work: printNumtoFile() gets executed exactly once. I've debugged this with GDB: currentBytecode gets modified from within the CASE statements and the program never gets past the switch() statement.
that's most certainly because you are using a GNUified version of the interpreter (right?). That one applies threading to the interpreter implementation, so the loop body is not actually executed like a loop body usually is. Instead, interpreter logic jumps directly to and fro in the bytecode routines.
I see. Is there any way I can prevent 'make' to gnuify the source?
Andre
On Nov 9, 2007, at 14:22 , André Wendt wrote:
Michael Haupt wrote:
Hi,
On 11/9/07, André Wendt andre.wendt@hpi.uni-potsdam.de wrote:
However, modifying the interpreter loop to:
while (1) { printNumtoFile(currentBytecode, foo->vmLogFile); switch (currentBytecode) { .. } }
didn't work: printNumtoFile() gets executed exactly once. I've debugged this with GDB: currentBytecode gets modified from within the CASE statements and the program never gets past the switch() statement.
that's most certainly because you are using a GNUified version of the interpreter (right?). That one applies threading to the interpreter implementation, so the loop body is not actually executed like a loop body usually is. Instead, interpreter logic jumps directly to and fro in the bytecode routines.
I see. Is there any way I can prevent 'make' to gnuify the source?
You could hack vm/Makefile in your build dir (replace gnu-interp withh interp). Or, comment out AC_GNU_INTERP in configure.ac and remake and rerun the configure script.
- Bert -
vm-dev@lists.squeakfoundation.org