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 jdk.hotspot.agent.jmod - Hotspot Agent Module
JDK 17 jdk.hotspot.agent.jmod is the JMOD file for JDK 17 Hotspot Agent module.
JDK 17 Hotspot Agent module compiled class files are stored in \fyicenter\jdk-17.0.5\jmods\jdk.hotspot.agent.jmod.
JDK 17 Hotspot Agent module compiled class files are also linked and stored in the \fyicenter\jdk-17.0.5\lib\modules JImage file.
JDK 17 Hotspot Agent module source code files are stored in \fyicenter\jdk-17.0.5\lib\src.zip\jdk.hotspot.agent.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ sun/jvm/hotspot/memory/FileMapInfo.java
/*
* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package sun.jvm.hotspot.memory;
import java.util.*;
import sun.jvm.hotspot.debugger.Address;
import sun.jvm.hotspot.runtime.VM;
import sun.jvm.hotspot.runtime.VMObject;
import sun.jvm.hotspot.runtime.VMObjectFactory;
import sun.jvm.hotspot.types.*;
import sun.jvm.hotspot.utilities.Observable;
import sun.jvm.hotspot.utilities.Observer;
public class FileMapInfo {
private static FileMapHeader headerObj;
// Fields for handling the copied C++ vtables
private static Address rwRegionBaseAddress;
private static Address rwRegionEndAddress;
private static Address vtablesIndex;
// HashMap created by mapping the vTable addresses in the rw region with
// the corresponding metadata type.
private static Map<Address, Type> vTableTypeMap;
private static Type metadataTypeArray[];
static {
VM.registerVMInitializedObserver(new Observer() {
public void update(Observable o, Object data) {
initialize(VM.getVM().getTypeDataBase());
}
});
}
static Address getStatic_AddressField(Type type, String fieldName) {
AddressField field = type.getAddressField(fieldName);
return field.getValue();
}
static Address get_AddressField(Type type, Address instance, String fieldName) {
AddressField field = type.getAddressField(fieldName);
return field.getValue(instance);
}
static long get_CIntegerField(Type type, Address instance, String fieldName) {
CIntegerField field = type.getCIntegerField(fieldName);
return field.getValue(instance);
}
// C equivalent: return &header->_space[index];
static Address get_CDSFileMapRegion(Type FileMapHeader_type, Address header, int index) {
AddressField spaceField = FileMapHeader_type.getAddressField("_space[0]");
// size_t offset = offsetof(FileMapHeader, _space[0]);
// CDSFileMapRegion* space_0 = ((char*)header) + offset; // space_0 = &header->_space[index];
// return ((char*)space_0) + index * sizeof(CDSFileMapRegion);
long offset = spaceField.getOffset();
Address space_0 = header.addOffsetTo(offset);
return space_0.addOffsetTo(index * spaceField.getSize());
}
private static void initialize(TypeDataBase db) {
Type FileMapInfo_type = db.lookupType("FileMapInfo");
Type FileMapHeader_type = db.lookupType("FileMapHeader");
Type CDSFileMapRegion_type = db.lookupType("CDSFileMapRegion");
// FileMapInfo * info = FileMapInfo::_current_info;
// FileMapHeader* header = info->_header
Address info = getStatic_AddressField(FileMapInfo_type, "_current_info");
Address header = get_AddressField(FileMapInfo_type, info, "_header");
headerObj = (FileMapHeader) VMObjectFactory.newObject(FileMapInfo.FileMapHeader.class, header);
// char* mapped_base_address = header->_mapped_base_address
// size_t cloned_vtable_offset = header->_cloned_vtable_offset
// CppVtableInfo** vtablesIndex = mapped_base_address + cloned_vtable_offset;
Address mapped_base_address = get_AddressField(FileMapHeader_type, header, "_mapped_base_address");
long cloned_vtable_offset = get_CIntegerField(FileMapHeader_type, header, "_cloned_vtables_offset");
vtablesIndex = mapped_base_address.addOffsetTo(cloned_vtable_offset);
// CDSFileMapRegion* rw_space = &header->_space[rw];
// char* rwRegionBaseAddress = rw_space->_mapped_base;
// size_t used = rw_space->_used;
// char* rwRegionEndAddress = rwRegionBaseAddress + used;
Address rw_space = get_CDSFileMapRegion(FileMapHeader_type, header, 0);
rwRegionBaseAddress = get_AddressField(CDSFileMapRegion_type, rw_space, "_mapped_base");
long used = get_CIntegerField(CDSFileMapRegion_type, rw_space, "_used");
rwRegionEndAddress = rwRegionBaseAddress.addOffsetTo(used);
populateMetadataTypeArray(db);
}
private static void populateMetadataTypeArray(TypeDataBase db) {
metadataTypeArray = new Type[8];
metadataTypeArray[0] = db.lookupType("ConstantPool");
metadataTypeArray[1] = db.lookupType("InstanceKlass");
metadataTypeArray[2] = db.lookupType("InstanceClassLoaderKlass");
metadataTypeArray[3] = db.lookupType("InstanceMirrorKlass");
metadataTypeArray[4] = db.lookupType("InstanceRefKlass");
metadataTypeArray[5] = db.lookupType("Method");
metadataTypeArray[6] = db.lookupType("ObjArrayKlass");
metadataTypeArray[7] = db.lookupType("TypeArrayKlass");
}
public FileMapHeader getHeader() {
return headerObj;
}
public boolean inCopiedVtableSpace(Address vptrAddress) {
FileMapHeader fmHeader = getHeader();
return fmHeader.inCopiedVtableSpace(vptrAddress);
}
public Type getTypeForVptrAddress(Address vptrAddress) {
if (vTableTypeMap == null) {
getHeader().createVtableTypeMapping();
}
return vTableTypeMap.get(vptrAddress);
}
//------------------------------------------------------------------------------------------
public static class FileMapHeader extends VMObject {
public FileMapHeader(Address addr) {
super(addr);
}
public boolean inCopiedVtableSpace(Address vptrAddress) {
if (vptrAddress == null) {
return false;
}
if (vptrAddress.greaterThan(rwRegionBaseAddress) &&
vptrAddress.lessThanOrEqual(rwRegionEndAddress)) {
return true;
}
return false;
}
public void createVtableTypeMapping() {
vTableTypeMap = new HashMap<Address, Type>();
long addressSize = VM.getVM().getAddressSize();
// vtablesIndex points to this:
// class CppVtableInfo {
// intptr_t _vtable_size;
// intptr_t _cloned_vtable[1];
// ...
// };
// CppVtableInfo** CppVtables::_index;
// This is the index of all the cloned vtables. E.g., for
// ConstantPool* cp = ....; // an archived constant pool
// InstanceKlass* ik = ....;// an archived class
// the following holds true:
// &_index[ConstantPool_Kind]->_cloned_vtable[0] == ((intptr_t**)cp)[0]
// &_index[InstanceKlass_Kind]->_cloned_vtable[0] == ((intptr_t**)ik)[0]
for (int i=0; i < metadataTypeArray.length; i++) {
Address vtableInfoAddress = vtablesIndex.getAddressAt(i * addressSize); // = _index[i]
Address vtableAddress = vtableInfoAddress.addOffsetTo(addressSize); // = &_index[i]->_cloned_vtable[0]
vTableTypeMap.put(vtableAddress, metadataTypeArray[i]);
}
}
}
}
⏎ sun/jvm/hotspot/memory/FileMapInfo.java
Or download all of them as a single archive file:
File name: jdk.hotspot.agent-17.0.5-src.zip File size: 1238587 bytes Release date: 2022-09-13 Download
⇒ JDK 17 jdk.httpserver.jmod - HTTP Server Module
2023-10-04, ≈99🔥, 0💬
Popular Posts:
JDK 17 java.sql.rowset.jmod is the JMOD file for JDK 17 SQL Rowset module. JDK 17 SQL Rowset module ...
pache Derby is an open source relational database implemented entirely in Java and available under t...
Swingx is the SwingLabs Swing Component Extensions. JAR File Size and Download Location: File name: ...
JDK 11 jdk.crypto.cryptoki.jmod is the JMOD file for JDK 11 Crypto Cryptoki module. JDK 11 Crypto KI...
JUnit Source Code Files are provided in the source package file, junit-4.13.2-sources.jar .You can b...