| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
takes place.
A major redesign that unifies the various different approaches to boxing of free variables. Free variables are marked with CAPTURED and eliminated by LambdaLift. I also added some hooks in MacroContext that a reifier needs to use.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Was going straight to the field and bypassing the null guard.
Closes SI-5300.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Seeing about getting delayedInit working (not to mention the
breakage it is inflicting elsewhere) which led me into Cleanup
and some of its buddies.
|
| |_|/ / /
|/| | | |
| | | | |
| | | | | |
Closes SI-3758.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Making -Xcheckinit happy. Then cleaned up the anyval and
phantom type manifests once in the neighborhood.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Several large helpings of tedium later, fewer strings are being
discarded like so much refuse. Some names now cache a String, but only
"named Names", so it's not very many and they pay for themselves pretty
quickly. Many fewer name-related implicit conversions now taking place.
A number of efficiency related measures.
|
|/ / / /
| | | |
| | | |
| | | | |
Another salvo in the war against option2Iterable.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
A message is emitted when a reflective call is generated. We
can now be eager consumers of this since we purged all the reflective
calls at some point -- but without a backstop, they have been
slipping back in.
|
|/ / /
| | |
| | |
| | |
| | |
| | | |
takes place.
A major redesign that unifies the various different approaches to boxing of free variables. Free variables are marked with CAPTURED and eliminated by LambdaLift. I also added some hooks in MacroContext that a reifier needs to use.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Custom versions of collections which methods which operate on 2 or 3
collections. Eliminated most users of zip/zipped. Cleaned up the kinds
checking code somewhat. Reduced the number of silent typechecks
being performed at named argument sites.
|
| | |
| | |
| | |
| | | |
Eliminated a bunch of unnecessary array expense.
|
| | |
| | |
| | |
| | |
| | | |
Attempting to make the repl find it based on fewer clues so
all can enjoy the javap goodness.
|
| | | | |
| \ \ | |
| \ \ | |
| \ \ | |
|\ \ \ \ \
| | | |/ /
| | |/| |
| | | | | |
'kepler/topic/reifyclosuretests', 'kepler/topic/antscalacheck', 'szabolcsberecz/SI-5104', 'kepler/ticket/5334' and 'kepler/topic/miscfixes' into develop
|
| | |/ / |
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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()
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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¬hing, 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)
|
|\ \
| | |
| | |
| | | |
'jsuereth/fix-5053-view-unzip' into develop
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* Added unzip and unzip3 to TraversableViewLike
* Added partest tests for unzip on views returning specific collection types.
Closes SI-5053
Review by @paulp
|
| | |
| | |
| | |
| | |
| | | |
Deprecated since 2.8.0 but causing far too much inconvenience
by not being present.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| |\ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Copy the documentation from Map#withDefault() that get(), contains(),
iterator(), and keys() keys are not affected by withDefaultValue().
|
| | | |
| | | |
| | | |
| | | | |
To get the same benefit as in Range. Review by @prokpec.
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | | |
| \ | |
| \ | |
| \ | |
|\ \ \|
| | | |
| | | |
| | | | |
'fedgehog/docs_fix_for_scala.Either.cond___SI-5113' and 'kepler/ticket/5266' into develop
|
| | |/ |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|/
|
|
|
|
| |
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.
|
|\ |
|
| |
| |
| |
| |
| | |
A bit further down Option's slippery slope of collections methods, but
those sudden implicit conversions to Iterable are legitimately annoying.
|
|/ |
|
|
|
|
|
|
| |
Change scaladoc links in collection classes to point at re-formatted
Collections Overview on docs.scala-lang.org. Fix minor typo:
s/Ummutable/Immutable
|
|
|
|
| |
"The Scala 2.8 Collections API" overview.
|
|\ \
| | |
| | |
| | | |
'ijuma/feature/signum' into develop
|
| |/
| |
| |
| |
| |
| |
| |
| | |
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.
|
|/
|
|
| |
and :+, plus one for ++:.
|
|\ \ \ \
| | | | |
| | | | |
| | | | | |
'dcsobral/parserFilter', 'soc/library-range-sum', 'szeiger/feature/enumeration-valueset', 'szeiger/issue/5117' and 'jsuereth/pull-binary-error-message' into develop
|
| | | | |
| | | | |
| | | | |
| | | | | |
Closes SI-5117.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- Make Enumeration.ValueSet a SortedSet and back it by a BitSet
- Add toBitMask and fromBitMask methods for value sets
- Add an Ordering for the values
- Deprecate names seq in the Enumeration constructor
- Add + method to Value for easy ValueSet creation
|
| | |/ /
| | | |
| | | |
| | | | |
Partially fixes SI-4658. NumericRange stays slow, thanks to the brilliant idea that Numeric doesn't need a division operation.
|
| | |/
| |/|
| | |
| | |
| | |
| | |
| | | |
Complement map and flatMap when used in for comprehensions. This is
required when pattern matching is used on the result of the generators.
It is implemented through a new filterWithError method on ParseResult.
|
|/ /
| |
| |
| | |
Can be used to reliably override the default no success messages.
|
|/
|
|
|
| |
Using java.lang.Long.bitCount for the size computation is a lot faster
than the previous Scala implementation. Closes SI-2196.
|
|\ \
| | |
| | |
| | | |
into develop
|
| |/ |
|
|/ |
|
|\ \
| | |
| | |
| | | |
'remotes/odersky/topic/reify', 'remotes/robinst/master' and 'remotes/szeiger/bitset' into pending
|
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Mutable and immutable BitSets now extend SortedSet, using a fixed
Ordering.Int and an efficient bit mask based rangeImpl()
- fromArray methods in both implementations are deprecated in favor of
new fromBitMask and fromBitMaskNoCopy methods
- New toBitMask method for converting bit sets back to Array[Long] bit
masks
- immutable.BitSet uses a more efficient Builder, based on
mutable.BitSet (closes SI-4647)
- Delete scala.tools.nsc.util.BitSet (not used anywhere)
Review by @odersky
|