Skip to content

Commit 628b223

Browse files
committed
PR feedback
1 parent 01c7427 commit 628b223

File tree

8 files changed

+44
-39
lines changed

8 files changed

+44
-39
lines changed

Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaBindingsPrinting.swift

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ import JavaTypes
1616

1717
// MARK: Defaults
1818

19-
private let globalArenaName = "GLOBAL_ARENA"
20-
2119
extension JNISwift2JavaGenerator {
2220
/// Default set Java imports for every generated file
2321
static let defaultJavaImports: Array<String> = [
@@ -74,11 +72,6 @@ extension JNISwift2JavaGenerator {
7472
printImports(&printer)
7573

7674
printModuleClass(&printer) { printer in
77-
if config.effectiveMemoryManagementMode.requiresGlobalArena {
78-
printer.print("static final SwiftArena \(globalArenaName) = SwiftArena.ofAuto();")
79-
printer.println()
80-
}
81-
8275
printer.print(
8376
"""
8477
static final String LIB_NAME = "\(swiftModuleName)";
@@ -277,7 +270,8 @@ extension JNISwift2JavaGenerator {
277270
printer.printBraceBlock(
278271
"\(annotationsStr)\(modifiers.joined(separator: " ")) \(resultType) \(translatedDecl.name)(\(parametersStr))\(throwsClause)"
279272
) { printer in
280-
let arguments = translatedDecl.translatedFunctionSignature.parameters.map(\.parameter.name) + ["\(swiftModuleName).\(globalArenaName)"]
273+
let globalArenaName = "SwiftMemoryManagement.GLOBAL_SWIFT_JAVA_ARENA"
274+
let arguments = translatedDecl.translatedFunctionSignature.parameters.map(\.parameter.name) + [globalArenaName]
281275
let call = "\(translatedDecl.name)(\(arguments.joined(separator: ", ")))"
282276
if translatedDecl.translatedFunctionSignature.resultType.javaType.isVoid {
283277
printer.print("\(call);")
@@ -288,10 +282,6 @@ extension JNISwift2JavaGenerator {
288282
printer.println()
289283
}
290284

291-
// Make any function with explicit arena private if we force automatic.
292-
if config.effectiveMemoryManagementMode == .forceAutomatic && translatedSignature.requiresSwiftArena {
293-
modifiers[0] = "private"
294-
}
295285
if translatedSignature.requiresSwiftArena {
296286
parameters.append("SwiftArena swiftArena$")
297287
}

Sources/JavaKitConfigurationShared/GenerationMode.swift

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,24 +81,20 @@ extension JExtractMinimumAccessLevelMode {
8181
/// Configures how memory should be managed by the user
8282
public enum JExtractMemoryManagementMode: String, Codable {
8383
/// Force users to provide an explicit `SwiftArena` to all calls that require them.
84-
case forceExplicit
84+
case explicit
8585

8686
/// Provide both explicit `SwiftArena` support
8787
/// and a default global automatic `SwiftArena` that will deallocate memory when the GC decides to.
88-
case allowAutomatic
89-
90-
/// Force all memory management to a default global automatic `SwiftArena`
91-
/// that will deallocate memory when the GC decides to.
92-
case forceAutomatic
88+
case allowGlobalAutomatic
9389

9490
public static var `default`: Self {
95-
.forceExplicit
91+
.explicit
9692
}
9793

9894
public var requiresGlobalArena: Bool {
9995
switch self {
100-
case .forceExplicit: false
101-
case .allowAutomatic, .forceAutomatic: true
96+
case .explicit: false
97+
case .allowGlobalAutomatic: true
10298
}
10399
}
104100
}

Sources/SwiftJavaTool/Commands/JExtractCommand.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ extension SwiftJava.JExtractCommand {
122122
() // OK
123123
}
124124
} else if self.mode == .ffm {
125-
guard self.memoryManagementMode == .forceExplicit else {
125+
guard self.memoryManagementMode == .explicit else {
126126
throw IllegalModeCombinationError("FFM mode does not support '\(self.memoryManagementMode)' memory management mode! \(Self.helpMessage)")
127127
}
128128
}

SwiftKitCore/src/main/java/org/swift/swiftkit/core/AutoSwiftMemorySession.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
package org.swift.swiftkit.core;
1616

1717

18-
import org.swift.swiftkit.core.ref.Cleaner;
18+
import org.swift.swiftkit.core.ref.SwiftCleaner;
1919

2020
import java.util.Objects;
2121
import java.util.concurrent.ThreadFactory;
@@ -38,10 +38,10 @@
3838
* <p> Whenever possible, prefer using an explicitly managed {@link SwiftArena}, such as {@link SwiftArena#ofConfined()}.
3939
*/
4040
final class AutoSwiftMemorySession implements SwiftArena {
41-
private final Cleaner cleaner;
41+
private final SwiftCleaner swiftCleaner;
4242

4343
public AutoSwiftMemorySession(ThreadFactory cleanerThreadFactory) {
44-
this.cleaner = Cleaner.create(cleanerThreadFactory);
44+
this.swiftCleaner = SwiftCleaner.create(cleanerThreadFactory);
4545
}
4646

4747
@Override
@@ -51,6 +51,6 @@ public void register(SwiftInstance instance) {
5151
// We make sure we don't capture `instance` in the
5252
// cleanup action, so we can ignore the warning below.
5353
var cleanupAction = instance.$createCleanup();
54-
cleaner.register(instance, cleanupAction);
54+
swiftCleaner.register(instance, cleanupAction);
5555
}
5656
}

SwiftKitCore/src/main/java/org/swift/swiftkit/core/SwiftArena.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* <p> A confined arena has an associated owner thread that confines some operations to
2424
* associated owner thread such as {@link ClosableSwiftArena#close()}.
2525
*/
26-
public interface SwiftArena {
26+
public interface SwiftArena {
2727
/**
2828
* Register a Swift object.
2929
* Its memory should be considered managed by this arena, and be destroyed when the arena is closed.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the Swift.org open source project
4+
//
5+
// Copyright (c) 2025 Apple Inc. and the Swift.org project authors
6+
// Licensed under Apache License v2.0
7+
//
8+
// See LICENSE.txt for license information
9+
// See CONTRIBUTORS.txt for the list of Swift.org project authors
10+
//
11+
// SPDX-License-Identifier: Apache-2.0
12+
//
13+
//===----------------------------------------------------------------------===//
14+
15+
package org.swift.swiftkit.core;
16+
17+
public class SwiftMemoryManagement {
18+
public static final SwiftArena GLOBAL_SWIFT_JAVA_ARENA = SwiftArena.ofAuto();
19+
}

SwiftKitCore/src/main/java/org/swift/swiftkit/core/ref/PhantomCleanable.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@
1818

1919
public class PhantomCleanable extends PhantomReference<Object> {
2020
private final Runnable cleanupAction;
21-
private final Cleaner cleaner;
21+
private final SwiftCleaner swiftCleaner;
2222

23-
public PhantomCleanable(Object referent, Cleaner cleaner, Runnable cleanupAction) {
24-
super(referent, cleaner.referenceQueue);
23+
public PhantomCleanable(Object referent, SwiftCleaner swiftCleaner, Runnable cleanupAction) {
24+
super(referent, swiftCleaner.referenceQueue);
2525
this.cleanupAction = cleanupAction;
26-
this.cleaner = cleaner;
27-
cleaner.list.add(this);
26+
this.swiftCleaner = swiftCleaner;
27+
swiftCleaner.list.add(this);
2828
}
2929

3030
public void cleanup() {
31-
if (cleaner.list.remove(this)) {
31+
if (swiftCleaner.list.remove(this)) {
3232
cleanupAction.run();
3333
}
3434
}

SwiftKitCore/src/main/java/org/swift/swiftkit/core/ref/Cleaner.java renamed to SwiftKitCore/src/main/java/org/swift/swiftkit/core/ref/SwiftCleaner.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,19 @@
2121
import java.util.Objects;
2222
import java.util.concurrent.ThreadFactory;
2323

24-
public class Cleaner implements Runnable {
24+
public class SwiftCleaner implements Runnable {
2525
final ReferenceQueue<Object> referenceQueue;
2626
final List<PhantomCleanable> list;
2727

28-
private Cleaner() {
28+
private SwiftCleaner() {
2929
this.referenceQueue = new ReferenceQueue<>();
3030
this.list = Collections.synchronizedList(new LinkedList<>());
3131
}
3232

33-
public static Cleaner create(ThreadFactory threadFactory) {
34-
Cleaner cleaner = new Cleaner();
35-
cleaner.start(threadFactory);
36-
return cleaner;
33+
public static SwiftCleaner create(ThreadFactory threadFactory) {
34+
SwiftCleaner swiftCleaner = new SwiftCleaner();
35+
swiftCleaner.start(threadFactory);
36+
return swiftCleaner;
3737
}
3838

3939
void start(ThreadFactory threadFactory) {

0 commit comments

Comments
 (0)