<GitHub84>
[jruby] headius pushed 1 new commit to master: http://git.io/vEiWa
<GitHub84>
jruby/master 75a699d Charles Oliver Nutter: Allow fullint to fail for now.
<GitHub179>
[jruby] headius pushed 1 new commit to ruby-2.3: http://git.io/vEiWr
<GitHub179>
jruby/ruby-2.3 4cccba8 Charles Oliver Nutter: Dir#close no longer errors if already closed.
<headius>
chrisseaton, eregon: that should get the last standard jruby fail out of the way, but on the last few builds test/truffle/integration-tests.sh has been failing
<headius>
chrisseaton: hey, what's your opinion of binding_of_caller?
<headius>
both as a feature and how it impacts optimization
<chrisseaton>
as a feature, it seems inline with the rest of the Ruby philosophy, and as an impact on optimisation, it's free in Truffle so it doesn't bother me
<headius>
free in that it doesn't affect perf?
<headius>
or free in that it can be done
<chrisseaton>
the only reason I implemented it was to implementation some standard Ruby functionality in Ruby, so it does appear to be useful
<chrisseaton>
free as it doesn't make anything else slower and doesn't cause deoptimisation or anything
<chrisseaton>
we just inline when it's used
<headius>
ahh, I see
<chrisseaton>
if we can't inline, we materialise the frame, which isn't the end of the world
<chrisseaton>
actually our current binding_of_caller isn't as fast as it should be - I need to fix it, but we know the idea works
<headius>
so that would be the case for an arbitrarily-deep binding_of_caller
<chrisseaton>
yes, but we could use the fact that there is a binding of caller that uses the current frame as a hint to keep inlining towards it
<chrisseaton>
but it's not standard Ruby is it? it's a cext?
<headius>
the runtime implications of BOC obviously are a problem for us, but my bigger problem with the feature is that it breaks pretty much all encapsulation
<headius>
yeah, it's a C ext
<chrisseaton>
some people say it's a security problem, but I think that's getting a bit silly
<chrisseaton>
nobody is running Ruby code thinking it's sandboxed within their application are they?
<headius>
I don't see it as a security problem outside the runtime
<headius>
it can't do any more than any other ruby code in that regard
<chrisseaton>
as always my philosophy tries to be that 'if people want it, we'll try to implement it'
<headius>
but it makes all local variables suspect
<chrisseaton>
I don't feel ready to start entering debates on what Ruby should or shouldn't be
<headius>
you can't trust anything in an env that uses BOC
<chrisseaton>
trace already lets you modify other people's locals
<chrisseaton>
no worse than trace is it?
<headius>
well, it's considerably easier :-)
<headius>
and you can modify variables that are on stack before even returning
<chrisseaton>
what do people use it for in practice?
<headius>
pretty sure the only practical use right now is debugging, as in pry
<headius>
at least that's the only place I ever hear people wishing for BOC JRuby support
<headius>
we could certainly support it in interpreted-only mode, so if it comes to that it's not a big deal
thedarkone2 has quit [Quit: thedarkone2]
<headius>
hell, we could support it in JIT too if we turn off frame optimization
<headius>
we just can't do it lazily where needed
<chrisseaton>
but as you build up inlining support to be stronger you could also use that to solve it
<headius>
only if we have a way to materialize frames when something we couldn't inline needs BOC
<headius>
fix up interpreter state and throw a continuation exception
<headius>
if jep-259 allows us to actually use variables on the stack, then yes
<Papierkorb>
chrisseaton: What does 'deoptimization' mean in that context? I'm confused that it 'offers performance benefits' at some points
<headius>
I don't think that's a goal though
<chrisseaton>
Papierkorb: in the context of the paper? it means going from code compiled to the VM's byte code, back to some interpreter representation
<headius>
I have not had time to keep up with all the recent JVM projects
<headius>
my understanding is that the stack walking work currently does let you access variables on stack but I'm not sure that functionality will stay exposed
<headius>
and yeah, this paper is exactly how we intend to do deopt of type-specialized code
<chrisseaton>
headius: I have no idea about it - but it talks about materialising frame 'information'
<chrisseaton>
headius: there's several other papers on that project (Multicacet JS or whatever it's called)
<headius>
chrisseaton: the main goal is to allow walking the stack to see what method/class is at each level, for security checks, logging, etc
<headius>
as a replacement for some OpenJDK-only APIs people were using
<chrisseaton>
headius: no - it's not on the critical path for rails, it's not used enough for justify optimising it for a paper, and it's been good to leave as a student project
<chrisseaton>
headius: not found any students yet
yfeldblum has joined #jruby
<GitHub22>
[jruby] chrisseaton fast-forwarded master from 75a699d to e5133ba: http://git.io/vEPOZ
<GitHub142>
[jruby] chrisseaton pushed 1 new commit to truffle-head: http://git.io/vEPOn
<GitHub142>
jruby/truffle-head 2fbe3a0 Chris Seaton: Merge branch 'master' into truffle-head...
<headius>
chrisseaton: fair enough
<headius>
we finally started getting some bug reports for our half-assed impl
<GitHub183>
[jruby] nirvdrum commented on commit 3e6f8f1: Good point. I was trying to avoid type promotion, but I recall the rules here being a bit counter-intuitive. It's slow path anyway, so I'll just do the `long` one. http://git.io/vEPKr
elia_ has quit [Quit: Computer has gone to sleep.]
pitr-ch has joined #jruby
byteit101__ has quit [Ping timeout: 260 seconds]
yfeldblum has joined #jruby
elia_ has joined #jruby
pawnbox has joined #jruby
byteit101__ has joined #jruby
pawnbox has quit [Ping timeout: 276 seconds]
byteit101__ has quit [Ping timeout: 265 seconds]
tenderlove has quit [Remote host closed the connection]
yfeldblum has quit [Remote host closed the connection]
yfeldblum has joined #jruby
yfeldblum has quit [Remote host closed the connection]
drbobbeaty has joined #jruby
pawnbox has joined #jruby
elia_ has quit [Quit: Computer has gone to sleep.]