freenode/#clasp - IRC Chatlog
Search
21:12:38
Bike
so it has enough fundamentals that i can compile and load a file with defmacro defun, and then defun factorial, and factorial works
21:13:00
Bike
and what's left to do is add more standard functions; it's missing a ton that implicitly refer to the environment
22:00:25
drmeister
So here... https://github.com/drmeister/clasp/blob/dev/src/lisp/kernel/cleavir/translate.lisp#L340
22:01:03
drmeister
https://github.com/drmeister/clasp/blob/dev/src/lisp/kernel/cleavir/translate.lisp#L327
22:10:19
drmeister
What are inputs again when translating instructions? Are they datums? Or are they llvm Value's already. Outputs look like I have to run them through translate-datum.
22:12:14
Bike
the inputs and outputs of the instruction are hir data, but the inputs and outputs passed as arguments to the translator are llvm locations
22:56:35
Bike
and (or (landing-pad-for-cleanup function-info) nil) doesn't need the or, i don't think
0:00:30
drmeister
bclasp and cclasp have different ways of representing the outputs - those are the 'datum's
0:01:09
drmeister
To make the code general, you pass a 'translate-datum' function object that takes one argument, the datum and returns an alloca
0:02:07
drmeister
In cclasp - but in bclasp - definitely datums - because I was not correct in what I said.
0:02:43
drmeister
In bclasp it returns an llvm value that when evaluated returns an address in memory where the output can be written.
0:03:57
Bike
basically i'm wondering if compile-lambda-list-code is going to work when you're already passing llvm values
0:04:35
drmeister
This is a call to the "lexicalValueReference" intrinsic - which returns a pointer to an entry in an activation frame.
0:04:51
drmeister
The optimization pass I wrote then converts that into a reference to an alloca in the stack frame.
0:06:14
drmeister
https://github.com/drmeister/clasp/blob/dev/src/lisp/kernel/cleavir/translate.lisp#L336
0:07:08
drmeister
For cclasp bind-va-list - I may end up using something else if it signals an error because the datums are not what I expect.
0:07:36
drmeister
https://github.com/drmeister/clasp/blob/dev/src/lisp/kernel/cleavir/convert-special.lisp#L318
0:34:11
drmeister
It is primarily to call C++ methods, regular and virtual - there is a way to connect into it from Common Lisp.
0:34:12
drmeister
https://github.com/drmeister/clasp/blob/dev/src/lisp/modules/clang-tool/clang-tool.lisp#L662
0:39:30
drmeister
They are basically generic functions specialized on one argument with no :before :after :around methods, no call-next-method - bare bones.
0:42:15
drmeister
Hmm clasp-cleavir::*global-optimize* -> ((SAFETY 1) (SPEED 1) (SPACE 1) (COMPILATION-SPEED 1) (DEBUG 3))
0:45:29
drmeister
https://github.com/drmeister/clasp/blob/dev/src/lisp/kernel/cleavir/convert-special.lisp#L328
0:48:40
drmeister
I see this: https://github.com/Bike/SICL/blob/master/Code/Cleavir/Generate-AST/generate-ast.lisp#L531
0:53:01
drmeister
No applicable method for CLEAVIR-AST:CHILDREN with arguments of types BIND-VA-LIST-AST.
0:55:47
drmeister
Wrong package I think. It's in :clasp-cleavir-ast and it should be in :cleavir-ast
1:01:10
drmeister
I changed the (defmethod children ((ast bind-va-list-ast)) ...) to (defmethod cleavir-ast:children ...)
1:09:48
drmeister
It fixes the: No applicable method for CLEAVIR-AST:CHILDREN with arguments of types BIND-VA-LIST-AST. problem
1:11:10
drmeister
But don't worry about it tonight. I'm going to move this into the branch where I have the CLOS changes and try it with bclasp
3:51:20
drmeister
Bike: You asked about debugging and printing variables - sometimes it pays to start dumping likely registers.
3:51:54
drmeister
I was trying to figure out something/anything about a ENSURE-GENERIC-FUNCTION call.