@@ -87,7 +87,8 @@ struct ClassEntry {
87
87
};
88
88
89
89
struct PackageEntry {
90
- J9PackageIDTableEntry *pkgID;
90
+ J9ROMClass *romClass;
91
+ J9Class *ramClass;
91
92
U_32 moduleIndex;
92
93
BOOLEAN exported;
93
94
U_32 packageNameLength;
@@ -406,7 +407,9 @@ class VM_JFRConstantPoolTypes {
406
407
407
408
static UDATA walkStackTraceTablePrint (void *entry, void *userData);
408
409
409
- static UDATA fixupShallowEntries (void *entry, void *userData);
410
+ static UDATA findShallowEntries (void *entry, void *userData);
411
+
412
+ static void fixupShallowEntries (void *anElement, void *userData);
410
413
411
414
static UDATA walkMethodTablePrint (void *entry, void *userData);
412
415
@@ -750,6 +753,7 @@ class VM_JFRConstantPoolTypes {
750
753
void loadEvents ()
751
754
{
752
755
J9JFRBufferWalkState walkstate = {0 };
756
+ J9Pool *shallowEntries = NULL ;
753
757
J9JFREvent *event = jfrBufferStartDo (&_vm->jfrBuffer , &walkstate);
754
758
755
759
while (NULL != event) {
@@ -782,8 +786,25 @@ class VM_JFRConstantPoolTypes {
782
786
event = jfrBufferNextDo (&walkstate);
783
787
}
784
788
785
- hashTableForEachDo (_classTable, &fixupShallowEntries, this );
789
+ if (isResultNotOKay ()) {
790
+ goto done;
791
+ }
792
+
793
+ shallowEntries = pool_new (sizeof (ClassEntry**), 0 , sizeof (U_64), 0 , J9_GET_CALLSITE (), OMRMEM_CATEGORY_VM, POOL_FOR_PORT (privatePortLibrary));
794
+ if (NULL == shallowEntries) {
795
+ _buildResult = OutOfMemory;
796
+ goto done;
797
+ }
798
+
799
+ hashTableForEachDo (_classTable, findShallowEntries, shallowEntries);
800
+ pool_do (shallowEntries, fixupShallowEntries, this );
801
+
802
+ pool_kill (shallowEntries);
803
+
786
804
mergeStringTables ();
805
+
806
+ done:
807
+ return ;
787
808
}
788
809
789
810
U_32 consumeStackTrace (J9VMThread *walkThread, UDATA *walkStateCache, UDATA numberOfFrames) {
@@ -1099,55 +1120,55 @@ class VM_JFRConstantPoolTypes {
1099
1120
, _firstPackageEntry(NULL )
1100
1121
, _requiredBufferSize(0 )
1101
1122
{
1102
- _classTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (ClassEntry), sizeof (ClassEntry *), J9HASH_TABLE_ALLOW_SIZE_OPTIMIZATION , J9MEM_CATEGORY_CLASSES, jfrClassHashFn, jfrClassHashEqualFn, NULL , _vm);
1123
+ _classTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (ClassEntry), sizeof (ClassEntry *), 0 , J9MEM_CATEGORY_CLASSES, jfrClassHashFn, jfrClassHashEqualFn, NULL , _vm);
1103
1124
if (NULL == _classTable) {
1104
1125
_buildResult = OutOfMemory;
1105
1126
goto done;
1106
1127
}
1107
1128
1108
- _packageTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (PackageEntry), sizeof (PackageEntry *), J9HASH_TABLE_ALLOW_SIZE_OPTIMIZATION , J9MEM_CATEGORY_CLASSES, jfrPackageHashFn, jfrPackageHashEqualFn, NULL , _vm);
1129
+ _packageTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (PackageEntry), sizeof (PackageEntry *), 0 , J9MEM_CATEGORY_CLASSES, jfrPackageHashFn, jfrPackageHashEqualFn, NULL , _vm);
1109
1130
if (NULL == _packageTable) {
1110
1131
_buildResult = OutOfMemory;
1111
1132
goto done;
1112
1133
}
1113
1134
1114
- _classLoaderTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (ClassloaderEntry), sizeof (J9ClassLoader*), J9HASH_TABLE_ALLOW_SIZE_OPTIMIZATION , J9MEM_CATEGORY_CLASSES, classloaderNameHashFn, classloaderNameHashEqualFn, NULL , _vm);
1135
+ _classLoaderTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (ClassloaderEntry), sizeof (J9ClassLoader*), 0 , J9MEM_CATEGORY_CLASSES, classloaderNameHashFn, classloaderNameHashEqualFn, NULL , _vm);
1115
1136
if (NULL == _classLoaderTable) {
1116
1137
_buildResult = OutOfMemory;
1117
1138
goto done;
1118
1139
}
1119
1140
1120
- _methodTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (MethodEntry), sizeof (J9ROMMethod*), J9HASH_TABLE_ALLOW_SIZE_OPTIMIZATION , J9MEM_CATEGORY_CLASSES, methodNameHashFn, methodNameHashEqualFn, NULL , _vm);
1141
+ _methodTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (MethodEntry), sizeof (J9ROMMethod*), 0 , J9MEM_CATEGORY_CLASSES, methodNameHashFn, methodNameHashEqualFn, NULL , _vm);
1121
1142
if (NULL == _methodTable) {
1122
1143
_buildResult = OutOfMemory;
1123
1144
goto done;
1124
1145
}
1125
1146
1126
- _stringUTF8Table = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (StringUTF8Entry), sizeof (StringUTF8Entry*), J9HASH_TABLE_ALLOW_SIZE_OPTIMIZATION , J9MEM_CATEGORY_CLASSES, jfrStringUTF8HashFn, jfrStringUTF8HashEqualFn, NULL , _vm);
1147
+ _stringUTF8Table = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (StringUTF8Entry), sizeof (StringUTF8Entry*), 0 , J9MEM_CATEGORY_CLASSES, jfrStringUTF8HashFn, jfrStringUTF8HashEqualFn, NULL , _vm);
1127
1148
if (NULL == _stringUTF8Table) {
1128
1149
_buildResult = OutOfMemory;
1129
1150
goto done;
1130
1151
}
1131
1152
1132
- _moduleTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (ModuleEntry), sizeof (ModuleEntry*), J9HASH_TABLE_ALLOW_SIZE_OPTIMIZATION , J9MEM_CATEGORY_CLASSES, jfrModuleHashFn, jfrModuleHashEqualFn, NULL , _vm);
1153
+ _moduleTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (ModuleEntry), sizeof (ModuleEntry*), 0 , J9MEM_CATEGORY_CLASSES, jfrModuleHashFn, jfrModuleHashEqualFn, NULL , _vm);
1133
1154
if (NULL == _moduleTable) {
1134
1155
_buildResult = OutOfMemory;
1135
1156
goto done;
1136
1157
}
1137
1158
1138
- _threadTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (ThreadEntry), sizeof (U_64), J9HASH_TABLE_ALLOW_SIZE_OPTIMIZATION , J9MEM_CATEGORY_CLASSES, threadHashFn, threadHashEqualFn, NULL , _currentThread);
1159
+ _threadTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (ThreadEntry), sizeof (U_64), 0 , J9MEM_CATEGORY_CLASSES, threadHashFn, threadHashEqualFn, NULL , _currentThread);
1139
1160
if (NULL == _threadTable) {
1140
1161
_buildResult = OutOfMemory;
1141
1162
goto done;
1142
1163
}
1143
1164
1144
- _stackTraceTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (StackTraceEntry), sizeof (U_64), J9HASH_TABLE_ALLOW_SIZE_OPTIMIZATION , J9MEM_CATEGORY_CLASSES, stackTraceHashFn, stackTraceHashEqualFn, NULL , _vm);
1165
+ _stackTraceTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (StackTraceEntry), sizeof (U_64), 0 , J9MEM_CATEGORY_CLASSES, stackTraceHashFn, stackTraceHashEqualFn, NULL , _vm);
1145
1166
if (NULL == _stackTraceTable) {
1146
1167
_buildResult = OutOfMemory;
1147
1168
goto done;
1148
1169
}
1149
1170
1150
- _threadGroupTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (ThreadGroupEntry), sizeof (U_64), J9HASH_TABLE_ALLOW_SIZE_OPTIMIZATION , J9MEM_CATEGORY_CLASSES, threadGroupHashFn, threadGroupHashEqualFn, NULL , _vm);
1171
+ _threadGroupTable = hashTableNew (OMRPORT_FROM_J9PORT (privatePortLibrary), J9_GET_CALLSITE (), 0 , sizeof (ThreadGroupEntry), sizeof (U_64), 0 , J9MEM_CATEGORY_CLASSES, threadGroupHashFn, threadGroupHashEqualFn, NULL , _vm);
1151
1172
if (NULL == _threadGroupTable) {
1152
1173
_buildResult = OutOfMemory;
1153
1174
goto done;
0 commit comments