summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* SI-7261 Implicit conversion of BooleanSetting to Boolean and BooleanFlagSom Snytt2013-03-2793-244/+244
| | | | | | | This commit shortens expressions of the form `if (settings.debug.value)` to `if (settings.debug)` for various settings. Rarely, the setting is supplied as a method argument. The conversion is not employed in simple definitions where the Boolean type would have to be specified.
* SI-7261 Implicit conversion of BooleanSetting to Boolean and BooleanFlagSom Snytt2013-03-272-0/+7
| | | | | This allows a more compact expression `if (settings.debug)` instead of `if (settings.debug.value)` and similarly `render(..., printIds = settings.uniqid, ...)`.
* Merge pull request #2325 from retronym/ticket/7186-2Paul Phillips2013-03-271-6/+14
|\ | | | | SI-7186 Slim down some TypeRefs by 8 bytes.
| * SI-7186 Slim down some TypeRefs by 8 bytes.Jason Zaugg2013-03-271-6/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By virtue of being defined in object TypeRef, they had two outer pointers. $outer scala.reflect.internal.Types$TypeRef$ $outer scala.tools.nsc.Global This commit moves them out of that object. They also now are no longer shrouded in anonymity, which is pleasant when debugging and profiling. The shallow size leaderboard now looks like: Class % Shallow % Objects Size ----------------------------------------- 1. :: 14% 25% 2. char[] 10% a 5% 3. ClassArgsTypeRef 6% 5% 4. Object[] 6% b 1% 5. TypeHistory 5% 6% 6. AbstractTypeSymbol 4% 2% 7. AbsractNoArgsTypeRef 3% 2% 8. j.l.Class 3% 2% 9. TermSymbol 2% 1% 10. HashEntry 1% c 1% a) 6% of the char[] by size is the name table. Retained source code seems to be sizable => should we discard after parsing? b) Types.uniques c) ZipArchive#DirEntry.entries Confirmation of the slimmer size can be seen in: https://github.com/retronym/scala/compare/ticket/7186 In that branch, I introduced infrastructure to query JVM object size in instrumented tests, and the diff shows: size class instance ======================================================================== - 64 bytes internal.Types$TypeRef$$anon$5 List[Int] - 64 bytes internal.Types$TypeRef$$anon$6 String + 56 bytes nternal.Types$ClassArgsTypeRef List[Int] + 56 bytes ernal.Types$ClassNoArgsTypeRef String I chose not to bring that test infrastructure across to master so as not to burden us with brittle tests built on esoteric facilities. This does not close the ticket which proposes a different space optimization which is also explored in that branch, but no a clear cut improvement.
* | Merge pull request #2289 from paulp/pr/name-logicPaul Phillips2013-03-2724-200/+216
|\ \ | |/ |/| Name logic consistency
| * Overhauled local/getter/setter name logic.Paul Phillips2013-03-2524-200/+216
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sifted through extraneous methods trying to find consistency, consolidating and deprecating as I went. The original motivation for all this was the restoration of LOCAL_SUFFIX to originalName, because: It looks like in an attempt to make originalName print consistently with decodedName, I went a little too far and stripped invisible trailing spaces from originalName. This meant outer fields would have an originalName of '$outer' instead of '$outer ', which in turn could have caused them to be mis-recognized as outer accessors, because the logic of outerSource hinges upon "originalName == nme.OUTER". I don't know if this affected anything - I noticed it by inspection, improbably enough. Deprecated originalName - original, compared to what? - in favor of unexpandedName, which has a more obvious complement. Introduced string_== for the many spots where people have given up and are comparing string representations of names. A light dusting of types is still better than nothing. Editoral note: LOCAL_SUFFIX is the worst. Significant trailing whitespace! It's a time bomb.
* | Merge pull request #2311 from retronym/topic/repl-intellijAdriaan Moors2013-03-272-0/+26
|\ \ | | | | | | An IntelliJ Module for the recently modularized REPL.
| * | An IntelliJ Module for the recently modularized REPL.Jason Zaugg2013-03-252-0/+26
| |/
* | Merge pull request #2290 from adriaanm/build-cleanup-squashedAdriaan Moors2013-03-253-2157/+1262
|\ \ | | | | | | Sanity for build.xml: exscriptus&positus delendus est.
| * | Merge master.Adriaan Moors2013-03-25158-1066/+2185
| |\|
| * | Merge 2.10.x into masterAdriaan Moors2013-03-254-2150/+1265
| |\ \ | | | | | | | | | | | | | | | | | | | | Merges the relevant part of #2295 (build.xml cleanup), with the relevant differences in build.xml carried forward, as well as a fix in interactive/RangePositions for the sbt interface.
| | * | Allow getting STARR via maven, also: locker.skipAdriaan Moors2013-03-231-5/+35
| | | | | | | | | | | | | | | | | | | | Use `ant -Dstarr.version="2.11.0-M2" -Dlocker.skip=YESSIR`, to build quick using 2.11.0-M2 (skipping locker, using starr instead).
| | * | Use stage/project for taskname instead of scalacforkAdriaan Moors2013-03-231-2/+2
| | | |
| | * | Sanity for build.xml: exscriptus&positus delendus est.Adriaan Moors2013-03-234-2440/+1300
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reduced copy/pasting to the best of my antabilities. The next person to duplicate anything without written permission will be sentenced to a week in xmhell. While I was at it, made sure that layering is respected. The quick phase exclusively uses the locker compiler for building. The jar task will fail when trying to create an empty jar. Replaced the crazy if/unless/depends constructs by if/then/else. Version suffix computation should now be comprehensible. I threw in some validation to make sure the various suffixes are consistent. Also, no more init/pre-foo tasks unless absolutely necessary. Introduced a couple of macros to capture the essence of staged compilation. Notes: - remove lib.extra, standardize on aux.libs - collapse *.javac.path and *.build.path - rename starr.classpath to starr.compiler.path - only repl needs jline, locker.compiler.path = locker.comp.build.path + forkjoin - more uniform build.paths (compiler = reflect + library) - uniformity means slightly bigger classpaths (e.g. forkjoin is only used in library, but inherited by compiler) - pruned: some spurious dependencies removed - compilerpathref = compiler build path - silence test.osgi, by hook or by crook - centralized clean tasks - reduce duplication in property usage - fix pack.xml to pack scaladoc/partest instead of scaladoc/scala-partest - TODO: -XDignore.symbol.file necessary for library? only needed for forkjoin? - document usage from jenkins, fix typo: partest.scalac*_*opts New targets: - quick-opt - strap-opt - test.bc - test.osgi - test.osgi.comp - test.osgi.init - test.stability-opt Removed/replaced targets: - asm.clean asm.lib asm.start - bc.run - dist.latest dist.latest.unix dist.latest.win dist.start - docs.all docs.manmaker docs.pre-comp docs.pre-continuations-plugin - docs.pre-jline docs.pre-lib docs.pre-man docs.pre-partest docs.pre-scalap - forkjoin.clean forkjoin.lib forkjoin.pack forkjoin.start - graph.clean - init.build.nopatch.release init.build.patch.release init.build.release - init.build.snapshot init.build.suffix.done init.extra.tasks - init.fail.bad.jdk init.hasbuildnum init.hasmavensuffix init.jars - init.jars.check init.maven.jars init.maven.tasks init.osgi.suffix - init.osgi.suffix.final init.osgi.suffix.snapshot init.testjava6 - init.version.done init.version.git init.version.release init.version.snapshot - init.warn.jdk7 locker.pre-comp locker.pre-lib locker.pre-reflect - locker.unlock.comp locker.unlock.lib locker.unlock.pre-comp - locker.unlock.pre-lib locker.unlock.pre-reflect locker.unlock.reflect - osgi.clean osgi.test osgi.test.comp osgi.test.init - pack.clean pack.pre-bin pack.pre-comp pack.pre-lib pack.pre-partest - pack.pre-plugins pack.pre-reflect pack.pre-scalap pack.start - palo.comp palo.lib palo.pre-bin palo.pre-comp palo.pre-lib palo.pre-reflect - palo.reflect palo.start quick.pre-bin - quick.pre-comp quick.pre-interactive quick.pre-lib quick.pre-partest - quick.pre-plugins quick.pre-reflect quick.pre-repl quick.pre-scalacheck - quick.pre-scaladoc quick.pre-scalap - sbt.clean sbt.compile sbt.done sbt.libs sbt.start - starr.clean - strap.clean strap.pre-comp strap.pre-lib strap.pre-reflect strap.start - test.debug test.pre-run
* | | | Merge pull request #2299 from retronym/ticket/7294Paul Phillips2013-03-2534-8/+60
|\ \ \ \ | |_|_|/ |/| | | SI-7294 Towards finality for TupleN
| * | | Cleanup obsolete options in CodeGen.Jason Zaugg2013-03-242-5/+1
| | | |
| * | | SI-7294 Deprecate inheritance from TupleN.Jason Zaugg2013-03-2427-1/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The motivation is to provide static warnings in cases like: scala> (1, 2) match { case Seq() => 0; case _ => 1 } res9: Int = 1
| * | | SI-7294 Treat TupleN as final under -XfutureJason Zaugg2013-03-245-2/+27
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For the purposes of checkability warnings. This will warn in case of: scala> (1, 2) match { case Seq() => 0; case _ => 1 } res9: Int = 1 Given how often Tuples are used as scrutinees, this is a highly desirable place to warn. I was orginally going to unlock this under -Xlint, and could be easily convinced to go that way, given that -Xfuture is a less popular option.
* | | Merge pull request #2285 from vigdorchik/silence_scaladocPaul Phillips2013-03-2362-527/+511
|\ \ \ | | | | | | | | Remove unrecognized doc comments
| * | | Doc -> C-style comments for local symbols to avoid "discardingEugene Vigdorchik2013-03-2162-528/+512
| | | | | | | | | | | | | | | | | | | | unmoored doc comment" warning when building distribution for scala itself.
* | | | Merge pull request #2265 from rjolly/scripting9Paul Phillips2013-03-235-9/+79
|\ \ \ \ | | | | | | | | | | script engine : better binding mechanism + reflexive access through bound variable "engine"
| * | | | The script engine is given a better binding mechanism and reflexive accessRaphael Jolly2013-03-223-4/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Better binding mecanism : formerly done through the default SimpleBindings shipped with the API, it now goes through a custom IBindings class which uses the bind method of the interpreter instead of simply making the bindings available as a Map. Reflexive access : the script engine is made available to itself through a bound variable "engine" of type javax.script.ScriptEngine. This will allow "variable injection" i.e. programmatic redefinition of variables, among others.
| * | | | Bypass determination of protection domain when resource is not in a jarRaphael Jolly2013-03-222-5/+11
| | | | |
* | | | | Merge pull request #2260 from som-snytt/issue/5717-assert-pkgdirPaul Phillips2013-03-233-28/+54
|\ \ \ \ \ | | | | | | | | | | | | SI-5717 error when bytecode cannot be written
| * | | | | SI-5717 error when bytecode cannot be writtenSom Snytt2013-03-223-28/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If there's an existing file foo when emitting a class file for foo.Bar, then emit an error at foo.Bar, similar to what javac does. The error message looks something like: foo.scala:4: error: error writing object Foo: ./mypkg/Foo.class: ./mypkg is not a directory
* | | | | | Merge pull request #2259 from Blaisorblade/issue/6123-try-3Paul Phillips2013-03-229-6/+53
|\ \ \ \ \ \ | |_|/ / / / |/| | | | | SI-6123: -explaintypes should not explain errors which won't be reported, new attempt
| * | | | | Add positive and negative testcases for SI-6123 (-explaintypes)Paolo G. Giarrusso2013-03-157-0/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Positive testcases compile reduced known offenders to verify that no output is produced. The negative testcase tests that -explaintypes actually produces output on code which fails to compile. I have altered an existing testcase, `test/files/neg/abstract`, adding -explaintypes to the flags. This testcase is currently mostly ineffective, as partest currently ignores the standard output (SI-7003). It will become more effective when SI-7003 is fixed. But already now, testers would at least be able to notice extraneous output. This argument is somewhat bogus, but this patch is no worse than the other ones which are committed while SI-7003 is open.
| * | | | | SI-6123: -explaintypes should not explain errors which won't be reportedPaolo G. Giarrusso2013-03-152-6/+8
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -explainTypes means that only type tests which *fail* should be reported in more detail by using explainTypes. Hence, callers of explainTypes should check if type errors are being ignored, by checking context.reportErrors. Hence, this check is added to Inferencer, and another call site is redirected to that method. Moreover, explainTypes should only be called if an error exists. Enforce that in checkSubType, and remove spurious home-made explainTypes output. Finally, in ContextErrors, stop checking `settings.explaintypes.value` before calling `explainTypes` which will check it again. Note that this patch does not fix all occurrences, but only the ones which showed up during debugging. The other ones never cause problems, maybe because they occur when contextErrors is in fact guaranteed to be true. We might want to fix those ones anyway. This fixes regressions in c800d1fec5241ed8c29e5af30465856f9b583246 and 78f9ef3906c78413ff8835fdad3849bfe5516be2. Thanks to hubertp (Hubert Plociniczak) for the first round of review. Refs #6123 backport to _2.10.x_
* | | | | Merge pull request #2287 from vigdorchik/ticket/si-7102James Iry2013-03-222-0/+15
|\ \ \ \ \ | | | | | | | | | | | | SI-7102 Override isEmpty for bitsets with an efficient implementation
| * | | | | SI-7102 Specialize isEmpty for bitsetsEugene Vigdorchik2013-03-212-0/+15
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently bitsets use default isEmpty implementation inherited from Set, which tests for "size == 0". Calculating the size of a word in a bitmap requires summing through all bits set, whereas testing for emptyness needs only one comparison with zero. This commit overrides the default implementation with the specialized one looking for a non-zero word in this bitmap.
* | | | | Merge pull request #2239 from paulp/pr/warningsAdriaan Moors2013-03-2148-164/+155
|\ \ \ \ \ | |/ / / / |/| | | | Warnings removal and other cleanup.
| * | | | Removed dead src directory.Paul Phillips2013-03-121-1/+0
| | | | | | | | | | | | | | | | | | | | One line of commentary referenced from nowhere can't be very useful.
| * | | | Eliminate a bunch of -Xlint warnings.Paul Phillips2013-03-1243-162/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mostly unused private code, unused imports, and points where an extra pair of parentheses is necessary for scalac to have confidence in our intentions.
| * | | | Warn about forgotten string interpolators.Paul Phillips2013-03-125-1/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the compiler sources this arrives with a number of false positives, because we frequently work with strings containing $foo where foo is an in-scope identifier. I think in normal source code this will be less of a problem, or none at all; but to be conservative the warning is born under -Xlint.
* | | | | Merge pull request #2262 from mesagie/patch-4James Iry2013-03-201-5/+4
|\ \ \ \ \ | | | | | | | | | | | | removed a redundant var in JavaWriter.flagsToStr
| * | | | | removed a redundant var in JavaWriter.flagsToStrSagie Davidovich2013-03-151-5/+4
| | | | | | | | | | | | | | | | | | the variable x was assigned to, but was never used.
* | | | | | Merge pull request #2251 from soc/SI-7236James Iry2013-03-202-14/+14
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-7236 Deprecate ThreadPoolTaskSupport and friends
| * | | | | | SI-7236 Deprecate ThreadPoolTaskSupport and friendsSimon Ochsenreither2013-03-132-14/+14
| | | | | | |
* | | | | | | Merge pull request #2235 from vigdorchik/si_5513James Iry2013-03-203-1/+77
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-5513: add inplace set-theoretic operations for mutable bitsets.
| * | | | | | | SI-5513: add inplace set-theoretic operations for mutable bitsets.Eugene Vigdorchik2013-03-113-1/+77
| | | | | | | |
* | | | | | | | Merge pull request #2219 from chuvoks/rbtRebalanceJames Iry2013-03-201-24/+45
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Optimize RedBlackTree rebalance method by using null optimized list implementation.
| * | | | | | | | Optimize rebalance method by using null optimized list implementation.Juha Heljoranta2013-03-131-24/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rebalance method relies heavily on s.c.i.List. By replacing List with null optimized version, NList, rebalance operation is significantly more faster. Test indicate +10 % performance improvement for tree sizes >= 100. Existing tests verify red-black tree invariants, including operations involving tree rebalance.
* | | | | | | | | Merge pull request #2244 from paulp/pr/notNullAdriaan Moors2013-03-1725-228/+137
|\ \ \ \ \ \ \ \ \ | |_|_|_|/ / / / / |/| | | | | | | | SI-7247, deprecate NotNull.
| * | | | | | | | Eliminated containsNull.Paul Phillips2013-03-133-81/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was a little trickier than the previous. I introduced a new method 'isBottomSubClass' which is the obvious complement to the beloved 'isNonBottomSubClass'. In eliminating the two call sites of containsNull I might have overshot the mark a bit when I rewrote fourthTry and thirdTryRef, but who is going to argue with such beauty as this.
| * | | | | | | | Completely remove isNotNull/notNull.Paul Phillips2013-03-131-19/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Restarted the Zamboni and collected these as well. Author was convinced by reviewer that clinging to isNotNull like Linus's security blanket will not help us with landing a picture of the Great Pumpkin. YAGNI, Charlie Brown.
| * | | | | | | | SI-7247, deprecated NotNull.Paul Phillips2013-03-1310-29/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removed NotNull from tests and the parentage of AnyVal. Removed the tests which were actually testing anything to do with NotNull; massaged the others to forget NotNull and/or not to name local things NotNull.
| * | | | | | | | Remove -Xcheck-null setting.Paul Phillips2013-03-135-47/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Maybe this was useful in some way; but no way I ever saw. I have comments which tell me this is exposed in the IDE so I left a stub. I also removed mkCheckInit. That probably sounds like it's related to -Xcheckinit. Guess again, guy-who-thinks-names-mean-things. It was only used by -Xcheck-null.
| * | | | | | | | Removed -Ynotnull setting.Paul Phillips2013-03-1312-68/+25
| | |_|_|_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It never worked and it would periodically jump out and bite someone. Slash and burn so new plants can take root. Eliminated NotNullType and NotNullClass, internal elements. Removed notNull method on Type, which no longer has a purpose. Retained 'def isNotNull' because there are types which are known by construction not to be null (ThisType, ConstantType as long as the constant isn't null, etc.) and that's still useful to know.
* | | | | | | | Merge pull request #2214 from JamesIry/master_constant_optimizationJames Iry2013-03-1516-15/+825
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | Analyze constants to remove unnecessary branches
| * | | | | | | Cleanup of constant optimizationJames Iry2013-03-147-144/+245
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit cleans up constant optimization from the review of https://github.com/scala/scala/pull/2214 . * drops are done using the instruction's consumed count rather than a numeric literal * drops are moved into one common method in the main instruction interpreter * One instance of x.length > y.length is replaced with x.lengthCompare(y.length) > 0 * NaN is dealt with by treating it as an UNKNOWN * A test is added to make sure NaN semantics aren't broken. * The constant-optmization test is improved with tests for switch statements