libera/#clasp - IRC Chatlog
Search
9:23:38
karlosz
Bike, drmeister: i just implemented cell elision so now we don't make any unnecessary cells and no longer cons for stuff like fib. its pretty much as optimal as we can get for 1 pass at least (though the fixup logic may not be so good asymptotically speaking at the moment)
9:24:00
karlosz
also Bike i changed the order of CELL-SET's arguments in order to facilitate this, so the c++ vm will need to be modified.
12:43:28
drmeister
I print the height of the stack just inside the while (1) loop and just before the switch statement.
12:43:46
drmeister
(setf (fdefinition 'fib) (compile-to-vm::bcompile '(lambda (n) (if (eql n 1) 0 (if (eql n 2) 1 (+ (fib (- n 1)) (fib (- n 2))))))))
13:03:27
Colleen
Bike: drmeister said 7 hours, 34 minutes ago: There is something deeply wrong. When I evaluate (fib 31) the evaluation goes off the rails at some point. So I'm trying to compile the following but the compiler isn't ready for it yet. I want to ID where it goes off the rails and then get udb in there to figure it out.
13:22:21
Bike
(lambda (x) (setq x 3) x) puts x in a cell, and does ref 0 const 0 cell-set, with the old order
13:29:04
drmeister
I wonder if your musing about problems is relevant to the (fib 31) blowing up but (fib 30) working
13:39:28
drmeister
The stack pointer just takes off at some point until it points into what I presume is boehm memory and pushes values into it and only then does it crash.
14:20:37
drmeister
I could buffer this and search for that different sequence and then get to where it goes bad.
14:21:06
drmeister
I'm worried the code may be getting modified, or a key datastructure is getting modified and then it breaks.
14:36:51
drmeister
I put in a single statement to print the stack height prior to evaluating each instruction. I expect to see that the stack height blows up at some point.
14:43:44
drmeister
Do you see what I'm talking about? Billions of steps where everything is fine and then something changes and hundreds of thousands of steps where the stack slowly blows up.
15:03:25
drmeister
I tried it again (setting the start of each (fib 30) y value to 99999). This time it failed on the second evaluation.
15:12:24
drmeister
I could catch the problem a lot earlier if I abort when the stack gets above a certain threshold.
15:21:22
drmeister
I'm adding functions to set the stack height trigger and I'll have it exit gracefully so I can do it over and over.
15:37:33
karlosz
Bike: ugh, apparently i had killed the hunk using emit-lexical-set but it was still at least in my undo buffer
16:22:33
drmeister
Playback: Every cycle it will read a PC and stack pointer and compare it to the current PC and stack pointer.
16:51:22
drmeister
I think I should throw an exception and unwind the stack when there is a mismatch rather than just return.
16:52:58
Bike
what's the ninja target to build cboehm (i.e. not precise)? is it just "cboehm", like i'd do ninja -C build cboehm?
17:38:33
drmeister
I can record (fib 20) and when I play it back like a dozen times - no difference.
18:00:52
drmeister
I'll turn off optimization for bytecode_vm and then I'll be able to see more values.