diary at Telent Netowrks

There is one and only one aspect in which doing low-level stuff on an#

Tue, 03 Dec 2002 23:01:41 +0000

There is one and only one aspect in which doing low-level stuff on an x86 is appealing: hardware watchpoints.

After spending a lot of time today tracing through the disassembly for the note-undefined-reference function to find out how it was getting (0 . 0) into undefined-warnings - supposedly a list - I put a watchpoint on that memory location and reran. The value subsequently changed in get-output-stream-string, which is a perfectly normal library function that has nothing to do with the compiler and certainly no references to undefined-warnings. After seeing that it was the work of mere minutes (although, I concede, entirely too many of them) to realise that things would probably work a Whole Lot Better if GC were allowed to see the thread-local value vectors so it could update pointers when the objects move. Sigh.

Now we're back to a system that actually gets all the way through cold-init and PCL compilation to produce a usable Lisp. Admittedly, still not one that lets the user actually create threads (not much point adding thread creation primitives until consing is thread-safe, after all), but it's a start.