summaryrefslogtreecommitdiff
path: root/src/library
Commit message (Collapse)AuthorAgeFilesLines
* Optimize foreach and iterators.Erik Rozendaal2012-01-043-44/+71
|
* Use null to represent empty trees. Removed Empty/NonEmpty classes.Erik Rozendaal2012-01-033-348/+311
|
* Implemented range without using pattern matching.Erik Rozendaal2012-01-021-9/+14
|
* Implemented deletes without pattern matching.Erik Rozendaal2012-01-021-61/+72
|
* Moved key/value/left/right fields up to NonEmpty class. Don't relyErik Rozendaal2012-01-023-33/+57
| | | | on pattern matching for updating the tree.
* Minimize number of calls to ordering.Erik Rozendaal2011-12-281-13/+14
|
* Improved performance of RedBlack.NonEmpty.nth (helps take/drop/split/etc).Erik Rozendaal2011-12-281-2/+3
|
* Performance improvements for iteration (foreach and iterator).Erik Rozendaal2011-12-283-18/+51
|
* TreeMap/TreeSet no longer keep track of the size (the RedBlack treeErik Rozendaal2011-12-282-40/+31
| | | | already does so).
* Made RedBlack private to the scala.collection.immutable package.Erik Rozendaal2011-12-281-4/+3
| | | | | Use ArrayStack instead of Stack in TreeIterator for slightly increased performance.
* Make sure the redblack test compiles and runs.Erik Rozendaal2011-12-281-2/+1
|
* Use single shared Empty instance across all RedBlack trees.Erik Rozendaal2011-12-283-23/+32
|
* Changed abstract class RedBlack to singleton object.Erik Rozendaal2011-12-283-10/+13
|
* Moved type parameter A from RedBlack to Tree.Erik Rozendaal2011-12-283-71/+71
|
* Moved from Empty case object to case class in preparation of movingErik Rozendaal2011-12-283-15/+15
| | | | type parameter A.
* Moved from implicit ordering value to implicit parameter.Erik Rozendaal2011-12-281-17/+15
|
* Switched from isSmaller to ordering.Erik Rozendaal2011-12-281-9/+9
|
* Implemented takeWhile/dropWhile/span to use tree splitting. ThisErik Rozendaal2011-12-282-0/+26
| | | | | changes the operation from O(n log n) to O(n) and allows for more structural sharing.
* Implemented drop/take/slice/splitAt/dropRight/takeRight forErik Rozendaal2011-12-283-0/+53
| | | | | | TreeMap/TreeSet by splitting the underlying RedBlack tree. This makes the operation O(log n) instead of O(n) and allows more structural sharing.
* RedBlack.scala: Change count from 'def' to 'val' in NonEmpty treeErik Rozendaal2011-12-281-1/+1
| | | | | to ensure TreeSet/TreeMap 'range' operations are O(log n) instead of O(n).
* Optimized implementation of init/tail for TreeSet/TreeMap.Erik Rozendaal2011-12-282-0/+6
|
* Optimized implementations of head/headOption/last/lastOption forErik Rozendaal2011-12-283-0/+19
| | | | TreeMap/TreeSet.
* Use custom implementation for iterating over RedBlack trees. RawErik Rozendaal2011-12-281-5/+31
| | | | performance is much better than '++' based iterator.
* Use RedBlack.iterator to create iterators for TreeSet/TreeMap.Erik Rozendaal2011-12-282-2/+2
| | | | | | | This turns iterator creation from an O(n) operation into an O(log n) operation. Unfortunately, it halves actual iteration speed (consuming the iterator fully), probably due to the many by-name closures that are needed.
*---. Merge remote-tracking branches 'ijuma/issue/5341', ↵Paul Phillips2011-12-272-0/+45
|\ \ \ | | | | | | | | | | | | 'kepler/topic/reifyclosuretests', 'kepler/topic/antscalacheck', 'szabolcsberecz/SI-5104', 'kepler/ticket/5334' and 'kepler/topic/miscfixes' into develop
| | | * Documented emptyValDef fieldEugene Burmako2011-12-231-0/+5
| | |/
| * / fixes #5104 and related NaN ordering inconsistenciesSzabolcs Berecz2011-12-251-0/+40
| |/ | | | | | | | | | | | | | | | | | | | | The bug was caused by the inconsistency between j.l.Math.min() and j.l.Double.compareTo() wrt NaN (j.l.Math.min() considers NaN to be less than any other value while j.l.Double.compareTo() says it's greater...) The fix changes Ordering.{FloatOrdering,DoubleOrdering) to base it's results on primitive comparisons and math.{min,max} instead of j.l.{Float,Double}.compareTo()
* | [vpm] better codegen, especially for alternatives (suggested by Tiark)Adriaan Moors2011-12-241-15/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | factored out some of the optimizing codegen that had snuck into treemakers (guardtreemaker) removed `caseResult`, back to just `one` no longer emitting intermediate `one`s (using guard instead -- when not optimizing) so uncurry can't accidentally blow them away (it removes the `one` that represents the case's result, but should leave intermediate computation alone) still TODO: reusing-treemakers sharing prefixes of length 1 helps inlining suffix of alternatives if small enough
* | [vpm] optimized codegen avoids option-boxingAdriaan Moors2011-12-241-0/+1
|/ | | | | | | | | | | | | | | | | | | | | | | | | | introducing two mutable variables per pattern match: matchRes and keepGoing keepGoing denotes whether the result was Some or None, and matchRes holds the Some's contents or the right zero for the match's type Race(() => fastMatch(list), () => virtMatch_no_option(list))(100000).converge() is a virtual tie on my machine after this see https://gist.github.com/1400910 conveniently also works around SI-5245 don't assign to Unit-typed var's, in fact, make matchRes a val when its only prospect in life is to be unit-valued propagate eventual type for matchRes thru codegen so that we can have more robust checks for unit&nothing, when assignment makes no sense also, added a hack to caseResult to avoid boxed units in if(keepGoing) { matchRes = ... } else zero after erasure, we get if(keepGoing) { matchRes = ...; BoxedUNIT } else zero genicode broke because i was sharing trees: [scalacfork] error: java.lang.AssertionError: assertion failed: type error: can't convert from UNIT to REF(class Object) in unit ScalaSig.scala at source-/Users/adriaan/git/scala-dev/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSig.scala,line-26,offset=868 fixed by duplicating -- so be it (for now -- make this more fine-grained, more efficient) dodging inliner issues with one/zero (it won't inline, so also directly inline those methods)
* Merge remote-tracking branches 'axel22/issue/5293' and ↵Paul Phillips2011-12-195-43/+335
|\ | | | | | | 'jsuereth/fix-5053-view-unzip' into develop
| * unzip(3) on view now returns view.Josh Suereth2011-12-181-0/+6
| | | | | | | | | | | | | | | | * Added unzip and unzip3 to TraversableViewLike * Added partest tests for unzip on views returning specific collection types. Closes SI-5053 Review by @paulp
| * Restored some methods to List.Paul Phillips2011-12-171-0/+247
| | | | | | | | | | Deprecated since 2.8.0 but causing far too much inconvenience by not being present.
| * Intermediate range commit.Paul Phillips2011-12-161-106/+79
| | | | | | | | | | | | | | This is not a long-term implementation - I haven't even benchmarked it -- don't worry. I did find a fairly gross bug in the version I checked in a few days ago so I wanted to erase that from the repository memory for the weekend.
| * Merge remote-tracking branch 'repo/develop'Paul Phillips2011-12-121-0/+1
| |\
| | * Clarify scala.collection.immutable.Map#withDefaultValue() docs.Blair Zajac2011-12-081-0/+1
| | | | | | | | | | | | | | | Copy the documentation from Map#withDefault() that get(), contains(), iterator(), and keys() keys are not affected by withDefaultValue().
| * | Added cast to ParRange.Paul Phillips2011-12-121-1/+1
| | | | | | | | | | | | To get the same benefit as in Range. Review by @prokpec.
| * | Range.foreach optimization.Paul Phillips2011-12-121-12/+77
| |/ | | | | | | | | | | | | | | | | | | | | This makes code like 0 to 100 foreach (x += _) as fast as (often faster than, in fact) a while loop. See the comment in Range for the gory details. More investigation should be done regarding total impact on inlining behavior. Review by @odersky.
* / Fix #5293 - changed the way hashcode is improved in hash sets.aleksandar2011-12-192-31/+81
|/ | | | | | | | | | | | | | | | | | The hash code is further improved by using a special value in the hash sets called a `seed`. For sequential hash tables, this value depends on the size of the hash table. It determines the number of bits the hashcode should be rotated. This ensures that hash tables with different sizes use different bits to compute the position of the element. This way traversing the elements of the source hash table will yield them in the order where they had similar hashcodes (and hence, positions) in the source table, but different ones in the destination table. Ideally, in the future we want to be able to have a family of hash functions and assign a different hash function from that family to each hash table instance. That would statistically almost completely eliminate the possibility that the hash table element traversal causes excessive collisions. I should probably @mention extempore here.
*---. Merge remote-tracking branches 'soc/SI-4990', ↵Paul Phillips2011-12-0724-135/+73
|\ \ \ | | | | | | | | | | | | 'fedgehog/docs_fix_for_scala.Either.cond___SI-5113' and 'kepler/ticket/5266' into develop
| | * | Fix documentation errorfedgehog2011-12-071-4/+4
| | |/
| * / Migration message and version cleanupSimon Ochsenreither2011-12-0723-131/+69
| |/ | | | | | | | | | | | | | | | | | | The @migration annotation can now be used like @deprecation. Old syntax is still supported, but deprecated. Improve wording and consistency of migration messages, migration warnings also print the version in which the change occurred now. Partially fixes SI-4990.
* / Restructed Enumeration a little.Paul Phillips2011-12-071-21/+14
|/ | | | | | Nobody should be deprecating methods without ensuring that the implementation doesn't rely on their existence (and the documentation doesn't still suggest using them.) Made it more internally consistent.
* Merge branch 'master' of /scala/trunk into developPaul Phillips2011-12-061-0/+5
|\
| * Gave Option its own nonEmpty.Paul Phillips2011-12-061-0/+5
| | | | | | | | | | A bit further down Option's slippery slope of collections methods, but those sudden implicit conversions to Iterable are legitimately annoying.
* | Fix documentation stutters.Blair Zajac2011-12-065-5/+5
|/
* Update scaladoc links to collections overview.Josh Marcus2011-12-0628-38/+34
| | | | | | Change scaladoc links in collection classes to point at re-formatted Collections Overview on docs.scala-lang.org. Fix minor typo: s/Ummutable/Immutable
* Enhanced scaladoc of collection classes with links to the relevant pages of ↵Josh Marcus2011-12-0527-0/+68
| | | | "The Scala 2.8 Collections API" overview.
*-. Merge remote-tracking branches 'kepler/topic/reifyclasses' and ↵Paul Phillips2011-12-041-9/+3
|\ \ | | | | | | | | | 'ijuma/feature/signum' into develop
| | * Delegate to Java's implementation of signum for Long and Int.Ismael Juma2011-12-031-9/+3
| |/ | | | | | | | | | | | | | | The Java implementation is faster as it doesn't have branches. java.lang.Math includes implementations of signum for Double and Float, but I didn't change the ones in scala.math because there is a difference on how negative zero is handled.
* / Add a mnemonic to help remember what's the difference between +:Daniel C. Sobral2011-12-042-0/+8
|/ | | | and :+, plus one for ++:.