diff options
author | Sébastien Doeraene <sjrdoeraene@gmail.com> | 2016-09-14 17:06:53 +0200 |
---|---|---|
committer | Sébastien Doeraene <sjrdoeraene@gmail.com> | 2016-09-15 11:42:02 +0200 |
commit | 44971d104f4364a0ddaa4f05afc4cc61ee39cdf7 (patch) | |
tree | e8d132dc6adb5ab782e6d93de9a80eeb61792a2d /test/disabled-windows | |
parent | 05016d9035ab9b1c866bd9f12fdd0491f1ea0cbb (diff) | |
download | scala-44971d104f4364a0ddaa4f05afc4cc61ee39cdf7.tar.gz scala-44971d104f4364a0ddaa4f05afc4cc61ee39cdf7.tar.bz2 scala-44971d104f4364a0ddaa4f05afc4cc61ee39cdf7.zip |
Rewrite TraversableLike.stringPrefix not to blow up code size in Scala.js.
The commit 30876fe2dd8cbe657a6cad6b11bbc34f10c29b36 changed
`TraversableLike.stringPrefix` to report nicer results for inner
classes and method-local classes. The changes included calls to
`String.split()`, `Character.isDigit()` and `Character.isUpperCase()`.
This was particularly bad for Scala.js, because those methods
bring with them huge parts of the JDK (the `java.util.regex.*`
implementation on the one hand, and the Unicode database on the
other hand), which increased generated code size by 6 KB after
minimification and gzip for an application that does not otherwise
use those methods. This sudden increase is tracked in the Scala.js
bug tracker at https://github.com/scala-js/scala-js/issues/2591.
This commit rewrites `TraversableLike.stringPrefix` in a very
imperative way, without resorting to those methods. The behavior
is (mostly) preserved. There can be different results when
`getClass().getName()` contains non-ASCII lowercase letters and/or
digits. Those will now be recognized as user-defined instead of
likely compiler-synthesized (which is a progression). There still
are false positives for ASCII lowercase letters, which cause the
`stringPrefix` to be empty (as before).
Since the new implementation is imperative anyway, at least I made
it not allocate anything but the result `String` in the common
case where the result does not contain any `.`.
Diffstat (limited to 'test/disabled-windows')
0 files changed, 0 insertions, 0 deletions