freenode/#clasp - IRC Chatlog
Search
13:04:52
Bike
The backtrace had something about get-internal-real-time, which is presumably not supposed to return a negative number, so it might be an sbcl thing
13:10:06
scymtym_
Bike: maybe https://bugs.launchpad.net/sbcl/+bug/1028026, although the specific type-error does not match
13:12:30
Bike
well, i saved the error but i probably can't reproduce it anyway. i can put it somewhere if that's necessary
13:13:34
scymtym_
i'm pretty sure this hasn't been fixed. people regularly suggest using a monotic clock source, but there is a downside, which i don't remember, to that
13:17:22
Bike
"C++11 has brought us a selection of new clock routines, including the monotonic steady_clock class. This has the advantage over the Windows- or POSIX-specific approaches that you only need to code one solution that will work on all platforms. However, the implementation of steady_clock in Visual Studio is NOT monotonic" programming sucks
16:03:44
drmeister
This is for X86_64. The registers that are used to pass arguments to functions are listed at the top
19:58:29
Bike
not sure how to work multiplication. but as it happens i don't think i totally understand the existing fixnum arithmetic anyway...
19:58:56
Bike
it's set up as branch on overflow, which makes perfect sense in the object code, but does cleavir need to know about it?
19:59:18
Bike
if we had an addition where we knew the result would be a fixnum, would we indicate that by having both fixnum-add branches go to the same place? that seems weird.
20:01:49
Bike
for multiplication, we end up with a result that's twice as wide as the intake, which we could represent with two locations, but do we really need that? the only ways to multiply that i can see are the normal case of possibly making a bignum, and the occasional case where you want wrapping
21:51:34
drmeister
I think Cleavir does need to know about it. Did I have fixnum addition already implemented? I recall that I did - I recall doing something with an add with overflow and then handling the overflow case in the HIR.
21:53:45
drmeister
Isn't multiplication the same then. Or I don't understand what you mean by "does cleavir need to know about it".
21:54:45
Bike
if addition overflows it's easy to get the bignum without doing more arithmetic, but with the same pattern with multiplication we'd need to multiply twice
21:55:17
Bike
by cleavir knowing about it i mean this branch pattern, or whatever we do for multiplication, being in the HIR
21:59:11
Bike
If we can do it with a builtin we don't need cleavir? Well, no, we can do whatever we want with a builtin
21:59:55
Bike
For example, since typeq is in cleavir, it can find and eliminate type checks. if type checks were implicit in builtins or functions we couldn't do so