<chrisseaton[m]>
headius: hi - what is `-Xjit.dumping` supposed to do? I can't see any output? Am I using it wrong? Seems like it's not connected to anything since `ed54aab184bed0dc9dbaaf90b357c8f793c33696`? What do you use to dump JIT bytecode?
<chrisseaton[m]>
Ah, it's `compile...` - I was looking at `jit...`
<headius[m]>
compile.dump is a raw dump before loading the bytecode
<headius[m]>
what do you need that for?
<chrisseaton[m]>
I'm not sure why I'm getting `invokedynamic` instructions by default, or when I have `-Xcompile.invokedynamic=false` - have the rules changed?
<headius[m]>
because we emit a number of constructs using invokedynamic by default now, mostly for caching lazily-allocated literals so they'll appear constant
<chrisseaton[m]>
Ok that sort of looks like what I'm seeing.
<headius[m]>
the AOT branch we are working on has a third mode that emits no indy at all
<headius[m]>
as of a couple days ago
<chrisseaton[m]>
`INVOKEDYNAMIC checkArity` for example - is that right? In combination with `-Xcompile.invokedynamic=false`?
<headius[m]>
yeah along with getting lazy constant values it's also used to reduce overall bytecode size
<headius[m]>
compile.invokedynamic mostly just turns on full indy method dispatch now
<headius[m]>
in general we can slide the dial from no indy to full indy on a finer grain using the AOT branch, but it's fairly coarse-grained on master right now
<headius[m]>
there's no way to turn on the AOT mode without enabling .class caching
<headius[m]>
at the moment
<chrisseaton[m]>
Thanks, I'll take a look, but I was just looking at how large your Graal graphs were really today.
<headius[m]>
ahh for your talk?
<chrisseaton[m]>
Yes
<chrisseaton[m]>
Just not built or used JRuby for a while as well so dusting off the cob webs.
<headius[m]>
I'll be interested to hear how we can do better analysis
<chrisseaton[m]>
I've got some cool tools I'll show you that should be immediately applicable.
<headius[m]>
I have made some nice improvements poking around the ideal graph recently, like the realization that graal will eliminate repeat instance final field accesses
<headius[m]>
that got times loops to fold almost completely away once I fixed a few things
<headius[m]>
it will be interesting to see how the graphs compare with various levels of indy enabled... more should optimize away with indy but getting there is much heavier
<headius[m]>
we're still working on the right heuristics for where and when to use indy