IRC channel logs

2014-05-02.log

back to list of logs

<nalaginrut>morning guilers
<civodul>Hello Guilers!
***ft_ is now known as ft
<atheia>'morning guilers
***heroux_ is now known as heroux
***sneek_ is now known as sneek
<civodul>tupi seems to be making good progress on guile-clutter!
<civodul>i hope review is making progress as well, because i don't see many replies on guile-devel ;-)
<wingo>gmp: overflow in mpz type
<wingo>Aborted
<wingo>neat
<wingo>in left_shift_exact_integer
<wingo>well, i guess that's what happens when i left-shift -1 by a couple billion
<wingo>i think it's reasonable to unbox flonums at some point in 2.2
<ijp>interesting
<wingo>we'd have to add unbox-f64, box-f64, f64+, f64/, etc opcodes
<wingo>and do f64 arithmetic when we can prove the type is a flonum
<wingo>which is often, in inner loops anyways...
<davexunit>:D
<lloda>will that proof include (array-ref #f64(...) i)
<wingo>good question -- it certainly should
<wingo>the type of array-ref will depend on the type of the array
<wingo>in the same way that the result type of + depends on its arguments
<wingo>so it's a flow analysis problem
*wingo has scalar replacement working in master, whee
<ijp>scala replacement will take much longer
<wingo>:)
<wingo>i'm close to lausanne, i can infect their water supply
<davexunit>haha ijp
<dsmith-w`>Happy Friday, Guilers!!
***dsmith-w` is now known as dsmith-work
<dsmith-work>Oh my! NEWS updated!
<wingo>:)
<wingo>,x (lambda () (let ((x (cons 'a 'b))) (set-car! x 'c) (set-car! x 'c) (car x)))
<wingo>Disassembly of #<procedure 1f902c8 at <current input>:1:0 ()> at #x1f90208:
<wingo> 0 (assert-nargs-ee/locals 1 0) ;; 0 args, 0 locals at (unknown file):1:0
<wingo> 1 (static-ref 0 59) ;; c
<wingo> 3 (return 0)
<wingo>:)
<stis>:)
*ijp claps politely
<davexunit>wingo: so, you were able to do enough analysis to know that 'c is *always* returned from this procedure and remove all other instructions? neat.
<davexunit>much improved from the disasembly on stable-2.0
<davexunit>do situations like this occur frequently in the "real world"?
<ijp>stupid things happen in the real world ALL the time
<davexunit>well, yeah. :)
<ijp>wingo: what if you put the lambda inside the let?
<stis>macrology can be lazy and output really stupid code
<ijp>stis: but, but, the macro writers bill of rights!
<davexunit>it's really neat to see this optimization.
<davexunit>3 instructions for wingo, 22 for me on stable-2.0
<stis>:)
<dsmith-work>ijp: What? You get what you deserve for writing macros?
<ijp>dsmith-work: it was a talk given by the chez scheme author
<dsmith-work>Ah
<ijp>basically arguing for a set of "rights" macro writers should expect, which roughly equal syntax-case + an optimisation pass
<dsmith-work>ijp: Yeah I think I remmeber that
<dsmith-work>ijp: Like constant folding and such
<dsmith-work>wingo: Is that current master?
<dsmith-work> 0 (assert-nargs-ee/locals 1 1) ;; 0 args, 1 local at (unknown file):1:3
<dsmith-work> 1 (static-ref 0 93) ;; a at (unknown file):1:29
<dsmith-work> 3 (static-ref 1 101) ;; b at (unknown file):1:32
<dsmith-work> 5 (cons 0 0 1) at (unknown file):1:23
<dsmith-work> 6 (static-ref 1 108) ;; c at (unknown file):1:50
<dsmith-work> 8 (set-car! 0 1) at (unknown file):1:38
<dsmith-work> 9 (return 1) at (unknown file):2:8
<dsmith-work>
<dsmith-work>:(
<davexunit>dsmith-work: could very likely be work that wingo has just done at hasn't pushed yet.
<dsmith-work>yes