Skip to content

Commit b02d7d6

Browse files
committed
Optimize 0-arity foreign functions
1 parent 4341554 commit b02d7d6

File tree

19 files changed

+101
-85
lines changed

19 files changed

+101
-85
lines changed

.github/workflows/install.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ on:
1212
env:
1313
IDRIS2_PREVIOUS_VERSION: 0.2.2
1414
IDRIS2_PREVIOUS_VERSION_SUFFIX: '-SNAPSHOT'
15-
IDRIS2_PREVIOUS_VERSION_TAG_SUFFIX: '-20210905'
15+
IDRIS2_PREVIOUS_VERSION_TAG_SUFFIX: '-20210907'
1616
IDRIS2_TESTS_CG: jvm
1717
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
1818

.github/workflows/pre-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
env:
99
IDRIS2_PREVIOUS_VERSION: 0.2.2
1010
IDRIS2_PREVIOUS_VERSION_SUFFIX: '-SNAPSHOT'
11-
IDRIS2_PREVIOUS_VERSION_TAG_SUFFIX: '-20210905'
11+
IDRIS2_PREVIOUS_VERSION_TAG_SUFFIX: '-20210907'
1212
IDRIS2_TESTS_CG: jvm
1313
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
1414

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
env:
99
IDRIS2_PREVIOUS_VERSION: 0.2.2
1010
IDRIS2_PREVIOUS_VERSION_SUFFIX: '-SNAPSHOT'
11-
IDRIS2_PREVIOUS_VERSION_TAG_SUFFIX: '-20210905'
11+
IDRIS2_PREVIOUS_VERSION_TAG_SUFFIX: '-20210907'
1212
IDRIS2_TESTS_CG: jvm
1313
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
1414

idris-jvm-assembler/src/main/java/io/github/mmhelloworld/idrisjvm/assembler/AsmGlobalState.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,35 +33,35 @@ public AsmGlobalState(String programName) {
3333
assemblers = new ConcurrentHashMap<>();
3434
}
3535

