Skip to content

Commit 5280c15

Browse files
committed
updating libclang binding for jextract changes and llvm 13.0.0
Reviewed-by: mcimadamore
1 parent 8007935 commit 5280c15

22 files changed

+240
-240
lines changed

src/main/java/org/openjdk/jextract/clang/libclang/CXCursorVisitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public interface CXCursorVisitor {
3636

3737
int apply(java.lang.foreign.MemorySegment cursor, java.lang.foreign.MemorySegment parent, java.lang.foreign.MemoryAddress client_data);
3838
static MemorySegment allocate(CXCursorVisitor fi, MemorySession session) {
39-
return RuntimeHelper.upcallStub(CXCursorVisitor.class, fi, constants$13.CXCursorVisitor$FUNC, "(Ljava/lang/foreign/MemorySegment;Ljava/lang/foreign/MemorySegment;Ljava/lang/foreign/MemoryAddress;)I", session);
39+
return RuntimeHelper.upcallStub(CXCursorVisitor.class, fi, constants$13.CXCursorVisitor$FUNC, session);
4040
}
4141
static CXCursorVisitor ofAddress(MemoryAddress addr, MemorySession session) {
4242
MemorySegment symbol = MemorySegment.ofAddress(addr, 0, session);

src/main/java/org/openjdk/jextract/clang/libclang/Index_h.java

Lines changed: 113 additions & 113 deletions
Large diffs are not rendered by default.

src/main/java/org/openjdk/jextract/clang/libclang/RuntimeHelper.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ private RuntimeHelper() {}
6666
String libName = System.getProperty("os.name").startsWith("Windows")? "libclang" : "clang";
6767
System.loadLibrary(libName);
6868

69-
SYMBOL_LOOKUP = name -> SymbolLookup.loaderLookup().lookup(name).or(() -> LINKER.defaultLookup().lookup(name));
69+
SymbolLookup loaderLookup = SymbolLookup.loaderLookup();
70+
SYMBOL_LOOKUP = name -> loaderLookup.lookup(name).or(() -> LINKER.defaultLookup().lookup(name));
7071
}
7172

7273
static <T> T requireNonNull(T obj, String symbolName) {
@@ -82,26 +83,25 @@ static final MemorySegment lookupGlobalVariable(String name, MemoryLayout layout
8283
return SYMBOL_LOOKUP.lookup(name).map(symbol -> MemorySegment.ofAddress(symbol.address(), layout.byteSize(), MemorySession.openShared())).orElse(null);
8384
}
8485

85-
static final MethodHandle downcallHandle(String name, FunctionDescriptor fdesc, boolean variadic) {
86-
return SYMBOL_LOOKUP.lookup(name).map(
87-
addr -> {
88-
return variadic ?
89-
VarargsInvoker.make(addr, fdesc) :
90-
LINKER.downcallHandle(addr, fdesc);
91-
}).orElse(null);
86+
static final MethodHandle downcallHandle(String name, FunctionDescriptor fdesc) {
87+
return SYMBOL_LOOKUP.lookup(name).
88+
map(addr -> LINKER.downcallHandle(addr, fdesc)).
89+
orElse(null);
9290
}
9391

94-
static final MethodHandle downcallHandle(FunctionDescriptor fdesc, boolean variadic) {
95-
if (variadic) {
96-
throw new AssertionError("Cannot get here!");
97-
}
92+
static final MethodHandle downcallHandle(FunctionDescriptor fdesc) {
9893
return LINKER.downcallHandle(fdesc);
9994
}
10095

101-
static final <Z> MemorySegment upcallStub(Class<Z> fi, Z z, FunctionDescriptor fdesc, String mtypeDesc, MemorySession session) {
96+
static final MethodHandle downcallHandleVariadic(String name, FunctionDescriptor fdesc) {
97+
return SYMBOL_LOOKUP.lookup(name).
98+
map(addr -> VarargsInvoker.make(addr, fdesc)).
99+
orElse(null);
100+
}
101+
102+
static final <Z> MemorySegment upcallStub(Class<Z> fi, Z z, FunctionDescriptor fdesc, MemorySession session) {
102103
try {
103-
MethodHandle handle = MH_LOOKUP.findVirtual(fi, "apply",
104-
MethodType.fromMethodDescriptorString(mtypeDesc, LOADER));
104+
MethodHandle handle = MH_LOOKUP.findVirtual(fi, "apply", Linker.upcallType(fdesc));
105105
handle = handle.bindTo(z);
106106
return LINKER.upcallStub(handle, fdesc, session);
107107
} catch (Throwable ex) {

src/main/java/org/openjdk/jextract/clang/libclang/constants$0.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class constants$0 {
4343
);
4444
static final MethodHandle clang_getCString$MH = RuntimeHelper.downcallHandle(
4545
"clang_getCString",
46-
constants$0.clang_getCString$FUNC, false
46+
constants$0.clang_getCString$FUNC
4747
);
4848
static final FunctionDescriptor clang_disposeString$FUNC = FunctionDescriptor.ofVoid(
4949
MemoryLayout.structLayout(
@@ -54,22 +54,22 @@ class constants$0 {
5454
);
5555
static final MethodHandle clang_disposeString$MH = RuntimeHelper.downcallHandle(
5656
"clang_disposeString",
57-
constants$0.clang_disposeString$FUNC, false
57+
constants$0.clang_disposeString$FUNC
5858
);
5959
static final FunctionDescriptor clang_createIndex$FUNC = FunctionDescriptor.of(Constants$root.C_POINTER$LAYOUT,
6060
Constants$root.C_INT$LAYOUT,
6161
Constants$root.C_INT$LAYOUT
6262
);
6363
static final MethodHandle clang_createIndex$MH = RuntimeHelper.downcallHandle(
6464
"clang_createIndex",
65-
constants$0.clang_createIndex$FUNC, false
65+
constants$0.clang_createIndex$FUNC
6666
);
6767
static final FunctionDescriptor clang_disposeIndex$FUNC = FunctionDescriptor.ofVoid(
6868
Constants$root.C_POINTER$LAYOUT
6969
);
7070
static final MethodHandle clang_disposeIndex$MH = RuntimeHelper.downcallHandle(
7171
"clang_disposeIndex",
72-
constants$0.clang_disposeIndex$FUNC, false
72+
constants$0.clang_disposeIndex$FUNC
7373
);
7474
static final FunctionDescriptor clang_getFileName$FUNC = FunctionDescriptor.of(MemoryLayout.structLayout(
7575
Constants$root.C_POINTER$LAYOUT.withName("data"),
@@ -80,7 +80,7 @@ class constants$0 {
8080
);
8181
static final MethodHandle clang_getFileName$MH = RuntimeHelper.downcallHandle(
8282
"clang_getFileName",
83-
constants$0.clang_getFileName$FUNC, false
83+
constants$0.clang_getFileName$FUNC
8484
);
8585
static final FunctionDescriptor clang_getNullLocation$FUNC = FunctionDescriptor.of(MemoryLayout.structLayout(
8686
MemoryLayout.sequenceLayout(2, Constants$root.C_POINTER$LAYOUT).withName("ptr_data"),
@@ -89,7 +89,7 @@ class constants$0 {
8989
));
9090
static final MethodHandle clang_getNullLocation$MH = RuntimeHelper.downcallHandle(
9191
"clang_getNullLocation",
92-
constants$0.clang_getNullLocation$FUNC, false
92+
constants$0.clang_getNullLocation$FUNC
9393
);
9494
}
9595

src/main/java/org/openjdk/jextract/clang/libclang/constants$1.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class constants$1 {
4848
);
4949
static final MethodHandle clang_equalLocations$MH = RuntimeHelper.downcallHandle(
5050
"clang_equalLocations",
51-
constants$1.clang_equalLocations$FUNC, false
51+
constants$1.clang_equalLocations$FUNC
5252
);
5353
static final FunctionDescriptor clang_getLocation$FUNC = FunctionDescriptor.of(MemoryLayout.structLayout(
5454
MemoryLayout.sequenceLayout(2, Constants$root.C_POINTER$LAYOUT).withName("ptr_data"),
@@ -62,7 +62,7 @@ class constants$1 {
6262
);
6363
static final MethodHandle clang_getLocation$MH = RuntimeHelper.downcallHandle(
6464
"clang_getLocation",
65-
constants$1.clang_getLocation$FUNC, false
65+
constants$1.clang_getLocation$FUNC
6666
);
6767
static final FunctionDescriptor clang_getLocationForOffset$FUNC = FunctionDescriptor.of(MemoryLayout.structLayout(
6868
MemoryLayout.sequenceLayout(2, Constants$root.C_POINTER$LAYOUT).withName("ptr_data"),
@@ -75,7 +75,7 @@ class constants$1 {
7575
);
7676
static final MethodHandle clang_getLocationForOffset$MH = RuntimeHelper.downcallHandle(
7777
"clang_getLocationForOffset",
78-
constants$1.clang_getLocationForOffset$FUNC, false
78+
constants$1.clang_getLocationForOffset$FUNC
7979
);
8080
static final FunctionDescriptor clang_Location_isInSystemHeader$FUNC = FunctionDescriptor.of(Constants$root.C_INT$LAYOUT,
8181
MemoryLayout.structLayout(
@@ -86,7 +86,7 @@ class constants$1 {
8686
);
8787
static final MethodHandle clang_Location_isInSystemHeader$MH = RuntimeHelper.downcallHandle(
8888
"clang_Location_isInSystemHeader",
89-
constants$1.clang_Location_isInSystemHeader$FUNC, false
89+
constants$1.clang_Location_isInSystemHeader$FUNC
9090
);
9191
static final FunctionDescriptor clang_Location_isFromMainFile$FUNC = FunctionDescriptor.of(Constants$root.C_INT$LAYOUT,
9292
MemoryLayout.structLayout(
@@ -97,7 +97,7 @@ class constants$1 {
9797
);
9898
static final MethodHandle clang_Location_isFromMainFile$MH = RuntimeHelper.downcallHandle(
9999
"clang_Location_isFromMainFile",
100-
constants$1.clang_Location_isFromMainFile$FUNC, false
100+
constants$1.clang_Location_isFromMainFile$FUNC
101101
);
102102
static final FunctionDescriptor clang_Range_isNull$FUNC = FunctionDescriptor.of(Constants$root.C_INT$LAYOUT,
103103
MemoryLayout.structLayout(
@@ -108,7 +108,7 @@ class constants$1 {
108108
);
109109
static final MethodHandle clang_Range_isNull$MH = RuntimeHelper.downcallHandle(
110110
"clang_Range_isNull",
111-
constants$1.clang_Range_isNull$FUNC, false
111+
constants$1.clang_Range_isNull$FUNC
112112
);
113113
}
114114

src/main/java/org/openjdk/jextract/clang/libclang/constants$10.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class constants$10 {
4747
);
4848
static final MethodHandle clang_getPointeeType$MH = RuntimeHelper.downcallHandle(
4949
"clang_getPointeeType",
50-
constants$10.clang_getPointeeType$FUNC, false
50+
constants$10.clang_getPointeeType$FUNC
5151
);
5252
static final FunctionDescriptor clang_getTypeDeclaration$FUNC = FunctionDescriptor.of(MemoryLayout.structLayout(
5353
Constants$root.C_INT$LAYOUT.withName("kind"),
@@ -62,7 +62,7 @@ class constants$10 {
6262
);
6363
static final MethodHandle clang_getTypeDeclaration$MH = RuntimeHelper.downcallHandle(
6464
"clang_getTypeDeclaration",
65-
constants$10.clang_getTypeDeclaration$FUNC, false
65+
constants$10.clang_getTypeDeclaration$FUNC
6666
);
6767
static final FunctionDescriptor clang_getTypeKindSpelling$FUNC = FunctionDescriptor.of(MemoryLayout.structLayout(
6868
Constants$root.C_POINTER$LAYOUT.withName("data"),
@@ -73,7 +73,7 @@ class constants$10 {
7373
);
7474
static final MethodHandle clang_getTypeKindSpelling$MH = RuntimeHelper.downcallHandle(
7575
"clang_getTypeKindSpelling",
76-
constants$10.clang_getTypeKindSpelling$FUNC, false
76+
constants$10.clang_getTypeKindSpelling$FUNC
7777
);
7878
static final FunctionDescriptor clang_getFunctionTypeCallingConv$FUNC = FunctionDescriptor.of(Constants$root.C_INT$LAYOUT,
7979
MemoryLayout.structLayout(
@@ -84,7 +84,7 @@ class constants$10 {
8484
);
8585
static final MethodHandle clang_getFunctionTypeCallingConv$MH = RuntimeHelper.downcallHandle(
8686
"clang_getFunctionTypeCallingConv",
87-
constants$10.clang_getFunctionTypeCallingConv$FUNC, false
87+
constants$10.clang_getFunctionTypeCallingConv$FUNC
8888
);
8989
static final FunctionDescriptor clang_getResultType$FUNC = FunctionDescriptor.of(MemoryLayout.structLayout(
9090
Constants$root.C_INT$LAYOUT.withName("kind"),
@@ -99,7 +99,7 @@ class constants$10 {
9999
);
100100
static final MethodHandle clang_getResultType$MH = RuntimeHelper.downcallHandle(
101101
"clang_getResultType",
102-
constants$10.clang_getResultType$FUNC, false
102+
constants$10.clang_getResultType$FUNC
103103
);
104104
static final FunctionDescriptor clang_getNumArgTypes$FUNC = FunctionDescriptor.of(Constants$root.C_INT$LAYOUT,
105105
MemoryLayout.structLayout(
@@ -110,7 +110,7 @@ class constants$10 {
110110
);
111111
static final MethodHandle clang_getNumArgTypes$MH = RuntimeHelper.downcallHandle(
112112
"clang_getNumArgTypes",
113-
constants$10.clang_getNumArgTypes$FUNC, false
113+
constants$10.clang_getNumArgTypes$FUNC
114114
);
115115
}
116116

src/main/java/org/openjdk/jextract/clang/libclang/constants$11.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class constants$11 {
4848
);
4949
static final MethodHandle clang_getArgType$MH = RuntimeHelper.downcallHandle(
5050
"clang_getArgType",
51-
constants$11.clang_getArgType$FUNC, false
51+
constants$11.clang_getArgType$FUNC
5252
);
5353
static final FunctionDescriptor clang_isFunctionTypeVariadic$FUNC = FunctionDescriptor.of(Constants$root.C_INT$LAYOUT,
5454
MemoryLayout.structLayout(
@@ -59,7 +59,7 @@ class constants$11 {
5959
);
6060
static final MethodHandle clang_isFunctionTypeVariadic$MH = RuntimeHelper.downcallHandle(
6161
"clang_isFunctionTypeVariadic",
62-
constants$11.clang_isFunctionTypeVariadic$FUNC, false
62+
constants$11.clang_isFunctionTypeVariadic$FUNC
6363
);
6464
static final FunctionDescriptor clang_getCursorResultType$FUNC = FunctionDescriptor.of(MemoryLayout.structLayout(
6565
Constants$root.C_INT$LAYOUT.withName("kind"),
@@ -74,7 +74,7 @@ class constants$11 {
7474
);
7575
static final MethodHandle clang_getCursorResultType$MH = RuntimeHelper.downcallHandle(
7676
"clang_getCursorResultType",
77-
constants$11.clang_getCursorResultType$FUNC, false
77+
constants$11.clang_getCursorResultType$FUNC
7878
);
7979
static final FunctionDescriptor clang_getElementType$FUNC = FunctionDescriptor.of(MemoryLayout.structLayout(
8080
Constants$root.C_INT$LAYOUT.withName("kind"),
@@ -89,7 +89,7 @@ class constants$11 {
8989
);
9090
static final MethodHandle clang_getElementType$MH = RuntimeHelper.downcallHandle(
9191
"clang_getElementType",
92-
constants$11.clang_getElementType$FUNC, false
92+
constants$11.clang_getElementType$FUNC
9393
);
9494
static final FunctionDescriptor clang_getNumElements$FUNC = FunctionDescriptor.of(Constants$root.C_LONG_LONG$LAYOUT,
9595
MemoryLayout.structLayout(
@@ -100,7 +100,7 @@ class constants$11 {
100100
);
101101
static final MethodHandle clang_getNumElements$MH = RuntimeHelper.downcallHandle(
102102
"clang_getNumElements",
103-
constants$11.clang_getNumElements$FUNC, false
103+
constants$11.clang_getNumElements$FUNC
104104
);
105105
static final FunctionDescriptor clang_getArrayElementType$FUNC = FunctionDescriptor.of(MemoryLayout.structLayout(
106106
Constants$root.C_INT$LAYOUT.withName("kind"),
@@ -115,7 +115,7 @@ class constants$11 {
115115
);
116116
static final MethodHandle clang_getArrayElementType$MH = RuntimeHelper.downcallHandle(
117117
"clang_getArrayElementType",
118-
constants$11.clang_getArrayElementType$FUNC, false
118+
constants$11.clang_getArrayElementType$FUNC
119119
);
120120
}
121121

src/main/java/org/openjdk/jextract/clang/libclang/constants$12.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class constants$12 {
4343
);
4444
static final MethodHandle clang_getArraySize$MH = RuntimeHelper.downcallHandle(
4545
"clang_getArraySize",
46-
constants$12.clang_getArraySize$FUNC, false
46+
constants$12.clang_getArraySize$FUNC
4747
);
4848
static final FunctionDescriptor clang_Type_getSizeOf$FUNC = FunctionDescriptor.of(Constants$root.C_LONG_LONG$LAYOUT,
4949
MemoryLayout.structLayout(
@@ -54,7 +54,7 @@ class constants$12 {
5454
);
5555
static final MethodHandle clang_Type_getSizeOf$MH = RuntimeHelper.downcallHandle(
5656
"clang_Type_getSizeOf",
57-
constants$12.clang_Type_getSizeOf$FUNC, false
57+
constants$12.clang_Type_getSizeOf$FUNC
5858
);
5959
static final FunctionDescriptor clang_Type_getOffsetOf$FUNC = FunctionDescriptor.of(Constants$root.C_LONG_LONG$LAYOUT,
6060
MemoryLayout.structLayout(
@@ -66,7 +66,7 @@ class constants$12 {
6666
);
6767
static final MethodHandle clang_Type_getOffsetOf$MH = RuntimeHelper.downcallHandle(
6868
"clang_Type_getOffsetOf",
69-
constants$12.clang_Type_getOffsetOf$FUNC, false
69+
constants$12.clang_Type_getOffsetOf$FUNC
7070
);
7171
static final FunctionDescriptor clang_Cursor_isAnonymous$FUNC = FunctionDescriptor.of(Constants$root.C_INT$LAYOUT,
7272
MemoryLayout.structLayout(
@@ -77,7 +77,7 @@ class constants$12 {
7777
);
7878
static final MethodHandle clang_Cursor_isAnonymous$MH = RuntimeHelper.downcallHandle(
7979
"clang_Cursor_isAnonymous",
80-
constants$12.clang_Cursor_isAnonymous$FUNC, false
80+
constants$12.clang_Cursor_isAnonymous$FUNC
8181
);
8282
static final FunctionDescriptor clang_Cursor_isAnonymousRecordDecl$FUNC = FunctionDescriptor.of(Constants$root.C_INT$LAYOUT,
8383
MemoryLayout.structLayout(
@@ -88,7 +88,7 @@ class constants$12 {
8888
);
8989
static final MethodHandle clang_Cursor_isAnonymousRecordDecl$MH = RuntimeHelper.downcallHandle(
9090
"clang_Cursor_isAnonymousRecordDecl",
91-
constants$12.clang_Cursor_isAnonymousRecordDecl$FUNC, false
91+
constants$12.clang_Cursor_isAnonymousRecordDecl$FUNC
9292
);
9393
static final FunctionDescriptor clang_Cursor_isBitField$FUNC = FunctionDescriptor.of(Constants$root.C_INT$LAYOUT,
9494
MemoryLayout.structLayout(
@@ -99,7 +99,7 @@ class constants$12 {
9999
);
100100
static final MethodHandle clang_Cursor_isBitField$MH = RuntimeHelper.downcallHandle(
101101
"clang_Cursor_isBitField",
102-
constants$12.clang_Cursor_isBitField$FUNC, false
102+
constants$12.clang_Cursor_isBitField$FUNC
103103
);
104104
}
105105

src/main/java/org/openjdk/jextract/clang/libclang/constants$13.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class constants$13 {
4848
Constants$root.C_POINTER$LAYOUT
4949
);
5050
static final MethodHandle CXCursorVisitor$MH = RuntimeHelper.downcallHandle(
51-
constants$13.CXCursorVisitor$FUNC, false
51+
constants$13.CXCursorVisitor$FUNC
5252
);
5353
static final FunctionDescriptor clang_visitChildren$FUNC = FunctionDescriptor.of(Constants$root.C_INT$LAYOUT,
5454
MemoryLayout.structLayout(
@@ -61,7 +61,7 @@ class constants$13 {
6161
);
6262
static final MethodHandle clang_visitChildren$MH = RuntimeHelper.downcallHandle(
6363
"clang_visitChildren",
64-
constants$13.clang_visitChildren$FUNC, false
64+
constants$13.clang_visitChildren$FUNC
6565
);
6666
static final FunctionDescriptor clang_getCursorUSR$FUNC = FunctionDescriptor.of(MemoryLayout.structLayout(
6767
Constants$root.C_POINTER$LAYOUT.withName("data"),
@@ -76,7 +76,7 @@ class constants$13 {
7676
);
7777
static final MethodHandle clang_getCursorUSR$MH = RuntimeHelper.downcallHandle(
7878
"clang_getCursorUSR",
79-
constants$13.clang_getCursorUSR$FUNC, false
79+
constants$13.clang_getCursorUSR$FUNC
8080
);
8181
static final FunctionDescriptor clang_getCursorSpelling$FUNC = FunctionDescriptor.of(MemoryLayout.structLayout(
8282
Constants$root.C_POINTER$LAYOUT.withName("data"),
@@ -91,15 +91,15 @@ class constants$13 {
9191
);
9292
static final MethodHandle clang_getCursorSpelling$MH = RuntimeHelper.downcallHandle(
9393
"clang_getCursorSpelling",
94-
constants$13.clang_getCursorSpelling$FUNC, false
94+
constants$13.clang_getCursorSpelling$FUNC
9595
);
9696
static final FunctionDescriptor clang_PrintingPolicy_getProperty$FUNC = FunctionDescriptor.of(Constants$root.C_INT$LAYOUT,
9797
Constants$root.C_POINTER$LAYOUT,
9898
Constants$root.C_INT$LAYOUT
9999
);
100100
static final MethodHandle clang_PrintingPolicy_getProperty$MH = RuntimeHelper.downcallHandle(
101101
"clang_PrintingPolicy_getProperty",
102-
constants$13.clang_PrintingPolicy_getProperty$FUNC, false
102+
constants$13.clang_PrintingPolicy_getProperty$FUNC
103103
);
104104
}
105105

0 commit comments

Comments
 (0)