< prev index next >

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

Print this page

        

*** 24,34 **** --- 24,39 ---- 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,155 **** return false; } } @Override ! protected synchronized void produce() { ! super.produce(); ! types.put(getSimpleClassName(), getClassBytes()); } // 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; } --- 141,158 ---- return false; } } @Override ! 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 private String getClassName() { return headerClassName + STATICS_CLASS_NAME_SUFFIX; }
*** 161,171 **** // 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(); if (desc.length() != 1) { throw new AssertionError("expected single char descriptor: " + desc); } FieldVisitor fv = null; switch (desc.charAt(0)) { --- 164,174 ---- // 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 = 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 >