36-
public void addFunction(String name, Object value) {
36+
public synchronized void addFunction(String name, Object value) {
3737
functions.put(name, value);
3838
}
3939

40-
public Object getFunction(String name) {
40+
public synchronized Object getFunction(String name) {
4141
return functions.get(name);
4242
}
4343

44-
public void addUntypedFunction(String name) {
44+
public synchronized void addUntypedFunction(String name) {
4545
untypedFunctions.add(name);
4646
}
4747

48-
public boolean isUntypedFunction(String name) {
48+
public synchronized boolean isUntypedFunction(String name) {
4949
return untypedFunctions.contains(name);
5050
}
5151

52-
public Assembler getAssembler(String name) {
52+
public synchronized Assembler getAssembler(String name) {
5353
return assemblers.computeIfAbsent(name, key -> new Assembler());
5454
}
5555

5656
public String getProgramName() {
5757
return programName;
5858
}
5959

60-
public boolean hasConstructor(String name) {
60+
public synchronized boolean hasConstructor(String name) {
6161
return constructors.contains(name);
6262
}
6363

64-
public void addConstructor(String name) {
64+
public synchronized void addConstructor(String name) {
6565
constructors.add(name);
6666
}
6767

idris-jvm-assembler/src/main/java/io/github/mmhelloworld/idrisjvm/assembler/IdrisName.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,10 @@ private static List<String> addModulePrefix(String programName, List<String> nam
9999
if (size > 1) {
100100
List<String> packageNameParts = nameParts.subList(1, size - 1);
101101
LinkedList<String> prefixedPackagedNames = packageNameParts.stream()
102-
.map(packageName -> "M$" + packageName)
102+
.map(packageName -> "M_" + packageName)
103103
.collect(toCollection(LinkedList::new));
104104
String rootPackage = nameParts.get(0);
105-
prefixedPackagedNames.add(0, rootPackage.equals(programName) ? rootPackage : "M$" + rootPackage);
105+
prefixedPackagedNames.add(0, rootPackage.equals(programName) ? rootPackage : "M_" + rootPackage);
106106
String className = nameParts.get(size - 1);
107107
prefixedPackagedNames.add(className);
108108
return prefixedPackagedNames;

idris-jvm-assembler/src/test/java/io/github/mmhelloworld/idrisjvm/jvmassembler/IdrisNameTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,17 @@ void getConstructorClassName(String idrisConstructorName, String transformedCons
3030

3131
static Stream<Arguments> getFunctionName() {
3232
return Stream.of(
33-
arguments("Data/List", "take", IdrisList.fromIterable(asList("M$Data/List","take"))),
33+
arguments("Data/List", "take", IdrisList.fromIterable(asList("M_Data/List","take"))),
3434
arguments("Main", "bar", IdrisList.fromIterable(asList("main/Main","bar"))),
3535
arguments("Foo", "bar", IdrisList.fromIterable(asList("main/Foo","bar"))),
36-
arguments("Main/Foo", "bar", IdrisList.fromIterable(asList("M$Main/Foo","bar"))),
37-
arguments("Main/Foo/Bar/Baz", "bar", IdrisList.fromIterable(asList("M$Main/M$Foo/M$Bar/Baz","bar"))));
36+
arguments("Main/Foo", "bar", IdrisList.fromIterable(asList("M_Main/Foo","bar"))),
37+
arguments("Main/Foo/Bar/Baz", "bar", IdrisList.fromIterable(asList("M_Main/M_Foo/M_Bar/Baz","bar"))));
3838
}
3939

4040
static Stream<Arguments> getConstructorClassName() {
4141
return Stream.of(
42-
arguments("Data/List/Take", "M$Data/M$List/Take"),
43-
arguments("Prelude/Foo", "M$Prelude/Foo"),
42+
arguments("Data/List/Take", "M_Data/M_List/Take"),
43+
arguments("Prelude/Foo", "M_Prelude/Foo"),
4444
arguments("Prelude", "main/Prelude")
4545
);
4646
}

idris-jvm-compiler/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@
189189
<repositoryName>exec/idris2_app</repositoryName>
190190
<repositoryLayout>flat</repositoryLayout>
191191
<assembleDirectory>${project.parent.basedir}/build</assembleDirectory>
192-
<extraJvmArguments>-Xss36m -Xms2g -Xmx3g</extraJvmArguments>
192+
<extraJvmArguments>-Xss36m -Xms3g -Xmx3g</extraJvmArguments>
193193
<programs>
194194
<program>
195195
<mainClass>idris2.Main</mainClass>

idris-jvm-runtime/src/main/java/io/github/mmhelloworld/idrisjvm/runtime/IdrisSystem.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ public final class IdrisSystem {
2929

3030
// To conform to support/chez/support.ss
3131
String osNameProperty = getOsNameProperty();
32-
if (osNameProperty.startsWith("windows")) {
33-
OS_NAME = "windows";
34-
} else if (osNameProperty.startsWith("mac")) {
32+
if (osNameProperty.contains("mac") || osNameProperty.contains("darwin")) {
3533
OS_NAME = "darwin";
36-
} else if (Stream.of("linux", "aix", "solaris", "sunos", "freebsd", "openbsd", "netbsd")
37-
.anyMatch(osNameProperty::startsWith)) {
34+
} else if (osNameProperty.contains("win")) {
35+
OS_NAME = "windows";
36+
} else if (Stream.of("nix", "nux", "aix", "solaris", "sunos", "freebsd", "openbsd", "netbsd")
37+
.anyMatch(osNameProperty::contains)) {
3838
OS_NAME = "unix";
3939
} else {
4040
OS_NAME = "unknown";

libs/base/System.idr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ system cmd = primIO (prim__system cmd)
121121

122122
%foreign support "idris2_time"
123123
"javascript:lambda:() => Math.floor(new Date().getTime() / 1000)"
124-
"jvm:time(int),io/github/mmhelloworld/idrisjvm/runtime/IdrisSystem"
124+
"jvm:time(java/lang/Object int),io/github/mmhelloworld/idrisjvm/runtime/IdrisSystem"
125125
prim__time : PrimIO Int
126126

127127
||| Return the number of seconds since epoch.

libs/base/System/Clock.idr

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,47 +98,47 @@ isClockMandatory _ = Mandatory
9898

9999
%foreign "scheme:blodwen-clock-time-monotonic"
100100
"RefC:clockTimeMonotonic"
101-
"jvm:getMonotonicClock(io/github/mmhelloworld/idrisjvm/runtime/IdrisClock),io/github/mmhelloworld/idrisjvm/runtime/Clocks"
101+
"jvm:getMonotonicClock(java/lang/Object io/github/mmhelloworld/idrisjvm/runtime/IdrisClock),io/github/mmhelloworld/idrisjvm/runtime/Clocks"
102102
prim__clockTimeMonotonic : PrimIO OSClock
103103

104104
clockTimeMonotonic : IO OSClock
105105
clockTimeMonotonic = fromPrim prim__clockTimeMonotonic
106106

107107
%foreign "scheme:blodwen-clock-time-utc"
108108
"RefC:clockTimeUtc"
109-
"jvm:getUtcClock(io/github/mmhelloworld/idrisjvm/runtime/IdrisClock),io/github/mmhelloworld/idrisjvm/runtime/Clocks"
109+
"jvm:getUtcClock(java/lang/Object io/github/mmhelloworld/idrisjvm/runtime/IdrisClock),io/github/mmhelloworld/idrisjvm/runtime/Clocks"
110110
prim__clockTimeUtc : PrimIO OSClock
111111

112112
clockTimeUtc : IO OSClock
113113
clockTimeUtc = fromPrim prim__clockTimeUtc
114114

115115
%foreign "scheme:blodwen-clock-time-process"
116116
"RefC:clockTimeProcess"
117-
"jvm:getProcessClock(io/github/mmhelloworld/idrisjvm/runtime/IdrisClock),io/github/mmhelloworld/idrisjvm/runtime/Clocks"
117+
"jvm:getProcessClock(java/lang/Object io/github/mmhelloworld/idrisjvm/runtime/IdrisClock),io/github/mmhelloworld/idrisjvm/runtime/Clocks"
118118
prim__clockTimeProcess : PrimIO OSClock
119119

120120
clockTimeProcess : IO OSClock
121121
clockTimeProcess = fromPrim prim__clockTimeProcess
122122

123123
%foreign "scheme:blodwen-clock-time-thread"
124124
"RefC:clockTimeThread"
125-
"jvm:getThreadClock(io/github/mmhelloworld/idrisjvm/runtime/IdrisClock),io/github/mmhelloworld/idrisjvm/runtime/Clocks"
125+
"jvm:getThreadClock(java/lang/Object io/github/mmhelloworld/idrisjvm/runtime/IdrisClock),io/github/mmhelloworld/idrisjvm/runtime/Clocks"
126126
prim__clockTimeThread : PrimIO OSClock
127127

128128
clockTimeThread : IO OSClock
129129
clockTimeThread = fromPrim prim__clockTimeThread
130130

131131
%foreign "scheme:blodwen-clock-time-gccpu"
132132
"RefC:clockTimeGcCpu"
133-
"jvm:getGcCpuClock(io/github/mmhelloworld/idrisjvm/runtime/IdrisClock),io/github/mmhelloworld/idrisjvm/runtime/Clocks"
133+
"jvm:getGcCpuClock(java/lang/Object io/github/mmhelloworld/idrisjvm/runtime/IdrisClock),io/github/mmhelloworld/idrisjvm/runtime/Clocks"
134134
prim__clockTimeGcCpu : PrimIO OSClock
135135

136136
clockTimeGcCpu : IO OSClock
137137
clockTimeGcCpu = fromPrim prim__clockTimeGcCpu
138138

139139
%foreign "scheme:blodwen-clock-time-gcreal"
140140
"RefC:clockTimeGcReal"
141-
"jvm:getGcRealClock(io/github/mmhelloworld/idrisjvm/runtime/IdrisClock),io/github/mmhelloworld/idrisjvm/runtime/Clocks"
141+
"jvm:getGcRealClock(java/lang/Object io/github/mmhelloworld/idrisjvm/runtime/IdrisClock),io/github/mmhelloworld/idrisjvm/runtime/Clocks"
142142
prim__clockTimeGcReal : PrimIO OSClock
143143

144144
clockTimeGcReal : IO OSClock

0 commit comments

Comments
 (0)