Skip to content

Commit 1117faf

Browse files
committed
make confined arena threadsafe
1 parent 3fe6636 commit 1117faf

File tree

8 files changed

+13
-16
lines changed

8 files changed

+13
-16
lines changed

Samples/SwiftAndJavaJarSampleLib/Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ let package = Package(
6363
.target(
6464
name: "MySwiftLibrary",
6565
dependencies: [
66-
.product(name: "SwiftKitSwift", package: "swift-java"),
66+
.product(name: "SwiftJavaRuntimeSupport", package: "swift-java"),
6767
],
6868
exclude: [
6969
"swift-java.config",

Samples/SwiftJavaExtractFFMSampleApp/Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ let package = Package(
6565
dependencies: [
6666
.product(name: "SwiftJava", package: "swift-java"),
6767
.product(name: "CSwiftJavaJNI", package: "swift-java"),
68-
.product(name: "SwiftKitSwift", package: "swift-java"),
68+
.product(name: "SwiftJavaRuntimeSupport", package: "swift-java"),
6969
],
7070
exclude: [
7171
"swift-java.config",

Samples/SwiftJavaExtractJNISampleApp/Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ let package = Package(
6262
dependencies: [
6363
.product(name: "SwiftJava", package: "swift-java"),
6464
.product(name: "CSwiftJavaJNI", package: "swift-java"),
65-
.product(name: "SwiftKitSwift", package: "swift-java"),
65+
.product(name: "SwiftJavaRuntimeSupport", package: "swift-java"),
6666
],
6767
exclude: [
6868
"swift-java.config"

Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+NativeTranslation.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -851,7 +851,7 @@ extension JNISwift2JavaGenerator {
851851
return unwrappedName
852852

853853
case .asyncBlocking(let inner, let isThrowing, let swiftFunctionResultType):
854-
printer.print("let _semaphore$ = SwiftJava._Semaphore(value: 0)")
854+
printer.print("let _semaphore$ = _Semaphore(value: 0)")
855855
let resultType = isThrowing ? "Result<\(swiftFunctionResultType), any Error>" : swiftFunctionResultType.description
856856
printer.print("var swiftResult$: \(resultType)!")
857857

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

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,26 @@
1616

1717
import java.util.LinkedList;
1818
import java.util.List;
19+
import java.util.Queue;
20+
import java.util.concurrent.ConcurrentLinkedQueue;
1921
import java.util.concurrent.atomic.AtomicInteger;
2022

2123
public class ConfinedSwiftMemorySession implements ClosableSwiftArena {
2224

2325
final static int CLOSED = 0;
2426
final static int ACTIVE = 1;
2527

26-
final Thread owner;
2728
final AtomicInteger state;
2829

2930
final ConfinedResourceList resources;
3031

31-
public ConfinedSwiftMemorySession(Thread owner) {
32-
this.owner = owner;
32+
public ConfinedSwiftMemorySession() {
3333
this.state = new AtomicInteger(ACTIVE);
3434
this.resources = new ConfinedResourceList();
3535
}
3636

3737
void checkValid() throws RuntimeException {
38-
if (this.owner != null && this.owner != Thread.currentThread()) {
39-
throw new WrongThreadException(String.format("ConfinedSwift arena is confined to %s but was closed from %s!", this.owner, Thread.currentThread()));
40-
} else if (this.state.get() < ACTIVE) {
38+
if (this.state.get() < ACTIVE) {
4139
throw new RuntimeException("SwiftArena is already closed!");
4240
}
4341
}
@@ -61,8 +59,7 @@ public void register(SwiftInstance instance) {
6159
}
6260

6361
static final class ConfinedResourceList implements SwiftResourceList {
64-
// TODO: Could use intrusive linked list to avoid one indirection here
65-
final List<SwiftInstanceCleanup> resourceCleanups = new LinkedList<>();
62+
final Queue<SwiftInstanceCleanup> resourceCleanups = new ConcurrentLinkedQueue<>();
6663

6764
void add(SwiftInstanceCleanup cleanup) {
6865
resourceCleanups.add(cleanup);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public interface SwiftArena {
3131
void register(SwiftInstance instance);
3232

3333
static ClosableSwiftArena ofConfined() {
34-
return new ConfinedSwiftMemorySession(Thread.currentThread());
34+
return new ConfinedSwiftMemorySession();
3535
}
3636

3737
static SwiftArena ofAuto() {

SwiftKitFFM/src/main/java/org/swift/swiftkit/ffm/AllocatingSwiftArena.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public interface AllocatingSwiftArena extends SwiftArena, SegmentAllocator {
2424
MemorySegment allocate(long byteSize, long byteAlignment);
2525

2626
static ClosableAllocatingSwiftArena ofConfined() {
27-
return new FFMConfinedSwiftMemorySession(Thread.currentThread());
27+
return new FFMConfinedSwiftMemorySession();
2828
}
2929

3030
static AllocatingSwiftArena ofAuto() {

SwiftKitFFM/src/main/java/org/swift/swiftkit/ffm/FFMConfinedSwiftMemorySession.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
final class FFMConfinedSwiftMemorySession extends ConfinedSwiftMemorySession implements AllocatingSwiftArena, ClosableAllocatingSwiftArena {
2323
final Arena arena;
2424

25-
public FFMConfinedSwiftMemorySession(Thread owner) {
26-
super(owner);
25+
public FFMConfinedSwiftMemorySession() {
26+
super();
2727
this.arena = Arena.ofConfined();
2828
}
2929

0 commit comments

Comments
 (0)