freenode/#clasp - IRC Chatlog
Search
21:18:19
drmeister
at child.on_msg (http://0.0.0.0:8888/nbextensions/nglview-js-widgets/index.js?v=20170714202205:893:42)
22:45:45
Bike
so: i think there's a lot of room for microoptimization of basic library functions, and that i can do that most effectively if i have a typeq that isn't extremely slow
22:49:22
Bike
...and those optimizations will probably make everything a bit faster, though it's harder to gauge that impact
22:51:59
drmeister
(TYPEQ x y) where y is 'fixnum 'single-float 'character - those are just (fixnump x), (single-float-p x), (characterp x) respectively
22:53:03
Bike
if possible i'd rather not call a function at all. (or call an intrinsic that will get inlined later, i guess.)
22:55:35
drmeister
That gets turned into this for boehm/mps builds: https://github.com/drmeister/clasp/blob/dev/src/main/clasp_gc.cc#L2131
22:56:34
drmeister
I think there is a boehmdc feature - or something like that - if not, I'll add it.
22:57:57
drmeister
What we need are access to the integer ranges for the header value and a hash table that associates type specifiers (all symbols) with the header value or value range.
23:01:22
drmeister
We are about to migrate to my parents place - so I'll be out of contact for about 1-2 hours.
23:02:27
drmeister
I can give you a fast TYPEQ with a couple of hours work and a rerun of the static analyzer.
23:04:57
Bike
compiling down typeq is probably going to be more ocmplicated in the future, too, but without a primitive interface there's not much that can be done
23:07:56
Bike
because type checks will have to be moved around and done in relation to each other, i think
0:31:17
drmeister
There is currently no typeq-instruction - that is because they are being translated to typep calls - correct?
0:41:17
drmeister
I mean, the stamp values are integers that start at 1 and go up by 1 - they are shifted into position in the header value in the upper 60 bits.
0:42:03
drmeister
I can build the table so that I incorporate the flag and tag into the value ranges and then just compare header values to the value ranges in the table.
0:45:18
drmeister
The test for Symbol_O is here: https://github.com/drmeister/clasp/blob/dev/src/main/clasp_gc.cc#L2131
1:41:15
drmeister
I started up the static analyzer and it will generate a block of code that can be converted into SYMBOL -> header-value-range