@@ -220,19 +220,23 @@ UDATA walkStackFrames(J9VMThread *currentThread, J9StackWalkState *walkState)
220
220
if (walkState -> flags & J9_STACKWALK_CHECK_I_SLOTS_FOR_OBJECTS ) swPrintf (walkState , 2 , "\tCHECK_I_SLOTS_FOR_OBJECTS\n" );
221
221
if (walkState -> flags & J9_STACKWALK_SAVE_STACKED_REGISTERS ) swPrintf (walkState , 2 , "\tSAVE_STACKED_REGISTERS\n" );
222
222
223
- if ((walkState -> flags & (J9_STACKWALK_MAINTAIN_REGISTER_MAP | J9_STACKWALK_INCLUDE_CALL_IN_FRAMES )) == (J9_STACKWALK_MAINTAIN_REGISTER_MAP | J9_STACKWALK_INCLUDE_CALL_IN_FRAMES )) {
224
- PORT_ACCESS_FROM_WALKSTATE (walkState );
225
- J9UTF8 * className = J9ROMCLASS_CLASSNAME (((J9Class * ) walkState -> userData4 )-> romClass );
226
- char detailStackBuffer [J9VM_PACKAGE_NAME_BUFFER_LENGTH ];
227
- char * detail = NULL ;
228
- j9object_t detailMessage = J9VMJAVALANGTHROWABLE_DETAILMESSAGE (currentThread , walkState -> restartException );
223
+ if (J9_ARE_ALL_BITS_SET (walkState -> flags , J9_STACKWALK_MAINTAIN_REGISTER_MAP | J9_STACKWALK_INCLUDE_CALL_IN_FRAMES )) {
224
+ J9Class * clazz = (J9Class * ) walkState -> userData4 ;
229
225
230
- if (NULL != detailMessage ) {
231
- detail = walkState -> walkThread -> javaVM -> internalVMFunctions -> copyStringToUTF8WithMemAlloc (currentThread , detailMessage , J9_STR_NULL_TERMINATE_RESULT , ": " , 2 , detailStackBuffer , J9VM_PACKAGE_NAME_BUFFER_LENGTH , NULL );
232
- }
233
- swPrintf (walkState , 2 , "\tThrowing exception: %.*s%s\n" , J9UTF8_LENGTH (className ), J9UTF8_DATA (className ), detail ? detail : "" );
234
- if (detailStackBuffer != detail ) {
235
- j9mem_free_memory (detail );
226
+ if (NULL != clazz ) {
227
+ PORT_ACCESS_FROM_WALKSTATE (walkState );
228
+ J9UTF8 * className = J9ROMCLASS_CLASSNAME (clazz -> romClass );
229
+ char detailStackBuffer [J9VM_PACKAGE_NAME_BUFFER_LENGTH ];
230
+ char * detail = NULL ;
231
+ j9object_t detailMessage = J9VMJAVALANGTHROWABLE_DETAILMESSAGE (currentThread , walkState -> restartException );
232
+
233
+ if (NULL != detailMessage ) {
234
+ detail = walkState -> walkThread -> javaVM -> internalVMFunctions -> copyStringToUTF8WithMemAlloc (currentThread , detailMessage , J9_STR_NULL_TERMINATE_RESULT , ": " , 2 , detailStackBuffer , J9VM_PACKAGE_NAME_BUFFER_LENGTH , NULL );
235
+ }
236
+ swPrintf (walkState , 2 , "\tThrowing exception: %.*s%s\n" , J9UTF8_LENGTH (className ), J9UTF8_DATA (className ), detail ? detail : "" );
237
+ if (detailStackBuffer != detail ) {
238
+ j9mem_free_memory (detail );
239
+ }
236
240
}
237
241
}
238
242
0 commit comments