Rabbit-R1/switch port/java/sources/com/alibaba/fastjson/parser/SymbolTable.java

72 lines
2.1 KiB
Java
Raw Normal View History

2024-05-21 16:08:36 -05:00
package com.alibaba.fastjson.parser;
import com.alibaba.fastjson.JSON;
/* loaded from: classes2.dex */
public class SymbolTable {
private final int indexMask;
private final Entry[] symbols;
public SymbolTable(int i) {
this.indexMask = i - 1;
this.symbols = new Entry[i];
addSymbol("$ref", 0, 4, 1185263);
addSymbol(JSON.DEFAULT_TYPE_KEY, 0, 5, 62680954);
}
public String addSymbol(char[] cArr, int i, int i2, int i3) {
int i4 = this.indexMask & i3;
Entry entry = this.symbols[i4];
if (entry != null) {
if (i3 == entry.hashCode && i2 == entry.chars.length) {
for (int i5 = 0; i5 < i2; i5++) {
if (cArr[i + i5] == entry.chars[i5]) {
}
}
return entry.value;
}
return new String(cArr, i, i2);
}
String intern = new String(cArr, i, i2).intern();
this.symbols[i4] = new Entry(intern, i3);
return intern;
}
public String addSymbol(String str, int i, int i2, int i3) {
int i4 = this.indexMask & i3;
Entry entry = this.symbols[i4];
if (entry != null) {
if (i3 == entry.hashCode && i2 == entry.chars.length && str.regionMatches(i, entry.value, 0, i2)) {
return entry.value;
}
return subString(str, i, i2);
}
if (i2 != str.length()) {
str = subString(str, i, i2);
}
String intern = str.intern();
this.symbols[i4] = new Entry(intern, i3);
return intern;
}
private static String subString(String str, int i, int i2) {
char[] cArr = new char[i2];
str.getChars(i, i2 + i, cArr, 0);
return new String(cArr);
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes2.dex */
public static class Entry {
final char[] chars;
final int hashCode;
final String value;
Entry(String str, int i) {
this.value = str;
this.chars = str.toCharArray();
this.hashCode = i;
}
}
}