| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| |\
| | |
| | | |
SI-7898 Read user input during REPL warmup
|
| | |
| | |
| | |
| | | |
Text-based REPL pre-parses, so use the current label for errors.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Use a "label" for errors, so that script names are shown.
Position is still wrong for scripts in REPL.
Initial scripts are run with `ILoop.echo` and results printing
turned off, but reporter still enabled.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The compiler is created on main thread and user input is read
on an aux thread (opposite to currently).
Fixes completion when `-i` is supplied.
Now `-i` means pasted and new option `-I` means line-by-line.
The temporary reader uses postInit to swap in the underlying
reader.
Completion is disabled for the temporary reader, rather than
blocking while it waits for a compiler. But manically hitting
tab is one way of knowing exactly when completion is live.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The original probe sequence, taken from Python's hash table code, is
exponential, jumping around in the hash table with poor memory locality.
This replaces the probe algorithm with the more conventional quadratic
probing.
This also adds tests to the benchmarking code using AnyRef keys, which
have pseudorandom hash codes (unlike Ints, whose hash code is simply
the Int itself). The intensity of the benchmarking is reduced to make
the tests complete within 9 hours, by removing unnecessary sampling.
|
| |\ \
| | | |
| | | | |
Use jarlister in build
|
| | |/
| | |
| | |
| | |
| | |
| | |
| | | |
The goal of this change is to exercize the "manifest classpath" mechanism,
meant to bring the compiler its needed classes as resources, listed
in jar manifests, as opposed to files, thus enabling to use the compiler
in sandboxed environments (and also the scripting engine for that matter).
|
|\| | |
|
| |\ \
| | | |
| | | | |
JMH-based benchmark framework
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Besides tweaks to the documentation, this tests smaller (25-element)
maps, and rewrites OpenHashMapRunner in more idiomatic Scala.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
For the warm-up invocations, suppress setup and teardown that is only
needed for the measurement iterations. Reduce the number of forks.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Also add sbteclipse to the benchmark project.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In order to get a better exploration of the variance of tests in a
limited time, I've reduced the number of measurement iterations and
increased the number of forks. By sight, the measurement iterations
seemed pretty consistent within a trial, whereas they would vary
widely on occasional forks.
I extended testing down to 50-entry maps, to explore the rise in
service times that I was seeing at small scale. This is probably a
timing artifact, from too-short invocations, since I'm using
@Level.Invocation in the put() tests. To fix that, I enlarged the
unit of testing, by creating multiple, sometimes thousands, of maps
for the invocation to fill. This has also changed the test from
filling a previously-filled map, to filling a new, but sufficiently
sized map. The put()/remove() test now performs much worse (on a
more realistic scenario).
This also adds a couple tests for calling get() against a map that's
been filled only with put()s, or with a mix of put() and remove().
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Add an example benchmark for OpenHashMap.
|
| |\ \ \
| | | | |
| | | | | |
SI-4625 Recognize App in script
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Fixed the warning when main module is accompanied by snippets.
Minor clean-up so even I can follow what is returned.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
It's pretty confusing when your script object becomes a local
and then nothing happens. Such as when you're writing a test and
it takes forever to figure out what's going on.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
In an unwrapped script, where a `main` entry point is discovered
in a top-level object, retain all top-level classes.
Everything winds up in the default package.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Cheap name test: if the script object extends "App",
take it for a main-bearing parent.
Note that if `-Xscript` is not `Main`, the default,
then the source is taken as a snippet and there is
no attempt to locate an existing `main` method.
|
| |\ \ \ \
| | | | | |
| | | | | | |
SI 9766 - allow ++ on empty ConcatIterator
|
| | |/ / / |
|
|\| | | | |
|
| | |_|/
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The kv field of scala.collection.immutable.HashMap.HashMap1 can be null. This
commit corrects the behavior of updated0 (which is on call path for merged) to
work in such cases, instead of throwing NPE.
Commit contains regression test.
|
|\| | | |
|
| |/ /
| | |
| | |
| | | |
Follow-up for https://github.com/scala/scala/pull/4117
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We delegate `String`'s extension methods `toInt`, `toFloat`, etc to corresponding
methods in the Java standard library. These differ in the way they handle
whitespace in the original string.
This commit documents and tests the current behaviour.
|
|\ \ \
| | | |
| | | | |
Improvements to deprecations related to `since` parameter
|
| | | | |
|
| | | | |
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
SI-9382 Privatize enhanced x in Tuple2Zipped.Ops
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Consolated JUnit tests and heeded comment about private def and
code beauty.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Probably there should be an Abide rule to avoid leaking
the "underlying value" of a value class. The spec or SIP defines
"underlying type" but doesn't mention the underlying value.
The argument for concealing the member is that it is redundant
and makes autocompletion results harder to read. Also, possibly
an additional implicit might want to add a member so-named.
|
|\ \ \ \ \
| |_|/ / /
|/| | | | |
SI-9794 Error advice uses decoded method name
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
So much work went into polishing this error message,
it's worth buffing the method name when it's an operator.
The message now says `+` instead of `$plus`.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
SI-2712 Add support for partial unification of type constructors
|
| | | | | | |
|
| | | | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Debug flag to print a summary of the inliner's work
|
| |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Example output below. Note that inlining List.map fails because the
trait forwarder uses `INVOKESPECIAL` for now, will change with pr 5177.
$ cat Test.scala
class C {
def foo = Map(1 -> 'a', 2 -> 'b')
def bar(l: List[Int]) = l.map(_ + 1)
}
$ qsc -Yopt-log-inline _ -Yopt:l:classpath Test.scala
Inlining into C.foo (initially 36 instructions, ultimately 72):
- Inlined scala/Predef$ArrowAssoc$.$minus$greater$extension (8 instructions) 2 times: the callee is annotated `@inline`
Inlining into C.bar (initially 12 instructions, ultimately 12):
- Failed to inline scala/collection/immutable/List.map (the callee is a higher-order method, the argument for parameter (bf: Function1) is a function literal): The callee scala/collection/immutable/List::map(Lscala/Function1;Lscala/collection/generic/CanBuildFrom;)Ljava/lang/Object; contains the instruction INVOKESPECIAL scala/collection/TraversableLike.map (Lscala/Function1;Lscala/collection/generic/CanBuildFrom;)Ljava/lang/Object;
that would cause an IllegalAccessError when inlined into class C.
|
|\ \ \ \ \ \
| |_|/ / / /
|/| | | | | |
Fully qualify types in REPL generated code
|
| | | | | | |
|
|/ / / / /
| | | | |
| | | | |
| | | | | |
Keep -Yopt-inline-heuristics and -Yopt-trace unchanged
|
|\ \ \ \ \
| |_|/ / /
|/| | | | |
SI-9522 release key reference when deleting from OpenHashMap
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This sets the key field in the hash table entry to its default value
when an entry is deleted, so as not to unexpectedly retain an object
reference, leading to a memory leak.
Also includes incidental changes to the slot location algorithm that
reduce the number of deleted entries.
|
|\ \ \ \
| | | | |
| | | | | |
SI-8044 Allow binding backquoted varid in patterns
|