< 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 >