<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]> no problem
<headius[m]> once we get close to merging enebo and kares and I will thumb wrestle for review rights
<byteit101[m]> :-D
<byteit101[m]> Did you want to discuss anything tonight or wait until later?
<headius[m]> later, I need to get some sleep
<headius[m]> ttyl!
snickers has joined #jruby
snickers has quit [Read error: Connection reset by peer]
<kares[m]> boc_tothefuture: it mentions calling each on a `java.util.Enumeration` not enum classes
snickers has joined #jruby
snickers has quit [Ping timeout: 240 seconds]
<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
<enebo[m]> mri26 -e 'define_method("") {puts "A"}; send ""'
<Freaky> yup
<byteit101[m]> Popen3 is eating my quotes on JRuby, but not MRI (Linux) I assume this is a new issue I should file?
<enebo[m]> byteit101: yeah open an issue
<Freaky> heh, got OpenJDK 16 triggering this miscompilation before it even finishes parsing the first JSON
<Freaky> see if it still does it after this patched version builds
<Freaky> yup
<headius[m]> Freaky: so the suggested patch is not sufficient
<headius[m]> he did say it just reduced the occurrence
<headius[m]> byteit101: I can
<headius[m]> I can't repro locally
<headius[m]> I incorporated a fix for this specific issue a few weeks back that uses a more clever way of calling sh to preserve quoting
<headius[m]> so it was specifically to fix this sort of thing
<headius[m]> merged late December
<Freaky> headius[m]: yeah, no appreciable difference here, but it's possible I interpreted the patch incorrectly
<Freaky> ah, there's a better patch there, let's try that
<byteit101[m]> headius: Ah, I'll update master then. I think I haven't merged out in awhile
<headius[m]> yeah confirm for me that it works and we can consider backporting too
<byteit101[m]> headius: yay! works on latest master
<byteit101[m]> sorry about that
<Freaky> yeah, if anything it's even easier to reproduce on 16, with or without the patch
<Freaky> or maybe I just didn't apply the patch properly