blob: 24f1c78fe237c1cf6de5d9f9b07e2d4861ee75ad (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package p
import collection.mutable
object inlines {
final val monitored = false
inline def f(x: Int): Int = x * x
val hits = new mutable.HashMap[String, Int] {
override def default(key: String): Int = 0
}
def record(fn: String, n: Int = 1) = {
if (monitored) {
val name = if (fn.startsWith("member-")) "member" else fn
hits(name) += n
}
}
@volatile private var stack: List[String] = Nil
inline def track[T](fn: String)(op: => T) =
if (monitored) {
stack = fn :: stack
record(fn)
try op
finally stack = stack.tail
} else op
class Outer {
def f = "Outer.f"
class Inner {
val msg = " Inner"
inline def m = msg
inline def g = f
inline def h = f ++ m
}
val inner = new Inner
}
}
|