Skip to content

Commit a189bea

Browse files
Merge pull request #3189 from eclipse/cd-jdt-rem
remove inlineJsrBytecode following upstream removal in jdt
2 parents 98d5516 + 03f3d51 commit a189bea

File tree

3 files changed

+52
-3
lines changed

3 files changed

+52
-3
lines changed

org.eclipse.xtext.java/META-INF/MANIFEST.MF

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ Require-Bundle: org.eclipse.xtext;bundle-version="2.37.0",
1010
org.eclipse.xtend.lib;bundle-version="2.37.0",
1111
org.eclipse.jdt.core;bundle-version="3.29.0",
1212
org.eclipse.emf.common;bundle-version="2.24.0",
13-
org.eclipse.emf.ecore;bundle-version="2.26.0"
13+
org.eclipse.emf.ecore;bundle-version="2.26.0",
14+
org.eclipse.core.runtime
1415
Export-Package: org.eclipse.xtext.java;version="2.37.0",
1516
org.eclipse.xtext.java.resource;version="2.37.0"
1617
Import-Package: org.apache.log4j;version="1.2.24"

org.eclipse.xtext.java/src/org/eclipse/xtext/java/resource/JavaDerivedStateComputer.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
*/
99
package org.eclipse.xtext.java.resource;
1010

11+
import java.lang.invoke.MethodHandle;
12+
import java.lang.invoke.MethodHandles;
1113
import java.util.ArrayList;
1214
import java.util.Arrays;
1315
import java.util.HashMap;
@@ -21,6 +23,7 @@
2123
import org.eclipse.emf.ecore.EObject;
2224
import org.eclipse.emf.ecore.resource.Resource;
2325
import org.eclipse.emf.ecore.resource.ResourceSet;
26+
import org.eclipse.jdt.core.JavaCore;
2427
import org.eclipse.jdt.core.compiler.CharOperation;
2528
import org.eclipse.jdt.internal.compiler.ClassFile;
2629
import org.eclipse.jdt.internal.compiler.CompilationResult;
@@ -53,6 +56,7 @@
5356
import org.eclipse.xtext.util.JavaVersion;
5457
import org.eclipse.xtext.xbase.lib.Exceptions;
5558
import org.eclipse.xtext.xbase.lib.Procedures.Procedure2;
59+
import org.osgi.framework.Version;
5660

5761
import com.google.inject.Inject;
5862

@@ -281,15 +285,34 @@ protected CompilerOptions getCompilerOptions(JavaConfig javaConfig) {
281285
long targetLevel = toJdtVersion(targetVersion);
282286
CompilerOptions compilerOptions = new CompilerOptions();
283287
compilerOptions.targetJDK = targetLevel;
284-
compilerOptions.inlineJsrBytecode = true;
285288
compilerOptions.sourceLevel = sourceLevel;
286289
compilerOptions.produceMethodParameters = true;
287290
compilerOptions.produceReferenceInfo = true;
288291
compilerOptions.originalSourceLevel = targetLevel;
289292
compilerOptions.complianceLevel = sourceLevel;
290293
compilerOptions.originalComplianceLevel = targetLevel;
294+
if (INLINE_JSR_BYTECODE != null) {
295+
try {
296+
INLINE_JSR_BYTECODE.invoke(compilerOptions, true);
297+
} catch (Throwable e) {
298+
// ignore
299+
}
300+
}
291301
return compilerOptions;
292302
}
303+
304+
private final static MethodHandle INLINE_JSR_BYTECODE = findInlineJsrBytecode();
305+
private static MethodHandle findInlineJsrBytecode() {
306+
try {
307+
if (JavaCore.getPlugin().getBundle().getVersion().compareTo(new Version(3, 39, 100)) >= 0) {
308+
return null;
309+
} else {
310+
return MethodHandles.lookup().findSetter(CompilerOptions.class, "inlineJsrBytecode", boolean.class);
311+
}
312+
} catch (Exception e) {
313+
return null;
314+
}
315+
}
293316

294317
protected long toJdtVersion(JavaVersion version) {
295318
return version.toJdtClassFileConstant();

org.eclipse.xtext.xbase.testing/src/org/eclipse/xtext/xbase/testing/InMemoryJavaCompiler.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,22 @@
1111
import java.io.ByteArrayInputStream;
1212
import java.io.IOException;
1313
import java.io.InputStream;
14+
import java.lang.invoke.MethodHandle;
15+
import java.lang.invoke.MethodHandles;
1416
import java.net.MalformedURLException;
1517
import java.net.URL;
1618
import java.net.URLConnection;
1719
import java.net.URLStreamHandler;
1820
import java.util.Arrays;
21+
import java.util.Collections;
1922
import java.util.HashMap;
2023
import java.util.LinkedHashSet;
2124
import java.util.List;
2225
import java.util.Map;
2326
import java.util.Set;
2427

2528
import org.apache.log4j.Logger;
29+
import org.eclipse.jdt.core.JavaCore;
2630
import org.eclipse.jdt.core.compiler.CategorizedProblem;
2731
import org.eclipse.jdt.core.compiler.CharOperation;
2832
import org.eclipse.jdt.internal.compiler.ClassFile;
@@ -37,8 +41,10 @@
3741
import org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
3842
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
3943
import org.eclipse.jdt.internal.compiler.problem.DefaultProblemFactory;
44+
import org.eclipse.jdt.internal.core.JavaModelManager.PerProjectInfo;
4045
import org.eclipse.xtext.util.JavaVersion;
4146
import org.eclipse.xtext.xbase.lib.Exceptions;
47+
import org.osgi.framework.Version;
4248

4349
import com.google.common.collect.Lists;
4450

@@ -204,9 +210,28 @@ public InMemoryJavaCompiler(ClassLoader parent, JavaVersion javaVersion) {
204210
this.parentClassLoader = parent;
205211
this.compilerOptions = new CompilerOptions();
206212
this.setJavaVersion(javaVersion);
207-
this.compilerOptions.inlineJsrBytecode = true;
213+
if (INLINE_JSR_BYTECODE != null) {
214+
try {
215+
INLINE_JSR_BYTECODE.invoke(this.compilerOptions, true);
216+
} catch (Throwable e) {
217+
// ignore
218+
}
219+
}
208220
this.compilerOptions.preserveAllLocalVariables = true;
209221
}
222+
223+
private final static MethodHandle INLINE_JSR_BYTECODE = findInlineJsrBytecode();
224+
private static MethodHandle findInlineJsrBytecode() {
225+
try {
226+
if (JavaCore.getPlugin().getBundle().getVersion().compareTo(new Version(3, 39, 100)) >= 0) {
227+
return null;
228+
} else {
229+
return MethodHandles.lookup().findSetter(CompilerOptions.class, "inlineJsrBytecode", boolean.class);
230+
}
231+
} catch (Exception e) {
232+
return null;
233+
}
234+
}
210235

211236
public InMemoryJavaCompiler(ClassLoader parent, CompilerOptions compilerOptions) {
212237
this.nameEnv = new ClassLoaderBasedNameEnvironment(parent);

0 commit comments

Comments
 (0)