freenode/#clasp - IRC Chatlog
Search
13:31:55
Bike
there are some annoying dependencies, like SIGNAL needs *BREAK-ON-SIGNALS*, and furthermore uses it for typep, and all of that is environment dependent
13:33:39
Bike
i think typep just has to be entirely rewritten, since the environment-independent of the type specifier would be, like, "fully macroexpanded"
13:37:30
beach
Type definitions would definitely be specific to some environment if that is what you mean.
13:38:48
Bike
I mean, I've been writing environment-independent versions of what functions i can. explicit:funcall is like funcall but doesn't allow designators, so you can compile and link it once, and then each environment has a funcall that resolves the designator and then calls explicit:funcall.
13:40:29
beach
I think you have the right idea. Frequently, an existing function can be decomposed into some pre-processing and some slightly simpler function. And the simpler version can be environment independent.
13:41:30
beach
And often an environment-specific function can be implemented as a trampoline to a function that takes an environment as an additional argument.
13:43:54
beach
In SICL, pretty much every function like TYPEP (with an optional environment parameter) is implemented as a trampoline to a generic function.
13:46:57
beach
It is not clear what environment should be passed to TYPEP. The compile-time environment or the run-time environment. At least I don't recall seeing anything about that.
13:47:49
Bike
but anything defined for the compiler has to be available at runtime as well, by the semantic constraints
13:48:56
Bike
well, i mean, if you have (typep foo 'type), and the compiler knows about the type TYPE, it can use that information since the TYPE will be the same at runtime
13:49:18
Bike
if you have (typep foo 'other-type), and the compiler doesn't know about other-type, then you do nothing at compile time, leave it as a call
14:41:03
drmeister
Bike: I've converted all uses of T_sp in llvm-ir to T_O* - this has removed some duplicate loads from the llvm-ir.
14:46:54
drmeister
llvm-ir is _strongly_ typed and I had put in checks to make sure the type system was honored.
14:49:53
drmeister
But llvm knows how to deal with pointers - and I suspect it is less sure about what to do with struct (even if all it contains is a single pointer)
20:12:04
Bike
beach: #'some-undefined-function should be a runtime error, right? i don't think that's easy to do with the way generate-ast and cst-to-ast are written, since calls go through the same code, and for (some-undefined-function ...) sicl doesn't need to explicitly check boundedness.
20:18:23
drmeister
Do the semantics of compile-file work out so that I can compile-file clos using aclasp?
20:18:53
Bike
i thought that theh previous compile-one-form-at-a-time was intended to mimic compile file semantics anyway
23:43:17
drmeister
For a call - you need to get the arguments from the original instruction, don't save them and reuse them later. They can be altered by optimizers.