Skip to content

Commit 1de7279

Browse files
authored
remove withVaList (#416)
1 parent 8560a5b commit 1de7279

File tree

5 files changed

+24
-27
lines changed

5 files changed

+24
-27
lines changed

Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/MySwiftLibrary.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
#if os(Linux)
2121
import Glibc
22+
#elseif os(Android)
23+
import Android
2224
#else
2325
import Darwin.C
2426
#endif

Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+NativeTranslation.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -830,9 +830,12 @@ extension JNISwift2JavaGenerator {
830830
if swiftFunctionResultType.isVoid {
831831
printer.print("environment.interface.CallBooleanMethodA(environment, globalFuture, _JNIMethodIDCache.CompletableFuture.complete, [jvalue(l: nil)])")
832832
} else {
833-
printer.printBraceBlock("withVaList([SwiftJavaRuntimeSupport._JNIBoxedConversions.box(\(inner), in: environment)])") { printer in
834-
printer.print("environment.interface.CallBooleanMethodV(environment, globalFuture, _JNIMethodIDCache.CompletableFuture.complete, $0)")
835-
}
833+
printer.print(
834+
"""
835+
let boxedResult$ = SwiftJavaRuntimeSupport._JNIBoxedConversions.box(\(inner), in: environment)
836+
environment.interface.CallBooleanMethodA(environment, globalFuture, _JNIMethodIDCache.CompletableFuture.complete, [jvalue(l: boxedResult$)])
837+
"""
838+
)
836839
}
837840
}
838841

Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+SwiftThunkPrinting.swift

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -251,16 +251,14 @@ extension JNISwift2JavaGenerator {
251251
"""
252252
)
253253
let upcallArguments = zip(enumCase.parameterConversions, caseNames).map { conversion, caseName in
254-
// '0' is treated the same as a null pointer.
255-
let nullConversion = !conversion.native.javaType.isPrimitive ? " ?? 0" : ""
254+
let nullConversion = !conversion.native.javaType.isPrimitive ? " ?? nil" : ""
256255
let result = conversion.native.conversion.render(&printer, caseName)
257-
return "\(result)\(nullConversion)"
256+
return "jvalue(\(conversion.native.javaType.jniFieldName): \(result)\(nullConversion))"
258257
}
259258
printer.print(
260259
"""
261-
return withVaList([\(upcallArguments.joined(separator: ", "))]) {
262-
return environment.interface.NewObjectV(environment, class$, constructorID$, $0)
263-
}
260+
let newObjectArgs$: [jvalue] = [\(upcallArguments.joined(separator: ", "))]
261+
return environment.interface.NewObjectA(environment, class$, constructorID$, newObjectArgs$)
264262
"""
265263
)
266264
}

Tests/JExtractSwiftTests/JNI/JNIAsyncTests.swift

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,8 @@ struct JNIAsyncTests {
224224
}
225225
let swiftResult$ = await SwiftModule.async(i: Int64(fromJNI: i, in: environment))
226226
environment = try JavaVirtualMachine.shared().environment()
227-
withVaList([SwiftJavaRuntimeSupport._JNIBoxedConversions.box(swiftResult$.getJNIValue(in: environment), in: environment)]) {
228-
environment.interface.CallBooleanMethodV(environment, globalFuture, _JNIMethodIDCache.CompletableFuture.complete, $0)
229-
}
227+
let boxedResult$ = SwiftJavaRuntimeSupport._JNIBoxedConversions.box(swiftResult$.getJNIValue(in: environment), in: environment)
228+
environment.interface.CallBooleanMethodA(environment, globalFuture, _JNIMethodIDCache.CompletableFuture.complete, [jvalue(l: boxedResult$)])
230229
}
231230
}
232231
else {
@@ -238,9 +237,8 @@ struct JNIAsyncTests {
238237
}
239238
let swiftResult$ = await SwiftModule.async(i: Int64(fromJNI: i, in: environment))
240239
environment = try JavaVirtualMachine.shared().environment()
241-
withVaList([SwiftJavaRuntimeSupport._JNIBoxedConversions.box(swiftResult$.getJNIValue(in: environment), in: environment)]) {
242-
environment.interface.CallBooleanMethodV(environment, globalFuture, _JNIMethodIDCache.CompletableFuture.complete, $0)
243-
}
240+
let boxedResult$ = SwiftJavaRuntimeSupport._JNIBoxedConversions.box(swiftResult$.getJNIValue(in: environment), in: environment)
241+
environment.interface.CallBooleanMethodA(environment, globalFuture, _JNIMethodIDCache.CompletableFuture.complete, [jvalue(l: boxedResult$)])
244242
}
245243
}
246244
return
@@ -317,9 +315,8 @@ struct JNIAsyncTests {
317315
let result$ = UnsafeMutablePointer<MyClass>.allocate(capacity: 1)
318316
result$.initialize(to: swiftResult$)
319317
let resultBits$ = Int64(Int(bitPattern: result$))
320-
withVaList([SwiftJavaRuntimeSupport._JNIBoxedConversions.box(resultBits$.getJNIValue(in: environment), in: environment)]) {
321-
environment.interface.CallBooleanMethodV(environment, globalFuture, _JNIMethodIDCache.CompletableFuture.complete, $0)
322-
}
318+
let boxedResult$ = SwiftJavaRuntimeSupport._JNIBoxedConversions.box(resultBits$.getJNIValue(in: environment), in: environment)
319+
environment.interface.CallBooleanMethodA(environment, globalFuture, _JNIMethodIDCache.CompletableFuture.complete, [jvalue(l: boxedResult$)])
323320
}
324321
}
325322
else {
@@ -334,9 +331,8 @@ struct JNIAsyncTests {
334331
let result$ = UnsafeMutablePointer<MyClass>.allocate(capacity: 1)
335332
result$.initialize(to: swiftResult$)
336333
let resultBits$ = Int64(Int(bitPattern: result$))
337-
withVaList([SwiftJavaRuntimeSupport._JNIBoxedConversions.box(resultBits$.getJNIValue(in: environment), in: environment)]) {
338-
environment.interface.CallBooleanMethodV(environment, globalFuture, _JNIMethodIDCache.CompletableFuture.complete, $0)
339-
}
334+
let boxedResult$ = SwiftJavaRuntimeSupport._JNIBoxedConversions.box(resultBits$.getJNIValue(in: environment), in: environment)
335+
environment.interface.CallBooleanMethodA(environment, globalFuture, _JNIMethodIDCache.CompletableFuture.complete, [jvalue(l: boxedResult$)])
340336
}
341337
}
342338
return

Tests/JExtractSwiftTests/JNI/JNIEnumTests.swift

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -302,9 +302,8 @@ struct JNIEnumTests {
302302
let class$ = cache$.javaClass
303303
let method$ = _JNIMethodIDCache.Method(name: "<init>", signature: "(Ljava/lang/String;)V")
304304
let constructorID$ = cache$[method$]
305-
return withVaList([_0.getJNIValue(in: environment) ?? 0]) {
306-
return environment.interface.NewObjectV(environment, class$, constructorID$, $0)
307-
}
305+
let newObjectArgs$: [jvalue] = [jvalue(l: _0.getJNIValue(in: environment) ?? nil)]
306+
return environment.interface.NewObjectA(environment, class$, constructorID$, newObjectArgs$)
308307
}
309308
""",
310309
"""
@@ -318,9 +317,8 @@ struct JNIEnumTests {
318317
let class$ = cache$.javaClass
319318
let method$ = _JNIMethodIDCache.Method(name: "<init>", signature: "(JI)V")
320319
let constructorID$ = cache$[method$]
321-
return withVaList([x.getJNIValue(in: environment), y.getJNIValue(in: environment)]) {
322-
return environment.interface.NewObjectV(environment, class$, constructorID$, $0)
323-
}
320+
let newObjectArgs$: [jvalue] = [jvalue(j: x.getJNIValue(in: environment)), jvalue(i: y.getJNIValue(in: environment))]
321+
return environment.interface.NewObjectA(environment, class$, constructorID$, newObjectArgs$)
324322
}
325323
"""
326324
])

0 commit comments

Comments
 (0)