libera/#sicl - IRC Chatlog
Search
3:07:08
hayley
I ran a little survey to see if my hypothesis on the use of immutable objects in Common Lisp held water. The responses, so far, have been evenly split between favouring immutable objects, only mutating for performance, and always using mutable objects.
6:56:20
spiaggia
I changed the specification for how to handle LOAD-TIME-VALUE a little, and I updated the specification at http://metamodular.com/SICL/sicl-specification.pdf section 23.4 I think.
6:56:45
spiaggia
And I successfully implemented the specification as much as is possible without code generation.
6:58:03
spiaggia
Today, I'll continue with more simplifications of the code, made possible by this new way of doing literals and in particular LOAD-TIME-VALUE.
7:00:12
spiaggia
When I decided to make the global heap handled by a non-moving collector, I didn't quite understand all the positive implications of that decision. I am saying that because, for literals, it means that they do not change, so they can appear directly in the instruction stream.
7:01:05
spiaggia
And, again, what some Common Lisp implementations must do in order to make NIL a constant, we get for free with all literals.
7:09:45
hayley
Looks good. Is it possible to put a full absolute address in one place when compiling for a RISC (which is suggested by PATCH-LITERAL taking one index into the code vector)? I guess there is always instruction pointer relative addressing.
7:11:30
beach
It is not possible in general. But a single address is enough to find each partial address to patch in two separate instructions in the instruction stream.
7:11:53
moon-child
on arm and riscv at least, certain literals can be loaded directly, but not all; and there are complex encoding rules
7:12:14
moon-child
however, because of that I would not be surprised if the processor optimised code which loaded a constant from memory
7:13:25
beach
I see. Well, it is not urgent to decide what to do for RISC-V. The important thing is that literals are constant values.
7:25:45
hayley
Sure, just a thought. The comma in "an index into the vector of literals where the immediate that the load-time action generates, must be stored for the benefit of the garbage collector" looks odd too.
7:27:38
hayley
The way I read it was "the immediate that the load-time action generates" is the subject, but it is separated from the verb part by a comma.
7:28:24
hayley
Maybe just moving the comma to "an index into the vector of literals, where the immediate that the load-time action generates must be stored for the benefit of the garbage collector" would work better.
7:30:20
beach
Well, if it looks strange to you both, it is likely to look strange to others as well.