Skip to content

Commit d1e58fc

Browse files
committed
Add RAM persistence modularity support
Signed-off-by: Nathan Henderson <[email protected]>
1 parent 681725e commit d1e58fc

39 files changed

+757
-288
lines changed

debugtools/DDR_VM/src/com/ibm/j9ddr/vm29/tools/ddrinteractive/ModularityHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,9 @@ public static boolean moduleFilterMatchAll(J9ModulePointer modulePtr, String arg
9797
* be outputted to.
9898
*/
9999
public static void printJ9Module(J9ModulePointer modulePtr, PrintStream out) throws CorruptDataException {
100-
String moduleName = J9ObjectHelper.stringValue(modulePtr.moduleName());
100+
String moduleName = J9UTF8Helper.stringValue(modulePtr.moduleName());
101101
String hexAddress = modulePtr.getHexAddress();
102-
out.printf("%-30s !j9module %s%n", moduleName, hexAddress);
102+
out.printf("%-45s !j9module %s%n", moduleName, hexAddress);
103103
}
104104

105105
/**

debugtools/DDR_VM/src/com/ibm/j9ddr/vm29/tools/ddrinteractive/commands/DumpModuleDirectedExportsCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
import com.ibm.j9ddr.vm29.pointer.generated.J9JavaVMPointer;
3737
import com.ibm.j9ddr.vm29.pointer.generated.J9ModulePointer;
3838
import com.ibm.j9ddr.vm29.pointer.generated.J9PackagePointer;
39-
import com.ibm.j9ddr.vm29.pointer.helper.J9ObjectHelper;
39+
import com.ibm.j9ddr.vm29.pointer.helper.J9UTF8Helper;
4040
import com.ibm.j9ddr.vm29.pointer.helper.J9RASHelper;
4141
import com.ibm.j9ddr.vm29.tools.ddrinteractive.JavaVersionHelper;
4242

@@ -74,9 +74,9 @@ public void run(String command, String[] args, Context context, PrintStream out)
7474
while (slotIterator.hasNext()) {
7575
J9ModulePointer exportModulePtr = slotIterator.next();
7676
hitCount++;
77-
String moduleName = J9ObjectHelper.stringValue(exportModulePtr.moduleName());
77+
String moduleName = J9UTF8Helper.stringValue(exportModulePtr.moduleName());
7878
String hexAddress = exportModulePtr.getHexAddress();
79-
out.printf("%-30s !j9module %s%n", moduleName, hexAddress);
79+
out.printf("%-45s !j9module %s%n", moduleName, hexAddress);
8080
}
8181
out.println(String.format("Found %d module(s) that the package is exported to\n", hitCount));
8282
}

debugtools/DDR_VM/src/com/ibm/j9ddr/vm29/tools/ddrinteractive/commands/DumpModuleReadsCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
import com.ibm.j9ddr.vm29.pointer.generated.J9HashTablePointer;
3636
import com.ibm.j9ddr.vm29.pointer.generated.J9JavaVMPointer;
3737
import com.ibm.j9ddr.vm29.pointer.generated.J9ModulePointer;
38-
import com.ibm.j9ddr.vm29.pointer.helper.J9ObjectHelper;
38+
import com.ibm.j9ddr.vm29.pointer.helper.J9UTF8Helper;
3939
import com.ibm.j9ddr.vm29.pointer.helper.J9RASHelper;
4040
import com.ibm.j9ddr.vm29.tools.ddrinteractive.JavaVersionHelper;
4141

@@ -72,9 +72,9 @@ public void run(String command, String[] args, Context context, PrintStream out)
7272
SlotIterator<J9ModulePointer> slotIterator = moduleHashTable.iterator();
7373
while (slotIterator.hasNext()) {
7474
J9ModulePointer readModulePtr = slotIterator.next();
75-
String moduleName = J9ObjectHelper.stringValue(readModulePtr.moduleName());
75+
String moduleName = J9UTF8Helper.stringValue(readModulePtr.moduleName());
7676
String hexAddress = readModulePtr.getHexAddress();
77-
out.printf("%-30s !j9module %s%n", moduleName, hexAddress);
77+
out.printf("%-45s !j9module %s%n", moduleName, hexAddress);
7878
}
7979
}
8080
} catch (CorruptDataException e) {

debugtools/DDR_VM/src/com/ibm/j9ddr/vm29/tools/ddrinteractive/commands/FindAllModulesCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
import com.ibm.j9ddr.vm29.pointer.generated.J9ClassLoaderPointer;
3636
import com.ibm.j9ddr.vm29.pointer.generated.J9JavaVMPointer;
3737
import com.ibm.j9ddr.vm29.pointer.generated.J9ModulePointer;
38-
import com.ibm.j9ddr.vm29.pointer.helper.J9ObjectHelper;
38+
import com.ibm.j9ddr.vm29.pointer.helper.J9UTF8Helper;
3939
import com.ibm.j9ddr.vm29.pointer.helper.J9RASHelper;
4040
import com.ibm.j9ddr.vm29.tools.ddrinteractive.JavaVersionHelper;
4141

@@ -70,9 +70,9 @@ public void run(String command, String[] args, Context context, PrintStream out)
7070
SlotIterator<J9ModulePointer> slotIterator = moduleHashTable.iterator();
7171
while (slotIterator.hasNext()) {
7272
J9ModulePointer modulePtr = slotIterator.next();
73-
String moduleName = J9ObjectHelper.stringValue(modulePtr.moduleName());
73+
String moduleName = J9UTF8Helper.stringValue(modulePtr.moduleName());
7474
String hexAddress = modulePtr.getHexAddress();
75-
out.printf("%-30s !j9module %s%n", moduleName, hexAddress);
75+
out.printf("%-45s !j9module %s%n", moduleName, hexAddress);
7676
}
7777
}
7878
}

debugtools/DDR_VM/src/com/ibm/j9ddr/vm29/tools/ddrinteractive/commands/FindAllReadsCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
import com.ibm.j9ddr.vm29.pointer.generated.J9HashTablePointer;
3939
import com.ibm.j9ddr.vm29.pointer.generated.J9JavaVMPointer;
4040
import com.ibm.j9ddr.vm29.pointer.generated.J9ModulePointer;
41-
import com.ibm.j9ddr.vm29.pointer.helper.J9ObjectHelper;
41+
import com.ibm.j9ddr.vm29.pointer.helper.J9UTF8Helper;
4242
import com.ibm.j9ddr.vm29.pointer.helper.J9RASHelper;
4343
import com.ibm.j9ddr.vm29.tools.ddrinteractive.JavaVersionHelper;
4444

@@ -79,7 +79,7 @@ public void run(String command, String[] args, Context context, PrintStream out)
7979
SlotIterator<J9ModulePointer> slotIterator = moduleHashTable.iterator();
8080
while (slotIterator.hasNext()) {
8181
J9ModulePointer modulePtr = slotIterator.next();
82-
String moduleName = J9ObjectHelper.stringValue(modulePtr.moduleName());
82+
String moduleName = J9UTF8Helper.stringValue(modulePtr.moduleName());
8383
String hexAddress = modulePtr.getHexAddress();
8484
J9HashTablePointer readTable = modulePtr.readAccessHashTable();
8585
HashTable<J9ModulePointer> readModuleHashTable = ModuleHashTable.fromJ9HashTable(readTable);

debugtools/DDR_VM/src/com/ibm/j9ddr/vm29/tools/ddrinteractive/commands/FindModuleByNameCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
import com.ibm.j9ddr.vm29.pointer.generated.J9ClassLoaderPointer;
3737
import com.ibm.j9ddr.vm29.pointer.generated.J9JavaVMPointer;
3838
import com.ibm.j9ddr.vm29.pointer.generated.J9ModulePointer;
39-
import com.ibm.j9ddr.vm29.pointer.helper.J9ObjectHelper;
39+
import com.ibm.j9ddr.vm29.pointer.helper.J9UTF8Helper;
4040
import com.ibm.j9ddr.vm29.pointer.helper.J9RASHelper;
4141
import com.ibm.j9ddr.vm29.tools.ddrinteractive.JavaVersionHelper;
4242

@@ -82,11 +82,11 @@ public void run(String command, String[] args, Context context, PrintStream out)
8282
SlotIterator<J9ModulePointer> slotIterator = moduleHashTable.iterator();
8383
while (slotIterator.hasNext()) {
8484
J9ModulePointer modulePtr = slotIterator.next();
85-
String moduleName = J9ObjectHelper.stringValue(modulePtr.moduleName());
85+
String moduleName = J9UTF8Helper.stringValue(modulePtr.moduleName());
8686
if (pattern.isMatch(moduleName)) {
8787
hitCount++;
8888
String hexAddress = modulePtr.getHexAddress();
89-
out.printf("%-30s !j9module %s%n", moduleName, hexAddress);
89+
out.printf("%-45s !j9module %s%n", moduleName, hexAddress);
9090
}
9191
}
9292
}

debugtools/DDR_VM/src/com/ibm/j9ddr/vm29/tools/ddrinteractive/commands/FindModulesCommand.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
import com.ibm.j9ddr.vm29.pointer.generated.J9JavaVMPointer;
4040
import com.ibm.j9ddr.vm29.pointer.generated.J9ModulePointer;
4141
import com.ibm.j9ddr.vm29.pointer.generated.J9PackagePointer;
42-
import com.ibm.j9ddr.vm29.pointer.helper.J9ObjectHelper;
4342
import com.ibm.j9ddr.vm29.pointer.helper.J9RASHelper;
4443
import com.ibm.j9ddr.vm29.pointer.helper.J9UTF8Helper;
4544
import com.ibm.j9ddr.vm29.tools.ddrinteractive.ModularityHelper;
@@ -157,7 +156,7 @@ private static void printModuleReads(J9ModulePointer modulePtr, PrintStream out)
157156
* @return true if the names are equal, false otherwise.
158157
*/
159158
private static boolean filterModuleName(J9ModulePointer modulePtr, String targetName) throws CorruptDataException {
160-
return J9ObjectHelper.stringValue(modulePtr.moduleName()).equals(targetName);
159+
return J9UTF8Helper.stringValue(modulePtr.moduleName()).equals(targetName);
161160
}
162161

163162

@@ -168,7 +167,7 @@ private static boolean filterRequiresTargetModule(J9ModulePointer modulePtr, Str
168167
SlotIterator<J9ModulePointer> slotIterator = moduleHashTable.iterator();
169168
while (slotIterator.hasNext()) {
170169
J9ModulePointer readModulePtr = slotIterator.next();
171-
if (J9ObjectHelper.stringValue(readModulePtr.moduleName()).equals(targetModule)) {
170+
if (J9UTF8Helper.stringValue(readModulePtr.moduleName()).equals(targetModule)) {
172171
result = true;
173172
break;
174173
}

debugtools/DDR_VM/src/com/ibm/j9ddr/vm29/tools/ddrinteractive/structureformat/extensions/J9ModuleStructureFormatter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import com.ibm.j9ddr.tools.ddrinteractive.FormatWalkResult;
3131
import com.ibm.j9ddr.tools.ddrinteractive.IFieldFormatter;
3232
import com.ibm.j9ddr.vm29.pointer.generated.J9ModulePointer;
33-
import com.ibm.j9ddr.vm29.pointer.helper.J9ObjectHelper;
33+
import com.ibm.j9ddr.vm29.pointer.helper.J9UTF8Helper;
3434

3535
/**
3636
* Structure Formatter that adds a suffix to the command "!j9module $moduleAddress$" output
@@ -55,7 +55,7 @@ public FormatWalkResult postFormat(String type, long address,
5555
J9ModulePointer modulePtr = J9ModulePointer.cast(address);
5656
String moduleAddress = modulePtr.getHexAddress();
5757
try {
58-
out.println("Module name: " + J9ObjectHelper.stringValue(modulePtr.moduleName()));
58+
out.println("Module name: " + J9UTF8Helper.stringValue(modulePtr.moduleName()));
5959
} catch (CorruptDataException e) {
6060
// Do nothing
6161
}

runtime/bcutil/dynload.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,12 +219,20 @@ searchClassInModule(J9VMThread * vmThread, J9Module * j9module, U_8 * className,
219219
if (j9module == javaVM->javaBaseModule) {
220220
moduleName = JAVA_BASE_MODULE;
221221
} else {
222-
moduleName = J9_VM_FUNCTION(vmThread, copyStringToUTF8WithMemAlloc)(
223-
vmThread, j9module->moduleName, J9_STR_NULL_TERMINATE_RESULT, "", 0, moduleNameBuf, J9VM_PACKAGE_NAME_BUFFER_LENGTH, NULL);
222+
J9UTF8 *moduleNameJ9UTF8 = j9module->moduleName;
223+
U_8 *nameData = J9UTF8_DATA(moduleNameJ9UTF8);
224+
UDATA nameLength = J9UTF8_LENGTH(moduleNameJ9UTF8);
225+
if (nameLength < J9VM_PACKAGE_NAME_BUFFER_LENGTH) {
226+
moduleName = moduleNameBuf;
227+
} else {
228+
moduleName = (char *)j9mem_allocate_memory(nameLength + 1, OMRMEM_CATEGORY_VM); /* +1 for null-terminator. */
229+
}
224230
if (NULL == moduleName) {
225231
rc = -1;
226232
goto _end;
227233
}
234+
memcpy(moduleName, nameData, nameLength);
235+
moduleName[nameLength] = '\0';
228236
if (moduleNameBuf != moduleName) {
229237
freeModuleName = TRUE;
230238
}
@@ -603,6 +611,10 @@ readZip (J9JavaVM * javaVM, J9ClassPathEntry * cpEntry) {
603611

604612
zipFile = (VMIZipFile *) (cpEntry->extraInfo);
605613

614+
if (IS_RESTORE_RUN(javaVM) && (NULL == zipFile)) {
615+
javaVM->internalVMFunctions->initializeClassPathEntry(javaVM, cpEntry);
616+
}
617+
606618
/* Find the desired entry, if it is present. */
607619
filenameLength = strlen((const char*)javaVM->dynamicLoadBuffers->searchFilenameBuffer);
608620
zipFunctions->zip_initZipEntry (VMI, &entry);

runtime/gc_base/RootScanner.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,6 @@ MM_RootScanner::scanModularityObjects(J9ClassLoader * classLoader)
9292
J9Module * const module = *modulePtr;
9393

9494
doSlot(&module->moduleObject);
95-
if (NULL != module->moduleName) {
96-
doSlot(&module->moduleName);
97-
}
9895
if (NULL != module->version) {
9996
doSlot(&module->version);
10097
}

0 commit comments

Comments
 (0)