diff options
author | Gunnar Wagenknecht | 2020-09-28 08:16:51 +0000 |
---|---|---|
committer | Manoj Palat | 2020-11-02 02:07:08 +0000 |
commit | dc66657375b624ab8472ee46037788670cc44d9e (patch) | |
tree | db5dbe8067d0f8aab49d63bbda90057063358227 | |
parent | aa94311cac69ae05bf1aec3a20a1def2f59d2174 (diff) | |
download | eclipse.jdt.core-dc66657375b624ab8472ee46037788670cc44d9e.tar.gz eclipse.jdt.core-dc66657375b624ab8472ee46037788670cc44d9e.tar.xz eclipse.jdt.core-dc66657375b624ab8472ee46037788670cc44d9e.zip |
Bug 566498 - Use parsed module-info.class from cache
The getter always triggered parsing of the module-info.class file
ignoring any cached state. This is especially worrisome for JRT modules,
which effectively never change.
Change-Id: I0d27adbaa545291dff768b317f8e4960b06539c4
-rw-r--r-- | org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ModularClassFile.java | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ModularClassFile.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ModularClassFile.java index 14addc395d..7751e9aa8d 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ModularClassFile.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ModularClassFile.java @@ -36,8 +36,6 @@ import org.eclipse.jdt.internal.core.util.Util; */ public class ModularClassFile extends AbstractClassFile implements IModularClassFile { - private BinaryModule binaryModule; - protected ModularClassFile(PackageFragment parent) { super(parent, TypeConstants.MODULE_INFO_NAME_STRING); } @@ -64,10 +62,7 @@ public class ModularClassFile extends AbstractClassFile implements IModularClass BinaryModule module = new BinaryModule(this, moduleInfo); newElements.put(module, moduleInfo); info.setChildren(new IJavaElement[] {module}); - this.binaryModule = module; - if (info instanceof ClassFileInfo) { - ((ClassFileInfo) info).setModule(module); - } + ((ClassFileInfo) info).setModule(module); ((PackageFragmentRootInfo) getPackageFragmentRoot().getElementInfo()).setModule(module); return true; } @@ -294,11 +289,10 @@ public class ModularClassFile extends AbstractClassFile implements IModularClass @Override public IModuleDescription getModule() throws JavaModelException { - if (this.binaryModule == null) { - openWhenClosed(createElementInfo(), false, null); - if (this.binaryModule == null) - throw newNotPresentException(); + BinaryModule module = (BinaryModule) ((ClassFileInfo) getElementInfo()).getModule(); + if (module == null) { + throw newNotPresentException(); } - return this.binaryModule; + return module; } } |