-
Notifications
You must be signed in to change notification settings - Fork 80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comparator issues in https://download.eclipse.org/eclipse/downloads/drops4/I20241126-0600/ #2595
Comments
@srikanth-sankaran Would you please investigate? As today there are only 2 PRs by you merged it should be coming from them. |
Thanks, I will, first thing tomorrow morning. |
Just checked few classes - they seem to have "usual" old style Java switches (no fancy patterns) but seem to use one local variable less inside the switch as before. See |
A minor usability - not correctness - issue that results in one UI test failing is tracked here: eclipse-jdt/eclipse.jdt.core#3356 This has nothing to do with the comparator errors. |
Does it make sense to omit all the lines with no failures in Personally I see no value in seeing (0) replicated for each platform and for each suite, Likewise, it would be so much better if clicking on failure count would take me to failed test instead of my having to search for "Failure" with many false hits. |
Here is a tiny program that shows what has changed:
Local Variable Table from 4.34 RC2:
Local Variable Table from master:
Basically to switch on strings, the compiler uses a "secret" local variable it injects into the program (Strictly speaking in this program such a secret local is not required at all but that is not changed) In 4.34, this secret variable is injected into the "upper" scope so, in this case into foo's scope and stays live till foo is live on the stack which means that the Exception e of the catch block cannot overlay with the secret and must co-exist with the secret variable. So the secret variable is alloted slot 0 (it being a secret you don't see it LVT) and Exception e gets assigned the slot 1. In master, the secret variable is injected into the switch block's scope and gets reclaimed as soon that the switch block's body {} is exited. So slot 0 is immediately available for use and gets assigned to Exception e. I'll look through the other class files to see if the symptoms are the same - if so we can simply declare we are fine. Not just fine, better than before - in the sense that a local variable slot is garbage collected as soon as it becomes garbage. |
OK, I have scanned through the 35 files that are reported. No red flags. We can proceed to declare the build stable. One interesting case is from This is not just a space optimization. This may result in compact code sequences also. For example, aload_[0|1|2|3] takes one byte to encode in a class file, while aload_4+ takes two bytes. |
@akurtakov @iloveeclipse - is there any automation that would generate the PRs needed for qualifier updates ? |
@mpalat @MohananRahul - any help would be appreciated. Thanks! |
I am not aware of any automation as this time it requires bumping the version for most(all maybe) as it's start of cycle. |
@trancexpress : could you please run the script & create PR's for touched repos? The good thing now, we don't need to check manifest files because github action will do that for us. |
Thanks gentlemen. |
@iloveeclipse So your plan is to add entries to forceQualifierUpdate.txt files (even if they are not needed) and let the automation update versions? That might be a nice workaround.. |
Yes, but since I'm offline today I hope Simeon can take over. |
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
List of PRs:
Would be good if someone who is used to the process (I am not) can double check. I've commented on the individual PRs, where I have doubt in what the For SWT I'm not sure, the script only creates files (in the
|
For swt I believe (90%) that forceQualifierUpdate for o.e.swt should be the right thing to do. |
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
You mean just this? No manifest version bumps? https://github.com/eclipse-platform/eclipse.platform.swt/pull/1623/files |
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
Thank you @akurtakov for the help! And thank you @srikanth-sankaran for the diff analysis. I'll check the next I-build to see if we need more changes. |
Once https://ci.eclipse.org/releng/ completes (so rebuilt natives are pushed) I'll trigger new I-build. |
@akurtakov , @MohananRahul : we should deploy new ecj build and use it in platform so jenkins builds are using same compiler as SDK build |
https://download.eclipse.org/eclipse/downloads/drops4/I20241127-0510/ is clear from comparator issues. |
Alright, great. Anything else here? |
Thanks @trancexpress for your help here. Appreciated. |
Closing this, let me know if there is more to do and I'll re-open. |
Changes to ecj are for handling of switch on String. See: eclipse-platform/eclipse.platform.releng.aggregator#2595
https://download.eclipse.org/eclipse/downloads/drops4/I20241126-0600/ has many comparator issues.
The text was updated successfully, but these errors were encountered: