<headius>
it should fail but it sees 'a' because only one scope gets popped
<headius>
oh wait
<subbu>
and there have been some non-deterministic failures in travis for a while now .. not sure if they are related to block call protocol or not .. maybe worth turning this off and isolating them.
<headius>
eval 'a'
<headius>
not with foo
<headius>
it messes up current body's scope
<subbu>
ok.
<subbu>
those tests take long.. finished finally with 4f/2e.
vtunka has quit [Quit: Leaving]
<headius>
ok
<headius>
if you want to run the individual files with excluded tests...
<headius>
you don't need those for the target script or -e, it always jits immediately
<subbu>
so, now i know what should happen. will debug.
<subbu>
oh, ok.
<headius>
only need threshold=0 if there are other scripts required in, and -X+C doesn't really do anything right now
nirvdrum has joined #jruby
<headius>
because not all IR can JIT (large bodies etc)
<subbu>
makes sense.
<subbu>
so, what is the no-background flag again? -Xjit.background=false ?
<headius>
threshold=0 turns off background now
<subbu>
ok.
<headius>
because that's always what we want
camlow325 has joined #jruby
<subbu>
nice .. -X-C -Xjit.threshold=0 also doesn't error so i can poke at just the interp code.
<headius>
yeah
<headius>
I blanced at the full IR and I see nonlocal_return without any pops
<headius>
that's as far as I got
camlow325 has quit [Read error: Connection reset by peer]
<subbu>
phew ... this is like a big context switch .. having to load all these jruby bits paged out onto the internet back into main memory :) .. haven't run these tests and scripts in a long time.
<headius>
hah
camlow325 has joined #jruby
<headius>
well I appreciate the help :-) I want to start playing with deeper tweaks now that ACP is working for blocks, but it needs to be working first
<headius>
I'll fix the slice thing
camlow325 has quit [Read error: Connection reset by peer]
camlow325 has joined #jruby
<headius>
ahh yeah I see the problem there right away
<headius>
a lambda yielded to gets context block type reset to NORMAL
<headius>
so it never enters the "isProc" block
camlow325 has quit [Read error: Connection reset by peer]
<subbu>
yes, nonlocal return is not popping block state.
camlow325 has joined #jruby
<subbu>
it is a bug in the acp pass code for blocks. i thought i reasoned that nonlocal returns didn't need it .. but clealry flawed reasoning :)
<headius>
yeah that would do it :-)
camlow325 has quit [Read error: Connection reset by peer]
camlow325 has joined #jruby
<subbu>
i missed the "if (IRRuntimeHelpers.inLambda(blockType)) return returnValue;" line at the start of IRRuntimeHelpers.initiateNonLocalReturn(..)
<subbu>
so, another special case now needed for lambdas vs. blocks.
<subbu>
ok, will fix it.
<subbu>
let me look at break handling while at it and see if it changes anything.
<subbu>
yup breaks have the same issue.
<subbu>
headius, alright .. time to get breakfast .. and i'll take a look at this after. crappy special cases .. anyway this is basically affirming that we need two versions of code for lambdas and non-lambda versions of blocks.
<subbu>
but, for now, i'll hack something in to get it to work .. but, the nonlocal return and break handling is different logic in the body of the block as well not just preamble.
subbu is now known as subbu|afk
<headius>
subbu|afk: ok
pitr-ch has joined #jruby
<headius>
subbu|afk: did your proc/lambda args changes fix anything or were they just intended to be better style?
<headius>
I can't see any behavioral change other than the breaking one
subbu|afk is now known as subbu
<subbu>
headius, well, i was mostly looking at code paths without call protocol and with call protocol and trying to make sure they were consistent.
<subbu>
without trying to fix any specific tests.
<headius>
ok
<headius>
I may bifurcate these into lambda and non-lambda methods so that's more clear
<headius>
and I will probably just revert your change and then do that
<subbu>
makes sense.
<subbu>
k
kares has quit [Quit: hali-hoo!]
skade has joined #jruby
lazyatom has quit [Quit: Connection closed for inactivity]
mysteriouspants has quit [Changing host]
mysteriouspants has joined #jruby
pitr-ch has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<bascule>
_____ ____ ___ ____ _ __ ___ _ _
<bascule>
| ___| _ \|_ _| _ \ / \\ \ / / | | |
<bascule>
| |_ | |_) || || | | |/ _ \\ V /| | | |
<bascule>
| _| | _ < | || |_| / ___ \| | |_|_|_|
<bascule>
|_| |_| \_\___|____/_/ \_\_| (_|_|_)
<bascule>
pitr-ch has joined #jruby
<GitHub108>
[jruby] subbuss pushed 1 new commit to master: http://git.io/v0Ajt
<GitHub108>
jruby/master 11e3766 Subramanya Sastry: Push lambda non-local returns & breaks through local exceptions...
<subbu>
headius, there you go ^
<GitHub77>
[jruby] eregon pushed 1 new commit to truffle-head: http://git.io/v0xvk
<GitHub77>
jruby/truffle-head 9580e60 Benoit Daloze: [Truffle] AllocateObjectNode for Queue.
<subbu>
headius, i am going to turn off block call protocol on master till we get the rest of this greened so we at least know if any of the breakage is related to this or not.
<GitHub78>
[jruby] subbuss pushed 1 new commit to master: http://git.io/v0xUo
<GitHub78>
jruby/master ccc8e03 Subramanya Sastry: Turn off block call protocol till we get failures fixed
<GitHub153>
[jruby] subbuss pushed 1 new commit to master: http://git.io/v0xmJ
<GitHub153>
jruby/master 3af83b3 Subramanya Sastry: Revert "Push lambda non-local returns & breaks through local exceptions"...
<subbu>
headius, i'll have to look at this over the weekend ... this is a bit more trickier than I thought since I have other assumptions in the IR builder about nonlocal-return and breaks.
<subbu>
so, reverted it.
skade has quit [Quit: Computer has gone to sleep.]
skade has joined #jruby
<GitHub83>
[jruby] subbuss pushed 1 new commit to master: http://git.io/v0x3A
<GitHub83>
jruby/master 5100428 Subramanya Sastry: Enable dumps of full build IR & CFG in debug mode
<chrisseaton>
subbu: are you still around? your last commit went bad
<subbu>
chrisseaton, i think it is one of headius' older commits that is sending code along the explicit block call protocol path even when it is turned off .. I figured he would notice it once he emerges from his coding cave :)
blandflakes has joined #jruby
<chrisseaton>
oh sorry
<chrisseaton>
headius: ^
brauliobo has joined #jruby
yfeldblum has quit [Ping timeout: 240 seconds]
lanceball is now known as lance|afk
pawnbox has joined #jruby
bbrowning has quit [Quit: Leaving]
pawnbox has quit [Ping timeout: 265 seconds]
<donV>
Hi all!
<subbu>
chrisseaton, am taking a look now .. i think headius never meant for the explicit block call protocol to be turned off .. I thought I would turn it off while we debug and fix the remaining failures and errors, but that broke the JIT.
rsim has joined #jruby
<GitHub77>
[jruby] subbuss pushed 1 new commit to master: http://git.io/v0p1T
<GitHub77>
jruby/master a968fc7 Subramanya Sastry: Re-enable the implicit call protocol paths in CompiledIRBlockBody...
<subbu>
headius, sorry for stepping on your toes .. but given that I cannot fix some of these failures till later in the weekend, I turned off explicit call protocol for blocks.
<subbu>
and broke the JIT since I didn't realize you had turned off the old call paths.
<tenderlove>
they're instances of Thin::Connection
<tenderlove>
Thin::Connection must be monkey patching itself at runtime
<tenderlove>
I'm doing the counts based on class serial number
<chrisseaton>
tenderlove: or are they singleton classes on objects?
<tenderlove>
chrisseaton: it could be that the singleton class on Thin::Connection is changing
<tenderlove>
that would cause the class serial number to change
yfeldblum has joined #jruby
<tenderlove>
:(
<tenderlove>
clearly thin is doing something wrong
<chrisseaton>
what was that design pattern that was popular a while ago where people created objects and then added methods every time?
<tenderlove>
DCI
<tenderlove>
(I thing)
<tenderlove>
think
<chrisseaton>
that was it
<chrisseaton>
i did an experiment to change the way singletons were allocated to handle that without invalidations
pawnbox has joined #jruby
<tenderlove>
oh?
<tenderlove>
how did it work out?
<chrisseaton>
it worked, but didn't commit it as it was very special case - don't think anyone uses DCI
<chrisseaton>
it's one of those things i should write up into a paper at some point
pawnbox has quit [Ping timeout: 246 seconds]
e_dub has quit [Quit: ZZZzzz…]
<tenderlove>
it would be nice if there was a more fine grain cache key, I suppose
brauliobo has quit [Ping timeout: 240 seconds]
<chrisseaton>
you can also cache the set of methods an object has, and when you add a method you just move to an existing, cached new set of methods, rather than a new set
<chrisseaton>
so if your sets end up being the same, even if you're doing stuff at runtime, your call sites can stay cached
<chrisseaton>
it's like properties in hidden class systems