slav0nic has quit [Remote host closed the connection]
otisolsen70 has quit [Quit: Leaving]
stkrdknmibalz has quit [Quit: WeeChat 3.0.1]
amaury has quit [Ping timeout: 268 seconds]
amaury has joined #pypy
mattip has left #pypy [Leaving]
amaury has quit [Ping timeout: 268 seconds]
amaury has joined #pypy
stu has joined #pypy
stu has quit [Client Quit]
Atque has quit [Quit: ...]
<arigato>
cfbolz: great that there is progress on jit compiling very long functions
<arigato>
But I wonder: the solution you did keeps the whole very long function (or loop) as a tree, so it doesn't help if it branches in many different patterns
<arigato>
Wouldn't it be better, instead of just making always failing guards, to instead (or additionally) add merge points in the middle of the Python bytecode (or equivalent) ?
<arigato>
We loose the virtuals and other optimizations, but on the plus side, it lets long control flow merge back
greedom has joined #pypy
<arigato>
If we want to be advanced it can be driven by language specific hints, e.g that measures how good an idea it would be to merge here (if it's just after a non-nested if, then high)
<cfbolz>
arigato: yes, it's a good thing to explore
shlomif has quit [Ping timeout: 252 seconds]
amaury has quit [Ping timeout: 268 seconds]
<cfbolz>
arigato: I am also working on the 'promoting too many maps' problem again
stkrdknmibalz has joined #pypy
amaury has joined #pypy
stkrdknmibalz has quit [Read error: Connection reset by peer]
greedom has quit [Remote host closed the connection]
amauryfa has joined #pypy
amaury has quit [Ping timeout: 252 seconds]
<Hodgestar>
cfbolz: Re cycle finding -- maybe want you implemented is already good enough or includes this idea, but sometimes with practical cycle finding the observation that every cycle must include a back-edge in a spanning tree can be helpful since the back-edges can be found quickly. Knowing what to do once one has one edge from every cycle is then a bit problem dependent though.
<Hodgestar>
s/want/what/
<Hodgestar>
Maybe you don't need to actually find all cycles though but only certain points on each cycle? I don't know where the stack checks go.