At 01:05 AM 4/15/2002 -0400, you wrote:
>Clint, in terms of getting things in Parrot fixed, I think it's better if
>you can provide a way to generate the bug, no matter how complex the case
>is. Non-simple test cases are better than no test cases at all, imo.

Okay.  Good.  I won't spend a *terrible* amount of time trying to reduce 
larger problems to smaller ones.  When I report a bug to bugs-perl6 this is 
where 95% of my time goes.  I can isolate it to a few instructions, but 
chopping BASIC down to 30 or 40 lines of PASM that'll still trigger the bug 
is insanity.

I'll work on saying "Hey, start BASIC, type 'foo' and watch Parrot explode" 
kinds of descriptions once I've positively determined that the bug isn't mine.

>For example, I was able to reproduce the missing line 20 bug, and that was
>fixed with Peter's patch. I played a few games of WUMPUS tonight on my
>MSVC-compiled parrot, but haven't seen anything out of the ordinary.  It
>works flawlessly, and is really cool to see something like that working on
>Parrot. The only things I could complain about would be case-sensitivity
>in commands (it's annoying to keep the capslock key and get screwed up
>when switching to other applications :), and the one or two seconds it
>takes to generate the maze and set itself up.

The case sensitivity could be eliminated if I had a cheap way of 
case-insensitively string comparing things.  I may hack on that as there's 
only a few places where that's done: the huge switch in basic.pasm, a few 
places in instructions.pasm where multi-keyword instructions are parsed 
(IF..THEN) and the expression evaluator.

I have a patch for the speed.  For linear execution, it now "remembers" 
where the last code instruction was decoded from in storage and begins 
searching for the next program line there instead of the beginning (the 4/8 
version has that).  The patch I have allows FOR..NEXT and GOSUB..RETURN to 
use the same mechanism.   The slow maze setup is due to a pair of 
doubly-nested FOR loops some ways down in the WUMPUS code.  Once the patch 
is installed (I gotta test!) then the only slow jumps are GOTO branches 
forwards a long distance or backwards.

Fully interpreted languages are slow, go figure.  :)

Once hashes are in place, then BASIC will get a whole lot faster.  My Perl 
version of this interpreter (from which the PASM is derived) positively 
screams.  To retro-fit this version of BASIC requires only that VFETCH, 
VSTORE and VCREATE be re-engineered with hashes when they're ready.

>Do you have any test cases for reproducing the two bugs you just mentioned
>in this thread?

I will work on it today.

Reply via email to