libera/#clasp - IRC Chatlog
Search
20:47:17
Bike
no, i just mean, i don't understand the details of it and how it affects the stamp generation
20:47:22
drmeister
The idea of the WTAG is you get those two bits and you know where to get the stamp for dispatch.
20:47:53
drmeister
You generate stamps and then shift the stamp two bits to the left and then stick in the WTAG.
20:49:40
drmeister
When you do the IsA tests on ranges you deal with the WTAG by taking the min_stamp and max_stamp and testing the range (min_stamp<<2|#b00) ... (max_stamp<<2|#b11)
20:52:52
drmeister
Because of this every stamp|ww|mm value looks like a FIXNUM in Common Lisp with the integer value stamp|ww
20:54:47
Bike
okay, so what else do we need to worry about? the root? we wanted c++ classes to show up before lisp classes in the numbering, right?
20:55:13
drmeister
Now - we've discussed getting rid of the WTAG - because we could just use the header stamp values to figure out where the dispatch stamp value lives. But WTAGs are pretty deeply ingrained now and I don't think they hurt us too much and they might actually be useful. They save us several stamp comparisons at runtime vs one WTAG comparison.
20:56:20
drmeister
Just start numbering stamps at 1 and they can go up to 65536 (I think) or 16384 - one of those. You won't hit that limit.
20:57:22
drmeister
Currently the stamps go 1...65536 (C++ classes) 65537...128K (clbind classes) 128K+... Lisp classes.
21:00:14
drmeister
Assume there is a TAGS:ALLOCATED . 1 and you will get our current behavior. By the end of today I should be able to give you sif files with TAGS:ALLOCATED . 0 for things like Number_O and General_O
21:03:05
drmeister
There's no way I could have planned this all out from the start. There's way too much experience here.
23:11:19
drmeister
Bike: It looks like I was wrong about the allocators - everything is showing up as allocated. I must have some default allocators in there. Checking...
23:12:16
drmeister
Yeah : https://github.com/clasp-developers/clasp/blob/main/include/clasp/core/object.h#L366
23:13:46
drmeister
That applies to the lispallocs category - every class under General_O will be marked as allocated.
1:26:42
drmeister
Patching llvm? linking it into clasp when it has the same name as gcc's libunwind Argh.
2:03:47
drmeister
Bike: When you start using libunwind - can you leave code in there for when libunwind isn't available? I'm adding an UNWINDER setting to the wscript file so I can set it up three (3 - sigh) different ways for now.
2:08:36
Bike
okay. so as far as the code goes there will be the libunwind version and the existing frame pointer chasing version