aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Performance improvement: Cache uninstatiated typevars in constraintsMartin Odersky2014-02-212-17/+19
| | | | | | | Pro: Much faster to iterate through uninstantiated type variables Con: Constraints can no longer be value classes. Still this seems to give a net win of ~2%.
* Caching of implicit membersMartin Odersky2014-02-211-7/+11
| | | | Also, some streamlining in the way memberNames are computed.
* Performance improvement: Special-case implementation of underlyingIfRepeatedMartin Odersky2014-02-211-2/+6
|
* Peformance improvement: Better basetype cachingMartin Odersky2014-02-211-4/+4
| | | | Now first checks in cache before going into special case for static classes (derivesFrom on types is not free!)
* Performance tuning: Inline TypeAlias case for hot maps.Martin Odersky2014-02-214-42/+73
|
* Bug fix: fix of typo in secondTryMartin Odersky2014-02-211-1/+1
|
* Bug fix: Logic for taking variance into account for TypeBounds comparisons ↵Martin Odersky2014-02-211-6/+3
| | | | was broken.
* Bug fix: newSyntheticTypeParam did not incorporate paramFlagsMartin Odersky2014-02-211-1/+1
|
* Reverted: Avoid using TypeBounds in alias refinements.Martin Odersky2014-02-2110-178/+75
| | | | The idea is to use the alias itself. This cuts down on # of typebounds created and makes operations on refined infos and applied types more direct. (reverted from commit 81f31f9b71bc4466d3f04f5ce28ef94051688ecd)
* Performance improvement: Replace == with equals in util.HashTableMartin Odersky2014-02-211-3/+3
|
* Drop unique hashing for superId bitsetsMartin Odersky2014-02-212-8/+1
| | | | Reason: (1) There are few sets: When compiling doty itself, 1.2K sets total, hashed to 500 uniques. (2) Bitset comparison is expensive because it relies on a double inclusion test. (This should be fixed in the Scala stdlib).
* Performance improvement in LRUCacheMartin Odersky2014-02-211-2/+2
| | | | Use eq for key comparisons in LRUCache.
* Performance improvement: inline hasAltWithMartin Odersky2014-02-212-2/+11
| | | | Gives us ~1%, it seems.
* Avoid using TypeBounds in alias refinements.Martin Odersky2014-02-2110-75/+178
| | | | The idea is to use the alias itself. This cuts down on # of typebounds created and makes operations on refined infos and applied types more direct.
* Disentangling SelectionProto and RefinedTypeMartin Odersky2014-02-214-35/+30
| | | | There were too many problems caused by it, and too little gained. So, now SelectionProto is no longer a Subtype of RefinedType.
* Some small doc changesMartin Odersky2014-02-162-1/+10
|
* Avoid forming And/Or types with equal operands.Martin Odersky2014-02-142-10/+12
| | | | This can happen in particular in derivedAnd/Or type, when applying a substitution or other mapping which identifies two types that were different before.
* Streamlined treatment of ThisType in subtype checks.Martin Odersky2014-02-141-28/+13
|
* Two performance optimizationsMartin Odersky2014-02-136-57/+71
| | | | | 1) Split out wildApprox into separate function 2) Be more careful not to follow static prefix chains where not needed
* Some changes in the interest of speedups.Martin Odersky2014-02-129-73/+89
|
* Fixed a bug in LRUcache which prevented sizes >= 8.Martin Odersky2014-02-123-3/+6
|
* Wrapped up definition of attachments.Martin Odersky2014-02-112-41/+68
|
* COnverted symOfTree and expandedTree to attachments.Martin Odersky2014-02-113-18/+30
|
* New scheme for attachments.Martin Odersky2014-02-1117-27/+114
| | | | | | | Added general way to put attachments on some base type (which needs to inherit from Attachment.Container). Used it to turn typedTree map into an attachment. Also, moved DotClass to dotc.util.
* Merge branch 'wip/bring-forward': Incremental compilationMartin Odersky2014-02-1010-1337/+171
|\ | | | | | | | | 1) Make definitions load symbols in current run 2) Change handling of invalid parents. Instead of a copied denotation, we now invalidate the caches of the existing one. (Copying was not enough, as old versions of denotations kept leaking in).
| * New scheme for incremental invalidation of parents.Martin Odersky2014-02-106-74/+87
| |
| * Make Definitions load all symbols in current runId.Martin Odersky2014-02-106-1287/+61
| |
| * WIP: Fixes to bring symbols forwardMartin Odersky2014-02-093-20/+64
|/
* Get rid of CompleteInCreationContextMartin Odersky2014-02-092-8/+5
| | | | The only remaining completers that complete in creation context are the source completers defined in Namers. So a separate abstraction is no longer needed.
* Symbol loaders no longer complete with creation contextMartin Odersky2014-02-098-197/+189
| | | | | | Instead current ctx is passed through everywhere. Question: can we factor out ctx better?
* Getting rid of some CompleInCreationContextsMartin Odersky2014-02-094-17/+16
|
* Making completer take an implicit contextMartin Odersky2014-02-0911-71/+97
| | | | | | | As a first step, we make the complete method in LazyType take an implicit context parameter. This requires a fairly large propagation of implicit contexts. The implicit parameter is ignored for classes inheriting from CompleteInCreationContext (which until now are all completers). The next step will be to make the complete methods of selective lazy types take the current context, rather than the creation context.
* Fix for creating right number of compilers in BenchMartin Odersky2014-02-091-3/+1
|
* Move maxConstraint computation to RunInfo to avoid references to stale symbols.Martin Odersky2014-02-093-11/+12
|
* Skolems are permanent, but not packages.Martin Odersky2014-02-091-3/+5
|
* Generalize test infrastructureMartin Odersky2014-02-071-7/+11
| | | | Compiler tests can now be run with configurable number of compilers and runs in a compiler.
* Invalidate companions after indexing.Martin Odersky2014-02-071-13/+10
| | | | Invalidating them before indexing means symbols are touched before a new version is entered, which leads to "compiled twice" errors.
* Replace open package module logic by special member lookups in a package class.Martin Odersky2014-02-073-46/+52
| | | | Rather than fiddling with scopes, which can lead to race conditions, we now special case member lookup and mamber name filters in ClassDenotations that represent packages.
* Make skolems live forever...Martin Odersky2014-02-061-1/+1
| | | | ... because there's no way to reload them in a new run.
* Catch stale referencesMartin Odersky2014-02-063-7/+10
| | | | If a NamedType was denoted a SymDenotation one run, but stops being defined in the next, throw a staleSymbol error.
* Checking for already existing symbols before creating new ones.Martin Odersky2014-02-064-14/+25
| | | | | Otherwise we get spurious "compiled twice" errors on every symbol defined in a run after the first one. Also, fixed a bug so that now run ids are correctly incremented.
* Fix bug for reading type arguments in ClassfileParserMartin Odersky2014-02-065-10/+13
|
* Commenting out unused alternative isSubType implementation.Martin Odersky2014-02-031-281/+283
|
* Dropping eligibility of conforms as an implicit conversion.Martin Odersky2014-02-031-8/+3
| | | | "conforms" is no longer special-cased to be eligible as a implicit conversion. Only implicit methods are eligible, whereas conforms is an implicit value with an apply method. So far, "conforms" as an implicit conversion masked in effect some type inference bugs. With the previous two commits, it is no longer necessary because two type inference bugs got fixed.
* Fine-tuning contexts for resolve overloadingMartin Odersky2014-02-031-1/+1
| | | | When resolving overloading with a fun proto type, we need to evaluate the arguments in the current context, not in an exploring context. Reason: The argument types might contain type valiables that are constrained in the context and that needs to be maintained.
* More robust constant foldingMartin Odersky2014-02-031-2/+7
| | | | Can now also convert a constant to a type that's lower-bounded by a primitive numeric type.
* New benchmark class that allows tuning for #compilers and #runsMartin Odersky2014-02-032-7/+15
| | | | | | | | by command line options like #compilers 3 #runs 10 This would create one after another 3 compiler instances and perform 10 runs in each.
* Fix problems with TypeVar instantiationMartin Odersky2014-02-033-10/+13
| | | | | 1) Simplify skipped one level over arguments of AndType/OrType. 2) variances needs to follow instantiated typevars
* Optimize subtype test between refined types with multiple refinementsMartin Odersky2014-02-032-8/+84
| | | | We now pair refinedInfos with the same name as deeply as wek can (before only went to depth 1).
* Relaxing check that implicits must have explicit return typeMartin Odersky2014-02-027-10/+10
| | | | | | Now this is required only for members of a template. Local statements can still have implicits with no result type. (Maybe we need to get back on this). Also, changed Dotty itself and tests to adhere to the new restriction.