| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| | |
|
| |
| |
| |
| | |
This mainly helps performance when comparing keys is expensive.
|
| |
| |
| |
| |
| | |
This avoids unnecessary allocation of Option and Function objects,
mostly helping performance of small trees.
|
| |
| |
| |
| | |
Performance of `to` and `until` is now the same.
|
| |
| |
| |
| | |
Also simplified implementation of span to just use splitAt.
|
| |
| |
| |
| |
| |
| | |
This more clearly separates the new implementation from the now
deprecated abstract class RedBlack and avoids naming conflicts
for the member classes.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The class is marked as deprecated and no longer used by the TreeMap/TreeSet
implementation but is restored in case it was used by anyone else (since
it was not marked as private to the Scala collection library).
Renamed RedBlack.{Tree,RedTree,BlackTree} to Node, RedNode, and BlackNode
to work around name clash with RedBlack class.
|
| |
| |
| |
| |
| |
| | |
These methods were used by the old RedBlack tree implementation,
but are no longer required and were not defined in any interface.
Use ordering or compare instead.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
on pattern matching for updating the tree.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
already does so).
|
| |
| |
| |
| |
| | |
Use ArrayStack instead of Stack in TreeIterator for slightly increased
performance.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
type parameter A.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
changes the operation from O(n log n) to O(n) and allows for more
structural sharing.
|
| |
| |
| |
| |
| |
| | |
TreeMap/TreeSet by splitting the underlying RedBlack tree. This
makes the operation O(log n) instead of O(n) and allows more
structural sharing.
|
| |
| |
| |
| |
| | |
to ensure TreeSet/TreeMap 'range' operations are O(log n) instead
of O(n).
|
| | |
|
| |
| |
| |
| | |
TreeMap/TreeSet.
|
| |
| |
| |
| | |
performance is much better than '++' based iterator.
|
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | | |
| \ | |
| \ | |
| \ | |
|\ \ \ \
| | | | |
| | | | |
| | | | | |
'szabolcsberecz/synchronized-test' and 'non/si-5005-2' into develop
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Previously, the specialize phase removed FINAL from all specialized
methods, but left the @inline annotation alone, causing warnings. This
patch does two things:
1. It only removes final from the original class' methods which are
overridden, while leaving it on the specialized subclasses' methods.
2. When removing final, it also removes @inline, to prevent spurious
warnings.
This was intended to fix SI-5005, however there are deeper problems
which prevent inlining from working even with this fixed.
|
| | |/ /
| |/| |
| | | |
| | | | |
This fix was previously only applied to hash sets.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Document the stream closing requisite on ProcessIO, document a few stream
closing semantics on BasicIO, and then take advantage of my newly-found knowledge
and go on a rampage all over sys.process.
Also make two methods that were implemented but not present in the public API
visible.
|
| |/ /
|/| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This closes most file descriptor leaks in sys.process through
the simple expedient of making sure every InputStream being read
by BasicIO is closed once there's nothing more to read.
A single file descriptor leak would remain for the OutputStream
(that is, that process stdin) of each Process, which is closed after the
InputStream being read to feed it is closed. Special care is taken
not to close the calling process stdin.
Fix an additional non-reported by where sending data to a process
that had already terminated would result in an exception being thrown.
File descriptors can still leak in some conditions that must be
handled by user code. Documentation to that effect will follow.
Closes SI-5439.
|
|\ \ \ |
|
| | \ \ | |
| | \ \ | |
| |\ \ \ \
| | | | | |
| | | | | |
| | | | | | |
and 'scalamacros/pullrequest/multilineinterpolation' into develop
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Previously toolboxes used to typecheck their inputs before compiling.
Actually, the initial demo by Martin first typechecked the reified tree,
then ran it, which typechecked it again, and only then launched the
reflective compiler.
However, as observed in https://issues.scala-lang.org/browse/SI-5464
current implementation of typechecking is not always idempotent.
That's why we cannot allow inputs of toolboxes to be typechecked,
at least not until the aforementioned issue is closed.
This is not only a convention but also a check inside compileExpr.
|
| | |/ / / |
|
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit 2b731911e97a281e324060099631e2374b2144ec.
|
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit a725bf982c06e16c5d533ea6b2227b726db4f7e4.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit 0d315d652ae34e1c4cf1098cc753a43d4862e362.
I forgot Code had a big warning label saying "don't use me."
|
|/ / / /
| | | |
| | | |
| | | |
| | | | |
There's a deprecation process to follow before removing stuff.
scala.reflect.Code isn't even deprecated in 2.9.1.
|
| | | | |
|