< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/FileMapInfo.java

Print this page

101     // size_t cloned_vtable_offset = AOTCompressedPointers::get_byte_offset(cloned_vtable_narrowPtr);
102     // CppVtableInfo** vtablesIndex = mapped_base_address + cloned_vtable_offset;
103     mapped_base_address = get_AddressField(FileMapHeader_type, header, "_mapped_base_address");
104     long cloned_vtable_narrowPtr = get_CIntegerField(FileMapHeader_type, header, "_cloned_vtables");
105     long cloned_vtable_offset = cloned_vtable_narrowPtr; // Currently narrowPtr is the same as offset
106     vtablesIndex = mapped_base_address.addOffsetTo(cloned_vtable_offset);
107 
108     // CDSFileMapRegion* rw_region = &header->_region[rw];
109     // char* rwRegionBaseAddress = rw_region->_mapped_base;
110     // size_t used = rw_region->_used;
111     // char* rwRegionEndAddress = rwRegionBaseAddress + used;
112     Address rw_region = get_CDSFileMapRegion(FileMapHeader_type, header, 0);
113     rwRegionBaseAddress = get_AddressField(CDSFileMapRegion_type, rw_region, "_mapped_base");
114     long used = get_CIntegerField(CDSFileMapRegion_type, rw_region, "_used");
115     rwRegionEndAddress = rwRegionBaseAddress.addOffsetTo(used);
116 
117     populateMetadataTypeArray(db);
118   }
119 
120   private static void populateMetadataTypeArray(TypeDataBase db) {
121     metadataTypeArray = new Type[11];
122     // The order needs to match up with CPP_VTABLE_TYPES_DO in src/hotspot/share/cds/cppVtables.cpp
123 
124     metadataTypeArray[0] = db.lookupType("ConstantPool");
125     metadataTypeArray[1] = db.lookupType("InstanceKlass");
126     metadataTypeArray[2] = db.lookupType("InstanceClassLoaderKlass");
127     metadataTypeArray[3] = db.lookupType("InstanceMirrorKlass");
128     metadataTypeArray[4] = db.lookupType("InstanceRefKlass");
129     metadataTypeArray[5] = db.lookupType("InstanceStackChunkKlass");
130     metadataTypeArray[6] = db.lookupType("Method");
131     metadataTypeArray[7] = db.lookupType("MethodData");
132     metadataTypeArray[8] = db.lookupType("MethodCounters");
133     metadataTypeArray[9] = db.lookupType("ObjArrayKlass");
134     metadataTypeArray[10] = db.lookupType("TypeArrayKlass");



135   }
136 
137   public FileMapHeader getHeader() {
138     return headerObj;
139   }
140 
141   public boolean inCopiedVtableSpace(Address vptrAddress) {
142     FileMapHeader fmHeader = getHeader();
143     return fmHeader.inCopiedVtableSpace(vptrAddress);
144   }
145 
146   public Type getTypeForVptrAddress(Address vptrAddress) {
147     if (vTableTypeMap == null) {
148       getHeader().createVtableTypeMapping();
149     }
150     return vTableTypeMap.get(vptrAddress);
151   }
152 
153 
154   //------------------------------------------------------------------------------------------

101     // size_t cloned_vtable_offset = AOTCompressedPointers::get_byte_offset(cloned_vtable_narrowPtr);
102     // CppVtableInfo** vtablesIndex = mapped_base_address + cloned_vtable_offset;
103     mapped_base_address = get_AddressField(FileMapHeader_type, header, "_mapped_base_address");
104     long cloned_vtable_narrowPtr = get_CIntegerField(FileMapHeader_type, header, "_cloned_vtables");
105     long cloned_vtable_offset = cloned_vtable_narrowPtr; // Currently narrowPtr is the same as offset
106     vtablesIndex = mapped_base_address.addOffsetTo(cloned_vtable_offset);
107 
108     // CDSFileMapRegion* rw_region = &header->_region[rw];
109     // char* rwRegionBaseAddress = rw_region->_mapped_base;
110     // size_t used = rw_region->_used;
111     // char* rwRegionEndAddress = rwRegionBaseAddress + used;
112     Address rw_region = get_CDSFileMapRegion(FileMapHeader_type, header, 0);
113     rwRegionBaseAddress = get_AddressField(CDSFileMapRegion_type, rw_region, "_mapped_base");
114     long used = get_CIntegerField(CDSFileMapRegion_type, rw_region, "_used");
115     rwRegionEndAddress = rwRegionBaseAddress.addOffsetTo(used);
116 
117     populateMetadataTypeArray(db);
118   }
119 
120   private static void populateMetadataTypeArray(TypeDataBase db) {
121     metadataTypeArray = new Type[14];
122     // The order needs to match up with CPP_VTABLE_TYPES_DO in src/hotspot/share/cds/cppVtables.cpp
123 
124     metadataTypeArray[0] = db.lookupType("ConstantPool");
125     metadataTypeArray[1] = db.lookupType("InstanceKlass");
126     metadataTypeArray[2] = db.lookupType("InstanceClassLoaderKlass");
127     metadataTypeArray[3] = db.lookupType("InstanceMirrorKlass");
128     metadataTypeArray[4] = db.lookupType("InstanceRefKlass");
129     metadataTypeArray[5] = db.lookupType("InstanceStackChunkKlass");
130     metadataTypeArray[6] = db.lookupType("Method");
131     metadataTypeArray[7] = db.lookupType("MethodData");
132     metadataTypeArray[8] = db.lookupType("MethodCounters");
133     metadataTypeArray[9] = db.lookupType("TypeArrayKlass");
134     metadataTypeArray[10] = db.lookupType("ObjArrayKlass");
135     metadataTypeArray[11] = db.lookupType("RefArrayKlass");
136     metadataTypeArray[12] = db.lookupType("FlatArrayKlass");
137     metadataTypeArray[13] = db.lookupType("InlineKlass");
138   }
139 
140   public FileMapHeader getHeader() {
141     return headerObj;
142   }
143 
144   public boolean inCopiedVtableSpace(Address vptrAddress) {
145     FileMapHeader fmHeader = getHeader();
146     return fmHeader.inCopiedVtableSpace(vptrAddress);
147   }
148 
149   public Type getTypeForVptrAddress(Address vptrAddress) {
150     if (vTableTypeMap == null) {
151       getHeader().createVtableTypeMapping();
152     }
153     return vTableTypeMap.get(vptrAddress);
154   }
155 
156 
157   //------------------------------------------------------------------------------------------
< prev index next >