< prev index next >
src/jdk.jextract/share/classes/com/sun/tools/jextract/AsmCodeFactory.java
Print this page
@@ -89,13 +89,17 @@
logger.info(() -> "Instantiate AsmCodeFactory for " + header.path);
this.owner = header;
this.internal_name = Utils.toInternalName(owner.pkgName, owner.clsName);
this.global_cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
this.types = new HashMap<>();
- global_cw.visit(V1_8, ACC_PUBLIC | ACC_ABSTRACT | ACC_INTERFACE,
- internal_name,
- null, "java/lang/Object", null);
+ }
+
+ private String[] getSuperInterfaces() {
+ String[] interfaces = owner.getIncludedFiles().
+ map(hf -> Utils.toInternalName(hf.pkgName, hf.clsName)).
+ toArray(String[]::new);
+ return interfaces.length != 0 ? interfaces : null;
}
private void generateNativeHeader() {
generateMacros();
AnnotationVisitor av = global_cw.visitAnnotation(NATIVE_HEADER, true);
@@ -555,10 +559,13 @@
protected synchronized void produce() {
if (built) {
throw new IllegalStateException("Produce is called multiple times");
}
built = true;
+ global_cw.visit(V1_8, ACC_PUBLIC | ACC_ABSTRACT | ACC_INTERFACE,
+ internal_name,
+ null, "java/lang/Object", getSuperInterfaces());
generateNativeHeader();
try {
writeClassFile(global_cw, owner.clsName);
} catch (IOException ex) {
handleException(ex);
< prev index next >