< prev index next >

src/java.base/share/classes/jdk/internal/jimage/UTF8String.java

Print this page

        

*** 27,44 **** import java.nio.charset.Charset; import java.util.Arrays; public final class UTF8String implements CharSequence { - // Same as StandardCharsets.UTF_8 without loading all of the standard charsets static final Charset UTF_8 = Charset.forName("UTF-8"); static final int NOT_FOUND = -1; static final int HASH_MULTIPLIER = 0x01000193; static final UTF8String EMPTY_STRING = new UTF8String(""); ! static final UTF8String CLASS_STRING = new UTF8String(".class"); final byte[] bytes; final int offset; final int count; int hashcode; --- 27,48 ---- import java.nio.charset.Charset; import java.util.Arrays; public final class UTF8String implements CharSequence { // Same as StandardCharsets.UTF_8 without loading all of the standard charsets static final Charset UTF_8 = Charset.forName("UTF-8"); static final int NOT_FOUND = -1; static final int HASH_MULTIPLIER = 0x01000193; static final UTF8String EMPTY_STRING = new UTF8String(""); ! static final UTF8String SLASH_STRING = new UTF8String("/"); ! static final UTF8String DOT_STRING = new UTF8String("."); ! ! // TODO This strings are implementation specific and should be defined elsewhere. ! static final UTF8String MODULES_STRING = new UTF8String("/modules"); ! static final UTF8String PACKAGES_STRING = new UTF8String("/packages"); final byte[] bytes; final int offset; final int count; int hashcode;
*** 158,169 **** } return seed & 0x7FFFFFFF; } ! int hashCode(int base) { ! return hashCode(base, bytes, offset, count); } @Override public int hashCode() { if (hashcode < 0) { --- 162,173 ---- } return seed & 0x7FFFFFFF; } ! int hashCode(int seed) { ! return hashCode(seed, bytes, offset, count); } @Override public int hashCode() { if (hashcode < 0) {
*** 184,194 **** } return equals(this, (UTF8String)obj); } ! private static boolean equals(UTF8String a, UTF8String b) { if (a == b) { return true; } int count = a.count; --- 188,198 ---- } return equals(this, (UTF8String)obj); } ! public static boolean equals(UTF8String a, UTF8String b) { if (a == b) { return true; } int count = a.count;
*** 209,218 **** --- 213,226 ---- } return true; } + public byte[] getBytesCopy() { + return Arrays.copyOfRange(bytes, offset, offset + count); + } + byte[] getBytes() { if (offset != 0 || bytes.length != count) { return Arrays.copyOfRange(bytes, offset, offset + count); }
*** 230,264 **** @Override public char charAt(int index) { int ch = byteAt(index); ! return (ch & 0x80) != 0 ? (char)ch : '\0'; } @Override public CharSequence subSequence(int start, int end) { return (CharSequence)substring(start, end - start); } - - static UTF8String match(UTF8String a, UTF8String b) { - int aCount = a.count; - int bCount = b.count; - - if (aCount < bCount) { - return null; - } - - byte[] aBytes = a.bytes; - byte[] bBytes = b.bytes; - int aOffset = a.offset; - int bOffset = b.offset; - - for (int i = 0; i < bCount; i++) { - if (aBytes[aOffset + i] != bBytes[bOffset + i]) { - return null; - } - } - - return new UTF8String(aBytes, aOffset + bCount, aCount - bCount); - } } --- 238,250 ---- @Override public char charAt(int index) { int ch = byteAt(index); ! return (ch & 0x80) == 0 ? (char)ch : '\0'; } @Override public CharSequence subSequence(int start, int end) { return (CharSequence)substring(start, end - start); } }
< prev index next >