summaryrefslogtreecommitdiff
path: root/src/library
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #5100 from lrytz/unitBoxLukas Rytz2016-04-201-2/+2
|\ | | | | SI-6710 / PR 5072 follow-up: fix Unit.box / Unit.unbox
| * SI-6710 / PR 5072 follow-up: fix Unit.box / Unit.unboxLukas Rytz2016-04-201-2/+2
| | | | | | | | | | | | | | The backend replaces .box / .unbox methods by corresponding invocations to BoxesRunTime, but not for Unit. This commit restores the body of `Unit.box` and `Unit.unbox`.
* | Remove the unused scala.runtime.Boxed trait.Sébastien Doeraene2016-04-131-12/+0
| |
* | Remove plain old dead code in ScalaRunTime.Sébastien Doeraene2016-04-131-26/+0
| |
* | Move ScalaRunTime.box to typechecker.Macros.Sébastien Doeraene2016-04-131-13/+0
| | | | | | | | Because it was its only call site.
* | Inline ScalaRunTime.arrayElementClass at call sites.Sébastien Doeraene2016-04-135-23/+10
| | | | | | | | | | | | | | | | | | | | This method was awful. Not only it was using run-time type tests to essentially encode compile-time overloading. But it also did 2 slightly different things for the Class case and ClassTag case. All in all, it is much more readable to inline the appropriate implementation at every call site.
* | Move ScalaRunTime.isAnyVal to reify.phases.Reify.Sébastien Doeraene2016-04-131-5/+0
| | | | | | | | Because that is the only call site of that method.
* | Hide ScalaRunTime.isTuple inside stringOf.Sébastien Doeraene2016-04-131-2/+3
| | | | | | | | Because it is otherwise unused.
* | Remove dead-code runtime hash() methods.Sébastien Doeraene2016-04-132-44/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | ScalaRunTime had a bunch of overloads of the `hash()` method, but only the `Any` version is ever used by the codegen. Worse, their implementation was not in sync with the actual implementations in BoxesRunTime, called by the `Any` version. For example, hash(0x80000000L) != hash(0x80000000L: Any) This commit simply removes all of this dead code. Similarly, we remove BoxesRunTime.hashFromObject(), which was never called either.
* | Inline ArrayRuntime methods in ScalaRunTime.array_clone().Sébastien Doeraene2016-04-132-35/+9
|/ | | | | | | | | | | | | | Support for Array[T].clone() was introduced in 36ef60e68c03bc1c7fd2e910ae7d70d4ec32d3bf. At the time, all calls to array.clone() were redirected to ScalaRunTime.array_clone(), which meant that array_clone() itself could not be implemented in terms of `x.clone()`. A Java binding was necessary. Now, the rewriting to `array_clone()` is only done for unbounded generic arrays. Since all the calls within `array_clone()` are monomorphic arrays, the rewriting is not applied, and the Java binding is unnecessary.
* Delete unnecessary blank linesh0hei2016-04-071-2/+0
|
* Generate AnyVal source stubs from sbtStefan Zeiger2016-04-069-18/+18
| | | | | | | | | | | | The sbt command `generateSources` now generates both the AnyVal sources and the tuple/function sources (previously done by `genprod`). Source generation is part of the sbt build, the `scala.tools.cmd.gen` package is removed from `scala-compiler`. This simplifies bootstrapping. Generated sources are still in the same location and checked into git. The shell scripts `tools/codegen` and `tools/codegen-anyvals` are also removed. The ant build and the build scripts do not call these. Regenerating sources is a manual step at the moment.
* General cleanups and less warnings during a Scala buildsoc2016-04-048-27/+7
|
* SI-6710 Clarify stub methods in primitive value classesLukas Rytz2016-04-019-27/+36
| | | | | | | | | - Replaces the implementations of box/unbox in AnyVal companions by `???`, the methods are only stubs, and the impls did not correspond to the actual behavior. The doc comment already points to the actual implementation in BoxesRunTime. - Replaces the body of `getClass` from `null` to `???` and clarifies in a comment why the overrides exist.
* Merge pull request #5068 from retronym/topic/jdk8ism2v2.12.0-M4Lukas Rytz2016-04-018-51/+20
|\ | | | | Accomodate and exploit new library, lang features JDK 8
| * Use System.lineSeparator, rather than sys.propsJason Zaugg2016-03-293-4/+3
| |
| * Use Java's highestOneBit, rather than our own versions.Jason Zaugg2016-03-291-21/+2
| | | | | | | | | | | | | | | | | | | | | | The original code came from 2008, (a4ace382), at which point we probably couldn't use JDK 1.5+ methods. I haven't changed `unsignedCompare` yet to use the standard library version, as it our version might have different performance characteristics. Background: http://www.drmaciver.com/2008/08/unsigned-comparison-in-javascala/
| * Note the availability of writableStackTrace in JDK 1.7+Jason Zaugg2016-03-291-0/+2
| |
| * SI-7474 Record extra errors in Throwable#suppressedExceptionsJason Zaugg2016-03-291-7/+4
| | | | | | | | | | | | | | ... in parallel collection operations. Followup to bcbe38d18, which did away with the the approach to use a composite exception when more than one error happened.
| * Delegate more primitive comparison to the Java stdlibJason Zaugg2016-03-291-16/+6
| | | | | | | | The API for doing so efficiently was made regular in Java 1.8.
| * Avoid intermediate boxing in BoxesRuntime.hashCodeFromJason Zaugg2016-03-291-3/+3
| | | | | | | | | | By using newly introduced static methods in the Java standard library.
* | Merge pull request #5070 from markus1189/stream-docsLukas Rytz2016-04-011-1/+1
|\ \ | | | | | | Fix typo in the docs for the ++ method of Stream
| * | Fix typo in the docs for the ++ method of StreamMarkus Hauck2016-03-311-1/+1
| | |
* | | Merge pull request #5071 from janekdb/topic/2.12.x-scaladoc-ExceptionsLukas Rytz2016-04-011-7/+13
|\ \ \ | | | | | | | | Add initial unit test for Catch and augment documentation
| * | | Add initial unit test for Catch and augment documentationJanek Bogucki2016-03-311-7/+13
| |/ / | | | | | | | | | | | | | | | - Add unit test for andFinally - Reduce code duplication in andFinally - Extend documentation
* | | Merge pull request #4971 from adriaanm/genbcode-delambdafyAdriaan Moors2016-03-311-1/+5
|\ \ \ | |/ / |/| | Unify treatment of built-in functions and SAMs
| * | Target FunctionN, not scala/runtime/java8/JFunction.Adriaan Moors2016-03-281-1/+5
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We compile FunctionN to Java 8's idea of a function now, so no need to target the artisanal JFunction and friends, except when the function is specialized, as I don't yet see how we can use LMF with the way specialization handles FunctionN: First, the working status quo -- the hand-crafted specialized versions of JFunction0. Notice how `apply$mcB$sp` is looking pretty SAMmy: ``` @FunctionalInterface public interface JFunction0$mcB$sp extends JFunction0 { @Override public byte apply$mcB$sp(); @Override default public Object apply() { return BoxesRunTime.boxToByte(this.apply$mcB$sp()); } } ``` Contrast this with our specialized standard FunctionN: ``` public interface Function0<R> { public R apply(); default public byte apply$mcB$sp() { return BoxesRunTime.unboxToByte(this.apply()); } } public interface Function0$mcB$sp extends Function0<Object> { } ``` The single abstract method in `Function0$mcB$sp` is `apply`, and the method that would let us avoid boxing, if it were abstract, is `apply$mcB$sp`... TODO (after M4): - do same for specialized functions (issues with boxing?) - remove scala/runtime/java8/JFunction* (need new STARR?)
* | Merge pull request #5033 from szeiger/issue/9623-2.12Adriaan Moors2016-03-301-44/+46
|\ \ | | | | | | Replace JoinIterator & improve ConcatIterator
| * | Replace JoinIterator & improve ConcatIteratorStefan Zeiger2016-03-111-44/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new `ConcatIterator` requires only one extra lightweight wrapper object (cons cell) to be allocated compared to `JoinIterator`. All additional concatenations are then done in place with one cons cell per appended iterator. Running 1000000 iterations of the following benchmark for LHS recursion: ``` def lhs(n: Int) = (1 to n).foldLeft(Iterator.empty: Iterator[Int])((res, _) => res ++ Iterator(1)).sum ``` On 2.12.x before SI-9623 fix: ``` $ ../scala/build-sbt/quick/bin/scala -J-Xmx1024M -nc concatit.scala 1000000: 555ms 1000000: 344ms 1000000: 397ms 1000000: 309ms 1000000: 290ms 1000000: 283ms 1000000: 282ms 1000000: 281ms 1000000: 290ms 1000000: 279ms ``` With SI-9623 fix: ``` $ ../scala/build-sbt/quick/bin/scala -J-Xmx1024M -nc concatit.scala 1000000: 610ms 1000000: 324ms 1000000: 387ms 1000000: 315ms 1000000: 296ms 1000000: 300ms 1000000: 341ms 1000000: 294ms 1000000: 291ms 1000000: 281ms ``` With this version: ``` $ ../scala/build-sbt/quick/bin/scala -J-Xmx1024M -nc concatit.scala 1000000: 362ms 1000000: 162ms 1000000: 140ms 1000000: 150ms 1000000: 110ms 1000000: 57ms 1000000: 79ms 1000000: 109ms 1000000: 120ms 1000000: 49ms ``` And for RHS recursion: ``` def rhs(n: Int) = (1 to n).foldLeft(Iterator.empty: Iterator[Int])((res, _) => Iterator(1) ++ res).sum ``` On 2.12.x before SI-9623 fix: ``` StackOverflowError ``` With SI-9623 fix: ``` StackOverflowError ``` With this version: ``` $ ../scala/build-sbt/quick/bin/scala -J-Xmx1024M -nc concatit.scala 1000000: 3156ms 1000000: 1536ms 1000000: 1240ms 1000000: 1575ms 1000000: 439ms 1000000: 706ms 1000000: 1043ms 1000000: 1211ms 1000000: 515ms 1000000: 314ms ```
* | | Merge pull request #5008 from janekdb/2.12.x-remove-Predef-errorSeth Tisue2016-03-291-7/+1
|\ \ \ | | | | | | | | Remove deprecated Predef.error
| * | | Remove deprecated Predef.errorJanek Bogucki2016-03-261-7/+1
| | |/ | |/| | | | | | | | | | | | | error was deprecated in 2.9.0 but remained to ensure compatibility with sbt. This changes follows on from an update to the latest sbt version (0.13.11).
* | | Merge pull request #5021 from szeiger/wip/remove-deprecationsSeth Tisue2016-03-2917-248/+204
|\ \ \ | |/ / |/| | Seal collection classes that were annotated with deprecatedInheritance in 2.11.0
| * | Make some collection classes final or sealedStefan Zeiger2016-03-2317-248/+204
| | | | | | | | | | | | | | | | | | | | | They were all annotated with `@deprecatedInheritance` in 2.11.0. Some deprecated classes are moved to new source files in order to seal the parent class. The package-private class `DoublingUnrolledBuffer` is moved from `scala.collection.parallel.mutable` to `scala.collection.mutable` in order to seal `UnrolledBuffer`.
* | | Merge pull request #5051 from kmizu/improve-api-docsAdriaan Moors2016-03-231-0/+1
|\ \ \ | | | | | | | | Improve documentation of `GenSeqLike#length`
| * | | Add scaladoc comment about the case when Exception will be thrown by ↵Kota Mizushima2016-03-241-0/+1
| |/ / | | | | | | | | | invocation of length method
* | | Merge pull request #5047 from kmizu/resolve-several-warningsAdriaan Moors2016-03-223-9/+9
|\ \ \ | | | | | | | | Resolve several deprecation warnings
| * | | Resolve warnings related to SyncVar#setKota Mizushima2016-03-183-9/+9
| |/ / | | | | | | | | | Replace it with SyncVar#put
* | | Merge pull request #5034 from janekdb/topic/2.12.x-scaladoc-Predef-method-groupsSeth Tisue2016-03-211-0/+106
|\ \ \ | | | | | | | | Organise Predef methods into Scaladoc groups
| * | | Organise Predef members into Scaladoc groupsJanek Bogucki2016-03-161-0/+106
| |/ / | | | | | | | | | | | | By grouping members and providing descriptions the signal to noise ratio in Predef is usefully enhanced.
* | | Merge pull request #5043 from dongjoon-hyun/fix_typos_in_spec_and_commentsJason Zaugg2016-03-211-1/+1
|\ \ \ | | | | | | | | Fix some typos in `spec` documents and comments.
| * | | Fix some typos in `spec` documents and comments.Dongjoon Hyun2016-03-151-1/+1
| |/ /
* / / Remove manual mixins in JFunctionN.v2.12.0-M3-dc9effeJason Zaugg2016-03-1822-263/+0
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These manual mixins were forwarding to the impl classes have just been removed. We can now rely on default methods instead. Update Tests: - Fix test/files/pos/t1237.scala, we can't have an outer field in an interface, always use the outer method. - Don't crash on meaningless trait early init fields test/files/neg/t2796.scala - Remove impl class relate parts of inner class test - Remove impl class relate parts of elidable test - Remove impl class related reflection test. - Remove test solely about trait impl classes renaming - Update check file with additional stub symbol error - Disable unstable parts of serialization test. - TODO explain, and reset the expectation
* | Merge pull request #5037 from janekdb/topic/2.12.x-scaladoc-fix-Source-linksAdriaan Moors2016-03-141-10/+8
|\ \ | | | | | | Fix Scaladoc links in scala.io.Source
| * | Fix Scaladoc links in scala.io.SourceJanek Bogucki2016-03-131-10/+8
| |/ | | | | | | | | The link to iter will work if the restriction to showing only public members is lifted in the visibility section.
* | Merge pull request #5040 from adriaanm/rebase-5031Jason Zaugg2016-03-151-1/+1
|\ \ | | | | | | Merge 2.11.x into 2.12.x [ci: last-only]
| * \ Merge 2.11.x into 2.12.xAdriaan Moors2016-03-141-1/+1
| |\ \ | | | | | | | | | | | | Resolved conflicts as in b0e05b67c7
| | * \ Merge pull request #4994 from dk14/patch-1Seth Tisue2016-03-041-1/+1
| | |\ \ | | | | | | | | | | explicitly specify insertion-order feature in docs
| | | * | explicitly specify insertion-order feature in docsdk142016-02-231-1/+1
| | | | |
* | | | | Merge pull request #5018 from ↵Seth Tisue2016-03-141-5/+31
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | janekdb/topic/2.12.x-scaladoc-advertise-deprecated-read-methods-less-Predef Remove mention of deprecated I/O methods from Predef main comment
| * | | | | Remove mention of deprecated I/O methods from Predef main commentJanek Bogucki2016-03-141-5/+31
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The read* functions are deprecated so should not be highlighted. Copied Scaladoc from Console on the assumption that few people will tarry for long once they have seen the existence of the print* methods. Linkified print* methods. Added note to printf encouraging use of f interpolator.