Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 260404 Details for
Bug 489907
[1.9] AIOOBE during code generation of a module-info with large number of package exports
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Proposed fix
Bug-489907.patch (text/plain), 9.71 KB, created by
Jay Arthanareeswaran
on 2016-03-18 04:46:21 EDT
(
hide
)
Description:
Proposed fix
Filename:
MIME Type:
Creator:
Jay Arthanareeswaran
Created:
2016-03-18 04:46:21 EDT
Size:
9.71 KB
patch
obsolete
>diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ModuleBuilderTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ModuleBuilderTests.java >index aac2ec2..db853e3 100644 >--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ModuleBuilderTests.java >+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ModuleBuilderTests.java >@@ -41,7 +41,7 @@ > } > > static { >-// TESTS_NAMES = new String[] { "test019" }; >+// TESTS_NAMES = new String[] { "testHugeModuleInfo" }; > } > private static boolean isJRE9 = false; > public static Test suite() { >@@ -728,6 +728,24 @@ > JavaCore.setOptions(javaCoreOptions); > } > } >+ public void testHugeModuleInfo() throws CoreException, IOException { >+ if (!isJRE9) return; >+ Hashtable<String, String> javaCoreOptions = JavaCore.getOptions(); >+ try { >+ IJavaProject project = setUpJavaProject("ConvertToModule", "1.9"); >+ if (!project.getOption("org.eclipse.jdt.core.compiler.compliance", true).equals("1.9")) { >+ return; >+ } >+ project.getProject().build(IncrementalProjectBuilder.FULL_BUILD, null); >+ moveFile("ConvertToModule/module-info.java", "ConvertToModule/jdt.test/module-info.java"); >+ waitForManualRefresh(); >+ project.getProject().build(IncrementalProjectBuilder.FULL_BUILD, null); >+ } finally { >+ this.deleteProject("ConvertToModule"); >+ JavaCore.setOptions(javaCoreOptions); >+ } >+ } >+ > public void tearDownSuite() throws Exception { > super.tearDownSuite(); > deleteProject("P1"); >diff --git a/org.eclipse.jdt.core.tests.model/workspace/ConvertToModule/module-info.java b/org.eclipse.jdt.core.tests.model/workspace/ConvertToModule/module-info.java >new file mode 100644 >index 0000000..2f28435 >--- /dev/null >+++ b/org.eclipse.jdt.core.tests.model/workspace/ConvertToModule/module-info.java >@@ -0,0 +1,113 @@ >+/** >+ * @author jayaprakash >+ * >+ */ >+module eclipse.jdt.ui { >+ exports org.eclipse.jdt.internal.corexts; >+ exports org.eclipse.jdt.internal.corext.buildpath; >+ exports org.eclipse.jdt.internal.corext.callhierarchy; >+ exports org.eclipse.jdt.internal.corext.codemanipulation; >+ exports org.eclipse.jdt.internal.corext.codemanipulation.tostringgeneration; >+ exports org.eclipse.jdt.internal.corext.dom; >+ exports org.eclipse.jdt.internal.corext.dom.fragments; >+ exports org.eclipse.jdt.internal.corext.fix; >+ exports org.eclipse.jdt.internal.corext.javadoc; >+ exports org.eclipse.jdt.internal.corext.refactoring; >+ exports org.eclipse.jdt.internal.corext.refactoring.base; >+ exports org.eclipse.jdt.internal.corext.refactoring.binary; >+ exports org.eclipse.jdt.internal.corext.refactoring.changes; >+ exports org.eclipse.jdt.internal.corext.refactoring.code; >+ exports org.eclipse.jdt.internal.corext.refactoring.code.flow; >+ exports org.eclipse.jdt.internal.corext.refactoring.delegates; >+ exports org.eclipse.jdt.internal.corext.refactoring.generics; >+ exports org.eclipse.jdt.internal.corext.refactoring.nls; >+ exports org.eclipse.jdt.internal.corext.refactoring.nls.changes; >+ exports org.eclipse.jdt.internal.corext.refactoring.participants; >+ exports org.eclipse.jdt.internal.corext.refactoring.rename; >+ exports org.eclipse.jdt.internal.corext.refactoring.reorg; >+ exports org.eclipse.jdt.internal.corext.refactoring.scripting; >+ exports org.eclipse.jdt.internal.corext.refactoring.sef; >+ exports org.eclipse.jdt.internal.corext.refactoring.structure; >+ exports org.eclipse.jdt.internal.corext.refactoring.structure.constraints; >+ exports org.eclipse.jdt.internal.corext.refactoring.surround; >+ exports org.eclipse.jdt.internal.corext.refactoring.tagging; >+ exports org.eclipse.jdt.internal.corext.refactoring.typeconstraints; >+ exports org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types; >+ exports org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets; >+ exports org.eclipse.jdt.internal.corext.refactoring.typeconstraints2; >+ exports org.eclipse.jdt.internal.corext.refactoring.util; >+ exports org.eclipse.jdt.internal.corext.template.java; >+ exports org.eclipse.jdt.internal.corext.util; >+ exports org.eclipse.jdt.internal.jarinjarloader; >+ exports org.eclipse.jdt.internal.ui; >+ exports org.eclipse.jdt.internal.ui.actions; >+ exports org.eclipse.jdt.internal.ui.browsing; >+ exports org.eclipse.jdt.internal.ui.callhierarchy; >+ exports org.eclipse.jdt.internal.ui.commands; >+ exports org.eclipse.jdt.internal.ui.compare; >+ exports org.eclipse.jdt.internal.ui.dialogs; >+ exports org.eclipse.jdt.internal.ui.dnd; >+ exports org.eclipse.jdt.internal.ui.filters; >+ exports org.eclipse.jdt.internal.ui.fix; >+ exports org.eclipse.jdt.internal.ui.infoviews; >+ exports org.eclipse.jdt.internal.ui.jarimport; >+ exports org.eclipse.jdt.internal.ui.jarpackager; >+ exports org.eclipse.jdt.internal.ui.jarpackagerfat; >+ exports org.eclipse.jdt.internal.ui.javadocexport; >+ exports org.eclipse.jdt.internal.ui.javaeditor; >+ exports org.eclipse.jdt.internal.ui.javaeditor.breadcrumb; >+ exports org.eclipse.jdt.internal.ui.javaeditor.saveparticipant; >+ exports org.eclipse.jdt.internal.ui.javaeditor.selectionactions; >+ exports org.eclipse.jdt.internal.ui.model; >+ exports org.eclipse.jdt.internal.ui.navigator; >+ exports org.eclipse.jdt.internal.ui.packageview; >+ exports org.eclipse.jdt.internal.ui.preferences; >+ exports org.eclipse.jdt.internal.ui.preferences.cleanup; >+ exports org.eclipse.jdt.internal.ui.preferences.formatter; >+ exports org.eclipse.jdt.internal.ui.propertiesfileeditor; >+ exports org.eclipse.jdt.internal.ui.refactoring; >+ exports org.eclipse.jdt.internal.ui.refactoring.actions; >+ exports org.eclipse.jdt.internal.ui.refactoring.binary; >+ exports org.eclipse.jdt.internal.ui.refactoring.code; >+ exports org.eclipse.jdt.internal.ui.refactoring.contentassist; >+ exports org.eclipse.jdt.internal.ui.refactoring.nls; >+ exports org.eclipse.jdt.internal.ui.refactoring.nls.search; >+ exports org.eclipse.jdt.internal.ui.refactoring.reorg; >+ exports org.eclipse.jdt.internal.ui.refactoring.sef; >+ exports org.eclipse.jdt.internal.ui.search; >+ exports org.eclipse.jdt.internal.ui.text; >+ exports org.eclipse.jdt.internal.ui.text.correction; >+ exports org.eclipse.jdt.internal.ui.text.correction.proposals; >+ exports org.eclipse.jdt.internal.ui.text.folding; >+ exports org.eclipse.jdt.internal.ui.text.java; >+ exports org.eclipse.jdt.internal.ui.text.java.hover; >+ exports org.eclipse.jdt.internal.ui.text.javadoc; >+ exports org.eclipse.jdt.internal.ui.text.spelling; >+ exports org.eclipse.jdt.internal.ui.text.spelling.engine; >+ exports org.eclipse.jdt.internal.ui.text.template.contentassist; >+ exports org.eclipse.jdt.internal.ui.text.template.preferences; >+ exports org.eclipse.jdt.internal.ui.typehierarchy; >+ exports org.eclipse.jdt.internal.ui.util; >+ exports org.eclipse.jdt.internal.ui.viewsupport; >+ exports org.eclipse.jdt.internal.ui.wizards; >+ exports org.eclipse.jdt.internal.ui.wizards.buildpaths; >+ exports org.eclipse.jdt.internal.ui.wizards.buildpaths.newsourcepage; >+ exports org.eclipse.jdt.internal.ui.wizards.dialogfields; >+ exports org.eclipse.jdt.internal.ui.workingsets; >+ exports org.eclipse.jdt.ui; >+ exports org.eclipse.jdt.ui.actions; >+ exports org.eclipse.jdt.ui.cleanup; >+ exports org.eclipse.jdt.ui.dialogs; >+ exports org.eclipse.jdt.ui.jarpackager; >+ exports org.eclipse.jdt.ui.refactoring; >+ exports org.eclipse.jdt.ui.search; >+ exports org.eclipse.jdt.ui.text; >+ exports org.eclipse.jdt.ui.text.folding; >+ exports org.eclipse.jdt.ui.text.java; >+ exports org.eclipse.jdt.ui.text.java.correction; >+ exports org.eclipse.jdt.ui.text.java.hover; >+ exports org.eclipse.jdt.ui.wizards; >+ >+ requires java.base; >+ requires java.xml; >+} >diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ClassFile.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ClassFile.java >index da799e3..f955ce6 100644 >--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ClassFile.java >+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ClassFile.java >@@ -2592,6 +2592,10 @@ > int requiresCountOffset = localContentsOffset; > localContentsOffset += 2; > boolean javabaseSeen = false; >+ int requiredBytes = ((module.requiresCount + 1) * 4) + 2; // The +1 is for the implicit java.base, just in case. >+ if (localContentsOffset + requiredBytes > this.contents.length) { >+ resizeContents(requiredBytes); >+ } > for(int i = 0; i < module.requiresCount; i++) { > ModuleReference ref = module.requires[i]; > if (CharOperation.equals(ref.moduleName, TypeConstants.JAVA_BASE)) { >@@ -2626,6 +2630,10 @@ > * u2 exports_to_index[exports_to_count]; > * } exports[exports_count]; > */ >+ requiredBytes = (module.exportsCount * 6) + 2; >+ if (localContentsOffset + requiredBytes > this.contents.length) { >+ resizeContents(requiredBytes); >+ } > this.contents[localContentsOffset++] = (byte) (module.exportsCount >> 8); > this.contents[localContentsOffset++] = (byte) module.exportsCount; > for (int i = 0; i < module.exportsCount; i++) { >@@ -2654,6 +2662,10 @@ > * u2 uses_count; > * u2 uses_index[uses_count]; > */ >+ requiredBytes = (module.usesCount * 2) + 2; >+ if (localContentsOffset + requiredBytes > this.contents.length) { >+ resizeContents(requiredBytes); >+ } > this.contents[localContentsOffset++] = (byte) (module.usesCount >> 8); > this.contents[localContentsOffset++] = (byte) module.usesCount; > for(int i = 0; i < module.usesCount; i++) { >@@ -2671,6 +2683,10 @@ > * u2 with_index; > * } provides[provides_count]; > */ >+ requiredBytes = (module.servicesCount * 4) + 2; >+ if (localContentsOffset + requiredBytes > this.contents.length) { >+ resizeContents(requiredBytes); >+ } > this.contents[localContentsOffset++] = (byte) (module.servicesCount >> 8); > this.contents[localContentsOffset++] = (byte) module.servicesCount; > for(int i = 0; i < module.servicesCount; i++) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 489907
:
260403
| 260404