< prev index next >

src/jdk.jextract/share/classes/com/sun/tools/jextract/AsmCodeFactoryExt.java

Print this page

        

@@ -24,11 +24,16 @@
 
 import java.foreign.Libraries;
 import java.lang.invoke.MethodHandles;
 import java.lang.invoke.MethodHandles.Lookup;
 import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
+import com.sun.tools.jextract.tree.Tree;
 import jdk.internal.org.objectweb.asm.FieldVisitor;
 import jdk.internal.org.objectweb.asm.ClassWriter;
 import jdk.internal.org.objectweb.asm.MethodVisitor;
 import jdk.internal.org.objectweb.asm.Type;
 import com.sun.tools.jextract.tree.EnumTree;

@@ -136,20 +141,18 @@
             return false;
         }
     }
 
     @Override
-    protected synchronized void produce() {
-        super.produce();
-        types.put(getSimpleClassName(), getClassBytes());
+    public Map<String, byte[]> generateNativeHeader(List<Tree> decls) {
+        Map<String, byte[]> results = new HashMap<>();
+        results.putAll(super.generateNativeHeader(decls));
+        results.put(getClassName(), getClassBytes());
+        return Collections.unmodifiableMap(results);
     }
 
     // Internals only below this point
-    // not fully qualified
-    private String getSimpleClassName() {
-        return headerFile.clsName + STATICS_CLASS_NAME_SUFFIX;
-    }
 
     private String getClassName() {
         return headerClassName + STATICS_CLASS_NAME_SUFFIX;
     }
 

@@ -161,11 +164,11 @@
 
     // map each C enum constant as a static final field of the static forwarder class
     private void addEnumConstant(FieldTree fieldTree) {
         assert (fieldTree.isEnumConstant());
         String name = fieldTree.name();
-        String desc = dict.lookup(fieldTree.type()).getDescriptor();
+        String desc = headerFile.dictionary().lookup(fieldTree.type()).getDescriptor();
         if (desc.length() != 1) {
             throw new AssertionError("expected single char descriptor: " + desc);
         }
         FieldVisitor fv = null;
         switch (desc.charAt(0)) {
< prev index next >