diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2014-01-31 13:46:57 +0100 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-02-10 14:34:39 -0800 |
commit | aebe379a14ab7b2a3bce35a6faa9d9232c748154 (patch) | |
tree | b8565509294f13756f0528356d4b0969dd0f729a /test/files/presentation/ping-pong.check | |
parent | db9fd559ec70f033b475b0d91c6049b68955e095 (diff) | |
download | scala-aebe379a14ab7b2a3bce35a6faa9d9232c748154.tar.gz scala-aebe379a14ab7b2a3bce35a6faa9d9232c748154.tar.bz2 scala-aebe379a14ab7b2a3bce35a6faa9d9232c748154.zip |
SI-7475 findMember and findMembers: estranged no more
Swathes of important logic are duplicated between `findMember`
and `findMembers` after they separated on grounds of irreconcilable
differences about how fast they should run:
d905558 Variation #10 to optimze findMember
fcb0c01 Attempt #9 to opimize findMember.
71d2ceb Attempt #8 to opimize findMember.
77e5692 Attempty #7 to optimize findMember
275115e Fixing problem that caused fingerprints to fail in
e94252e Attemmpt #6 to optimize findMember
73e61b8 Attempt #5 to optimize findMember.
04f0b65 Attempt #4 to optimize findMember
0e3c70f Attempt #3 to optimize findMember
41f4497 Attempt #2 to optimize findMember
1a73aa0 Attempt #1 to optimize findMember
This didn't actually bear fruit, and the intervening years have
seen the implementations drift.
Now is the time to reunite them under the banner of `FindMemberBase`.
Each has a separate subclass to customise the behaviour. This is
primarily used by `findMember` to cache member types and to assemble
the resulting list of symbols in an low-allocation manner.
While there I have introduced some polymorphic calls, the call sites
are only bi-morphic, and our typical pattern of compilation involves
far more `findMember` calls, so I expect that JIT will keep the
virtual call cost to an absolute minimum.
Test results have been updated now that `findMembers` correctly
excludes constructors and doesn't inherit privates.
Coming up next: we can actually fix SI-7475!
Diffstat (limited to 'test/files/presentation/ping-pong.check')
-rw-r--r-- | test/files/presentation/ping-pong.check | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/test/files/presentation/ping-pong.check b/test/files/presentation/ping-pong.check index ab4cfc9e7a..220bdf33b2 100644 --- a/test/files/presentation/ping-pong.check +++ b/test/files/presentation/ping-pong.check @@ -3,7 +3,7 @@ reload: PingPong.scala askTypeCompletion at PingPong.scala(10,23) ================================================================================ [response] askTypeCompletion at (10,23) -retrieved 33 members +retrieved 32 members [inaccessible] private[this] val ping: Ping [inaccessible] protected[package lang] def clone(): Object [inaccessible] protected[package lang] def finalize(): Unit |