freenode/#clasp - IRC Chatlog
Search
13:28:47
drmeister
I linked dev-typeq with the debug llvm library - it's hitting an assertion failure when evaluating the GEP instruction.
13:31:22
drmeister
I know we can do this with pointer arithmetic but the gep instruction should generate an offset load and that will be better.
13:32:46
drmeister
Oh! Right - use the compiler lab! Generate C++ that does this and look at the IR generated
13:33:14
Bike
i suspect that using casting to byte* and using gep is kind of not what gep is intended for, anyway
13:36:19
Bike
we're basically throwing around interior pointers, which is kind of weird for C to say the last
13:49:36
Bike
tried something like maru. typedef long header; typedef struct object { header head; char data[]; } object; int header_of(object* o) { return (((header*)o)[-1]); }
13:50:30
drmeister
Line 12. It uses a single index - which makes sense. I used two in my code where the first index was zero.
13:54:23
drmeister
It looks straightforward though - I'll switch my pointer arithmetic code to this.
16:44:52
scymtym
Shinmera: i don't have time to discuss this much right now, but https://techfak.de/~jmoringe/build-generator.ogv is a video i (hastily) made to explain the thing to somebody else. it should get the basic idea across
18:41:40
Bike
primitive typeq works and is slightly faster than predicates (when applicable). however any advantage with typep is negated by the fact my expansion involves a LET to avoid multiple evaluation, which bclasp has as an allocation i guess. oh well
19:20:07
Bike
one little sticking point with changing cleavir type inference is that i can't determine the type of constants
19:20:40
Bike
and not avoiding checks because you have a literal instead of a variable with a declared type would be pretty silly
19:31:57
Bike
well. if i have (typep x 'list) that turns into (or (if (typeq x cons) t nil) (eq x nil)). type inference and constant propagation are pretty much the same thing.
19:57:51
Bike
i guess i can just try it with only types first, but i don't think constants can really be ignored