<headius[m]>
byteit101: I got down to JavaProxyClass, will answer those after dinner
<headius[m]>
just about anything you want to do in there is fine because it is not considered a public API and it is grotty old code
<headius[m]>
but I will go point by point later
<headius[m]>
byteit101: should have everything answered except the ones I said I need to discuss with you
<headius[m]>
I did a very short review earlier that mostly covered coding style issues... I will try to do a more technical review at some point soon
<byteit101[m]>
Awesome, thanks!
<byteit101[m]>
headius: yes I saw the style comments. I'm aware of those, but please put off that until I can update the code to reflect latest comments
<headius[m]>
Freaky: I'm glad this is moving along quickly
<headius[m]>
reading through Aleksey's links now
<headius[m]>
sdlin: Freaky Aleksey's last email sums up the workarounds... disable C2 entirely and accept the performance hit (tiered=1 is best because 3 has extra overhead) or use a JVM that doesn't have the affected code (8, unfortunately). He also suggested a patch that could be applied to a custom build of 9+ but that is probably not an option for production
<headius[m]>
we seem to have found a pretty gnarly issue
<Freaky>
ah, OpenJDK 16 port dropped a ocuple of days ago
<Freaky>
can chuck a patch at that
<sdlin[m]>
<headius[m] "sdlin: Freaky Aleksey's last ema"> Thanks. I'm also watching Aleksey's updates in the Open JDK thread. By any chance do you know how long it's expected to take for the backport he mentioned to be available in a JDK 11 patch release?
enebo has joined #jruby
enebo has left #jruby [#jruby]
<headius[m]>
sdlin: I don't know how rapidly they get patch releases out but given that this is in the primary JIT it may get a faster track
<headius[m]>
enebo: that zsuper issue is a good one
<headius[m]>
zsuper is prohibited in 2.5 as well? So we could just remove this altogether?
<enebo[m]>
headius: I do not believe MRI ever did this
<headius[m]>
oh really
<enebo[m]>
It is one of those things where no one does it so it never hit our feature
<enebo[m]>
the feature was only "grazed" because the destructuring exposed a bug in the feature
<enebo[m]>
I decided to take the analysis a little further to convince myself that even considering supporting this is problematic
<enebo[m]>
My example shows to support this you would need to be able to reverse or track the destructuring
<enebo[m]>
but it is not actually Ruby but what Ruby could have considered. So it should have been removed a long time ago
<headius[m]>
well that is good news
<headius[m]>
nuke it from orbit
<enebo[m]>
I have to understand how MRI generates the error
<enebo[m]>
It might be at runtime
<headius[m]>
it probably could be parse time if you can prove there's no hard method parent around a block with zsuper
<enebo[m]>
I just put if false on my example and it runs
<enebo[m]>
so it is a runtime error
<enebo[m]>
but as to what you said I think it is a little tougher than that. If I have a zuper in a closure in a method I do not know the closure might not be a define_method
<headius[m]>
so it is doing it at the point you actually call zsuper and it sees we are in a define_method
<enebo[m]>
That would be my guess since it seems to parse
<headius[m]>
and yeah that sort of case was where I figured it wouldn't be possible to know
<enebo[m]>
unless Ruby is really good at not parsing stuff in if false
<headius[m]>
but say a block with zsuper where the nearest hard parent is a class or module, that could be rejected
<headius[m]>
it may be a small enough subset of cases that it is not worth a parse time distinction
<enebo[m]>
we do have some code looking for that case
<enebo[m]>
not sure why
<headius[m]>
depends whether most define_method happen in some other method body (a metaprogramming util or something) or at a class level
<enebo[m]>
if (scope.isModuleBody()) return buildSuperInScriptBody();
<enebo[m]>
heh
<enebo[m]>
That is an unresolved super so what is that for?
<enebo[m]>
HAHAHA
<enebo[m]>
jruby -e 'module D; super; end'
<enebo[m]>
NoMethodError: super: no superclass method `' for D:Module
<enebo[m]>
Amazing!
<enebo[m]>
good thing we cannot define the method "" on Module
<enebo[m]>
Well we could with JRuby.reference
<headius[m]>
wow
<Freaky>
enebo[m]: hm? define_method("")
<enebo[m]>
Freaky: ah fun. I guess you can send to it