diff options
-rw-r--r-- | src/actors/scala/actors/Scheduler.scala | 21 | ||||
-rw-r--r-- | src/actors/scala/actors/scheduler/DaemonScheduler.scala | 6 | ||||
-rw-r--r-- | src/actors/scala/actors/scheduler/ThreadPoolConfig.scala | 20 |
3 files changed, 23 insertions, 24 deletions
diff --git a/src/actors/scala/actors/Scheduler.scala b/src/actors/scala/actors/Scheduler.scala index 47abf9477e..c10227a9ba 100644 --- a/src/actors/scala/actors/Scheduler.scala +++ b/src/actors/scala/actors/Scheduler.scala @@ -11,7 +11,7 @@ package scala.actors import java.util.concurrent._ -import scheduler.{DelegatingScheduler, ForkJoinScheduler, ResizableThreadPoolScheduler} +import scheduler.{DelegatingScheduler, ForkJoinScheduler, ResizableThreadPoolScheduler, ThreadPoolConfig} /** * The <code>Scheduler</code> object is used by <code>Actor</code> to @@ -24,24 +24,7 @@ object Scheduler extends DelegatingScheduler { Debug.info("initializing "+this+"...") def makeNewScheduler: IScheduler = { - val useForkJoin = try { - val fjProp = System.getProperty("actors.enableForkJoin") - if (fjProp != null) - fjProp.equals("true") - else { - val javaVersion = System.getProperty("java.version") - val jvmVendor = System.getProperty("java.vm.vendor") - Debug.info(this+": java.version = "+javaVersion) - Debug.info(this+": java.vm.vendor = "+jvmVendor) - (javaVersion.indexOf("1.6") != -1 || - javaVersion.indexOf("1.7") != -1) && - // on IBM J9 1.6 do not use ForkJoinPool - (jvmVendor.indexOf("Sun") != -1) - } - } catch { - case se: SecurityException => false - } - val sched = if (!useForkJoin) { + val sched = if (!ThreadPoolConfig.useForkJoin) { val s = new ResizableThreadPoolScheduler(false) s.start() s diff --git a/src/actors/scala/actors/scheduler/DaemonScheduler.scala b/src/actors/scala/actors/scheduler/DaemonScheduler.scala index e421984d8b..3013aa23c0 100644 --- a/src/actors/scala/actors/scheduler/DaemonScheduler.scala +++ b/src/actors/scala/actors/scheduler/DaemonScheduler.scala @@ -17,11 +17,7 @@ package scheduler object DaemonScheduler extends DelegatingScheduler { def makeNewScheduler(): IScheduler = { - // test on which JVM we are running - val jvmVendor = System.getProperty("java.vm.vendor") - val sched = if (jvmVendor.indexOf("IBM") != -1) { - Debug.info(this+": running on a "+jvmVendor+" JVM") - // on IBM J9 1.6 do not use ForkJoinPool + val sched = if (!ThreadPoolConfig.useForkJoin) { val s = new ResizableThreadPoolScheduler(true) s.start() s diff --git a/src/actors/scala/actors/scheduler/ThreadPoolConfig.scala b/src/actors/scala/actors/scheduler/ThreadPoolConfig.scala index 3c2f5ce5da..e69f0be2e6 100644 --- a/src/actors/scala/actors/scheduler/ThreadPoolConfig.scala +++ b/src/actors/scala/actors/scheduler/ThreadPoolConfig.scala @@ -41,4 +41,24 @@ object ThreadPoolConfig { case Some(i) if (i < corePoolSize) => corePoolSize case _ => 256 } + + private[actors] def useForkJoin: Boolean = + try { + val fjProp = System.getProperty("actors.enableForkJoin") + if (fjProp != null) + fjProp.equals("true") + else { + val javaVersion = System.getProperty("java.version") + val jvmVendor = System.getProperty("java.vm.vendor") + Debug.info(this+": java.version = "+javaVersion) + Debug.info(this+": java.vm.vendor = "+jvmVendor) + (javaVersion.indexOf("1.6") != -1 || + javaVersion.indexOf("1.7") != -1) && + // on IBM J9 1.6 do not use ForkJoinPool + (jvmVendor.indexOf("Sun") != -1) + } + } catch { + case se: SecurityException => false + } + } |