<enebo>
headius: yeah that is probably out of date version
<enebo>
(the one I am using fwiw)
<enebo>
but I think they ship with it in graal-core
<headius>
hmm ok
<enebo>
“@enebo There is a copy in upstream hotspot and graal.”
<headius>
you got yours from above link and it worked?
<enebo>
headius: in addition to the one we downloaded
<enebo>
headius: so you cannot get it to load at all?
<thedarkone2>
headius: `mx igv` in the "proper" graal-core & friends checkout folder
<headius>
oh...it downloads it
<thedarkone2>
that's how I used to use it
<headius>
thanks
<enebo>
headius: yeah if you want to look at graal use their fork but I can load this with 8u92 no problem
<enebo>
bin/idealgraphvisualizer
<headius>
weird...it just bails for me
<headius>
mx igv works
<enebo>
headius: which 8 you using?
<headius>
u92
<enebo>
ok :)
<thedarkone2>
without running your example that ticket, graal's PEA is not going to handle that case, it a is control-flow merge at the end of that loop, and that is game over for PEA
<headius>
so graal's EA can't handle a phi either?
<thedarkone2>
AFAIK nope
<headius>
how is it any better than hotspot's then?
<nirvdrum>
Sorry, just catching up.
<nirvdrum>
IGV is part of graal-core.
<nirvdrum>
I usually just start it up from there.
<nirvdrum>
You do need the "mx" build utility though. Then it's just "mx igv" from that directory.
<nirvdrum>
I thought enebo added something for you guys.
<nirvdrum>
I think the connection code we use is in Truffle. Let me see if there's a way to do this otherwise.
<thedarkone2>
headius: for dumping it used to be -J-G:Dump=
<thedarkone2>
that would dump everything
<headius>
nirvdrum: he was working on using ideal graph for our IR
<headius>
I'm looking at actual graal graphs
<nirvdrum>
Gotcha.
<headius>
or at least, I'm trying to :-)
<thedarkone2>
headius: however with your example, if Graal did some kind of loop peeling while having special knowledge of that a "peel" allocation is the same as the on in the loop, it might work (don't know if I'm not talking nonsence…)
<headius>
what I'm reading in this paper tells me it should be able to merge states entering a phi and if all objects are virtual they'll stay virtual
<thedarkone2>
academia vs practice? :)
claudiuinberlin has quit [Remote host closed the connection]
<headius>
thedarkone2: that's certainly possible
<headius>
I'll be very disappointed if this partial escape analysis can't even handle a loop though
johnsonch is now known as johnsonch_afk
zacts has quit [Quit: WeeChat 1.4]
pil-afk is now known as pilhuhn
<nirvdrum>
headius: I'm trying to track down someone with more experience here.
<headius>
I should ask in gitter too
<headius>
just trying to get familiar with these flags myself
<headius>
nirvdrum: do you know how to get igv to actually listen to the port?
<nirvdrum>
Chris is at some conference, a couple people are on vacation, some of the Europeans have undoubtedly just called it quits for the day.
<headius>
maybe it does it by default but none of the flags seem to make anything output anywhere
<nirvdrum>
It should listen by default. What I was looking for was a command-line option to feed the data in.
<GitHub198>
jruby/master 2898b4b Thomas E. Enebo: Make us compile again
<eregon>
yeah maven just ate it without a word..., but my Eclipse complained
<eregon>
thedarkone2: in your if a/b example, the stamp of the phi is just Object, that's difficult to EA since the size is unknown
<enebo>
eregon: are you still merging from our spec commits over to spec?
<enebo>
eregon: I will add three specs to Array#max :)
<eregon>
yeah, about every month or so
<eregon>
:)
<eregon>
thedarkone2: but indeed there are some limitations, like I had a pixel allocated in a while loop and due to variable hoisting (the pixel var exists until the end of the method) it did prevent EA.
<eregon>
Interestingly, using a block to iterate "fixes" it in that EA works for the pixel :)
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
claudiuinberlin has quit []
<thedarkone2>
eregon: yeah, var liveness is difficult with dynamic langs in truffle :), can't eliminate a "long dead" var in case of deopt
<GitHub171>
jruby/master 1112205 Thomas E. Enebo: Fix AAIOBE on zero-element array for Array#max
<eregon>
yeah, exactly. But nevertheless it's possible to handle these cases, might just be expensive to see the variable is never used later, or that only the last iteration value escapes and that one needs to be materialized
yfeldblum has quit [Read error: Connection reset by peer]
yfeldblum has joined #jruby
<eregon>
an AAIOBE is a Argh (damn) Array Index Out of Bounds Exception? :D
<enebo>
eregon: hahaha yeah I put in a bonus A
<enebo>
eregon: except A is for Arrgh but more like a pirate
cremes has joined #jruby
<thedarkone2>
I think there is also an opt phases ordering problem, ie PEA is run before graal is able to prove that for e.g. there is no deopt potential in the nodes that lie on controlflow path before the frame goes out of scope
<enebo>
eregon: I totally see why the shared specs exist but I hate reading them
<eregon>
it's probably good to have an example with at least 3 values for Array#ax, knowing jruby packed array are 1-2 elements :p
<eregon>
yeah, in this case it's just be much simpler to copy
<enebo>
eregon: I get leery about adding impl-specific stuff
<eregon>
indeed, but it's definitely good to cover those cases
johnsonch is now known as johnsonch_afk
<chrisseaton>
is headius still here?
lanceball is now known as lance|afk
<headius>
chrisseaton: hey
<headius>
yeah, talking in graal gitter
<chrisseaton>
ah I'll go there then
<headius>
we found a couple nice discoveries that improved my loop bench 8x
<headius>
not bad for a day's work
<chrisseaton>
which phase are you looking at?
<chrisseaton>
GitHub needs an IGV viewer built in
<enebo>
chrisseaton: when you say java integration do you mean our JRuby JI or just ability to call into java?
<chrisseaton>
ability to call into Java, but I'm open to making it work exactly like yours if I can
<enebo>
chrisseaton: like can I -e ‘java.lang.System.get_property(“foo”)’
<chrisseaton>
Stuff like that could already work with modest effort, yeah
<enebo>
chrisseaton: yeah since ~50% of all JRuby users depend on our APIs I think it is pretty important :)
<enebo>
chrisseaton: ok thanks for the clarification. I thought Thomas meant ours vs a general mechanism
<chrisseaton>
I don't have any urgent examples though - openssl and nokogiri for C cexts are urgent - what can I use to motivate myself to do Java interop?
<headius>
that's not JI
<headius>
JI is writing just Ruby code to call an arbitrary Java library
<enebo>
chrisseaton: we just get a lot of people scripting into Java libraries. I talked to two groups within the U of MN who intergrate into a Java PDF library
<headius>
eregon's implementation of date.rb, date/format.rb stuff is an example of JI
<enebo>
chrisseaton: this is nearly 1/2 the reason people use JRuby
<chrisseaton>
What's not JI? The examples for cexts? Yeah I'm just giving them examples of why I'm working on something else - I need examples like date.rb to have something to work towards
<headius>
ok
<enebo>
chrisseaton: sure
<headius>
so yeah, date is one in JRuby proper
<headius>
but there's scads of library wrappers out there for JI