<GitHub194>
[artiq] whitequark pushed 2 new commits to new-py2llvm: http://git.io/vmXUe
<GitHub194>
artiq/new-py2llvm 255ffec whitequark: Generate more compact ARTIQ IR for else-less if.
<GitHub194>
artiq/new-py2llvm dde2e67 whitequark: Add source locations to ARTIQ IR instructions.
<whitequark>
you can try it out:
<whitequark>
python3 -m artiq.compiler.testbench.irgen <<<$'for x in range(2,10):\n x + x'
<GitHub97>
[artiq] whitequark pushed 1 new commit to new-py2llvm: http://git.io/vmXUB
<GitHub97>
artiq/new-py2llvm 0d66bdf whitequark: Fix For miscompilation.
imrehg has joined #m-labs
imrehg has quit [Read error: Connection reset by peer]
<GitHub65>
[artiq] whitequark pushed 2 new commits to new-py2llvm: http://git.io/vmXmu
<GitHub65>
artiq/new-py2llvm 21eafef whitequark: Fix inference for globals.
<GitHub65>
artiq/new-py2llvm 5ad02d5 whitequark: Fix ARTIQ IR generation for variables declared global.
<GitHub90>
[artiq] whitequark pushed 1 new commit to new-py2llvm: http://git.io/vmXYF
<GitHub90>
artiq/new-py2llvm 8e1cc8d whitequark: Add an explicit ARTIQ IR instruction to create a closure.
<GitHub100>
[artiq] whitequark pushed 1 new commit to new-py2llvm: http://git.io/vmXGu
<GitHub100>
artiq/new-py2llvm 47cbadb whitequark: Revert "Ensure bindings are created in correct order for e.g. "x, y = y, x"."...
bentley` has quit [Ping timeout: 256 seconds]
sb0 has quit [Read error: Connection reset by peer]
sb0 has joined #m-labs
mumptai has joined #m-labs
<cr1901_modern>
Hmmm... an IR instruction to create a closure. Does this convert to code that just allocate extra stack space for the environment or actually copies the closure's code (w/ tweaked environment addresses) onto the stack as well?
<whitequark>
neither
<whitequark>
it just packs the environment and a function pointer into a 'fat pointer'
<whitequark>
the environment will implicitly become 1st argument inside call.
<cr1901_modern>
Environment is a struct passed-by-value then in your implementation (just want to be sure I understand)?
<whitequark>
by reference
<cr1901_modern>
Ahh okay, that makes more sense since you said "fat pointer". Thanks!
<whitequark>
well, it's really a fat pointer to a function
<whitequark>
but an environment is passed by reference so that all closures have the same bit size
<cr1901_modern>
I'm guessing this is how most "closure can't escape the scope where it was defined" implementations do it?
<GitHub57>
[artiq] sbourdeauducq pushed 3 new commits to master: http://git.io/vm1Mb
<GitHub57>
artiq/master 657f198 Sebastien Bourdeauducq: gui: display '---' on failed number result
<sb0>
rjo, what do you think of this "random scan" implementation?
<whitequark>
sb0: ah ok, I will implement them after interleaving then.
<whitequark>
there's a tricky part where allocations effectively "escape" once you yield
<whitequark>
but the analysis I'm writing right now for other reasons will be able to detect that
<whitequark>
and still leave you able to e.g. use lists in generators
tija has joined #m-labs
<tija>
Hi! I am trying to learn migen. I have written a code to detect a sequence of 110. There are a bunch of compile error. Can someone help? http://paste.ubuntu.com/11899894/
<kyak>
i can't help, but i think you should paste the error as well
<GitHub178>
[artiq] whitequark pushed 2 new commits to new-py2llvm: http://git.io/vmMgQ
<GitHub178>
artiq/new-py2llvm 224a93f whitequark: Make compiler.ir.BasicBlock.predecessors much faster.
<GitHub178>
artiq/new-py2llvm 603d49d whitequark: Add a dominator analysis.