| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
This makes existsing uses of inline mostly compile.
Todo: Verify that stdlib can be compiled.
Todo: Implement accessors for assignments to priavte variables
Todo: Figure out what to do with accesses to private types.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Drop @dotty.annotation.inline. This will inline all
@inline marked methods in Scala for which a body is known
(i.e. that are either compiled in the same run or have Tasty
trees available).
Option -Yno-inline suppresses inlining. This is needed for
the moment because some @inline methods access private members
or members that are otherwise inaccessible at the call-site.
Also fixes some problems in Inliner
- make sure type arguments to inline calls re fully defined
- don't forget recursive calls in typeMap
- don't forget positions in treeMap
- drop dead code dealing with outer.
|
|
|
|
|
| |
Inlined operations are: Stats.track and all variants
of Reporter.traceIndented.
|
|
|
|
|
|
|
| |
Add @sharable annotation for classes and vals that are presumed
to be safely sharable between threads.
Also: Document CtxLazy.
|
| |
|
|
|
|
| |
Uniques are now cleared after each run. Also, HashSets get a more standard API, without a label, but with configurable load factor.
|
|
|
|
|
|
|
|
| |
To avoid to always create a type before checking its uniqueness we specialize on the three most common categories: RefinedTypes, TypeBounds and NamedTypes.
Each category gets its own uniques map. Hashing is disentangled from Types.
The new treatement seems to give some improvement (2-5%?) but not much.
|
|
|
|
|
|
|
|
|
|
|
| |
Now, PolyTypes, BoundTypes and TypeVars are cached, too. This leads to the following changes:
- unique types table 135K -> 310K
- uncached types 923K -> 0.5K (these are types that are cachable, but contain an uncached part)
- cached type allocs 3420K -> 4322K
- runtime on dotc (24KLOC) 31sec -> 20sec
So, it's a big net win, but we should watch the size of the uniue types table; possibly make it weak.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
They are variables only in certain regions of a pattern, but not in others. E.g. in
nme.CONSTRUCTOR
nme is NOT a variable.
|
|
|
|
| |
… which shows snapshot of the callstack of tracked operations at fixed intervals.
|
|
|