Skip to content

Commit 06ad215

Browse files
committed
Make j9localmap_DebugLocalBitsForPC the default mapper
j9localmap_LocalBitsForPC is more aggressive than j9localmap_DebugLocalBitsForPC in the way it analyzes and marks local variables as object references. Aggressiveness relates to determining whether a local object is being used at a specific point in the bytecode execution, and this helps optimize garbage collection and runtime performance. In contrast, j9localmap_DebugLocalBitsForPC adopts a conservative approach; it overestimates and plays safe by marking objects alive even if they are not being used. j9localmap_DebugLocalBitsForPC resolves the issue seen in ibmruntimes/Semeru-Runtimes#93. We have run the following benchmarks: Liberty DT8/DT10 Startup & Footprint, JRuby and Nashorn. No performance difference is seen between j9localmap_DebugLocalBitsForPC and j9localmap_LocalBitsForPC. Signed-off-by: Babneet Singh <[email protected]>
1 parent 83533e1 commit 06ad215

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

runtime/vm/jvminit.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -1172,7 +1172,7 @@ initializeJavaVM(void * osMainThread, J9JavaVM ** vmPtr, J9CreateJavaVMParams *c
11721172
vm->reserved1_identifier = (void*)J9VM_IDENTIFIER;
11731173
vm->internalVMFunctions = GLOBAL_TABLE(J9InternalFunctions);
11741174
vm->portLibrary = portLibrary;
1175-
vm->localMapFunction = j9localmap_LocalBitsForPC;
1175+
vm->localMapFunction = j9localmap_DebugLocalBitsForPC;
11761176

11771177
vm->internalVMLabels = (J9InternalVMLabels*)-1001;
11781178
vm->cInterpreter = J9_BUILDER_SYMBOL(cInterpreter);

0 commit comments

Comments
 (0)