Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (102)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (322)
Collections:
Other Resources:
JDK 17 java.base.jmod - Base Module
JDK 17 java.base.jmod is the JMOD file for JDK 17 Base module.
JDK 17 Base module compiled class files are stored in \fyicenter\jdk-17.0.5\jmods\java.base.jmod.
JDK 17 Base module compiled class files are also linked and stored in the \fyicenter\jdk-17.0.5\lib\modules JImage file.
JDK 17 Base module source code files are stored in \fyicenter\jdk-17.0.5\lib\src.zip\java.base.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ java/lang/CharacterName.java
/*
* Copyright (c) 2010, 2021, Oracle and/or its affiliates. All rights reserved.
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package java.lang;
import java.io.DataInputStream;
import java.io.InputStream;
import java.lang.ref.SoftReference;
import java.util.Arrays;
import java.util.Locale;
import java.util.zip.InflaterInputStream;
import java.security.AccessController;
import java.security.PrivilegedAction;
class CharacterName {
private static SoftReference<CharacterName> refCharName;
// codepoint -> bkIndex -> lookup -> offset/len
private final byte[] strPool;
private final int[] lookup; // code point -> offset/len in strPool
private final int[] bkIndices; // code point -> lookup index
// name -> hash -> hsIndices -> cpEntries -> code point
private final int[] cpEntries; // code points that have name in strPool
private final int[] hsIndices; // chain heads, hash indices into "cps"
private CharacterName() {
try (@SuppressWarnings("removal") DataInputStream dis = new DataInputStream(new InflaterInputStream(
AccessController.doPrivileged(new PrivilegedAction<>() {
public InputStream run() {
return getClass().getResourceAsStream("uniName.dat");
}
})))) {
int total = dis.readInt();
int bkNum = dis.readInt();
int cpNum = dis.readInt();
int cpEnd = dis.readInt();
byte ba[] = new byte[cpEnd];
lookup = new int[bkNum * 256];
bkIndices = new int[(Character.MAX_CODE_POINT + 1) >> 8];
strPool = new byte[total - cpEnd];
cpEntries = new int[cpNum * 3];
hsIndices = new int[(cpNum / 2) | 1];
Arrays.fill(bkIndices, -1);
Arrays.fill(hsIndices, -1);
dis.readFully(ba);
dis.readFully(strPool);
int nameOff = 0;
int cpOff = 0;
int cp = 0;
int bk = -1;
int prevBk = -1; // prev bkNo;
int idx = 0;
int next = -1;
int hash = 0;
int hsh = 0;
do {
int len = ba[cpOff++] & 0xff;
if (len == 0) {
len = ba[cpOff++] & 0xff;
// always big-endian
cp = ((ba[cpOff++] & 0xff) << 16) |
((ba[cpOff++] & 0xff) << 8) |
((ba[cpOff++] & 0xff));
} else {
cp++;
}
// cp -> name
int hi = cp >> 8;
if (prevBk != hi) {
bk++;
bkIndices[hi] = bk;
prevBk = hi;
}
lookup[(bk << 8) + (cp & 0xff)] = (nameOff << 8) | len;
// name -> cp
hash = hashN(strPool, nameOff, len);
hsh = (hash & 0x7fffffff) % hsIndices.length;
next = hsIndices[hsh];
hsIndices[hsh] = idx;
idx = addCp(idx, hash, next, cp);
nameOff += len;
} while (cpOff < cpEnd);
} catch (Exception x) {
throw new InternalError(x.getMessage(), x);
}
}
private static final int hashN(byte[] a, int off, int len) {
int h = 1;
while (len-- > 0) {
h = 31 * h + a[off++];
}
return h;
}
private int addCp(int idx, int hash, int next, int cp) {
cpEntries[idx++] = hash;
cpEntries[idx++] = next;
cpEntries[idx++] = cp;
return idx;
}
private int getCpHash(int idx) { return cpEntries[idx]; }
private int getCpNext(int idx) { return cpEntries[idx + 1]; }
private int getCp(int idx) { return cpEntries[idx + 2]; }
public static CharacterName getInstance() {
SoftReference<CharacterName> ref = refCharName;
CharacterName cname = null;
if (ref == null || (cname = ref.get()) == null) {
cname = new CharacterName();
refCharName = new SoftReference<>(cname);
}
return cname;
}
public String getName(int cp) {
int off = 0;
int bk = bkIndices[cp >> 8];
if (bk == -1 || (off = lookup[(bk << 8) + (cp & 0xff)]) == 0)
return null;
@SuppressWarnings("deprecation")
String result = new String(strPool, 0, off >>> 8, off & 0xff); // ASCII
return result;
}
public int getCodePoint(String name) {
byte[] bname = name.getBytes(sun.nio.cs.ISO_8859_1.INSTANCE);
int hsh = hashN(bname, 0, bname.length);
int idx = hsIndices[(hsh & 0x7fffffff) % hsIndices.length];
while (idx != -1) {
if (getCpHash(idx) == hsh) {
int cp = getCp(idx);
int off = -1;
int bk = bkIndices[cp >> 8];
if (bk != -1 && (off = lookup[(bk << 8) + (cp & 0xff)]) != 0) {
int len = off & 0xff;
off = off >>> 8;
if (bname.length == len) {
int i = 0;
while (i < len && bname[i] == strPool[off++]) {
i++;
}
if (i == len) {
return cp;
}
}
}
}
idx = getCpNext(idx);
}
return -1;
}
}
⏎ java/lang/CharacterName.java
Or download all of them as a single archive file:
File name: java.base-17.0.5-src.zip File size: 8883851 bytes Release date: 2022-09-13 Download
2023-09-26, ≈620🔥, 1💬
Popular Posts:
JRE 8 deploy.jar is the JAR file for JRE 8 Java Control Panel and other deploy tools. JRE (Java Runt...
commons-fileupload-1.3.3 -sources.jaris the source JAR file for Apache Commons FileUpload 1.3., whic...
JRE 8 rt.jar is the JAR file for JRE 8 RT (Runtime) libraries. JRE (Java Runtime) 8 is the runtime e...
What Is in Xerces-J-bin.2.12.2.zip? Xerces-J-bin.2.12.2.zip file is the distribution package ZIP fil...
What JAR files are required to run dom\Counter.java provided in the Apache Xerces package? You can f...