Skip to content

[WIP] Separate SwiftKit into SwiftKitCore and SwiftKitFFM #300

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ repositories {

testing {
suites {
val test by getting(JvmTestSuite::class) {
useJUnitJupiter("5.10.3")
}
// val test by getting(JvmTestSuite::class) {
// useJUnitJupiter("5.10.3")
// }
}
}

Expand Down
2 changes: 1 addition & 1 deletion Samples/JExtractJNISampleApp/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ tasks.clean {
}

dependencies {
implementation(project(':SwiftKit'))
implementation(project(':SwiftKitCore'))

testImplementation(platform("org.junit:junit-bom:5.10.0"))
testImplementation("org.junit.jupiter:junit-jupiter")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

// Import javakit/swiftkit support libraries

import org.swift.swiftkit.SwiftKit;
import org.swift.swiftkitffm.SwiftKit;

public class HelloJava2SwiftJNI {

Expand Down
2 changes: 1 addition & 1 deletion Samples/SwiftAndJavaJarSampleLib/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ java {
}

dependencies {
implementation(project(':SwiftKit'))
implementation(project(':SwiftKitFFM'))

testImplementation(platform("org.junit:junit-bom:5.10.0"))
testImplementation("org.junit.jupiter:junit-jupiter")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
//
//===----------------------------------------------------------------------===//

package org.swift.swiftkit;
package org.swift.swiftkitffm;

import java.util.concurrent.TimeUnit;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,17 @@

// Import swift-extract generated sources

import com.example.swift.MySwiftLibrary;
import com.example.swift.MySwiftClass;

// Import javakit/swiftkit support libraries
import org.swift.swiftkit.SwiftArena;
import org.swift.swiftkit.SwiftKit;
import org.swift.swiftkit.SwiftValueWitnessTable;

import java.util.Arrays;
import org.swift.swiftkitffm.SwiftArena;
import org.swift.swiftkitffm.SwiftFFM;

public class HelloJava2Swift {

public static void main(String[] args) {
boolean traceDowncalls = Boolean.getBoolean("jextract.trace.downcalls");
System.out.println("Property: jextract.trace.downcalls = " + traceDowncalls);

System.out.print("Property: java.library.path = " +SwiftKit.getJavaLibraryPath());
System.out.print("Property: java.library.path = " + SwiftFFM.getJavaLibraryPath());

examples();
}
Expand All @@ -47,8 +41,8 @@ static void examples() {
MySwiftClass obj = MySwiftClass.init(2222, 7777, arena);

// just checking retains/releases work
SwiftKit.retain(obj);
SwiftKit.release(obj);
SwiftFFM.retain(obj);
SwiftFFM.release(obj);

obj.voidMethod();
obj.takeIntMethod(42);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.swift.swiftkit.SwiftArena;
import org.swift.swiftkit.SwiftKit;
import org.swift.swiftkitffm.SwiftArena;
import org.swift.swiftkitffm.SwiftFFM;

import java.io.File;
import java.util.stream.Stream;
Expand All @@ -27,7 +27,7 @@
public class MySwiftClassTest {

void checkPaths(Throwable throwable) {
var paths = SwiftKit.getJavaLibraryPath().split(":");
var paths = SwiftFFM.getJavaLibraryPath().split(":");
for (var path : paths) {
System.out.println("CHECKING PATH: " + path);
Stream.of(new File(path).listFiles())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,10 @@

package com.example.swift;

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.swift.swiftkit.SwiftKit;

import java.util.Arrays;
import java.util.concurrent.CountDownLatch;
import java.util.stream.Collectors;

import static org.junit.jupiter.api.Assertions.*;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
//
//===----------------------------------------------------------------------===//

package org.swift.swiftkit;
package org.swift.swiftkitffm;

import static org.junit.jupiter.api.Assertions.assertEquals;

Expand All @@ -27,13 +27,13 @@ void call_retain_retainCount_release() {
var arena = SwiftArena.ofConfined();
var obj = MySwiftClass.init(1, 2, arena);

assertEquals(1, SwiftKit.retainCount(obj));
assertEquals(1, SwiftFFM.retainCount(obj));
// TODO: test directly on SwiftHeapObject inheriting obj

SwiftKit.retain(obj);
assertEquals(2, SwiftKit.retainCount(obj));
SwiftFFM.retain(obj);
assertEquals(2, SwiftFFM.retainCount(obj));

SwiftKit.release(obj);
assertEquals(1, SwiftKit.retainCount(obj));
SwiftFFM.release(obj);
assertEquals(1, SwiftFFM.retainCount(obj));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,15 @@
//
//===----------------------------------------------------------------------===//

package org.swift.swiftkit;
package org.swift.swiftkitffm;

import com.example.swift.MySwiftClass;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledIf;
import org.swift.swiftkit.util.PlatformUtils;

import java.util.Arrays;
import java.util.stream.Collectors;
import org.swift.swiftkitffm.util.PlatformUtils;

import static org.junit.jupiter.api.Assertions.*;
import static org.swift.swiftkit.SwiftKit.*;
import static org.swift.swiftkit.SwiftKit.retainCount;
import static org.swift.swiftkitffm.SwiftFFM.retainCount;

public class SwiftArenaTest {

Expand Down
2 changes: 1 addition & 1 deletion Samples/SwiftKitSampleApp/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ tasks.clean {
}

dependencies {
implementation(project(':SwiftKit'))
implementation(project(':SwiftKitFFM'))

testImplementation(platform("org.junit:junit-bom:5.10.0"))
testImplementation("org.junit.jupiter:junit-jupiter")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
//
//===----------------------------------------------------------------------===//

package org.swift.swiftkit;
package org.swift.swiftkitffm;

import com.example.swift.HelloJava2Swift;
import com.example.swift.MySwiftLibrary;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,13 @@
//
//===----------------------------------------------------------------------===//

package org.swift.swiftkit;
package org.swift.swiftkitffm;

import com.example.swift.HelloJava2Swift;
import com.example.swift.MySwiftClass;
import com.example.swift.MySwiftLibrary;
import org.openjdk.jmh.annotations.*;

import java.lang.foreign.Arena;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeUnit;

@BenchmarkMode(Mode.AverageTime)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,16 @@

// Import javakit/swiftkit support libraries

import org.swift.swiftkit.SwiftArena;
import org.swift.swiftkit.SwiftKit;
import org.swift.swiftkitffm.SwiftArena;
import org.swift.swiftkitffm.SwiftFFM;

public class HelloJava2Swift {

public static void main(String[] args) {
boolean traceDowncalls = Boolean.getBoolean("jextract.trace.downcalls");
System.out.println("Property: jextract.trace.downcalls = " + traceDowncalls);

System.out.print("Property: java.library.path = " + SwiftKit.getJavaLibraryPath());
System.out.print("Property: java.library.path = " + SwiftFFM.getJavaLibraryPath());

examples();
}
Expand All @@ -39,30 +39,30 @@ static void examples() {

long cnt = MySwiftLibrary.globalWriteString("String from Java");

SwiftKit.trace("count = " + cnt);
SwiftFFM.trace("count = " + cnt);

MySwiftLibrary.globalCallMeRunnable(() -> {
SwiftKit.trace("running runnable");
SwiftFFM.trace("running runnable");
});

SwiftKit.trace("getGlobalBuffer().byteSize()=" + MySwiftLibrary.getGlobalBuffer().byteSize());
SwiftFFM.trace("getGlobalBuffer().byteSize()=" + MySwiftLibrary.getGlobalBuffer().byteSize());

MySwiftLibrary.withBuffer((buf) -> {
SwiftKit.trace("withBuffer{$0.byteSize()}=" + buf.byteSize());
SwiftFFM.trace("withBuffer{$0.byteSize()}=" + buf.byteSize());
});
// Example of using an arena; MyClass.deinit is run at end of scope
try (var arena = SwiftArena.ofConfined()) {
MySwiftClass obj = MySwiftClass.init(2222, 7777, arena);

// just checking retains/releases work
SwiftKit.trace("retainCount = " + SwiftKit.retainCount(obj));
SwiftKit.retain(obj);
SwiftKit.trace("retainCount = " + SwiftKit.retainCount(obj));
SwiftKit.release(obj);
SwiftKit.trace("retainCount = " + SwiftKit.retainCount(obj));
SwiftFFM.trace("retainCount = " + SwiftFFM.retainCount(obj));
SwiftFFM.retain(obj);
SwiftFFM.trace("retainCount = " + SwiftFFM.retainCount(obj));
SwiftFFM.release(obj);
SwiftFFM.trace("retainCount = " + SwiftFFM.retainCount(obj));

obj.setCounter(12);
SwiftKit.trace("obj.counter = " + obj.getCounter());
SwiftFFM.trace("obj.counter = " + obj.getCounter());

obj.voidMethod();
obj.takeIntMethod(42);
Expand All @@ -71,9 +71,9 @@ static void examples() {
otherObj.voidMethod();

MySwiftStruct swiftValue = MySwiftStruct.init(2222, 1111, arena);
SwiftKit.trace("swiftValue.capacity = " + swiftValue.getCapacity());
SwiftFFM.trace("swiftValue.capacity = " + swiftValue.getCapacity());
swiftValue.withCapLen((cap, len) -> {
SwiftKit.trace("withCapLenCallback: cap=" + cap + ", len=" + len);
SwiftFFM.trace("withCapLenCallback: cap=" + cap + ", len=" + len);
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.swift.swiftkit.SwiftArena;
import org.swift.swiftkit.SwiftKit;
import org.swift.swiftkitffm.SwiftArena;
import org.swift.swiftkitffm.SwiftFFM;

import java.io.File;
import java.util.stream.Stream;
Expand All @@ -27,7 +27,7 @@
public class MySwiftClassTest {

void checkPaths(Throwable throwable) {
var paths = SwiftKit.getJavaLibraryPath().split(":");
var paths = SwiftFFM.getJavaLibraryPath().split(":");
for (var path : paths) {
Stream.of(new File(path).listFiles())
.filter(file -> !file.isDirectory())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,10 @@

package com.example.swift;

import com.example.swift.MySwiftLibrary;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.swift.swiftkit.SwiftKit;

import java.util.Arrays;
import java.util.concurrent.CountDownLatch;
import java.util.stream.Collectors;

import static org.junit.jupiter.api.Assertions.*;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
//
//===----------------------------------------------------------------------===//

package org.swift.swiftkit;
package org.swift.swiftkitffm;

import static org.junit.jupiter.api.Assertions.assertEquals;

Expand All @@ -27,13 +27,13 @@ void call_retain_retainCount_release() {
var arena = SwiftArena.ofConfined();
var obj = MySwiftClass.init(1, 2, arena);

assertEquals(1, SwiftKit.retainCount(obj));
assertEquals(1, SwiftFFM.retainCount(obj));
// TODO: test directly on SwiftHeapObject inheriting obj

SwiftKit.retain(obj);
assertEquals(2, SwiftKit.retainCount(obj));
SwiftFFM.retain(obj);
assertEquals(2, SwiftFFM.retainCount(obj));

SwiftKit.release(obj);
assertEquals(1, SwiftKit.retainCount(obj));
SwiftFFM.release(obj);
assertEquals(1, SwiftFFM.retainCount(obj));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
//
//===----------------------------------------------------------------------===//

package org.swift.swiftkit;
package org.swift.swiftkitffm;

import com.example.swift.MySwiftStruct;
import org.junit.jupiter.api.Test;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,16 @@
//
//===----------------------------------------------------------------------===//

package org.swift.swiftkit;
package org.swift.swiftkitffm;

import com.example.swift.MySwiftClass;
import com.example.swift.MySwiftStruct;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledIf;
import org.swift.swiftkit.util.PlatformUtils;

import java.util.Arrays;
import java.util.stream.Collectors;
import org.swift.swiftkitffm.util.PlatformUtils;

import static org.junit.jupiter.api.Assertions.*;
import static org.swift.swiftkit.SwiftKit.*;
import static org.swift.swiftkit.SwiftKit.retainCount;
import static org.swift.swiftkitffm.SwiftFFM.retainCount;

public class SwiftArenaTest {

Expand Down
Loading
Loading