Skip to content

Commit 214ec39

Browse files
committed
fix: add LinuxNativeDispatcher
1 parent 172436b commit 214ec39

File tree

3 files changed

+33
-28
lines changed

3 files changed

+33
-28
lines changed

src/main/java/dev/xdark/ssvm/NativeJava.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ static void init(VirtualMachine vm) {
8080
ProxyNatives.init(vm);
8181
InflaterNatives.init(vm);
8282
ProcessEnvironmentNatives.init(vm);
83-
WindowsNativeDispatcherNatives.init(vm);
83+
FileSystemNativeDispatcherNatives.init(vm);
8484
}
8585

8686
/**
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package dev.xdark.ssvm.natives;
2+
3+
import dev.xdark.ssvm.VirtualMachine;
4+
import dev.xdark.ssvm.api.MethodInvoker;
5+
import dev.xdark.ssvm.mirror.InstanceJavaClass;
6+
import lombok.experimental.UtilityClass;
7+
import lombok.val;
8+
9+
/**
10+
* Initializes sun/nio/fs/WindowsNativeDispatcher.
11+
*
12+
* @author xDark
13+
*/
14+
@UtilityClass
15+
public class FileSystemNativeDispatcherNatives {
16+
17+
18+
/**
19+
* @param vm
20+
* VM instance.
21+
*/
22+
public void init(VirtualMachine vm) {
23+
val vmi = vm.getInterface();
24+
InstanceJavaClass nativeDispatcher = (InstanceJavaClass) vm.findBootstrapClass("sun/nio/fs/WindowsNativeDispatcher");
25+
if (nativeDispatcher == null) {
26+
nativeDispatcher = (InstanceJavaClass) vm.findBootstrapClass("sun/nio/fs/LinuxNativeDispatcher");
27+
vmi.setInvoker(nativeDispatcher, "init", "()V", MethodInvoker.noop());
28+
} else {
29+
vmi.setInvoker(nativeDispatcher, "initIDs", "()V", MethodInvoker.noop());
30+
}
31+
}
32+
}

src/main/java/dev/xdark/ssvm/natives/WindowsNativeDispatcherNatives.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)