Skip to content

Commit e0f835e

Browse files
committed
More string interning stuff
1 parent 3adc982 commit e0f835e

File tree

3 files changed

+16
-21
lines changed

3 files changed

+16
-21
lines changed

convex-core/src/main/java/convex/core/data/Strings.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,19 @@ public class Strings {
2424

2525
public static final Ref<StringShort> EMPTY_REF = EMPTY.getRef();
2626

27-
public static final StringShort NIL = StringShort.create("nil");
28-
public static final StringShort TRUE = StringShort.create(CVMBool.TRUE_STRING);
29-
public static final StringShort FALSE = StringShort.create(CVMBool.FALSE_STRING);
27+
public static final StringShort NIL = StringShort.intern("nil");
28+
public static final StringShort TRUE = StringShort.intern(CVMBool.TRUE_STRING);
29+
public static final StringShort FALSE = StringShort.intern(CVMBool.FALSE_STRING);
30+
31+
public static final StringShort SPACE = StringShort.intern(" ");
32+
public static final StringShort COLON = StringShort.intern(":");
33+
public static final StringShort HEX_PREFIX = StringShort.intern("0x");
34+
3035

3136
public static final StringShort BAD_SIGNATURE = StringShort.create("Bad Signature!");
3237
public static final StringShort BAD_FORMAT = StringShort.create("Bad Message Format!");
3338
public static final StringShort SERVER_LOADED = StringShort.create("Trx overload");
3439

35-
public static final StringShort COLON = StringShort.intern(":");
36-
public static final StringShort HEX_PREFIX = StringShort.intern("0x");
3740

3841
public static final int MAX_ENCODING_LENGTH = Math.max(StringShort.MAX_ENCODING_LENGTH,StringTree.MAX_ENCODING_LENGTH);
3942

@@ -70,7 +73,7 @@ public class Strings {
7073

7174
public static final StringShort FULL_BUFFER = StringShort.create("Buffer full");
7275

73-
public static final StringShort NULL = StringShort.create("null");
76+
public static final StringShort NULL = StringShort.intern("null");
7477

7578

7679
public static final Comparator<AString> lengthComparator = (a,b)->{

convex-core/src/main/java/convex/core/data/Symbol.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package convex.core.data;
22

3-
import java.util.WeakHashMap;
4-
53
import convex.core.data.impl.StringStore;
64
import convex.core.data.type.AType;
75
import convex.core.data.type.Types;
@@ -36,8 +34,6 @@ private Symbol(StringShort name) {
3634
public AType getType() {
3735
return Types.SYMBOL;
3836
}
39-
40-
protected static final WeakHashMap<AString,Symbol> cache=new WeakHashMap<>(100);
4137

4238
/**
4339
* Creates a Symbol with the given name
@@ -61,13 +57,7 @@ public static Symbol create(AString name) {
6157
if (!validateName(name)) return null;
6258

6359
Symbol sym= new Symbol((StringShort)name);
64-
65-
synchronized (cache) {
66-
// TODO: figure out if caching Symbols is a net win or not
67-
Symbol cached=cache.get(name);
68-
if (cached!=null) return cached;
69-
cache.put(name,sym);
70-
}
60+
7161

7262
return sym;
7363
}

convex-core/src/main/java/convex/core/data/impl/StringStore.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@
1818
* Don't use this for anything sent in externally!
1919
*/
2020
public class StringStore {
21+
22+
23+
static HashMap<String,Entry> stringIndex=new HashMap<>();
24+
25+
static HashMap<Blob,Entry> blobIndex=new HashMap<>();
26+
2127

2228
public static class Entry {
2329
String string=null;
@@ -73,10 +79,6 @@ public Symbol getSymbol() {
7379
return result;
7480
}
7581
}
76-
77-
static HashMap<String,Entry> stringIndex=new HashMap<>();
78-
79-
static HashMap<Blob,Entry> blobIndex=new HashMap<>();
8082

8183

8284
public static Entry get(String string) {

0 commit comments

Comments
 (0)