summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2009-12-03 12:03:16 +0000
committerPhilipp Haller <hallerp@gmail.com>2009-12-03 12:03:16 +0000
commit62601656c3902897d3db538e855aa008313f899b (patch)
tree970f5d5ff96d796a89c370b8c3f61044ebfe9570 /src
parent38625cc96c837908a129cb2c378a93f8e31eface (diff)
downloadscala-62601656c3902897d3db538e855aa008313f899b.tar.gz
scala-62601656c3902897d3db538e855aa008313f899b.tar.bz2
scala-62601656c3902897d3db538e855aa008313f899b.zip
Added Java property to explicitly enable/disabl...
Added Java property to explicitly enable/disable fork-join pool for actors. By default it is enabled only on 1.6 and 1.7 JDKs from Sun.
Diffstat (limited to 'src')
-rw-r--r--src/actors/scala/actors/Scheduler.scala26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/actors/scala/actors/Scheduler.scala b/src/actors/scala/actors/Scheduler.scala
index e4c3f76d28..47abf9477e 100644
--- a/src/actors/scala/actors/Scheduler.scala
+++ b/src/actors/scala/actors/Scheduler.scala
@@ -15,7 +15,7 @@ import scheduler.{DelegatingScheduler, ForkJoinScheduler, ResizableThreadPoolSch
/**
* The <code>Scheduler</code> object is used by <code>Actor</code> to
- * execute tasks of an execution of an actor.
+ * execute tasks of an actor execution.
*
* @author Philipp Haller
*/
@@ -24,12 +24,24 @@ object Scheduler extends DelegatingScheduler {
Debug.info("initializing "+this+"...")
def makeNewScheduler: IScheduler = {
- // test on which JVM we are running
- val jvmVersion = System.getProperty("java.version")
- val jvmVendor = System.getProperty("java.vm.vendor")
- val sched = if (jvmVersion.indexOf("1.5") != -1 ||
- jvmVendor.indexOf("IBM") != -1) {
- // on IBM J9 1.6 do not use ForkJoinPool
+ 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 s = new ResizableThreadPoolScheduler(false)
s.start()
s