benlovell has joined #jruby
calavera has quit [Ping timeout: 265 seconds]
benlovell has quit [Ping timeout: 265 seconds]
calavera has joined #jruby
benlovell has joined #jruby
robbyoconnor has quit [Read error: Connection reset by peer]
robbyoconnor has joined #jruby
benlovell has quit [Ping timeout: 265 seconds]
zorak8 has quit [Ping timeout: 244 seconds]
zorak8 has joined #jruby
kwando has quit [Read error: Connection reset by peer]
ludyte has joined #jruby
kwando has joined #jruby
robbyoconnor has quit [Quit: Konversation terminated!]
robbyoconnor has joined #jruby
robbyoconnor has quit [Client Quit]
robbyoconnor has joined #jruby
iamjarvo has joined #jruby
iamjarvo has quit [Client Quit]
calavera has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
calavera has joined #jruby
_dabradley has quit [Ping timeout: 272 seconds]
subbu has joined #jruby
robbyoconnor has quit [Ping timeout: 240 seconds]
_dabradley has joined #jruby
yfeldblum has quit [Ping timeout: 258 seconds]
calavera has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
subbu has quit [Ping timeout: 255 seconds]
yfeldblum has joined #jruby
yfeldblu_ has joined #jruby
yfeldblum has quit [Ping timeout: 258 seconds]
yfeldblu_ has quit [Ping timeout: 255 seconds]
thsig has joined #jruby
phrinx has joined #jruby
phrinx_ has joined #jruby
calavera has joined #jruby
phrinx has quit [Ping timeout: 265 seconds]
subbu has joined #jruby
Hobogrammer_ has joined #jruby
Hobogrammer has quit [Ping timeout: 244 seconds]
thsig_ has joined #jruby
thsig has quit [Ping timeout: 260 seconds]
calavera has quit [Ping timeout: 265 seconds]
calavera has joined #jruby
yfeldblum has joined #jruby
yfeldblum has quit [Ping timeout: 260 seconds]
thsig_ has quit [Remote host closed the connection]
yfeldblum has joined #jruby
subbu has quit [Ping timeout: 245 seconds]
ludyte has quit [Quit: ludyte]
ludyte has joined #jruby
cn28h has quit [Ping timeout: 245 seconds]
cn28h has joined #jruby
yfeldblu_ has joined #jruby
cn28h has quit [Ping timeout: 245 seconds]
yfeldblum has quit [Ping timeout: 250 seconds]
yfeldblum has joined #jruby
yfeldblu_ has quit [Ping timeout: 256 seconds]
zorak8 has quit [Ping timeout: 250 seconds]
calavera has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
diegoviola has quit [Quit: WeeChat 1.0.1]
robbyoconnor has joined #jruby
yfeldblum has quit [Remote host closed the connection]
yfeldblum has joined #jruby
phrinx_ has quit [Remote host closed the connection]
JohnBat26 has joined #jruby
ludyte has quit [Quit: ludyte]
yfeldblum has quit [Ping timeout: 256 seconds]
yfeldblum has joined #jruby
Hobogrammer_ has quit [Ping timeout: 255 seconds]
benlovell has joined #jruby
benlovell has quit [Ping timeout: 245 seconds]
kares has joined #jruby
kares has quit [Client Quit]
benlovell has joined #jruby
benlovell has quit [Ping timeout: 256 seconds]
cultureulterior1 has joined #jruby
vyorkin has joined #jruby
imperator has joined #jruby
vyorkin has quit [Quit: WeeChat 1.0.1]
imperator has quit [Quit: Valete!]
jarib has quit [Ping timeout: 260 seconds]
locks has quit [Ping timeout: 260 seconds]
mccraig has quit [Ping timeout: 260 seconds]
guilleiguaran___ has quit [Ping timeout: 260 seconds]
blinsay_ has quit [Ping timeout: 260 seconds]
LTe_ has quit [Ping timeout: 260 seconds]
portertech has quit [Ping timeout: 260 seconds]
_dabradley has quit [Ping timeout: 260 seconds]
beawesomeinstead has quit [Ping timeout: 260 seconds]
teamon has quit [Ping timeout: 260 seconds]
kith_ has joined #jruby
LTe has joined #jruby
jarib_ has joined #jruby
blinsay- has joined #jruby
blinsay- is now known as blinsay
blinsay has quit [Changing host]
blinsay has joined #jruby
locks_ has joined #jruby
mccraig_ has joined #jruby
benlovell has joined #jruby
kith has quit [Ping timeout: 260 seconds]
guilleiguaran___ has joined #jruby
portertech has joined #jruby
locks_ is now known as locks
beawesomeinstead has joined #jruby
teamon has joined #jruby
enebo has joined #jruby
benlovell has quit [Ping timeout: 245 seconds]
subbu has joined #jruby
kwando_ has joined #jruby
usebrn_ has joined #jruby
JohnBat26 has quit [Quit: KVIrc 4.3.1 Aria http://www.kvirc.net/]
kwando has quit [*.net *.split]
usebrn has quit [*.net *.split]
towski has quit [*.net *.split]
elux has joined #jruby
towski has joined #jruby
elux has quit [Quit: Leaving...]
elux has joined #jruby
robbyoconnor has quit [Ping timeout: 250 seconds]
marr has joined #jruby
subbu has quit [Ping timeout: 250 seconds]
benlovell has joined #jruby
subbu has joined #jruby
benlovell has quit [Ping timeout: 265 seconds]
diegoviola has joined #jruby
benlovell has joined #jruby
thsig has joined #jruby
ludyte has joined #jruby
thsig_ has joined #jruby
thsig__ has joined #jruby
n1ftyn8 has quit [Ping timeout: 272 seconds]
bruceadams has quit [Ping timeout: 272 seconds]
thsig has quit [Ping timeout: 240 seconds]
Scorchin has quit [Ping timeout: 265 seconds]
cpuguy83 has quit [Ping timeout: 272 seconds]
chrisseaton has quit [Ping timeout: 272 seconds]
GregMefford has quit [Ping timeout: 265 seconds]
gazarsgo has quit [Ping timeout: 272 seconds]
thsig_ has quit [Ping timeout: 260 seconds]
asarih has quit [Ping timeout: 272 seconds]
benlovell has quit [Quit: Lost terminal]
cultureulterior1 has quit [Ping timeout: 240 seconds]
_dabradley has joined #jruby
ludyte has quit [Quit: ludyte]
zorak8 has joined #jruby
vyorkin has joined #jruby
zorak8 has quit [Ping timeout: 260 seconds]
marr has quit [Ping timeout: 256 seconds]
zorak8 has joined #jruby
elux has quit [Quit: Leaving...]
ludyte has joined #jruby
Scorchin has joined #jruby
bruceadams has joined #jruby
asarih has joined #jruby
zorak8 has quit [Ping timeout: 256 seconds]
n1ftyn8 has joined #jruby
zorak8 has joined #jruby
yfeldblum has quit [Ping timeout: 255 seconds]
GregMefford has joined #jruby
cpuguy83 has joined #jruby
gazarsgo has joined #jruby
joelmheim_ has joined #jruby
chrisseaton has joined #jruby
calavera has joined #jruby
vyorkin has quit [Quit: WeeChat 1.0.1]
yfeldblum has joined #jruby
yfeldblum has quit [Ping timeout: 245 seconds]
calavera has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] jrubyci pushed 4 new commits to master: http://git.io/_YvB9g
<JRubyGithub> jruby/master 7cfbcfd Chris Seaton: [Truffle] Get rid of the copy of options stored in RubyContext....
<JRubyGithub> jruby/master 5257211 Chris Seaton: [Truffle] Remove visibility asserts - a mess, and don't always make sense in multi-language environment.
<JRubyGithub> jruby/master f72ddfa Chris Seaton: [Truffle] Change the generic dispatch node from caching to looking up every time....
JRubyGithub has left #jruby [#jruby]
cultureulterior1 has joined #jruby
e_dub has quit [Quit: ZZZzzz…]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] jrubyci pushed 1 new commit to master: http://git.io/OcBcNg
<JRubyGithub> jruby/master 5bf8d52 Chris Seaton: Remove some lexer and parser functionality that has been long deprecated.
JRubyGithub has left #jruby [#jruby]
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:0e4dc82 by Chris Seaton): The build is still failing. (http://travis-ci.org/jruby/jruby/builds/39087213)
travis-ci has left #jruby [#jruby]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] jrubyci pushed 1 new commit to master: http://git.io/A2A5gw
<JRubyGithub> jruby/master bcda0cc Subramanya Sastry: Remove thread-poll from caching call sites...
JRubyGithub has left #jruby [#jruby]
robbyoconnor has joined #jruby
zorak8 has quit [Ping timeout: 245 seconds]
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:5bf8d52 by Chris Seaton): The build is still failing. (http://travis-ci.org/jruby/jruby/builds/39087953)
travis-ci has left #jruby [#jruby]
<enebo> chrisseaton: I think you might have broken build…no mode SimpleSourcePositionFactory.Factory() method
<enebo> mode=more
<chrisseaton> enebo: sorry - will fix now
<chrisseaton> enebo: how do these problems get past a Maven compile?
thsig__ has quit [Remote host closed the connection]
robbyoconnor has quit [Quit: Konversation terminated!]
thsig has joined #jruby
<enebo> chrisseaton: I don’t know….I have mostly broken down to mvn clean; mvn now
<chrisseaton> enebo: hopefully that's done it - I'll keep an eye on Travis though...
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] jrubyci pushed 1 new commit to master: http://git.io/EoouTg
JRubyGithub has left #jruby [#jruby]
<JRubyGithub> jruby/master 1c19167 Chris Seaton: Fix incomplete source section work.
<enebo> chrisseaton: yeah np.
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:bcda0cc by Subramanya Sastry): The build is still failing. (http://travis-ci.org/jruby/jruby/builds/39088506)
travis-ci has left #jruby [#jruby]
thsig has quit [Remote host closed the connection]
thsig has joined #jruby
ludyte has quit [Quit: ludyte]
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:1c19167 by Chris Seaton): The build is still failing. (http://travis-ci.org/jruby/jruby/builds/39090804)
travis-ci has left #jruby [#jruby]
ludyte has joined #jruby
thsig has quit [Remote host closed the connection]
<chrisseaton> oh not quite...
calavera has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] jrubyci pushed 1 new commit to master: http://git.io/4fm60w
<JRubyGithub> jruby/master 43c0df9 Chris Seaton: Fix another source refactoring bug.
JRubyGithub has left #jruby [#jruby]
<chrisseaton> enebo: there's actually another parsing bug in -Ptest at the moment, but that was there before I started fiddling with the parser
<enebo> chrisseaton: If it involved END block in method I know about it and will fix it tomorrow
<enebo> chrisseaton: Although I don’t think that is actually a parser bug
<chrisseaton> chrisseaton: yeah that was it
thsig has joined #jruby
thsig_ has joined #jruby
thsig has quit [Ping timeout: 256 seconds]
<headius> man, busy busy aren't we
<headius> chrisseaton: Arity is a broken abstraction
yfeldblum has joined #jruby
<headius> it used to be fine to have a single integer to represent signatures, but they've gotten much more complex since 1.6
<headius> (Ruby 1.6)
<chrisseaton> headius: I've expanded Truffle's to be a tuple (required,optional,allowsMore), which seems to work very well
<headius> yeah, that's what we need to do, and now's the time to do it
<headius> it was very hard to remove it from everything before the new runtime
<chrisseaton> does JRuby do full keyword arguments?
<enebo> chrisseaton: we do except for zsuper
<enebo> chrisseaton: and we have another open issue on them but we have them
<chrisseaton> I think Zippy (Python on Truffle) has them - and they also have very sophisticated generators we might want to use to do something at some point
<headius> that would be interesting
yfeldblum has quit [Ping timeout: 258 seconds]
<chrisseaton> that works like goto does in C - compile multiple entry points into the same function
<headius> with the new runtime it should be possible for me to pass kwargs through without a hash...I know you are probably able to escape them away
<headius> yeah, that's the next step for IR
<headius> I added very basic fixed-arity pass through so it's at the level of the old JIT
<headius> we can make that N-arity pretty easy
* rtyler waves
<headius> rtyler: you hacking on a Sunday too?
<rtyler> yes!
<headius> what a world
Hobogrammer has joined #jruby
<enebo> I also hope we can do something where we do not need to make a hash to use kwargs but I find kwargs to be designed around being a hash. I think there are probably a lot of unintended side-effects in the design
<rtyler> making up for lost time at the end of the week :D
<headius> I'm more playing PS3 than hacking, but I'm chatting during down times :-D
<rtyler> ps3 with the boy?
<rtyler> headius: btw, I started getting crazy with typedeaf yesterday: https://gist.github.com/rtyler/527c3c526306b5bf23bf
<headius> boy schmoy
<headius> I'm playing Dark Souls
<rtyler> once I figure out class-method definitions, I need to figure out how abyssmal the performance hit is >_>
<rtyler> heh
ghadishayban has joined #jruby
<headius> I wish there were a better way to do that than calls
<rtyler> than block calls you mean?
<headius> I mean the call to delay there
<rtyler> ah
<headius> to simulate your arguments
<ghadishayban> headius: Hola. I'm planning on showing off a bit of JRuby during my JVM talk at the Clojure Conj. Reading over this thread of yours from 2011 https://groups.google.com/forum/#!topic/jvm-languages/cqX0sW66NQU
<rtyler> yeah, I'm not too thrilled with that, to get the syntax I want, I have to mash your a #default into your object's instance methods
ludyte has quit [Quit: ludyte]
<headius> imperator: I ran some numbers on pr-zlib across impls
<ghadishayban> headius: what's the state of the JRuby art for running a passed in block of code within an iterator/loop?
<headius> might be some things we can improve, or might be some things truffle could do well
<headius> ghadishayban: in what context? I mean...you pass a block and yield to it in Ruby
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:43c0df9 by Chris Seaton): The build is still failing. (http://travis-ci.org/jruby/jruby/builds/39092933)
travis-ci has left #jruby [#jruby]
<headius> enebo: I assume you expect that END block failure
<ghadishayban> wondering in relation to that thread & the "Inlining Problem" that cliff click mentions. from what I gather, JVM will treat the block as a virtual call and not inline across it, no?
<headius> ohh I see, in the context of that thread
<headius> yes, in general any method that received a block will receive N of them, likely preventing any from inlining
<headius> or perhaps the first couple might get some inlining treatment
<headius> that's not fixed in any current JVM as far as I know
<rtyler> after I finish this pull request cleanup, I think I'm going to get back to hacking on FFI; I want a JRuby-based window manager damnit
<ghadishayban> I don't follow but the broadest changes to JRuby impl, just wondering whether that scenario is specially handled
<enebo> headius: yes
<headius> in JRuby, we are hoping to work around this by emitting the target method multiple times... so if we see two different calls to Array#each, they could get their own copies of Array#each that the JVM can inline through
<enebo> headius: It was what we were talking about an hour ago
<headius> enebo: ok
<chrisseaton> not to bang on about Truffle but it's relevant here - we solve that yield problem by having no way to call a method or yielding apart from having a full proper call site with caching and inlining, including in core methods like Array#each. So there's no .call method on our blocks - you must use a proper call site.
<headius> chrisseaton: that isn't really any different on JVM, because they're all call sites
<headius> what's different is that since it's not dynamic, we just make it a virtual call and let the JVM do what it does for virtual calls
<headius> the missing piece is that hotspot can't see a monomorphic path through an intermediate call, so it never specializes the block back to its home...I would assume Truffle causes the intermediate method to get specialized in the same way we want to
ludyte has joined #jruby
<chrisseaton> yeah - the problem is operational - how hotspot is implemented - rather than theoretical
<headius> indeed
<chrisseaton> yeah, the term we use for that specialisation is splitting - we split the method into multiple copies if it's used in a different way such as different blocks
<headius> right, that's exactly what we intend to do in IR
<headius> the inlining aspect of it was functional as a prototype...we need to expand that to arity splitting, type profile splitting, block specialization...it's all doable given time
<ghadishayban> appreciate the dialogue. (this comes up pervasively in Clojure for higher order functions and combinators)
<enebo> and IR can do it right now (sans some bit rot) and a profiling mechanism to determine when to do it (bigger problem I think)
<headius> ghadishayban: oh, I'm sure it does...and it's going to be a big sore spot in Java now that lambdas are taking off
<chrisseaton> ...but how can you produce multiple copies of a core library method implemented in Java?
<headius> chrisseaton: worst case, we re-emit that method as a synthetic class
<headius> but we'd be moving block-receiving methods to Ruby for this
zorak8 has joined #jruby
<headius> or have a second Ruby version that we can work with in IR
<enebo> chrisseaton: we wlll least be changing Enumerable to be in Ruby so we can go that route quite a bit
<headius> enumerable's easy enough because most of the methods are simple
<headius> if method handles were up to the task, some of these could simply be handle-driven and hotspot would specialize from there...some day
elux has joined #jruby
<headius> I so wish method handles had backward branch
<headius> ghadishayban: feel free to ping me with any other questions: headius@headius.com
<ghadishayban> backward branch?
<headius> ghadishayban: there's no way to do a loop with MethodHandles alone
<headius> they only flow forward
<ghadishayban> I see
<chrisseaton> headius: I haven't asked you this yet - what do you make of Nashorn's proposed abstraction of their internals into a dynamic language framework?
<headius> I'd love to see such a framework, and I have no idea if what they have is the right place to start or not
<headius> it sure sounds like it does a lot, but I'm also waiting for the announcement that what they have is beating V8
<chrisseaton> I think one potential risk is that it is accidentally very JS specific in some way
<headius> for sure
<headius> I wouldn't claim I could generalize any of my call sites for other languages
<headius> the specializable bytecode Remi has talked about would be a better place to start, maybe
<enebo> chrisseaton: Difficult to make a general framework without doing to a few individual ones
<headius> turn aload and iload and dload into just "load" and then have a framework that can give you that same bytecode with N primitive types
<headius> our position, for our own sanity, is that we'll do what we can to accommodate the JVM, but the JVM needs to move faster on keeping up with us
<headius> e.g. we have not done our own specialization because the JVM should...have not done our own escape analysis because the JVM should
<headius> except for specific, narrow cases
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:43c0df9 by Chris Seaton): The build is still failing. (http://travis-ci.org/jruby/jruby/builds/39092933)
travis-ci has left #jruby [#jruby]
ghadishayban has quit [Ping timeout: 265 seconds]
<chrisseaton> headius: another problem - I don't see it does anything for complicated frame and stack manipulation, which is key for Ruby
<chrisseaton> if you still have to either allocate stacks on the heap or manually try to escape analyst them yourself in a custom IR, then it might not be enough
<headius> yeah, that's a big pain for us...probably the biggest reason we decided we needed to explore our own IR
yfeldblum has joined #jruby
<headius> chrisseaton: I'd actually be interested in seeing how far a JVM bytecode backend for Truffle could go
<headius> you're gathering all the information we'd like to see...and there's ways to do almost of this above the level of JVM bytecode if the JVM doesn't do it for us below
yfeldblum has quit [Ping timeout: 265 seconds]
mister_solo has joined #jruby
enebo has quit [Quit: enebo]
mister_solo has quit [Client Quit]
<chrisseaton> yeah, sort of thing a masters student at JKU would be ideal for - think they're starting sometime soon
skade has joined #jruby
<headius> very cool...feel free to put them in contact with me if it happens
<chrisseaton> btw Nashorn faster than V8 on one benchmark - mandelbrot (they're saying 'as fast as' but for me it's faster)
thsig_ has quit [Remote host closed the connection]
<chrisseaton> the reason for this is interesting - if you are reasonably good everything goes away and the problem reduces to instruction selection, scheduling and register allocation
<chrisseaton> which of course the JVM is very good at, and V8 is more basic on
<chrisseaton> so the JVM wins!
ghadishayban has joined #jruby
<headius> just takes a lot of wrestling to get there :-)
zorak8 has quit [Ping timeout: 258 seconds]
zorak8 has joined #jruby
mister_solo has joined #jruby
mister_solo has quit [Client Quit]
mister_solo has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] jrubyci pushed 1 new commit to master: http://git.io/E2LXXg
JRubyGithub has left #jruby [#jruby]
<JRubyGithub> jruby/master 1a93885 Chris Seaton: Tests for new detailed source positions.
ludyte has quit [Quit: ludyte]
thsig has joined #jruby
ludyte has joined #jruby
yfeldblum has joined #jruby
thsig has quit [Ping timeout: 260 seconds]
zorak8 has quit [Ping timeout: 260 seconds]
yfeldblum has quit [Ping timeout: 255 seconds]
marr has joined #jruby
JohnBat26 has joined #jruby
ghadishayban has quit [Ping timeout: 265 seconds]
e_dub has joined #jruby
yfeldblum has joined #jruby
yfeldblum has quit [Remote host closed the connection]
yfeldblum has joined #jruby
e_dub has quit [Read error: Connection reset by peer]
e_dub has joined #jruby
ghadishayban has joined #jruby
<chrisseaton> Do I need to worry about JRuby's Java test suite (core/src/test) being run in parallel? Can I modify shared state in setUp()?
Aethenelle has joined #jruby
thsig has joined #jruby
skade has quit [Quit: Computer has gone to sleep.]
mister_solo has quit [Ping timeout: 258 seconds]
JohnBat26 has quit [Quit: KVIrc 4.3.1 Aria http://www.kvirc.net/]
colinsurprenant has joined #jruby
Aethenelle has quit [Quit: Aethenelle]
<rtyler> ahahah, typedeaf methods are an order of magnitude slower than Procs even
<rtyler> heh
<rtyler> dynamic invocation is slow, whodathunk
colinsurprenant has quit [Quit: colinsurprenant]
calavera has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
calavera has joined #jruby
skade has joined #jruby
colinsurprenant has joined #jruby
skade has quit [Quit: Computer has gone to sleep.]
skade has joined #jruby
colinsurprenant has quit [Quit: colinsurprenant]
elia has joined #jruby
<rtyler> headius: jruby is crushing it, https://gist.github.com/rtyler/300c271a9634d62c0212, makes my slow code faster over time :D
<rtyler> tl;dr the while warming up my code is 2x slower than on MRI, but as the JVM warms up it gets to be 4x faster
calavera has quit [Quit: Textual IRC Client: www.textualapp.com]
calavera has joined #jruby
<chrisseaton> rtyler: what is typedeaf?
<rtyler> a bad idea :P
<rtyler> whoops
calavera has quit [Client Quit]
<chrisseaton> and it's slow because you're calling a proc via some indirection instead of just calling a method?
<rtyler> well, it's definitely not the same asa "method call"
<rtyler> proc with a lot of overhead :P
<chrisseaton> yeah, just a limitation in current JRuby, no need for any overhead in theory, hopefully it will go away in time
<chrisseaton> rtyler: I would say the biggest problem here is __typedeaf_varstack__ - is that a global?
<rtyler> chrisseaton: thread and instance local
<rtyler> Thread local associated with the objkect instance
<chrisseaton> rtyler: no compiler technology we have today is going to optimise that away
* rtyler nods
<rtyler> still hunting for low-hanging fruit to optimize out
<chrisseaton> why do you need thread local? everything else looks like Truffle could optimise it
<rtyler> if to make calls to typedeaf methods across threads safe
<rtyler> s/if/it's/
<chrisseaton> yeah - but I mean what data structure needs to be stored in shared state rather than just being on the stack?
<rtyler> it's gotta hold the variable stack so #method_missing magic will work inside the executed block
<rtyler> which is specific to the instance, but I didn't want to just add an instance variable which would require synchronization across threads
<rtyler> if I can get this down to something like 2x the overhead of a method call, I'll be happy
<chrisseaton> I've read the comments but I still don't follow what you're storing in your stack - why does method_missing return some value instead of calling another method?
<rtyler> chrisseaton: it's a hack to get around the inability to inject local variables inside of a block
<chrisseaton> is Binding read only?
<rtyler> lememe dig up the commit
<rtyler> mutating a block's binding doesn't work in an obvious way
zorak8 has joined #jruby
<chrisseaton> that link is dead already after 3 days!
<chrisseaton> the link in the commit message I mean
<rtyler> remove the >
<chrisseaton> rtyler: is this just for the parameters?
<rtyler> no, I'm actually ripping the use of the varstack for storing params right now
<rtyler> it's much more for the variables
<chrisseaton> but if you're defining methods the only locals you could capture are going to be the locals in the class or module body aren't they? are they pretty rare?
digitalextremist has joined #jruby
<rtyler> chrisseaton: I'm holding onto the arguments passed in on method invocation, so the method_missing hook can emulate "local variables" inside the block
<rtyler> l.log('message') -> inserts "message" into varstack -> block references `message` -> method_missing hook digs up `message` from varstack
<rtyler> er, l.log('hello world') would be more clear
skade has quit [Quit: Textual IRC Client: www.textualapp.com]
<chrisseaton> ah I see
<chrisseaton> you can't modify a binding then, could you synthesize one - using eval maybe
<rtyler> tried that too, wasn't able to inject a new binding into the block's evaluation :(
<chrisseaton> yeah... I suppose there is never going to be a solution to that because Ruby has already parsed the locals as method calls - so a new binding wouldn't help
<rtyler> I wish there was a richer way to dynamically compose method objects, but then again, method objects would have to be first class citizens
* rtyler longs for some of Python's design choices
<chrisseaton> your problem is that you have to define the method_missing in a shared space - what about creating an intermediate object with a new method_missing that you just use for the call you're making
<chrisseaton> instead of pushing to a shared state, use a new object with a new method_missing to do your call
<rtyler> I'm not sure I follow how that would be different than the thread+instance local I'm making now, which is admittedly fugly
<chrisseaton> I don't really know your application, but you currently do instance_exec in the actual instance. you could instead create a new object, with a singleton method_missing, that somehow defers everything else to the original instance, and instance_exec in that?
<rtyler> I don't really have an application, I'm just experimenting with madness here :)
<chrisseaton> well, application/gem
<rtyler> heh, apparently using a Hash as a stack instead of Array is 1000x slower
<rtyler> wait, got it down to only 250x slower :(
zorak8 has quit [Ping timeout: 250 seconds]