< prev index next >
src/jdk.jextract/share/classes/com/sun/tools/jextract/AsmCodeFactory.java
Print this page
*** 89,101 ****
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 void generateNativeHeader() {
generateMacros();
AnnotationVisitor av = global_cw.visitAnnotation(NATIVE_HEADER, true);
--- 89,105 ----
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<>();
! }
!
! 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,564 ****
--- 559,571 ----
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 >