diff options
author | Antonio Cunei <antonio.cunei@epfl.ch> | 2009-12-16 16:07:30 +0000 |
---|---|---|
committer | Antonio Cunei <antonio.cunei@epfl.ch> | 2009-12-16 16:07:30 +0000 |
commit | 77c181c62a5edf52e7eca110d2f94c32997226fc (patch) | |
tree | fcdd97de4f61316ca5d1f20cbf761665567a08d6 /src/actors/scala | |
parent | ea4bf1b11e7d6bbc0fb7657e8b6262829d3bb19c (diff) | |
download | scala-77c181c62a5edf52e7eca110d2f94c32997226fc.tar.gz scala-77c181c62a5edf52e7eca110d2f94c32997226fc.tar.bz2 scala-77c181c62a5edf52e7eca110d2f94c32997226fc.zip |
Merged revisions 19842,19844,19846,19848-19849,...
Merged revisions
19842,19844,19846,19848-19849,19854-19855,19858-19859,19861,19863-19865,
19867,19869,19871-19874,19888,19891-19897,19899-19901,19903-19905,19908-
19914,19916-19918,19925-19926,19935,19938-19939,19941,19945,19948-19950,
19952,19959,19963-19964,19970-19975,19982-19984,19986,19988-19989,19992-
19995,20003-20004,20006-20008,20010-20011,20014-20016,20021-20022,20028,
20036,20041-20042,20044-20045,20048,20050-20052,20056,20063-20064,20068,
20070-20076,20079-20080,20082,20085-20088,20092-20093,20095-20098,20104,
20107,20109-20110,20114,20124,20129,20133,20137-20140,20142-20143,20149
via svnmerge from https://lampsvn.epfl.ch/svn-repos/scala/scala/trunk
........
r19842 | extempore | 2009-11-24 19:59:58 +0100 (Tue, 24 Nov 2009) | 1 line
Giant cleanup of the automata files. Fixes #1992. ........ r19844 |
dubochet | 2009-11-24 20:27:10 +0100 (Tue, 24 Nov 2009) | 1 line
Scaladoc 2.
........
r19846 | dubochet | 2009-11-24 20:57:32 +0100 (Tue, 24 Nov 2009) | 1 line
Disabled docgenerator test, which isn't compatible with Scaladoc 2.
........ r19848 | extempore | 2009-11-24 21:10:50 +0100 (Tue, 24 Nov
2009) | 2 lines
Some improvements to REPL completion. Package objects members are now
visible. ........ r19849 | extempore | 2009-11-24 23:19:22 +0100 (Tue,
24 Nov 2009) | 1 line
Fix for #2695 - do not generate forwarders for abstract methods.
........
r19854 | moors | 2009-11-25 10:20:26 +0100 (Wed, 25 Nov 2009) | 3 lines
closed #2624: instantiate type params after eta expansion of
polymorphic method does not blow the stack on pos/t0674 (previous
private fix did typed(tree); instantiate(tree) instead of
instantiate(typed(tree)))
fixed check file for neg/bug608 -- got better error message
........
r19855 | cunei | 2009-11-25 11:07:56 +0100 (Wed, 25 Nov 2009) | 3 lines
Removed OMake build files. They are outdated, and it is highly
unlikely we'll ever find a maintainer. ........ r19858 | cunei |
2009-11-25 13:09:54 +0100 (Wed, 25 Nov 2009) | 2 lines
updated README
........
r19859 | rytz | 2009-11-25 14:43:45 +0100 (Wed, 25 Nov 2009) | 1 line
re-compiled msil.jar (scala.Math / scala.math business) ........
r19861 | moors | 2009-11-25 16:48:19 +0100 (Wed, 25 Nov 2009) | 1 line
quick fix for #2673: relaxed zipped on Tuple2/Tuple3 (back to using A
=> B for constraint instead of A <%< B) ........ r19863 | extempore |
2009-11-25 17:34:54 +0100 (Wed, 25 Nov 2009) | 2 lines
Added some logic to StringLike.format so that scala Numeric types
can be used without a runtime error. ........ r19864 | extempore |
2009-11-25 17:41:47 +0100 (Wed, 25 Nov 2009) | 3 lines
Updating deprecated usages in new scaladoc code. Used that as
inspiration to chase down a few spots using get and getOrElse in
suboptimal fashion. ........ r19865 | extempore | 2009-11-25 17:59:03
+0100 (Wed, 25 Nov 2009) | 1 line
Missed including Predef.printf in r19863. Closes #2694. ........
r19867 | moors | 2009-11-25 18:05:08 +0100 (Wed, 25 Nov 2009) | 1 line
closed #2485: failing assert on reference to Java protected methods
from companion object ........ r19869 | extempore | 2009-11-25 19:16:49
+0100 (Wed, 25 Nov 2009) | 3 lines
Working on scala.runtime. Removed RichString, which is now dead code
and falling out of sync with StringLike. Made a method in MethodCache
verifiably tail-recursive. ........ r19871 | extempore | 2009-11-25
19:50:55 +0100 (Wed, 25 Nov 2009) | 1 line
Removing redundant scalap code.
........
r19872 | extempore | 2009-11-25 20:38:53 +0100 (Wed, 25 Nov 2009) | 4 lines
Cleaning up in scala.runtime.*. Removing unused methods. Fixed toArray
to copy more than one element into the new one. Added sameElements
to Iterator to further simplify the case class support logic, and
because it should be there anyway. ........ r19873 | dragos | 2009-11-25
20:42:33 +0100 (Wed, 25 Nov 2009) | 2 lines
Updated Idea files to use relative paths towards locker when building
quick ........ r19874 | dragos | 2009-11-25 20:42:35 +0100 (Wed, 25 Nov
2009) | 2 lines
Fixed ticket 2464
........
r19888 | extempore | 2009-11-25 23:26:10 +0100 (Wed, 25 Nov 2009) | 1 line
Fix for #2704.
........
r19891 | odersky | 2009-11-26 13:03:24 +0100 (Thu, 26 Nov 2009) | 1 line
Closed #2863
........
r19892 | odersky | 2009-11-26 13:04:56 +0100 (Thu, 26 Nov 2009) | 1 line
undeprecated containsSlice. renamed indexOfSeq, lastIndexOfSeq to
...Slice. ........ r19893 | plocinic | 2009-11-26 13:05:45 +0100 (Thu,
26 Nov 2009) | 1 line
Closes #2562
........
r19894 | rytz | 2009-11-26 13:25:49 +0100 (Thu, 26 Nov 2009) | 1 line
improved fix for see #2489
........
r19895 | dragos | 2009-11-26 14:26:25 +0100 (Thu, 26 Nov 2009) | 2 lines
Fixed #1167.
........
r19896 | dragos | 2009-11-26 14:30:15 +0100 (Thu, 26 Nov 2009) | 2 lines
Merge branch 'inner-class-attr'
........
r19897 | dubochet | 2009-11-26 15:13:15 +0100 (Thu, 26 Nov 2009) | 1 line
Fixed some Scaladoc issues: dangerous characters in file names are
encoded, each owner template is a link, type bounds are printed as "<:"
and ">:". ........ r19899 | dragos | 2009-11-26 17:55:48 +0100 (Thu, 26
Nov 2009) | 2 lines
Closed #2418
........
r19900 | malayeri | 2009-11-26 17:56:02 +0100 (Thu, 26 Nov 2009) | 1 line
Improved fix for #2552
........
r19901 | dragos | 2009-11-26 17:59:47 +0100 (Thu, 26 Nov 2009) | 2 lines
Fixed test cases to the new method names (indexOfSeq -> indexOfSlice).
See r19892 ........ r19903 | extempore | 2009-11-26 23:09:33 +0100 (Thu,
26 Nov 2009) | 1 line
Closes #2707.
........
r19904 | extempore | 2009-11-26 23:29:12 +0100 (Thu, 26 Nov 2009) | 2 lines
Following up on my deprecated method overreach. Now I believe trunk
contains all the deprecated methods it should. ........ r19905 |
extempore | 2009-11-27 00:26:51 +0100 (Fri, 27 Nov 2009) | 1 line
Unbreaking build.
........
r19908 | extempore | 2009-11-27 06:34:47 +0100 (Fri, 27 Nov 2009) | 1 line
Fixed test I broke. Reminded self not to commit when in a hurry.
........ r19909 | odersky | 2009-11-27 11:00:44 +0100 (Fri, 27 Nov 2009)
| 1 line
Made Symbols.filter more robost. Hopefully this fixes the specs
problem with RC2. ........ r19910 | moors | 2009-11-27 11:45:51 +0100
(Fri, 27 Nov 2009) | 1 line
tests in pending for see #2705 -- note that partest does not work for jvm tests under pending, move to files and it works, see #2711
........
r19911 | malayeri | 2009-11-27 12:05:04 +0100 (Fri, 27 Nov 2009) | 1 line
Closes #2540 and closes #2593.
........
r19912 | extempore | 2009-11-27 14:28:45 +0100 (Fri, 27 Nov 2009) | 1 line
Performance improvement on Ordering. Closes #2697. ........ r19913 |
malayeri | 2009-11-27 14:36:37 +0100 (Fri, 27 Nov 2009) | 1 line
Undo previous change to Typers; use filter if method withFilter is not
available. ........ r19914 | dragos | 2009-11-27 15:49:41 +0100 (Fri, 27
Nov 2009) | 2 lines
Fixed failing test in the optimised case
........
r19916 | extempore | 2009-11-27 18:29:55 +0100 (Fri, 27 Nov 2009) | 2 lines
Removed method cached from MapLike - it's an exact duplicate
of getOrElseUpdate. Closes #2715.
........
r19917 | dcaoyuan | 2009-11-27 20:42:52 +0100 (Fri, 27 Nov 2009) | 1 line
Removed redundant code, let CompilerCommand processes all params
........ r19918 | dcaoyuan | 2009-11-27 22:15:24 +0100 (Fri, 27 Nov
2009) | 1 line
Added -make option transitivenocp which won't check classpath, so some
build tools such as maven can manage this by itself ........ r19925 |
extempore | 2009-11-28 22:11:43 +0100 (Sat, 28 Nov 2009) | 4 lines
Added a line to build.xml to echo the value of $ANT_OPTS after being
burned one too many times by having it already set in my environment.
What was the motivation for that change again? In any case this should
make it easier to notice. ........ r19926 | extempore | 2009-11-28
23:18:12 +0100 (Sat, 28 Nov 2009) | 2 lines
Fix for #2725 - configure the SAX parser not to freak out
on an invalid doctype URL.
........
r19935 | odersky | 2009-11-30 13:48:55 +0100 (Mon, 30 Nov 2009) | 1 line
Extensive documentation of TraversableLike in proposed new style.
........ r19938 | extempore | 2009-11-30 16:06:14 +0100 (Mon, 30 Nov
2009) | 4 lines
Removed a deprecated method which snuck back into TraversableLike.
"remove" had only ever been deprecated in List, so I moved it there so
it didn't unnecessarily materialize as a deprecated method in every
Traversable. ........ r19939 | extempore | 2009-11-30 16:14:11 +0100
(Mon, 30 Nov 2009) | 1 line
Fix for #2736 (scanner not advancing on unicode identifier.) ........
r19941 | cunei | 2009-11-30 16:46:19 +0100 (Mon, 30 Nov 2009) | 2 lines
closes #1904
........
r19945 | dragos | 2009-11-30 17:42:35 +0100 (Mon, 30 Nov 2009) | 2 lines
Closed #2726 and added test for #2464 (refs #2464) ........ r19948 |
cunei | 2009-11-30 20:00:20 +0100 (Mon, 30 Nov 2009) | 2 lines
(Temporarily) closes #2139
........
r19949 | extempore | 2009-11-30 20:24:14 +0100 (Mon, 30 Nov 2009) | 1 line
Fix and test case for #2721.
........
r19950 | extempore | 2009-12-01 01:03:54 +0100 (Tue, 01 Dec 2009) | 1 line
Fix and test case for #2378.
........
r19952 | rytz | 2009-12-01 09:28:07 +0100 (Tue, 01 Dec 2009) | 1 line
fix msil code generation for exception handlers.
........
r19959 | phaller | 2009-12-01 16:40:23 +0100 (Tue, 01 Dec 2009) | 1 line
Added switch to not use fork-join pool on a 1.5 JVM. ........ r19963 |
extempore | 2009-12-01 19:28:37 +0100 (Tue, 01 Dec 2009) | 3 lines
Implement foreachEntry by calling iteratorEntries.foreach due to an
edge-case.
The comment in the method explains the issue in detail. ........
r19964 | extempore | 2009-12-01 19:28:55 +0100 (Tue, 01 Dec 2009) | 12
lines
[This patch submitted by ismael juma - commit message his words,
but condensed.]
Fix ticket #1600: Serialization and deserialization of hash-based
collections should not re-use hashCode. The collection is rebuilt
on deserialization - note that this is not compatible with the previous
serialization format. All @SerialVersionUIDs have been reset to 1.
WeakHashMap is not Serializable and should not be so. TreeHashMap
has not been reintegrated yet. OpenHashMap has not been updated. (I
think this collection is flawed and should be removed or reimplemented.)
........ r19970 | extempore | 2009-12-02 02:01:45 +0100 (Wed, 02 Dec
2009) | 1 line
Initialization order fix to ijuma's serialization patch. ........
r19971 | extempore | 2009-12-02 05:59:19 +0100 (Wed, 02 Dec 2009) | 3
lines
Making the Try/Catch/Finally in ScalaRunTime to do what it looks like
they were intended to do. (This code looks like it dates from the Nixon
administration, so deleting it might be better.) ........ r19972 |
extempore | 2009-12-02 05:59:33 +0100 (Wed, 02 Dec 2009) | 1 line
A minor optimization to HashSet.
........
r19973 | extempore | 2009-12-02 05:59:54 +0100 (Wed, 02 Dec 2009) | 2 lines
Built out genprod to create a tuple method for reach function
alongside its curry method. Generated new FunctionNs. ........ r19974 |
extempore | 2009-12-02 06:00:11 +0100 (Wed, 02 Dec 2009) | 1 line
Some minor cleanups found while cleaning up.
........
r19975 | extempore | 2009-12-02 06:00:23 +0100 (Wed, 02 Dec 2009) | 2 lines
Working around interesting initialization order issue revealed through
use of @transient, serialization, and -Xcheckinit. ........ r19982 |
rytz | 2009-12-02 17:08:53 +0100 (Wed, 02 Dec 2009) | 1 line
moved forkjoin sources out of the library folder
........
r19983 | moors | 2009-12-02 17:12:14 +0100 (Wed, 02 Dec 2009) | 2 lines
closes #2750: cooking java raw types in info of type parameters of
Java classes review by: odersky ........ r19984 | rytz | 2009-12-02
17:20:48 +0100 (Wed, 02 Dec 2009) | 1 line
another test for #2489
........
r19986 | dubochet | 2009-12-02 18:31:28 +0100 (Wed, 02 Dec 2009) | 1 line
[scaladoc] Types are links. Other changes include: renaming factory
classes, better html output of members list, better CSS styling,
collapsible packages (not final behaviour). ........ r19988 | phaller |
2009-12-02 23:09:29 +0100 (Wed, 02 Dec 2009) | 1 line
Moved non-deterministic test for see #1801 to pending. ........ r19989
| extempore | 2009-12-02 23:43:09 +0100 (Wed, 02 Dec 2009) | 2 lines
Implemented scala.runtime.AbstractFunction0-22. Knocks something over
500K off the size of the lib/compiler jars. ........ r19992 | phaller |
2009-12-03 12:26:58 +0100 (Thu, 03 Dec 2009) | 1 line
Replaced RunnableFuture with placeholder interface. ForkJoinPool no
longer inherits from AbstractExecutorService. ........ r19993 | phaller
| 2009-12-03 13:03:16 +0100 (Thu, 03 Dec 2009) | 1 line
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.
........ r19994 | rytz | 2009-12-03 13:35:35 +0100 (Thu, 03 Dec 2009) |
1 line
re-compiled forkjoin
........
r19995 | phaller | 2009-12-03 15:49:39 +0100 (Thu, 03 Dec 2009) | 1 line
Use the same thread pool configuration for DaemonScheduler. ........
r20003 | rytz | 2009-12-04 09:23:11 +0100 (Fri, 04 Dec 2009) | 1 line
close #2708
........
r20004 | rytz | 2009-12-04 09:40:29 +0100 (Fri, 04 Dec 2009) | 1 line
oh, i mean 0 not O
........
r20006 | plocinic | 2009-12-04 15:34:04 +0100 (Fri, 04 Dec 2009) | 1 line
Added new test, see #2754
........
r20007 | plocinic | 2009-12-04 16:16:13 +0100 (Fri, 04 Dec 2009) | 1 line
object's name should be Test instead of Main
........
r20008 | plocinic | 2009-12-04 17:45:48 +0100 (Fri, 04 Dec 2009) | 1 line
.scala_dependencies now correctly tracks the class files (didn't
work for example for case classes and more complicated object/class
combinations). Refined build manager now compares different symbols not
only by name but takes into consideration some flags. This way we avoid
comparing for example class with companion object (both share the name
but we should compare class with class). Changes class now correctly
filters private, local and lifted symbols ('newMembers -= n' didn't
eliminate correctly some of the cases). ........ r20010 | phaller |
2009-12-04 18:16:04 +0100 (Fri, 04 Dec 2009) | 1 line
Made test jvm/t2515 more robust.
........
r20011 | ilyas | 2009-12-04 18:24:16 +0100 (Fri, 04 Dec 2009) | 1 line
#2747 fixed
........
r20014 | dcaoyuan | 2009-12-05 08:21:25 +0100 (Sat, 05 Dec 2009) | 1 line
Split command line parameters by space, properly process quoted
parameter ........ r20015 | dcaoyuan | 2009-12-05 08:24:36 +0100 (Sat,
05 Dec 2009) | 1 line
Don't add empty param
........
r20016 | dubochet | 2009-12-05 17:03:36 +0100 (Sat, 05 Dec 2009) | 1 line
[scaladoc] Fixed crash with privately-owned public classes (fixes
nightly build). ........ r20021 | extempore | 2009-12-06 22:35:45 +0100
(Sun, 06 Dec 2009) | 7 lines
Making the repl-shell bridge nicer. Now you can do:
scala> :sh find /Users/paulp -depth 1 -name '.scala*'
stdout: List[String] = List(/Users/paulp/.scala_dependencies, /Users/paulp/.scala_history, ...)
scala> stdout | "grep history" | "wc -c"
res0: Seq[String] = List( 28)
........
r20022 | extempore | 2009-12-06 23:25:50 +0100 (Sun, 06 Dec 2009) | 4 lines
Making it easier to explore the AST. Example:
scala> :power
scala> val t = mkTree("def bip(x: Float) = x.toInt")
t: interpreter.compiler.Tree = def bip(x: Float) = x.toInt
........
r20028 | cunei | 2009-12-07 12:49:19 +0100 (Mon, 07 Dec 2009) | 1 line
Updated copyright notices to 2010
........
r20036 | odersky | 2009-12-07 17:39:35 +0100 (Mon, 07 Dec 2009) | 1 line
Added lift method to PartialFunction
........
r20041 | ilyas | 2009-12-07 18:25:15 +0100 (Mon, 07 Dec 2009) | 1 line
plugin example update to be compiled via scala 2.8 ........ r20042 |
odersky | 2009-12-07 18:31:49 +0100 (Mon, 07 Dec 2009) | 1 line
new doc comment generation, including some new style doc comments in
collection classes. ........ r20044 | extempore | 2009-12-07 19:17:48
+0100 (Mon, 07 Dec 2009) | 1 line
Re-deleted a method which snuck back in on the last commit. ........
r20045 | odersky | 2009-12-07 19:37:41 +0100 (Mon, 07 Dec 2009) | 1 line
small changes to doc comment model
........
r20048 | extempore | 2009-12-08 03:57:59 +0100 (Tue, 08 Dec 2009) | 1 line
Tweaking logic errors in broken docs build.
........
r20050 | rytz | 2009-12-08 11:16:16 +0100 (Tue, 08 Dec 2009) | 1 line
make exception handlers catching faster. Review by dragos. ........
r20051 | plocinic | 2009-12-08 12:44:58 +0100 (Tue, 08 Dec 2009) | 1
line
see #2708
........
r20052 | cunei | 2009-12-08 14:37:08 +0100 (Tue, 08 Dec 2009) | 3 lines
2009 -> 2010
........
r20056 | odersky | 2009-12-08 17:38:05 +0100 (Tue, 08 Dec 2009) | 1 line
Closes #2772
........
r20063 | rytz | 2009-12-09 11:51:06 +0100 (Wed, 09 Dec 2009) | 1 line
moved t2515 to pending (fails on ibm6). no review ........ r20064 |
malayeri | 2009-12-09 12:05:17 +0100 (Wed, 09 Dec 2009) | 1 line
Improve error message for selection from a type parameter. Fixes
#2702. ........ r20068 | dubochet | 2009-12-09 15:12:50 +0100 (Wed, 09
Dec 2009) | 1 line
[scaladoc] Display of comments is improved. Short description (first
sentence) is extracted and displayed by default. Full description,
with parameters, etc. is displayed when clicking on the signature.
Inheritance classes for every member are printed. Package-list search
tool has better performance. ........ r20070 | extempore | 2009-12-09
17:26:02 +0100 (Wed, 09 Dec 2009) | 2 lines
A minor identifier change in a method which is instantiated by name,
to reduce proguard noise. ........ r20071 | extempore | 2009-12-09
18:03:48 +0100 (Wed, 09 Dec 2009) | 3 lines
Took manifests a little closer to the finish line. Variance still
doesn't work but the relationships between all the top, nearly top,
and bottom types should all be all correct. (See lengthy test case.)
........ r20072 | extempore | 2009-12-09 18:04:08 +0100 (Wed, 09 Dec
2009) | 3 lines
Removed productPrefix from case class hashCode consideration. (It
is not used in equality and therefore should not be used in hashCode
either.) ........ r20073 | extempore | 2009-12-09 18:04:19 +0100 (Wed,
09 Dec 2009) | 1 line
Renamed AbstractFunction to AbstractFunction0 to keep ant happy.
........ r20074 | extempore | 2009-12-09 18:04:29 +0100 (Wed, 09 Dec
2009) | 1 line
Warning suppression.
........
r20075 | plocinic | 2009-12-09 18:10:56 +0100 (Wed, 09 Dec 2009) | 1 line
More informative error message. no review
........
r20076 | plocinic | 2009-12-09 18:18:44 +0100 (Wed, 09 Dec 2009) | 1 line
typo
........
r20079 | extempore | 2009-12-09 19:06:20 +0100 (Wed, 09 Dec 2009) | 2 lines
Gave all the manifest singletons a readResolve so they unserialize to
themselves. ........ r20080 | milessabin | 2009-12-09 22:04:42 +0100
(Wed, 09 Dec 2009) | 1 line
Fully export fjbg and msil from scala to scala-plugin to avoid obscure
pickler issues when building the IDE incrementally. ........ r20082 |
dubochet | 2009-12-09 23:05:21 +0100 (Wed, 09 Dec 2009) | 1 line
[scaladoc] Known subclasses are printed.
........
r20085 | plocinic | 2009-12-10 15:42:46 +0100 (Thu, 10 Dec 2009) | 1 line
Closes #2559
........
r20086 | rytz | 2009-12-10 16:32:30 +0100 (Thu, 10 Dec 2009) | 1 line
closes #2784
........
r20087 | plocinic | 2009-12-10 17:05:04 +0100 (Thu, 10 Dec 2009) | 1 line
Closes #2649
........
r20088 | extempore | 2009-12-10 17:37:19 +0100 (Thu, 10 Dec 2009) | 1 line
Small rewrite of r20087.
........
r20092 | odersky | 2009-12-10 18:00:59 +0100 (Thu, 10 Dec 2009) | 1 line
refined doc comments generation; refactored code into new Chars,
DocStrings classes in util. Added some more doc comments to collection
classes. ........ r20093 | plocinic | 2009-12-10 18:08:17 +0100 (Thu, 10
Dec 2009) | 1 line
cleanup
........
r20095 | extempore | 2009-12-10 18:44:54 +0100 (Thu, 10 Dec 2009) | 3 lines
Remedying the fact that I swapped which version of List.fromString
was to be deprecated and which was to be deleted, plus some better
deprecation advice. ........ r20096 | extempore | 2009-12-10 18:45:05
+0100 (Thu, 10 Dec 2009) | 5 lines
Modified partialMap to take PartialFunction[A, B] instead of Any => B.
There was definitely some reason I didn't do this in the first place,
but either that reason no longer applies or it's not easily induced.
However please consider this change slightly tentative as I feel like
that other shoe may still be out there and we might have to reconsider.
........ r20097 | extempore | 2009-12-10 18:45:17 +0100 (Thu, 10 Dec
2009) | 1 line
Don't NPE on null hashtable entries.
........
r20098 | milessabin | 2009-12-10 20:39:45 +0100 (Thu, 10 Dec 2009) | 1 line
Fixed #2616 and #2737.
........
r20104 | plocinic | 2009-12-11 11:55:08 +0100 (Fri, 11 Dec 2009) | 1 line
Added test for #2794
........
r20107 | rytz | 2009-12-11 15:57:35 +0100 (Fri, 11 Dec 2009) | 2 lines
fixes #2610 and fixes #2687. "package objects" can now 'inherit from'
classes / traits, and refer to members of other package objects. review
by odersky. ........ r20109 | odersky | 2009-12-11 19:18:44 +0100 (Fri,
11 Dec 2009) | 1 line
allowed $super variables in doc comment; some more documentation of
collection classes. ........ r20110 | extempore | 2009-12-11 20:21:44
+0100 (Fri, 11 Dec 2009) | 1 line
Tweaked plugin template not to reference /Users/luc. ........ r20114 |
extempore | 2009-12-12 16:13:22 +0100 (Sat, 12 Dec 2009) | 4 lines
Took advantage of package object fix to factor the duplicated code out
of scala.Math and scala.math.`package`. This required a new starr which
exposes inherited package object members (starr is based on r20110.)
........ r20124 | rytz | 2009-12-14 13:01:53 +0100 (Mon, 14 Dec 2009) |
1 line
integration of java and scala deprecation
........
r20129 | odersky | 2009-12-14 18:12:17 +0100 (Mon, 14 Dec 2009) | 1 line
lost of documentation and some small adjustments to collection
classes. ........ r20133 | extempore | 2009-12-15 01:07:59 +0100 (Tue,
15 Dec 2009) | 1 line
Another round of deprecation warning elimination. ........ r20137 |
extempore | 2009-12-15 15:23:33 +0100 (Tue, 15 Dec 2009) | 1 line
Eliminating the deprecation warnings in the actor library. ........
r20138 | moors | 2009-12-15 15:47:35 +0100 (Tue, 15 Dec 2009) | 2 lines
closes #2778: need to refresh normalize cache when length of type parameters changes -- thanks to Jason Zaugg for the diagnosis
review by odersky
........
r20139 | michelou | 2009-12-15 17:19:47 +0100 (Tue, 15 Dec 2009) | 2 lines
corrected @usecase and imports in plugin example
........
r20140 | odersky | 2009-12-15 18:43:00 +0100 (Tue, 15 Dec 2009) | 1 line
more docs. noreview.
........
r20142 | extempore | 2009-12-15 21:22:34 +0100 (Tue, 15 Dec 2009) | 3 lines
Lots of work on repl completion. Many more cases handled correctly,
much greater effort made to hide undesirable implementation-only names
and offer interesting identifiers. ........ r20143 | extempore |
2009-12-15 21:22:44 +0100 (Tue, 15 Dec 2009) | 1 line
Moved takeDestructively into GroupedIterator.
........
r20149 | extempore | 2009-12-16 16:30:29 +0100 (Wed, 16 Dec 2009) | 1 line
Removed an inapplicable comment with no review.
........
Diffstat (limited to 'src/actors/scala')
45 files changed, 129 insertions, 102 deletions
diff --git a/src/actors/scala/actors/AbstractActor.scala b/src/actors/scala/actors/AbstractActor.scala index b2ae3d300a..9c72b307fa 100644 --- a/src/actors/scala/actors/AbstractActor.scala +++ b/src/actors/scala/actors/AbstractActor.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/AbstractReactor.scala b/src/actors/scala/actors/AbstractReactor.scala index 4ff20eaf3c..5c4b082cff 100644 --- a/src/actors/scala/actors/AbstractReactor.scala +++ b/src/actors/scala/actors/AbstractReactor.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/Actor.scala b/src/actors/scala/actors/Actor.scala index b563104f41..625b19ebdd 100644 --- a/src/actors/scala/actors/Actor.scala +++ b/src/actors/scala/actors/Actor.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/ActorGC.scala b/src/actors/scala/actors/ActorGC.scala index 68d8bda8e2..af1b0ed82d 100644 --- a/src/actors/scala/actors/ActorGC.scala +++ b/src/actors/scala/actors/ActorGC.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -67,7 +67,7 @@ trait ActorGC extends TerminationMonitor { } /** Checks whether all actors have terminated. */ - override def allTerminated: Boolean = synchronized { + override private[actors] def allActorsTerminated: Boolean = synchronized { activeActors <= 0 } diff --git a/src/actors/scala/actors/ActorProxy.scala b/src/actors/scala/actors/ActorProxy.scala index 221368c6aa..6364db87fe 100644 --- a/src/actors/scala/actors/ActorProxy.scala +++ b/src/actors/scala/actors/ActorProxy.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/ActorTask.scala b/src/actors/scala/actors/ActorTask.scala index df248053e1..8d8504245f 100644 --- a/src/actors/scala/actors/ActorTask.scala +++ b/src/actors/scala/actors/ActorTask.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/Channel.scala b/src/actors/scala/actors/Channel.scala index 0c9beacca6..24340d22f2 100644 --- a/src/actors/scala/actors/Channel.scala +++ b/src/actors/scala/actors/Channel.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/DaemonActor.scala b/src/actors/scala/actors/DaemonActor.scala index a81d2c8148..0dd828fbc1 100644 --- a/src/actors/scala/actors/DaemonActor.scala +++ b/src/actors/scala/actors/DaemonActor.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/Debug.scala b/src/actors/scala/actors/Debug.scala index e94509e048..481b68d7f4 100644 --- a/src/actors/scala/actors/Debug.scala +++ b/src/actors/scala/actors/Debug.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/Future.scala b/src/actors/scala/actors/Future.scala index 38b268d795..d6dba36321 100644 --- a/src/actors/scala/actors/Future.scala +++ b/src/actors/scala/actors/Future.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -27,8 +27,14 @@ import scheduler.DefaultThreadPoolScheduler * @author Philipp Haller */ abstract class Future[+T](val inputChannel: InputChannel[T]) extends Responder[T] with Function0[T] { + private[actors] var fvalue: Option[Any] = None + private[actors] def fvalueTyped = fvalue.get.asInstanceOf[T] + + @deprecated("this member is going to be removed in a future release") + protected def value: Option[Any] = fvalue @deprecated("this member is going to be removed in a future release") - protected var value: Option[Any] = None + protected def value_=(x: Option[Any]) { fvalue = x } + def isSet: Boolean } @@ -145,19 +151,19 @@ object Futures { private[actors] def fromInputChannel[T](inputChannel: InputChannel[T]): Future[T] = new Future[T](inputChannel) { def apply() = - if (isSet) value.get.asInstanceOf[T] + if (isSet) fvalueTyped else inputChannel.receive { - case any => value = Some(any); value.get.asInstanceOf[T] + case any => fvalue = Some(any); fvalueTyped } def respond(k: T => Unit): Unit = - if (isSet) k(value.get.asInstanceOf[T]) + if (isSet) k(fvalueTyped) else inputChannel.react { - case any => value = Some(any); k(value.get.asInstanceOf[T]) + case any => fvalue = Some(any); k(fvalueTyped) } - def isSet = value match { + def isSet = fvalue match { case None => inputChannel.receiveWithin(0) { case TIMEOUT => false - case any => value = Some(any); true + case any => fvalue = Some(any); true } case Some(_) => true } diff --git a/src/actors/scala/actors/IScheduler.scala b/src/actors/scala/actors/IScheduler.scala index 8afed3aa86..7a47c670e7 100644 --- a/src/actors/scala/actors/IScheduler.scala +++ b/src/actors/scala/actors/IScheduler.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/InputChannel.scala b/src/actors/scala/actors/InputChannel.scala index b7fb0d96b3..46988159fa 100644 --- a/src/actors/scala/actors/InputChannel.scala +++ b/src/actors/scala/actors/InputChannel.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/MessageQueue.scala b/src/actors/scala/actors/MessageQueue.scala index 469b24c1c1..fd43e36fff 100644 --- a/src/actors/scala/actors/MessageQueue.scala +++ b/src/actors/scala/actors/MessageQueue.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -18,7 +18,12 @@ package scala.actors */ @serializable @SerialVersionUID(7124278808020037465L) @deprecated("this class is going to be removed in a future release") -class MessageQueueElement(val msg: Any, val session: OutputChannel[Any], var next: MessageQueueElement) { +class MessageQueueElement(msg: Any, session: OutputChannel[Any], next: MessageQueueElement) extends MQueueElement(msg, session, next) { + def this() = this(null, null, null) + def this(msg: Any, session: OutputChannel[Any]) = this(msg, session, null) +} + +private[actors] class MQueueElement(val msg: Any, val session: OutputChannel[Any], var next: MQueueElement) { def this() = this(null, null, null) def this(msg: Any, session: OutputChannel[Any]) = this(msg, session, null) } @@ -33,9 +38,11 @@ class MessageQueueElement(val msg: Any, val session: OutputChannel[Any], var nex */ @serializable @SerialVersionUID(2168935872884095767L) @deprecated("this class is going to be removed in a future release") -class MessageQueue(protected val label: String) { - protected var first: MessageQueueElement = null - protected var last: MessageQueueElement = null // last eq null iff list is empty +class MessageQueue(label: String) extends MQueue(label) + +private[actors] class MQueue(protected val label: String) { + protected var first: MQueueElement = null + protected var last: MQueueElement = null // last eq null iff list is empty private var _size = 0 def size = _size @@ -47,7 +54,7 @@ class MessageQueue(protected val label: String) { def append(msg: Any, session: OutputChannel[Any]) { changeSize(1) // size always increases by 1 - val el = new MessageQueueElement(msg, session) + val el = new MQueueElement(msg, session) if (isEmpty) first = el else last.next = el @@ -98,13 +105,13 @@ class MessageQueue(protected val label: String) { /** Extracts the first message that satisfies the predicate <code>p</code> * or <code>null</code> if <code>p</code> fails for all of them. */ - def extractFirst(p: (Any, OutputChannel[Any]) => Boolean): MessageQueueElement = + def extractFirst(p: (Any, OutputChannel[Any]) => Boolean): MQueueElement = removeInternal(0)(p) orNull - private def removeInternal(n: Int)(p: (Any, OutputChannel[Any]) => Boolean): Option[MessageQueueElement] = { + private def removeInternal(n: Int)(p: (Any, OutputChannel[Any]) => Boolean): Option[MQueueElement] = { var pos = 0 - def foundMsg(x: MessageQueueElement) = { + def foundMsg(x: MQueueElement) = { changeSize(-1) Some(x) } @@ -148,7 +155,7 @@ class MessageQueue(protected val label: String) { /** Debugging trait. */ -private[actors] trait MessageQueueTracer extends MessageQueue +private[actors] trait MessageQueueTracer extends MQueue { private val queueNumber = MessageQueueTracer.getQueueNumber @@ -166,7 +173,7 @@ private[actors] trait MessageQueueTracer extends MessageQueue printQueue("REMOVE %s" format res) res } - override def extractFirst(p: (Any, OutputChannel[Any]) => Boolean): MessageQueueElement = { + override def extractFirst(p: (Any, OutputChannel[Any]) => Boolean): MQueueElement = { val res = super.extractFirst(p) printQueue("EXTRACT_FIRST %s" format res) res diff --git a/src/actors/scala/actors/OutputChannel.scala b/src/actors/scala/actors/OutputChannel.scala index aba8327970..4fdd606a40 100644 --- a/src/actors/scala/actors/OutputChannel.scala +++ b/src/actors/scala/actors/OutputChannel.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/ReactChannel.scala b/src/actors/scala/actors/ReactChannel.scala index ba0828a807..8bbbc04f53 100644 --- a/src/actors/scala/actors/ReactChannel.scala +++ b/src/actors/scala/actors/ReactChannel.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/Reaction.scala b/src/actors/scala/actors/Reaction.scala index 80db4b2c1e..25aea803af 100644 --- a/src/actors/scala/actors/Reaction.scala +++ b/src/actors/scala/actors/Reaction.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/Reactor.scala b/src/actors/scala/actors/Reactor.scala index 1015b2eb15..0eff67c163 100644 --- a/src/actors/scala/actors/Reactor.scala +++ b/src/actors/scala/actors/Reactor.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -32,7 +32,7 @@ private object Reactor { trait Reactor extends OutputChannel[Any] { /* The actor's mailbox. */ - private[actors] val mailbox = new MessageQueue("Reactor") + private[actors] val mailbox = new MQueue("Reactor") // guarded by this private[actors] val sendBuffer = new Queue[(Any, OutputChannel[Any])] @@ -93,7 +93,7 @@ trait Reactor extends OutputChannel[Any] { private[actors] def startSearch(msg: Any, replyTo: OutputChannel[Any], handler: Any => Boolean) = () => scheduler execute (makeReaction(() => { - val startMbox = new MessageQueue("Start") + val startMbox = new MQueue("Start") synchronized { startMbox.append(msg, replyTo) } searchMailbox(startMbox, handler, true) })) @@ -123,7 +123,7 @@ trait Reactor extends OutputChannel[Any] { def receiver: Actor = this.asInstanceOf[Actor] // guarded by this - private[actors] def drainSendBuffer(mbox: MessageQueue) { + private[actors] def drainSendBuffer(mbox: MQueue) { while (!sendBuffer.isEmpty) { val item = sendBuffer.dequeue() mbox.append(item._1, item._2) @@ -131,7 +131,7 @@ trait Reactor extends OutputChannel[Any] { } // assume continuation != null - private[actors] def searchMailbox(startMbox: MessageQueue, + private[actors] def searchMailbox(startMbox: MQueue, handlesMessage: Any => Boolean, resumeOnSameThread: Boolean) { var tmpMbox = startMbox @@ -144,7 +144,7 @@ trait Reactor extends OutputChannel[Any] { synchronized { // in mean time new stuff might have arrived if (!sendBuffer.isEmpty) { - tmpMbox = new MessageQueue("Temp") + tmpMbox = new MQueue("Temp") drainSendBuffer(tmpMbox) // keep going } else { diff --git a/src/actors/scala/actors/ReactorTask.scala b/src/actors/scala/actors/ReactorTask.scala index b29e770bc4..8fde0e4aea 100644 --- a/src/actors/scala/actors/ReactorTask.scala +++ b/src/actors/scala/actors/ReactorTask.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/ReplyReactor.scala b/src/actors/scala/actors/ReplyReactor.scala index 03c97ebdae..4b31369db4 100644 --- a/src/actors/scala/actors/ReplyReactor.scala +++ b/src/actors/scala/actors/ReplyReactor.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -62,7 +62,7 @@ trait ReplyReactor extends Reactor with ReplyableReactor { } // assume continuation != null - private[actors] override def searchMailbox(startMbox: MessageQueue, + private[actors] override def searchMailbox(startMbox: MQueue, handlesMessage: Any => Boolean, resumeOnSameThread: Boolean) { var tmpMbox = startMbox @@ -78,7 +78,7 @@ trait ReplyReactor extends Reactor with ReplyableReactor { synchronized { // in mean time new stuff might have arrived if (!sendBuffer.isEmpty) { - tmpMbox = new MessageQueue("Temp") + tmpMbox = new MQueue("Temp") drainSendBuffer(tmpMbox) // keep going } else { diff --git a/src/actors/scala/actors/Replyable.scala b/src/actors/scala/actors/Replyable.scala index 62247a6b8e..2c7e55e06a 100644 --- a/src/actors/scala/actors/Replyable.scala +++ b/src/actors/scala/actors/Replyable.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/ReplyableActor.scala b/src/actors/scala/actors/ReplyableActor.scala index bf9703a629..2122dd854b 100644 --- a/src/actors/scala/actors/ReplyableActor.scala +++ b/src/actors/scala/actors/ReplyableActor.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -121,13 +121,13 @@ private[actors] trait ReplyableActor extends ReplyableReactor { case Exit(from, reason) => exitReason = Some(reason) case any => - value = Some(any) + fvalue = Some(any) } def apply(): Any = if (isSet) { - if (!value.isEmpty) - value.get + if (!fvalue.isEmpty) + fvalue.get else if (!exitReason.isEmpty) { val reason = exitReason.get if (reason.isInstanceOf[Throwable]) @@ -143,7 +143,7 @@ private[actors] trait ReplyableActor extends ReplyableReactor { else inputChannel.react(handleReply andThen {(x: Unit) => k(apply())}) - def isSet = (value match { + def isSet = (fvalue match { case None => val handleTimeout: PartialFunction[Any, Boolean] = { case TIMEOUT => diff --git a/src/actors/scala/actors/ReplyableReactor.scala b/src/actors/scala/actors/ReplyableReactor.scala index 6ec1d31d1f..ecca50e26d 100644 --- a/src/actors/scala/actors/ReplyableReactor.scala +++ b/src/actors/scala/actors/ReplyableReactor.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -98,20 +98,19 @@ private[actors] trait ReplyableReactor extends Replyable[Any, Any] { this.send(msg, out) new Future[A](ftch) { - def apply() = - if (isSet) value.get.asInstanceOf[A] - else { - value = Some(res.get) - value.get.asInstanceOf[A] - } + def apply() = { + if (!isSet) + fvalue = Some(res.get) + + fvalueTyped + } def respond(k: A => Unit): Unit = - if (isSet) k(value.get.asInstanceOf[A]) + if (isSet) k(fvalueTyped) else inputChannel.react { - case any => value = Some(any); k(value.get.asInstanceOf[A]) + case any => fvalue = Some(any); k(fvalueTyped) } def isSet = - !value.isEmpty + !fvalue.isEmpty } } - } diff --git a/src/actors/scala/actors/Scheduler.scala b/src/actors/scala/actors/Scheduler.scala index 080abbbf41..d653271c1e 100644 --- a/src/actors/scala/actors/Scheduler.scala +++ b/src/actors/scala/actors/Scheduler.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -11,11 +11,11 @@ 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 - * execute tasks of an execution of an actor. + * execute tasks of an actor execution. * * @author Philipp Haller */ @@ -24,11 +24,7 @@ object Scheduler extends DelegatingScheduler { Debug.info("initializing "+this+"...") 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(false) s.start() s diff --git a/src/actors/scala/actors/SchedulerAdapter.scala b/src/actors/scala/actors/SchedulerAdapter.scala index 2c5ccd2dd8..f88d15bb38 100644 --- a/src/actors/scala/actors/SchedulerAdapter.scala +++ b/src/actors/scala/actors/SchedulerAdapter.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/remote/FreshNameCreator.scala b/src/actors/scala/actors/remote/FreshNameCreator.scala index 9be6d06b5b..298dd3ac6c 100644 --- a/src/actors/scala/actors/remote/FreshNameCreator.scala +++ b/src/actors/scala/actors/remote/FreshNameCreator.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/remote/JavaSerializer.scala b/src/actors/scala/actors/remote/JavaSerializer.scala index 4e8073055e..f349e80a2e 100644 --- a/src/actors/scala/actors/remote/JavaSerializer.scala +++ b/src/actors/scala/actors/remote/JavaSerializer.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/remote/NetKernel.scala b/src/actors/scala/actors/remote/NetKernel.scala index 8673b03697..9c2b18ada2 100644 --- a/src/actors/scala/actors/remote/NetKernel.scala +++ b/src/actors/scala/actors/remote/NetKernel.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/remote/Proxy.scala b/src/actors/scala/actors/remote/Proxy.scala index 60bcd34221..f9a6cd8fed 100644 --- a/src/actors/scala/actors/remote/Proxy.scala +++ b/src/actors/scala/actors/remote/Proxy.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/remote/RemoteActor.scala b/src/actors/scala/actors/remote/RemoteActor.scala index 7316017e32..860ff3bfe3 100644 --- a/src/actors/scala/actors/remote/RemoteActor.scala +++ b/src/actors/scala/actors/remote/RemoteActor.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/remote/Serializer.scala b/src/actors/scala/actors/remote/Serializer.scala index fe3ddb0fae..d6d327da04 100644 --- a/src/actors/scala/actors/remote/Serializer.scala +++ b/src/actors/scala/actors/remote/Serializer.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/remote/Service.scala b/src/actors/scala/actors/remote/Service.scala index 86891b3987..faf4f0b322 100644 --- a/src/actors/scala/actors/remote/Service.scala +++ b/src/actors/scala/actors/remote/Service.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/remote/TcpService.scala b/src/actors/scala/actors/remote/TcpService.scala index 9a43f938c0..e09efe161d 100644 --- a/src/actors/scala/actors/remote/TcpService.scala +++ b/src/actors/scala/actors/remote/TcpService.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/scheduler/DaemonScheduler.scala b/src/actors/scala/actors/scheduler/DaemonScheduler.scala index e421984d8b..02f652db0b 100644 --- a/src/actors/scala/actors/scheduler/DaemonScheduler.scala +++ b/src/actors/scala/actors/scheduler/DaemonScheduler.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -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/DefaultThreadPoolScheduler.scala b/src/actors/scala/actors/scheduler/DefaultThreadPoolScheduler.scala index f5eb6c4884..4fed00ba26 100644 --- a/src/actors/scala/actors/scheduler/DefaultThreadPoolScheduler.scala +++ b/src/actors/scala/actors/scheduler/DefaultThreadPoolScheduler.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/scheduler/DelegatingScheduler.scala b/src/actors/scala/actors/scheduler/DelegatingScheduler.scala index 434911c48d..d1c99d7c13 100644 --- a/src/actors/scala/actors/scheduler/DelegatingScheduler.scala +++ b/src/actors/scala/actors/scheduler/DelegatingScheduler.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/scheduler/ExecutorScheduler.scala b/src/actors/scala/actors/scheduler/ExecutorScheduler.scala index 52ec977b1f..bcd524f345 100644 --- a/src/actors/scala/actors/scheduler/ExecutorScheduler.scala +++ b/src/actors/scala/actors/scheduler/ExecutorScheduler.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/scheduler/ForkJoinScheduler.scala b/src/actors/scala/actors/scheduler/ForkJoinScheduler.scala index b0198d4879..54fab4fb11 100644 --- a/src/actors/scala/actors/scheduler/ForkJoinScheduler.scala +++ b/src/actors/scala/actors/scheduler/ForkJoinScheduler.scala @@ -67,7 +67,7 @@ class ForkJoinScheduler(val initCoreSize: Int, val maxSize: Int, daemon: Boolean if (terminating) throw new QuitException - if (allTerminated) { + if (allActorsTerminated) { Debug.info(this+": all actors terminated") terminating = true throw new QuitException diff --git a/src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala b/src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala index e9044ca268..ff74d0bc8b 100644 --- a/src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala +++ b/src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -122,7 +122,7 @@ class ResizableThreadPoolScheduler(protected val terminate: Boolean, if (coreSize - activeBlocked < numCores && coreSize < maxSize) { coreSize = numCores + activeBlocked executor.setCorePoolSize(coreSize) - } else if (terminate && allTerminated) { + } else if (terminate && allActorsTerminated) { // if all worker threads idle terminate if (executor.getActiveCount() == 0) { Debug.info(this+": initiating shutdown...") diff --git a/src/actors/scala/actors/scheduler/SchedulerService.scala b/src/actors/scala/actors/scheduler/SchedulerService.scala index 37cfa5ca59..dca8bb5b9c 100644 --- a/src/actors/scala/actors/scheduler/SchedulerService.scala +++ b/src/actors/scala/actors/scheduler/SchedulerService.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -50,7 +50,7 @@ abstract class SchedulerService(daemon: Boolean) extends Thread with IScheduler gc() - if (allTerminated) + if (allActorsTerminated) throw new QuitException } } diff --git a/src/actors/scala/actors/scheduler/SimpleExecutorScheduler.scala b/src/actors/scala/actors/scheduler/SimpleExecutorScheduler.scala index d77777caae..6c8814e90c 100644 --- a/src/actors/scala/actors/scheduler/SimpleExecutorScheduler.scala +++ b/src/actors/scala/actors/scheduler/SimpleExecutorScheduler.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/scheduler/SingleThreadedScheduler.scala b/src/actors/scala/actors/scheduler/SingleThreadedScheduler.scala index 0a9c41a0c0..9eca972e90 100644 --- a/src/actors/scala/actors/scheduler/SingleThreadedScheduler.scala +++ b/src/actors/scala/actors/scheduler/SingleThreadedScheduler.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** diff --git a/src/actors/scala/actors/scheduler/TerminationMonitor.scala b/src/actors/scala/actors/scheduler/TerminationMonitor.scala index 875b79a8c1..5510ebb095 100644 --- a/src/actors/scala/actors/scheduler/TerminationMonitor.scala +++ b/src/actors/scala/actors/scheduler/TerminationMonitor.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -61,11 +61,14 @@ trait TerminationMonitor { } /** Checks whether all actors have terminated. */ - @deprecated("this method is going to be removed in a future release") - def allTerminated: Boolean = synchronized { + private[actors] def allActorsTerminated: Boolean = synchronized { started && activeActors <= 0 } + /** Deprecated non-actor-private version */ + @deprecated("this method is going to be removed in a future release") + def allTerminated: Boolean = allActorsTerminated + /** Checks for actors that have become garbage. */ protected def gc() {} } diff --git a/src/actors/scala/actors/scheduler/TerminationService.scala b/src/actors/scala/actors/scheduler/TerminationService.scala index 3a05d57b6c..b6f03f11e5 100644 --- a/src/actors/scala/actors/scheduler/TerminationService.scala +++ b/src/actors/scala/actors/scheduler/TerminationService.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -42,7 +42,7 @@ abstract class TerminationService(terminate: Boolean) if (terminating) throw new QuitException - if (terminate && allTerminated) + if (terminate && allActorsTerminated) throw new QuitException } } diff --git a/src/actors/scala/actors/scheduler/ThreadPoolConfig.scala b/src/actors/scala/actors/scheduler/ThreadPoolConfig.scala index 3c2f5ce5da..5ffbc80421 100644 --- a/src/actors/scala/actors/scheduler/ThreadPoolConfig.scala +++ b/src/actors/scala/actors/scheduler/ThreadPoolConfig.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -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 + } + } diff --git a/src/actors/scala/actors/scheduler/ThreadPoolScheduler.scala b/src/actors/scala/actors/scheduler/ThreadPoolScheduler.scala index 08c842e71b..2eb18645ff 100644 --- a/src/actors/scala/actors/scheduler/ThreadPoolScheduler.scala +++ b/src/actors/scala/actors/scheduler/ThreadPoolScheduler.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2005-2010, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -57,7 +57,7 @@ class ThreadPoolScheduler(protected var executor: ThreadPoolExecutor, case _: InterruptedException => } - if (terminating || (terminate && allTerminated)) + if (terminating || (terminate && allActorsTerminated)) throw new QuitException gc() |