Skip to content

Commit

Permalink
Use separate URLClassPath targets depending on the JDK version quarku…
Browse files Browse the repository at this point in the history
  • Loading branch information
galderz committed Nov 8, 2019
1 parent 5fea8c0 commit 5a7b2b9
Showing 1 changed file with 43 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,42 @@
import com.oracle.svm.core.annotate.Alias;
import com.oracle.svm.core.annotate.Substitute;
import com.oracle.svm.core.annotate.TargetClass;
import com.oracle.svm.core.jdk.JDK11OrLater;
import com.oracle.svm.core.jdk.JDK8OrEarlier;

@TargetClass(className = "sun.misc.URLClassPath$Loader")
@TargetClass(className = "sun.misc.URLClassPath$Loader", onlyWith = JDK8OrEarlier.class)
final class Target_sun_misc_URLClassPath$Loader {

@Alias
public Target_sun_misc_URLClassPath$Loader(URL url) {
}
}

@TargetClass(className = "sun.misc.URLClassPath$FileLoader")
@TargetClass(className = "jdk.internal.loader.URLClassPath$Loader", onlyWith = JDK11OrLater.class)
final class Target_jdk_internal_loader_URLClassPath$Loader {

@Alias
public Target_jdk_internal_loader_URLClassPath$Loader(URL url) {
}
}

@TargetClass(className = "sun.misc.URLClassPath$FileLoader", onlyWith = JDK8OrEarlier.class)
final class Target_sun_misc_URLClassPath$FileLoader {

@Alias
public Target_sun_misc_URLClassPath$FileLoader(URL url) throws IOException {
}
}

@TargetClass(className = "sun.misc.URLClassPath")
@TargetClass(className = "jdk.internal.loader.URLClassPath$FileLoader")
final class Target_jdk_internal_loader_URLClassPath$FileLoader {

@Alias
public Target_jdk_internal_loader_URLClassPath$FileLoader(URL url) throws IOException {
}
}

@TargetClass(className = "sun.misc.URLClassPath", onlyWith = JDK8OrEarlier.class)
final class Target_sun_misc_URLClassPath {

@Substitute
Expand All @@ -51,6 +69,28 @@ private int[] getLookupCache(String name) {
}
}

@TargetClass(className = "jdk.internal.loader.URLClassPath", onlyWith = JDK11OrLater.class)
final class Target_jdk_internal_loader_URLClassPath {

@Substitute
private Target_jdk_internal_loader_URLClassPath$Loader getLoader(final URL url) throws IOException {
String file = url.getFile();
if (file != null && file.endsWith("/")) {
if ("file".equals(url.getProtocol())) {
return (Target_jdk_internal_loader_URLClassPath$Loader) (Object) new Target_jdk_internal_loader_URLClassPath$FileLoader(
url);
} else {
return new Target_jdk_internal_loader_URLClassPath$Loader(url);
}
} else {
// that must be wrong, but JarLoader is deleted by SVM
return (Target_jdk_internal_loader_URLClassPath$Loader) (Object) new Target_jdk_internal_loader_URLClassPath$FileLoader(
url);
}
}

}

@TargetClass(className = "sun.nio.ch.DatagramChannelImpl", onlyWith = GraalVersion19_0.class)
final class Target_sun_nio_ch_DatagramChannelImpl {

Expand Down

0 comments on commit 5a7b2b9

Please sign in to comment.