4
4
5
5
import java .util .ArrayList ;
6
6
import java .util .Collections ;
7
- import java .util .HashMap ;
8
7
import java .util .List ;
9
- import java .util .Map ;
10
8
11
9
import com .lexicalscope .svm .classloading .asm .AsmSClass ;
12
10
import com .lexicalscope .svm .heap .ObjectRef ;
21
19
public class StaticsImpl implements Statics {
22
20
// TODO[tim]: need fast-clone version
23
21
private static final KlassInternalName klassKlassName = internalName (Class .class );
24
- private final Map <KlassInternalName , SClass > defined ;
22
+ private final CowMap <KlassInternalName , SClass > defined ;
25
23
26
24
// TODO[tim]: combine these maps for efficiency
27
- private final Map <SClass , ObjectRef > staticsAddresses ;
28
- private final Map <SClass , ObjectRef > classAddresses ;
25
+ private final CowMap <SClass , ObjectRef > staticsAddresses ;
26
+ private final CowMap <SClass , ObjectRef > classAddresses ;
29
27
30
28
private final SClassLoader classLoader ;
31
29
@@ -38,13 +36,13 @@ public StaticsImpl(final SClassLoader classLoader) {
38
36
39
37
private StaticsImpl (
40
38
final SClassLoader classLoader ,
41
- final Map <KlassInternalName , SClass > defined ,
42
- final Map <SClass , ObjectRef > staticsAddresses ,
43
- final Map <SClass , ObjectRef > classAddresses ) {
44
- this .defined = defined ;
45
- this .classLoader = classLoader ;
46
- this .staticsAddresses = staticsAddresses ;
47
- this .classAddresses = classAddresses ;
39
+ final CowMap <KlassInternalName , SClass > defined ,
40
+ final CowMap <SClass , ObjectRef > staticsAddresses ,
41
+ final CowMap <SClass , ObjectRef > classAddresses ) {
42
+ this .defined = defined ;
43
+ this .classLoader = classLoader ;
44
+ this .staticsAddresses = staticsAddresses ;
45
+ this .classAddresses = classAddresses ;
48
46
}
49
47
50
48
@ Override public Statics snapshot () {
0 commit comments