Skip to content

Commit 2aa0782

Browse files
authored
Merge pull request #32 from Chymyst/feature/no-unit-arg
Get rid of assumed unit argument in molecules
2 parents b5a3f5d + 96cb545 commit 2aa0782

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1157
-986
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ There is an integer counter value, to which we have non-blocking access via `inc
188188
We can also fetch the current counter value via the `get` molecule, which is blocking.
189189
The counter is initialized to the number we specify.
190190
```scala
191-
import code.winitzki.jc.JoinRun._
191+
import code.winitzki.jc._
192192
import code.winitzki.jc.Macros._
193193

194194
// Define the logic of the “non-blocking counter”.
@@ -238,7 +238,7 @@ The library offers some debugging facilities:
238238
Here are the typical results:
239239

240240
```scala
241-
import code.winitzki.jc.JoinRun._
241+
import code.winitzki.jc._
242242
import code.winitzki.jc.Macros._
243243

244244
val counter = b[Int] // the name of this molecule is "counter"

benchmark/src/main/scala/code/winitzki/benchmark/Benchmarks1.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ package code.winitzki.benchmark
33
import java.time.LocalDateTime
44

55
import code.winitzki.benchmark.Common._
6-
import code.winitzki.jc.Pool
6+
import code.winitzki.jc._
77
import code.winitzki.jc.Macros._
8-
import code.winitzki.jc.JoinRun._
98

109
object Benchmarks1 {
1110

@@ -96,7 +95,7 @@ object Benchmarks1 {
9695
}
9796
j2.c(count)
9897

99-
(1 to count).foreach{ _ => j2.d() }
98+
(1 to count).foreach{ _ => j2.d(()) }
10099
j2.f(initialTime)
101100
}
102101

@@ -105,7 +104,7 @@ object Benchmarks1 {
105104
val initialTime = LocalDateTime.now
106105

107106
val (d,_,f,_) = make_counter2a(count)
108-
(1 to count).foreach{ _ => d() }
107+
(1 to count).foreach{ _ => d(()) }
109108
f(initialTime)
110109
}
111110

benchmark/src/main/scala/code/winitzki/benchmark/Benchmarks4.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ package code.winitzki.benchmark
33
import java.time.LocalDateTime
44

55
import code.winitzki.benchmark.Common._
6-
import code.winitzki.jc.JoinRun._
6+
import code.winitzki.jc._
77
import code.winitzki.jc.Macros._
8-
import code.winitzki.jc.Pool
98

109
object Benchmarks4 {
1110
val differentReactions = 100
@@ -57,7 +56,7 @@ object Benchmarks4 {
5756
case a2(n) => a3(n)
5857
case a3(n) => a4(n)
5958
case a4(n) => a5(n)
60-
case a5(m) => if (m==0) f() else a0(m-1)
59+
case a5(m) => if (m==0) f(()) else a0(m-1)
6160
}
6261
a0(count)
6362

@@ -281,7 +280,7 @@ object Benchmarks4 {
281280
// case a97(n) => a98(n)
282281
// case a98(n) => a99(n)
283282

284-
case a99(m) => if (m==0) f() else a0(m-1)
283+
case a99(m) => if (m==0) f(()) else a0(m-1)
285284
}
286285
a0(count)
287286

benchmark/src/main/scala/code/winitzki/benchmark/Benchmarks7.scala

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package code.winitzki.benchmark
33
import java.time.LocalDateTime
44
import code.winitzki.benchmark.Common._
55
import code.winitzki.jc._
6-
import code.winitzki.jc.JoinRun._
76
import code.winitzki.jc.Macros._
87

98
object Benchmarks7 {
@@ -54,11 +53,11 @@ object Benchmarks7 {
5453
val initialTime = LocalDateTime.now
5554
j8.all_done(count)
5655
val d = make_counters8a(j8.done, numberOfCounters, count)
57-
(1 to (count*numberOfCounters)).foreach{ _ => d() }
56+
(1 to (count*numberOfCounters)).foreach{ _ => d(()) }
5857
j8.f(initialTime)
5958
}
6059

61-
def make_counters(done: M[Unit], counters: Int, init: Int, tp: Pool) = {
60+
private def make_counters(done: E, counters: Int, init: Int, tp: Pool) = {
6261
val c = m[Int]
6362
val d = m[Unit]
6463

@@ -71,13 +70,13 @@ object Benchmarks7 {
7170
d
7271
}
7372

74-
def make_counters8a(done: AsyName[Unit], counters: Int, init: Int): AsyName[Unit] = {
73+
private def make_counters8a(done: AsyName[Unit], counters: Int, init: Int): AsyName[Unit] = {
7574
object j8a extends Join {
7675
object c extends AsyName[Int]
7776
object d extends AsyName[Unit]
7877

7978
join {
80-
case c(0) => done()
79+
case c(0) => done(())
8180
case c(n) and d(_) if n > 0 => c(n-1)
8281
}
8382

benchmark/src/main/scala/code/winitzki/benchmark/Benchmarks9.scala

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,19 @@ package code.winitzki.benchmark
33
import java.time.LocalDateTime
44
import code.winitzki.benchmark.Common._
55
import code.winitzki.jc._
6-
import code.winitzki.jc.JoinRun._
76
import code.winitzki.jc.Macros._
87
import scala.concurrent.duration._
98

109
object Benchmarks9 {
1110

1211
val numberOfCounters = 5
1312

14-
def make_counter_1(done: M[Unit], counters: Int, init: Int, tp: Pool): B[Unit,Unit] = {
13+
def make_counter_1(done: M[Unit], counters: Int, init: Int, tp: Pool): EE = {
1514
val c = m[Int]
1615
val d = b[Unit, Unit]
1716

1817
site(tp)(
19-
go { case c(0) => done() },
18+
go { case c(0) => done(()) },
2019
go { case c(n) + d(_, r) if n > 0 => c(n - 1); r() }
2120
)
2221
(1 to counters).foreach(_ => c(init))
@@ -47,7 +46,7 @@ object Benchmarks9 {
4746
}
4847

4948

50-
def make_ping_pong_stack(done: M[Unit], tp: Pool): B[Int,Int] = {
49+
def make_ping_pong_stack(done: E, tp: Pool): B[Int,Int] = {
5150
val c = m[Unit]
5251
val d = b[Int, Int]
5352
val e = b[Int, Int]
@@ -141,8 +140,8 @@ object Benchmarks9 {
141140
object d extends SynName[Unit, Unit]
142141

143142
join {
144-
case c(0) => done()
145-
case c(n) and d(_) if n > 0 => c(n-1); d.reply()
143+
case c(0) => done(())
144+
case c(n) and d(_) if n > 0 => c(n-1); d.reply(())
146145
}
147146
}
148147
import b9c1._
@@ -171,7 +170,7 @@ object Benchmarks9 {
171170
all_done(numberOfCounters)
172171

173172
val d = make_counter_1_Jiansen(done, numberOfCounters, count)
174-
(1 to (count*numberOfCounters)).foreach{ _ => d() }
173+
(1 to (count*numberOfCounters)).foreach{ _ => d(()) }
175174

176175
var result = f(initialTime)
177176
result

benchmark/src/main/scala/code/winitzki/benchmark/JiansenJoin.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ class AsyName[Arg](implicit owner: Join, argT:ClassTag[Arg]) extends NameBase{
132132
* @param argT the descriptor the argument type
133133
* @param resT the descriptor the return type
134134
*/
135-
class SynName[Arg, R](implicit owner: Join, argT:ClassManifest[Arg], resT:ClassManifest[R]) extends NameBase{
135+
class SynName[Arg, R](implicit owner: Join, argT:ClassTag[Arg], resT:ClassTag[R]) extends NameBase{
136136
// does not support subtyping
137137

138138
override def argTypeEqual(t:Any) :Boolean = t match {

benchmark/src/main/scala/code/winitzki/benchmark/MainApp.scala

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package code.winitzki.benchmark
22

3-
import code.winitzki.benchmark.Benchmarks1._
4-
import code.winitzki.benchmark.Benchmarks4._
5-
import code.winitzki.benchmark.Benchmarks7._
6-
import code.winitzki.benchmark.Benchmarks9._
7-
import code.winitzki.jc.{FixedPool, Pool}
8-
import code.winitzki.jc.JoinRun.{defaultSitePool, defaultReactionPool}
3+
import Benchmarks1._
4+
import Benchmarks4._
5+
import Benchmarks7._
6+
import Benchmarks9._
7+
import code.winitzki.jc._
98

109
object MainAppConfig {
1110

benchmark/src/test/scala/code/winitzki/benchmark/JiansenFairnessSpec.scala

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,20 @@ class JiansenFairnessSpec extends FlatSpec with Matchers with TimeLimitedTests {
3131

3232
join {
3333
case getC(_) and done(arr) => getC.reply(arr)
34-
case a0(_) and c((n, arr)) => if (n > 0) { arr(0) += 1; c((n-1,arr)); a0() } else done(arr)
35-
case a1(_) and c((n, arr)) => if (n > 0) { arr(1) += 1; c((n-1,arr)); a1() } else done(arr)
36-
case a2(_) and c((n, arr)) => if (n > 0) { arr(2) += 1; c((n-1,arr)); a2() } else done(arr)
37-
case a3(_) and c((n, arr)) => if (n > 0) { arr(3) += 1; c((n-1,arr)); a3() } else done(arr)
34+
case a0(_) and c((n, arr)) => if (n > 0) { arr(0) += 1; c((n-1,arr)); a0(()) } else done(arr)
35+
case a1(_) and c((n, arr)) => if (n > 0) { arr(1) += 1; c((n-1,arr)); a1(()) } else done(arr)
36+
case a2(_) and c((n, arr)) => if (n > 0) { arr(2) += 1; c((n-1,arr)); a2(()) } else done(arr)
37+
case a3(_) and c((n, arr)) => if (n > 0) { arr(3) += 1; c((n-1,arr)); a3(()) } else done(arr)
3838
}
3939

4040
}
41-
j3.a0(); j3.a1(); j3.a2(); j3.a3()
41+
j3.a0(())
42+
j3.a1(())
43+
j3.a2(())
44+
j3.a3(())
4245
j3.c((N, Array.fill[Int](reactions)(0)))
4346

44-
val result = j3.getC()
47+
val result = j3.getC(())
4548

4649
// println(result.mkString(", "))
4750

@@ -81,7 +84,7 @@ class JiansenFairnessSpec extends FlatSpec with Matchers with TimeLimitedTests {
8184
Thread.sleep(200)
8285
j4.c(cycles)
8386

84-
val result = j4.getC()
87+
val result = j4.getC(())
8588

8689
// println(result.mkString(", "))
8790

benchmark/src/test/scala/code/winitzki/benchmark/MergesortSpec.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package code.winitzki.benchmark
22

3-
import code.winitzki.jc.FixedPool
4-
import code.winitzki.jc.JoinRun._
3+
import code.winitzki.jc._
54
import code.winitzki.jc.Macros._
65
import org.scalatest.{FlatSpec, Matchers}
76

benchmark/src/test/scala/code/winitzki/benchmark/MultithreadSpec.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package code.winitzki.benchmark
22

3-
import code.winitzki.jc.FixedPool
4-
import code.winitzki.jc.JoinRun._
3+
import code.winitzki.jc._
54
import code.winitzki.jc.Macros._
65
import org.scalatest.{FlatSpec, Matchers}
76
import Common._

0 commit comments

Comments
 (0)