eclipse-openj9 / openj9

Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Other
3.28k stars 721 forks source link

OpenJDK Method Handles - java/lang/invoke/MethodHandles/CatchExceptionTest timeout #18757

Closed pshipton closed 9 months ago

pshipton commented 9 months ago

Internal build jdk_lang_j9_0 java/lang/invoke/MethodHandles/CatchExceptionTest.java

11:35:01  Timeout information:
11:35:01  Running jcmd on process 23142
11:35:01  Dump written to /home/jenkins/workspace/Test_openjdk8_j9_sanity.openjdk_ppc64le_linux_ojdk292_Personal_testList_2/aqa-tests/TKG/output_17050754113618/jdk_lang_j9_0/work/scratch/24/core.20240112.113450.23142.0001.dmp
11:35:01  Dump written to /home/jenkins/workspace/Test_openjdk8_j9_sanity.openjdk_ppc64le_linux_ojdk292_Personal_testList_2/aqa-tests/TKG/output_17050754113618/jdk_lang_j9_0/work/scratch/24/javacore.20240112.113452.23142.0002.txt
11:35:01  Running jstack on process 23142
11:35:01  2024-01-12T11:34:53.053
11:35:01  Virtual machine: 23142 JVM information:
11:35:01  JRE 1.8.0 Linux ppc64le-64-Bit 20240112_2 (JIT enabled, AOT enabled)
11:35:01  OpenJ9   - d5d5c9bbc31
11:35:01  OMR      - 3e1bb699464
11:35:01  JCL      - 3cbb45e5c73 based on jdk8u402-b05
11:35:01  
11:35:01  "main" Id=1 WAITING
11:35:01    at java.lang.Object.waitImpl(Native Method)
11:35:01    at java.lang.Object.wait(Object.java:248)
11:35:01    at java.lang.Object.wait(Object.java:216)
11:35:01    at java.lang.Thread.join(Thread.java:753)
11:35:01    at java.lang.Thread.join(Thread.java:708)
11:35:01    at com.sun.javatest.regtest.agent.MainWrapper.main(MainWrapper.java:74)
11:35:01  
11:35:01  "JIT Compilation Thread-000" Id=2 RUNNABLE
11:35:01  
11:35:01  "JIT Compilation Thread-001 Suspended" Id=3 RUNNABLE
11:35:01  
11:35:01  "JIT Compilation Thread-002 Suspended" Id=4 RUNNABLE
11:35:01  
11:35:01  "JIT Compilation Thread-003 Suspended" Id=5 RUNNABLE
11:35:01  
11:35:01  "JIT Compilation Thread-004 Suspended" Id=6 RUNNABLE
11:35:01  
11:35:01  "JIT Compilation Thread-005 Suspended" Id=7 RUNNABLE
11:35:01  
11:35:01  "JIT Compilation Thread-006 Suspended" Id=8 RUNNABLE
11:35:01  
11:35:01  "JIT Diagnostic Compilation Thread-007 Suspended" Id=9 RUNNABLE
11:35:01  
11:35:01  "JIT-SamplerThread" Id=10 TIMED_WAITING
11:35:01  
11:35:01  "IProfiler" Id=11 RUNNABLE
11:35:01  
11:35:01  "Dedicated GC Main" Id=12 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=13 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=14 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=15 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=16 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=17 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=18 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=19 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=20 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=21 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=22 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=23 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=24 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=25 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=26 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=27 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=28 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=29 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=30 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=31 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=32 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=33 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=34 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=35 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=36 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=37 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=38 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=39 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=40 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=41 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=42 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=43 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=44 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=45 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=46 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=47 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=48 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=49 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=50 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=51 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=52 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=53 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=54 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=55 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=56 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=57 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=58 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=59 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=60 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=61 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=62 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=63 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=64 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=65 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=66 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=67 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=68 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=69 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=70 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=71 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=72 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=73 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=74 RUNNABLE
11:35:01  
11:35:01  "GC Worker" Id=75 RUNNABLE
11:35:01  
11:35:01  "Attach API wait loop" Id=78 RUNNABLE
11:35:01    at openj9.internal.tools.attach.target.IPC.waitSemaphore(Native Method)
11:35:01    at openj9.internal.tools.attach.target.CommonDirectory.waitSemaphore(CommonDirectory.java:264)
11:35:01    at openj9.internal.tools.attach.target.WaitLoop.waitForNotification(WaitLoop.java:66)
11:35:01    at openj9.internal.tools.attach.target.WaitLoop.run(WaitLoop.java:157)
11:35:01  
11:35:01  "MainThread" Id=80 RUNNABLE
11:35:01    at sun.misc.Unsafe.defineAnonymousClass(Native Method)
11:35:01    at java.lang.invoke.InvokerBytecodeGenerator.loadAndInitializeInvokerClass(InvokerBytecodeGenerator.java:284)
11:35:01    at java.lang.invoke.InvokerBytecodeGenerator.loadMethod(InvokerBytecodeGenerator.java:276)
11:35:01    at java.lang.invoke.InvokerBytecodeGenerator.generateCustomizedCode(InvokerBytecodeGenerator.java:618)
11:35:01    at java.lang.invoke.LambdaForm.compileToBytecode(LambdaForm.java:654)
11:35:01    at java.lang.invoke.LambdaForm.prepare(LambdaForm.java:635)
11:35:01    at java.lang.invoke.MethodHandle.<init>(MethodHandle.java:461)
11:35:01    at java.lang.invoke.BoundMethodHandle.<init>(BoundMethodHandle.java:58)
11:35:01    at java.lang.invoke.BoundMethodHandle$Species_L6.<init>(Species_L6)
11:35:01    at java.lang.invoke.BoundMethodHandle$Species_L6.make(Species_L6)
11:35:01    at java.lang.invoke.BoundMethodHandle$Species_L5.copyWithExtendL(Species_L5)
11:35:01    at java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandleImpl.java:237)
11:35:01    at java.lang.invoke.MethodHandleImpl.makePairwiseConvert(MethodHandleImpl.java:200)
11:35:01    at java.lang.invoke.MethodHandleImpl.makePairwiseConvert(MethodHandleImpl.java:386)
11:35:01    at java.lang.invoke.MethodHandle.asTypeUncached(MethodHandle.java:776)
11:35:01    at java.lang.invoke.MethodHandle.asType(MethodHandle.java:761)
11:35:01    at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
11:35:01    at test.java.lang.invoke.MethodHandles.CatchExceptionTest.runTest(CatchExceptionTest.java:170)
11:35:01    at test.java.lang.invoke.MethodHandles.CatchExceptionTest.test(CatchExceptionTest.java:114)
11:35:01    at jdk.testlibrary.Utils.filterException(Utils.java:375)
11:35:01    at com.oracle.testlibrary.jsr292.CodeCacheOverflowProcessor.runMHTest(CodeCacheOverflowProcessor.java:70)
11:35:01    at test.java.lang.invoke.MethodHandles.CatchExceptionTest.main(CatchExceptionTest.java:95)
11:35:01    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
11:35:01    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
11:35:01    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
11:35:01    at java.lang.reflect.Method.invoke(Method.java:503)
11:35:01    at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
11:35:01    at java.lang.Thread.run(Thread.java:826)
11:35:01  
11:35:01  "Finalizer thread" Id=81 RUNNABLE
11:35:01  
11:35:01  "file lock watchdog" Id=83 TIMED_WAITING
11:35:01    at java.lang.Object.waitImpl(Native Method)
11:35:01    at java.lang.Object.wait(Object.java:248)
11:35:01    at java.lang.Object.wait(Object.java:216)
11:35:01    at java.util.TimerThread.mainLoop(Timer.java:559)
11:35:01    at java.util.TimerThread.run(Timer.java:512)
11:35:01  
11:35:01  "Attachment portNumber: 40239" Id=86 RUNNABLE
11:35:01    at openj9.internal.tools.attach.target.DiagnosticUtils.dumpAllThreadsImpl(Native Method)
11:35:01    at openj9.internal.tools.attach.target.DiagnosticUtils.getThreadInfo(DiagnosticUtils.java:249)
11:35:01    at openj9.internal.tools.attach.target.DiagnosticUtils.executeDiagnosticCommand(DiagnosticUtils.java:185)
11:35:01    at openj9.internal.tools.attach.target.Attachment.doCommand(Attachment.java:238)
11:35:01    at openj9.internal.tools.attach.target.Attachment.run(Attachment.java:149)
11:35:01  
11:35:01  
11:35:01  --- Timeout information end.
pshipton commented 9 months ago

@babsingh

pshipton commented 9 months ago

Also occurred on jdk11

https://hyc-runtimes-jenkins.swg-devops.com/job/Test_openjdk11_j9_sanity.openjdk_ppc64le_linux_ojdk292_Personal_testList_1/1 - jdk_lang_0

https://hyc-runtimes-jenkins.swg-devops.com/job/Test_openjdk11_j9_sanity.openjdk_ppc64le_linux_ojdk292_Personal_testList_2/1/ - jdk_lang_j9_0

https://hyc-runtimes-jenkins.swg-devops.com/job/Test_openjdk11_j9_sanity.openjdk_x86-64_mac_ojdk292_Personal_testList_2/1/ - jdk_lang_j9_0

ThanHenderson commented 9 months ago

I'll look into this.

ThanHenderson commented 9 months ago

I've reproduced locally on a ppc64le_linux machine and profiled using Linux perf found some peculiar results. Below are the flamegraphs for the (1) ojdk292 build; and (2) build with OpenJ9 MHs. (here is a box link: https://ibm.box.com/s/iqcoac0wxlmh7a0yshzzd74e339jdg1n with the flamegraph svgs, if you want to interact with the figures, and the corresponding perf.data files.) The test relies on random number generation so I've run both builds with the same seed.

(1) Runtime ~26 minutes, fails with Not enough time to continue execution. Interrupted. https://github.com/ThanHenderson/openj9-openjdk-jdk8/blob/9a702f6d35a13affd72c1b996ca991ae40dac100/test/lib/jdk/test/lib/TimeLimitedRunner.java#L77-L78 perf-ojdk-jdk8-ppclinux (2) Runtime ~ 3 minutes, passes with test limit exceeded https://github.com/ThanHenderson/openj9-openjdk-jdk8/blob/9a702f6d35a13affd72c1b996ca991ae40dac100/jdk/test/java/lang/invoke/MethodHandles/CatchExceptionTest.java#L264 perf-oj9-jdk8-ppclinux

I am also building a JDK17 executable to see what type of behaviour we have on this test with OpenJDK MHs in JDK17.

fyi @JasonFengJ9 @babsingh

babsingh commented 9 months ago

It looks like the JIT isn't optimizing in the case of OJDK MHs.

ThanHenderson commented 9 months ago

Do OJ9 MHs take the same time as OJDK MHs with -Xint (JIT disabled)?

Roughly; still a bit faster I think due to the custom MH interpreter. But it also fails with Not enough time to continue execution. Interrupted.

Can we easily identify the missing JIT optimizations using perf diff ojdk-mh_perf.data oj9-mh_perf.data?

Here is the diff: https://ibm.ent.box.com/file/1421730760649. A naive grep shows:

❯ rg -i methodhandle perf-diff.log | rg libj9jit
               +0.02%  libj9jit29.so       [.] TR_J9VMBase::lookupMethodHandleThunkArchetype
               +0.02%  libj9jit29.so       [.] compileMethodHandleThunk
               +0.01%  libj9jit29.so       [.] TR_MethodHandleTransformer::perform
               +0.01%  libj9jit29.so       [.] J9::MethodHandleThunkDetails::isMethodHandleThunk
     0.00%     +0.01%  libj9jit29.so       [.] TR_MethodHandleTransformer::~TR_MethodHandleTransformer

and

❯ rg -i mh perf-diff.log | rg libj9jit
               +0.13%  libj9jit29.so       [.] TR_MHJ2IThunkTable::getTerseSignature
               +0.03%  libj9jit29.so       [.] TR_MHJ2IThunkTable::Node::get
               +0.03%  libj9jit29.so       [.] TR_MHJ2IThunkTable::terseTypeChar
               +0.01%  libj9jit29.so       [.] TR_MHJ2IThunkTable::getThunk
               +0.01%  libj9jit29.so       [.] OMR::LocalCSE::removeFromHashTable
               +0.01%  libj9jit29.so       [.] TR_MHJ2IThunkTable::findThunk

which isn't surprising because the compileMethodHandleThunk path is only taking via a call to translateMethodHandle in the OJ9 MH specific j2iInvokeExact path: https://github.com/eclipse-openj9/openj9/blob/b669217a6bfffc51e01fd48d364af4bf120e3c21/runtime/vm/BytecodeInterpreter.hpp#L1039-L1046

Here are the distinct optimizations done with the OJ9 MH build:

❯ rg -i '^\s*\+.*libj9jit' perf-diff.log | wc -l
     642
Shown here ``` ❯ rg -i '^\s*\+.*libj9jit' perf-diff.log 26: +0.80% libj9jit29.so [.] findClosestArchetype 44: +0.33% libj9jit29.so [.] TR_J9VMBase::getMethodFromClass 67: +0.22% libj9jit29.so [.] OMR::Block::findFirstReference 71: +0.21% libj9jit29.so [.] OMR::RegisterCandidate::extendLiveRangesForLiveOnExit 74: +0.20% libj9jit29.so [.] J9::VMEnv::releaseVMAccessIfNeeded 78: +0.19% libj9jit29.so [.] OMR::Power::Machine::freeBestRegister 116: +0.13% libj9jit29.so [.] TR_MHJ2IThunkTable::getTerseSignature 120: +0.13% libj9jit29.so [.] OMR::Instruction::useRegister 129: +0.12% libj9jit29.so [.] TR::VPResolvedClass::create 130: +0.12% libj9jit29.so [.] TR::PPCTrg1MemInstruction::refsRegister 131: +0.12% libj9jit29.so [.] TR::PPCMemSrc1Instruction::refsRegister 155: +0.09% libj9jit29.so [.] J9::ValuePropagation::isUnreliableSignatureType 162: +0.09% libj9jit29.so [.] TR_J9VMBase::getInstanceFieldOffset 181: +0.08% libj9jit29.so [.] jitGetClassFromUTF8 183: +0.08% libj9jit29.so [.] containsNode 198: +0.07% libj9jit29.so [.] OMR::Power::Machine::getVirtualAssociatedWithReal 200: +0.07% libj9jit29.so [.] OMR::ValuePropagation::createStoreRelationship 201: +0.07% libj9jit29.so [.] TR_J9VMBase::vmThread 229: +0.06% libj9jit29.so [.] OMR::Node::resetVisitCounts 230: +0.06% libj9jit29.so [.] OMR::Node::getRegister 231: +0.06% libj9jit29.so [.] foundInterferenceBetweenCurrentNodeAndPropagation 233: +0.06% libj9jit29.so [.] TR_UnionDFSetAnalysis::compose 234: +0.06% libj9jit29.so [.] J9::ShareableInvokeExactThunkDetails::isSameThunk 246: +0.05% libj9jit29.so [.] TR_J9MethodParameterIterator::getDataType 247: +0.05% libj9jit29.so [.] J9::Compilation::compileRelocatableCode 249: +0.05% libj9jit29.so [.] OMR::Node::mightHaveVolatileSymbolReference 251: +0.05% libj9jit29.so [.] TR::CompilationInfo::compileOnSeparateThread 252: +0.05% libj9jit29.so [.] OMR::Simplifier::perform 253: +0.05% libj9jit29.so [.] TR_J9VMBase::getReferenceFieldAt 254: +0.05% libj9jit29.so [.] TR_SimplifyAnds::process 256: +0.05% libj9jit29.so [.] OMR::CodeGenerator::cleanupFlags 261: +0.05% libj9jit29.so [.] TR_ValueNumberInfo::getValueNumberForLoad 282: +0.04% libj9jit29.so [.] OMR::Block::getFirstRealTreeTop 283: +0.04% libj9jit29.so [.] TR_UseDefInfo::getUseDef_ref_body 284: +0.04% libj9jit29.so [.] OMR::Power::Machine::coerceRegisterAssignment 285: +0.04% libj9jit29.so [.] TR_CopyPropagation::areAllDefsInCorrectForm 286: +0.04% libj9jit29.so [.] jitAddSpilledRegisters 287: +0.04% libj9jit29.so [.] OMR::ValuePropagation::copyStoreRelationships 288: +0.04% libj9jit29.so [.] TR_Structure::contains 289: +0.04% libj9jit29.so [.] collectArraylengthNodes 290: +0.04% libj9jit29.so [.] OMR::CodeGenerator::lowerTreeIfNeeded 323: +0.04% libj9jit29.so [.] TR::PPCTrg1MemInstruction::assignRegisters 325: +0.04% libj9jit29.so [.] OMR::Register::incTotalUseCount 326: +0.04% libj9jit29.so [.] TR_HotFieldMarking::perform 327: +0.04% libj9jit29.so [.] 00000080.plt_call.strchr@@GLIBC_2.17 328: +0.04% libj9jit29.so [.] OMR::ValuePropagation::freeStoreRelationships 358: +0.03% libj9jit29.so [.] OMR::ValuePropagation::freeValueConstraint 359: +0.03% libj9jit29.so [.] OMR::CodeGenerator::stopUsingRegister 360: +0.03% libj9jit29.so [.] TR_MHJ2IThunkTable::Node::get 361: +0.03% libj9jit29.so [.] TR_InlinerBase::replaceCallNodeReferences 362: +0.03% libj9jit29.so [.] TR::RegDepCopyRemoval::getNodeChoice 363: +0.03% libj9jit29.so [.] OMR::ValuePropagation::addGlobalConstraint 364: +0.03% libj9jit29.so [.] J9::Node::requiresRegisterPair 365: +0.03% libj9jit29.so [.] TR_UnionDFSetAnalysis::initializeInfo 366: +0.03% libj9jit29.so [.] TR_Dominators::link 367: +0.03% libj9jit29.so [.] TR_IProfiler::getValueProfileInfo 369: +0.03% libj9jit29.so [.] OMR::SymbolReferenceTable::methodSymRefFromName 370: +0.03% libj9jit29.so [.] 00000080.plt_call.strlen@@GLIBC_2.17 371: +0.03% libj9jit29.so [.] TR_CopyPropagation::isRedefinedBetweenStoreTreeAnd 372: +0.03% libj9jit29.so [.] L.12copy 373: +0.03% libj9jit29.so [.] OMR::CFG::propagateColdInfo 374: +0.03% libj9jit29.so [.] OMR::Optimization::fe 375: +0.03% libj9jit29.so [.] OMR::CFG::removeUnreachableBlocks 376: +0.03% libj9jit29.so [.] treetopSimplifier 377: +0.03% libj9jit29.so [.] TR_CopyPropagation::collectUseTrees 378: +0.03% libj9jit29.so [.] TR::CompilationInfo::getCompInfoForThread 379: +0.03% libj9jit29.so [.] TR::CompilationInfo::compileMethod 381: +0.03% libj9jit29.so [.] J9::SymbolReferenceTable::methodSymRefWithSignature 383: +0.03% libj9jit29.so [.] TR_IPBCDataCallGraph::setData 416: +0.03% libj9jit29.so [.] CS2::BaseArrayOf > >, 8ul>::ElementAt 417: +0.03% libj9jit29.so [.] OMR::Node::recursivelyDecReferenceCount 418: +0.03% libj9jit29.so [.] TR_J9VM::getClassClassPointer 419: +0.03% libj9jit29.so [.] constrainIfcmpeqne 420: +0.03% libj9jit29.so [.] TR_GlobalRegisterAllocator::registerIsLiveAcrossEdge 421: +0.03% libj9jit29.so [.] TR_CopyPropagation::perform 422: +0.03% libj9jit29.so [.] TR_ResolvedMethod::isDAAPackedDecimalWrapperMethod 423: +0.03% libj9jit29.so [.] OMR::Power::Instruction::generateBinaryEncoding 425: +0.03% libj9jit29.so [.] OMR::Node::isNopableInlineGuard 426: +0.03% libj9jit29.so [.] OMR::Power::Instruction::isCall 427: +0.03% libj9jit29.so [.] J9::SymbolReferenceTable::createParameterSymbol 428: +0.03% libj9jit29.so [.] OMR::Power::RegisterDependencyConditions::bookKeepingRegisterUses 429: +0.03% libj9jit29.so [.] TR_UseDefInfo::isTrivialUseDefNodeImpl 430: +0.03% libj9jit29.so [.] OMR::Node::isLoadOfStaticFinalField 431: +0.03% libj9jit29.so [.] _interpreterSyncFPR0DStaticGlue 432: +0.03% libj9jit29.so [.] J9::ClassEnv::isClassFinal 433: +0.03% libj9jit29.so [.] OMR::Power::TreeEvaluator::aloadEvaluator 434: +0.03% libj9jit29.so [.] TR_MHJ2IThunkTable::terseTypeChar 435: +0.03% libj9jit29.so [.] OMR::Node::requiresRegisterPair 436: +0.03% libj9jit29.so [.] TR_LiveRegisters::registerIsDead 437: +0.03% libj9jit29.so [.] OMR::ValuePropagation::mergeValueConstraints 438: +0.03% libj9jit29.so [.] OMR::Node::setIsNonNegative 439: +0.03% libj9jit29.so [.] TR_UseDefInfo::fillInDataStructures 440: +0.03% libj9jit29.so [.] jitGetClassInClassloaderFromUTF8 441: +0.03% libj9jit29.so [.] TR_Dominators::eval 443: +0.03% libj9jit29.so [.] J9::Power::CodeGenerator::lowerTreeIfNeeded 444: +0.02% libj9jit29.so [.] OMR::CFG::consumePseudoRandomFrequencies 486: +0.02% libj9jit29.so [.] TR::PPCTrg1Src1Instruction::PPCTrg1Src1Instruction 488: +0.02% libj9jit29.so [.] OMR::RuntimeAssumption::addToRAT 490: +0.02% libj9jit29.so [.] TR_Structure::asRegion 491: +0.02% libj9jit29.so [.] TR::AllBlockIterator::stepForward 492: +0.02% libj9jit29.so [.] L.8copy 493: +0.02% libj9jit29.so [.] L.14copy 494: +0.02% libj9jit29.so [.] TR_BlockSplitter::perform 495: +0.02% libj9jit29.so [.] breakForTesting 496: +0.02% libj9jit29.so [.] TR_UseDefInfo::buildDefUseInfo 497: +0.02% libj9jit29.so [.] L.4copy 498: +0.02% libj9jit29.so [.] OMR::ValuePropagation::propagateConstraint 499: +0.02% libj9jit29.so [.] J9::TransformUtil::foldFinalFieldsIn 500: +0.02% libj9jit29.so [.] TR::RegDepCopyRemoval::clearRegDepInfo 501: +0.02% libj9jit29.so [.] TR_IsolatedStoreElimination::perform 502: +0.02% libj9jit29.so [.] OMR::CodeGenerator::traceRegAssigned 503: +0.02% libj9jit29.so [.] OMR::Optimization::trStackMemory 504: +0.02% libj9jit29.so [.] endBlockSimplifier 505: +0.02% libj9jit29.so [.] OMR::ILOpCode::isAnd 506: +0.02% libj9jit29.so [.] TR_GlobalRegisterAllocator::walkTreesAndCollectSymbolDataTypes 507: +0.02% libj9jit29.so [.] OMR::Node::copyByteCodeInfo 508: +0.02% libj9jit29.so [.] TR::PPCLabelInstruction::fillBinaryEncodingFields 509: +0.02% libj9jit29.so [.] OMR::ResolvedMethodSymbol::removeTree 510: +0.02% libj9jit29.so [.] TR::RegionProfiler::RegionProfiler 514: +0.02% libj9jit29.so [.] OMR::Node::createWithSymRef 515: +0.02% libj9jit29.so [.] OMR::Power::CodeGenerator::computeCallInfoBitVector 516: +0.02% libj9jit29.so [.] TR::ArraycopyTransformation::perform 517: +0.02% libj9jit29.so [.] TR::VPEqual::propagateRelativeConstraint 518: +0.02% libj9jit29.so [.] jitCallCFunction 519: +0.02% libj9jit29.so [.] simplifyIficmpneHelper 520: +0.02% libj9jit29.so [.] OMR::ResolvedMethodSymbol::recursivelyCountChildren 521: +0.02% libj9jit29.so [.] TR::GlobalValuePropagation::processRegionNode 522: +0.02% libj9jit29.so [.] J9::ValuePropagation::constrainRecognizedMethod 523: +0.02% libj9jit29.so [.] initialInvokeExactThunk 524: +0.02% libj9jit29.so [.] OMR::Node::operator new 525: +0.02% libj9jit29.so [.] TR_BlockCloner::cloneNode 526: +0.02% libj9jit29.so [.] TR_ForwardDFSetAnalysis::analyzeRegionStructure 527: +0.02% libj9jit29.so [.] TR_J9VMBase::lookupMethodHandleThunkArchetype 528: +0.02% libj9jit29.so [.] TR_J9VMBase::getObjectClass 529: +0.02% libj9jit29.so [.] TR::VPClass::intersect1 530: +0.02% libj9jit29.so [.] L.quadWordAlignment_vsx_test8 531: +0.02% libj9jit29.so [.] _initialInvokeExactThunkGlue 532: +0.02% libj9jit29.so [.] compileMethodHandleThunk 533: +0.02% libj9jit29.so [.] TR_J9MethodParameterIterator::getOpaqueClass 534: +0.02% libj9jit29.so [.] OMR::SymbolReference::init 535: +0.02% libj9jit29.so [.] OMR::SymbolReference::maybeVolatile 537: +0.02% libj9jit29.so [.] TR_AliasSetInterface<(AliasSetInterface)0>::getTRAliases_impl 539: +0.02% libj9jit29.so [.] OMR::RegisterCandidate::hasLoopExitBlock 540: +0.02% libj9jit29.so [.] TR_Array::operator[] 541: +0.02% libj9jit29.so [.] TR_UseDefInfo::isTrivialUseDefNode 544: +0.02% libj9jit29.so [.] constrainIntLoad 547: +0.02% libj9jit29.so [.] returnFromJIT0 607: +0.01% libj9jit29.so [.] OMR::ILOpCode::isFence 608: +0.01% libj9jit29.so [.] TR::PPCTrg1MemInstruction::encodeMutexHint 609: +0.01% libj9jit29.so [.] OMR::ValuePropagation::EdgeConstraints::create 610: +0.01% libj9jit29.so [.] TR::VPClassType::isJavaLangClassObject 612: +0.01% libj9jit29.so [.] OMR::Power::RealRegister::setRegisterFieldRA 613: +0.01% libj9jit29.so [.] TR::PPCTrg1Src1Instruction::assignRegisters 614: +0.01% libj9jit29.so [.] TR_J9MethodParameterIterator::advanceCursor 616: +0.01% libj9jit29.so [.] TR_PrexArgInfo::buildPrexArgInfoForMethodSymbol 617: +0.01% libj9jit29.so [.] fillFieldRA 618: +0.01% libj9jit29.so [.] TR_InlinerBase::applyPolicyToTargets 619: +0.01% libj9jit29.so [.] OMR::Node::getValueChild 620: +0.01% libj9jit29.so [.] TR_GlobalRegisterAllocator::isSymRefAvailable 623: +0.01% libj9jit29.so [.] TR::ClassTableCriticalSection::ClassTableCriticalSection 624: +0.01% libj9jit29.so [.] RematTools::walkTreesCalculatingRematSafety 625: +0.01% libj9jit29.so [.] OMR::SymbolReference::reallySharesSymbol 626: +0.01% libj9jit29.so [.] TR_J9VMBase::isLambdaFormGeneratedMethod 627: +0.01% libj9jit29.so [.] J9::ObjectModel::maskOfObjectVftField 628: +0.01% libj9jit29.so [.] std::_Deque_base > > > >::_M_initialize_map 629: +0.01% libj9jit29.so [.] TR::PPCLabelInstruction::assignRegisters 630: +0.01% libj9jit29.so [.] OMR::ValuePropagation::initialize 631: +0.01% libj9jit29.so [.] OMR::ILOpCode::isCall 632: +0.01% libj9jit29.so [.] OMR::Power::CodeGenerator::isGlobalRegisterAvailable 633: +0.01% libj9jit29.so [.] J9::CodeGenerator::setUpForInstructionSelection 634: +0.01% libj9jit29.so [.] std::_Rb_tree_rebalance_for_erase 635: +0.01% libj9jit29.so [.] BitVectorPool::get 636: +0.01% libj9jit29.so [.] TR_J9EstimateCodeSize::adjustEstimateForStringCompression 637: +0.01% libj9jit29.so [.] OMR::Node::isNonNull 638: +0.01% libj9jit29.so [.] OMR::Power::Peephole::tryToRemoveRedundantLoadAfterStore 639: +0.01% libj9jit29.so [.] J9::CFG::scanForFrequencyOnSimpleMethod 640: +0.01% libj9jit29.so [.] OMR::Power::MemoryReference::accessStaticItem 641: +0.01% libj9jit29.so [.] directLoadSimplifier 643: +0.01% libj9jit29.so [.] TR_BlockSplitter::synergisticDepthCalculator 644: +0.01% libj9jit29.so [.] OMR::Compilation::getHotnessName 646: +0.01% libj9jit29.so [.] jitCTInstanceOf 647: +0.01% libj9jit29.so [.] OMR::CodeGenerator::addAllocatedRegister 648: +0.01% libj9jit29.so [.] OMR::Compilation::supportsInduceOSR 649: +0.01% libj9jit29.so [.] TR_J9VMBase::isClassArray 650: +0.01% libj9jit29.so [.] OMR::CFG::normalizeEdgeFrequencies 651: +0.01% libj9jit29.so [.] OMR::Power::MemoryReference::assignRegisters 652: +0.01% libj9jit29.so [.] TR::RegDepCopyRemoval::selectNodesToReuse 653: +0.01% libj9jit29.so [.] TR_MultipleCallTargetInliner::inlineCallTargets 654: +0.01% libj9jit29.so [.] boundNext 655: +0.01% libj9jit29.so [.] jitExitInterpreter1 656: +0.01% libj9jit29.so [.] TR_BlockOrderingOptimization::connectTreesAccordingToOrder 657: +0.01% libj9jit29.so [.] OMR::Power::MemoryReference::isTOCAccess 658: +0.01% libj9jit29.so [.] TR::VPClass::typeIntersect 659: +0.01% libj9jit29.so [.] J9::Power::PrivateLinkage::createPrologue 660: +0.01% libj9jit29.so [.] constrainCheckcast 661: +0.01% libj9jit29.so [.] TR_RegionAnalysis::findRegions 662: +0.01% libj9jit29.so [.] J9::Symbol::searchRecognizedField 663: +0.01% libj9jit29.so [.] TR_Structure::getContainingLoop 664: +0.01% libj9jit29.so [.] OMR::GCStackAtlas::addStackMap 665: +0.01% libj9jit29.so [.] TR::PPCTrg1MemInstruction::fillBinaryEncodingFields 666: +0.01% libj9jit29.so [.] OMR::OptimizationManager::performChecks 667: +0.01% libj9jit29.so [.] OMR::Compilation::isPeekingMethod 668: +0.01% libj9jit29.so [.] TR::GlobalValuePropagation::propagateOutputConstraints 669: +0.01% libj9jit29.so [.] std::_Rb_tree, std::_Select1st >, std::less, TR::typed_allocator, TR::Region&> >::_M_emplace_hint_unique, std::tuple<> > 670: +0.01% libj9jit29.so [.] TR_EliminateRedundantGotos::process 672: +0.01% libj9jit29.so [.] TR_GlobalRegisterAllocator::findIfThenRegisterCandidates 673: +0.01% libj9jit29.so [.] generateTrg1MemInstruction 674: +0.01% libj9jit29.so [.] instanceOfOrCheckCast 675: +0.01% libj9jit29.so [.] TR_BasicDFSetAnalysis::ExtraAnalysisInfo::getContainer 676: +0.01% libj9jit29.so [.] OMR::Power::MemoryReference::bookKeepingRegisterUses 677: +0.01% libj9jit29.so [.] TR_AliasSetInterface<(AliasSetInterface)0>::getAliases > > > > 678: +0.01% libj9jit29.so [.] TR_HedgeTreeHandler::remove 679: +0.01% libj9jit29.so [.] TR_J9VMBase::reportAnalysisPhase 680: +0.01% libj9jit29.so [.] OMR::CodeGenerator::prepareRegistersForAssignment 681: +0.01% libj9jit29.so [.] OMR::ValuePropagation::applyGlobalConstraints 682: +0.01% libj9jit29.so [.] TR_VarHandleTransformer::perform 683: +0.01% libj9jit29.so [.] J9::MethodSymbol::safeToSkipNonNullableArrayNullStoreCheck 684: +0.01% libj9jit29.so [.] TR::VPConstraint::merge 685: +0.01% libj9jit29.so [.] _interfaceCallHelper 687: +0.01% libj9jit29.so [.] TR_ResolvedJ9Method::signatureChars 688: +0.01% libj9jit29.so [.] TR::Region::Region 689: +0.01% libj9jit29.so [.] TR_Dominators::TR_Dominators 690: +0.01% libj9jit29.so [.] TR_ResolvedJ9Method::getClassFromCP 691: +0.01% libj9jit29.so [.] TR::PPCMemSrc1Instruction::fillBinaryEncodingFields 692: +0.01% libj9jit29.so [.] constrainAddressRef 693: +0.01% libj9jit29.so [.] TR_J9VMBase::getStringUTF8 694: +0.01% libj9jit29.so [.] OMR::LocalCSE::killAvailableExpressionsAtGCSafePoints 695: +0.01% libj9jit29.so [.] TR_GlobalLiveVariablesForGC::perform 696: +0.01% libj9jit29.so [.] TR_MHJ2IThunkTable::getThunk 697: +0.01% libj9jit29.so [.] TR_BasicDFSetAnalysis::clearAnalysisInfo 698: +0.01% libj9jit29.so [.] OMR::SymbolReferenceTable::SymbolReferenceTable 699: +0.01% libj9jit29.so [.] TR_ResolvedJ9Method::definingClassAndFieldShapeFromCPFieldRef 700: +0.01% libj9jit29.so [.] non-virtual thunk to TR_ResolvedJ9Method::isWarmCallGraphTooBig(unsigned int, TR::Compilation*) 701: +0.01% libj9jit29.so [.] bitwiseToLogical 702: +0.01% libj9jit29.so [.] TR_J9ByteCodeIlGenerator::loadConstant 703: +0.01% libj9jit29.so [.] TR_J9VMBase::isClassLibraryMethod 704: +0.01% libj9jit29.so [.] TR_CompactNullChecks::replacePassThroughIfPossible 705: +0.01% libj9jit29.so [.] OMR::TreeTop::create 706: +0.01% libj9jit29.so [.] TR::VPConstraint::Tracer::comp 707: +0.01% libj9jit29.so [.] OMR::Power::Instruction::estimateBinaryLength 708: +0.01% libj9jit29.so [.] j2iVirtual 709: +0.01% libj9jit29.so [.] TR::RegDepCopyRemoval::clearNodeChoice 710: +0.01% libj9jit29.so [.] __forwardQuadWordArrayCopy_vsx 711: +0.01% libj9jit29.so [.] TR_ByteCodeIteratorWithState::initialize 712: +0.01% libj9jit29.so [.] std::_Rb_tree_increment 713: +0.01% libj9jit29.so [.] OMR::ILOpCode::isLoadVarDirect 714: +0.01% libj9jit29.so [.] TR::PPCMemInstruction::expandInstruction 715: +0.01% libj9jit29.so [.] TR_J9ByteCodeIlGenerator::storeInstance 716: +0.01% libj9jit29.so [.] TR_OrderBlocks::peepHoleGotoBlock 718: +0.01% libj9jit29.so [.] J9::ObjectModel::objectHeaderSizeInBytes 720: +0.01% libj9jit29.so [.] OMR::RegisterCandidates::getBlocksReferencingSymRef 721: +0.01% libj9jit29.so [.] OMR::Compilation::getStartTree 722: +0.01% libj9jit29.so [.] OMR::ValuePropagation::ValueConstraintHandler::free 723: +0.01% libj9jit29.so [.] indirectLoadSimplifier 727: +0.01% libj9jit29.so [.] TR::RegDepCopyRemoval::readRegDeps 728: +0.01% libj9jit29.so [.] constrainWrtBar 729: +0.01% libj9jit29.so [.] L.6copy 730: +0.01% libj9jit29.so [.] TR_J9VM::getClassFromMethodBlock 731: +0.01% libj9jit29.so [.] TR_J9InlinerUtil::computePrexInfo 732: +0.01% libj9jit29.so [.] TR_UseDefInfo::skipAnalyzingForCompileTime 733: +0.01% libj9jit29.so [.] TR::PPCConditionalBranchInstruction::fillBinaryEncodingFields 735: +0.01% libj9jit29.so [.] OMR::ResolvedMethodSymbol::addProfilingOffsetInfo 737: +0.01% libj9jit29.so [.] J9::Power::TreeEvaluator::VMifInstanceOfEvaluator 739: +0.01% libj9jit29.so [.] OMR::Node::getLabel 740: +0.01% libj9jit29.so [.] jitExceptionHandlerSearch 741: +0.01% libj9jit29.so [.] returnFromJIT1 742: +0.01% libj9jit29.so [.] OMR::ILOpCode::isLoadConst 744: +0.01% libj9jit29.so [.] TR_J9ByteCodeIlGenerator::numPlaceholderCalls 746: +0.01% libj9jit29.so [.] TR_ValueNumberInfo::hash 748: +0.01% libj9jit29.so [.] OMR::Power::CodeGenerator::setRealRegisterAssociation 819: +0.01% libj9jit29.so [.] OMR::Power::Instruction::defsRegister 820: +0.01% libj9jit29.so [.] OMR::Node::setNumRelocations 822: +0.01% libj9jit29.so [.] OMR::Node::setRelocationDestination 823: +0.01% libj9jit29.so [.] jitExitInterpreter0 824: +0.01% libj9jit29.so [.] __quadWordArrayCopy_vsx 825: +0.01% libj9jit29.so [.] TR_J9VMBase::hasIProfilerBlockFrequencyInfo 826: +0.01% libj9jit29.so [.] generateMemSrc1Instruction 830: +0.01% libj9jit29.so [.] non-virtual thunk to TR_ResolvedJ9Method::signatureChars() 831: +0.01% libj9jit29.so [.] TR_AliasSetInterface<(AliasSetInterface)0>::getAliasesAndSubtractFrom 832: +0.01% libj9jit29.so [.] TR_J9ByteCodeIlGenerator::genInvoke 833: +0.01% libj9jit29.so [.] TR_RuntimeAssumptionTable::addAssumption 834: +0.01% libj9jit29.so [.] TR::MemoryReference::createWithSymRef 835: +0.01% libj9jit29.so [.] TR::PPCTrg1MemInstruction::getTargetRegister 836: +0.01% libj9jit29.so [.] TR::VPClassType::typeIntersectLocation 837: +0.01% libj9jit29.so [.] createMethodMetaData 839: +0.01% libj9jit29.so [.] TR_OptimizationPlan::freeOptimizationPlan 840: +0.01% libj9jit29.so [.] OMR::ILOpCode::isLoadVar 842: +0.01% libj9jit29.so [.] initializeOSRFrame 843: +0.01% libj9jit29.so [.] TR_PrexArgInfo::hasArgInfoForChild 844: +0.01% libj9jit29.so [.] TR::CFGEdge::normalizeFrequency 845: +0.01% libj9jit29.so [.] TR::StackMemoryRegion::~StackMemoryRegion 849: +0.01% libj9jit29.so [.] ificmpeqSimplifier 852: +0.01% libj9jit29.so [.] foldRedundantAND 853: +0.01% libj9jit29.so [.] OMR::ResolvedMethodSymbol::setProfilerFrequency 854: +0.01% libj9jit29.so [.] OMR::LocalCSE::LocalCSE 856: +0.01% libj9jit29.so [.] L.18copy 857: +0.01% libj9jit29.so [.] OMR::CodeGenerator::lowerTreesPropagateBlockToNode 858: +0.01% libj9jit29.so [.] OMR::ResolvedMethodSymbol::getLastTreeTop 859: +0.01% libj9jit29.so [.] OMR::SymbolReferenceTable::findOrCreateAsyncCheckSymbolRef 860: +0.01% libj9jit29.so [.] reassociateBigConstants 861: +0.01% libj9jit29.so [.] TR_J9VMBase::restoreCompilationPhase 862: +0.01% libj9jit29.so [.] TR_J9InlinerUtil::requestAdditionalOptimizations 865: +0.01% libj9jit29.so [.] J9::Power::JNILinkage::JNILinkage 866: +0.01% libj9jit29.so [.] OMR::Power::TreeEvaluator::compareIntsForEquality 867: +0.01% libj9jit29.so [.] TR_J9VMBase::isClassFinal 868: +0.01% libj9jit29.so [.] J9::RecognizedCallTransformer::isInlineable 869: +0.01% libj9jit29.so [.] J9::Simplifier::isLegalToUnaryCancel 871: +0.01% libj9jit29.so [.] OMR::RegisterMappedSymbol::RegisterMappedSymbol 872: +0.01% libj9jit29.so [.] TR::NodeIterator::logCurrentLocation 873: +0.01% libj9jit29.so [.] TR_J9VMBase::canAllocateInlineClass 874: +0.01% libj9jit29.so [.] TR::GlobalValuePropagation::processBlock 876: +0.01% libj9jit29.so [.] OMR::LocalCSE::doCopyPropagationIfPossible 877: +0.01% libj9jit29.so [.] intCompareNarrower 878: +0.01% libj9jit29.so [.] TR::PPCDepImmSymInstruction::generateBinaryEncoding 879: +0.01% libj9jit29.so [.] OMR::IL::opCodeForDirectLoad 881: +0.01% libj9jit29.so [.] J9::Compilation::incompleteOptimizerSupportForReadWriteBarriers 882: +0.01% libj9jit29.so [.] TR_DataFlowAnalysis::addToAnalysisQueue 883: +0.01% libj9jit29.so [.] TR::PPCTrg1MemInstruction::getSourceRegister 884: +0.01% libj9jit29.so [.] TR_TransformInlinedFunction::transform 886: +0.01% libj9jit29.so [.] TR_CopyPropagation::isCorrectToPropagate 887: +0.01% libj9jit29.so [.] TR_Memory::allocateMemory 888: +0.01% libj9jit29.so [.] genBoundCheck 889: +0.01% libj9jit29.so [.] J9::Power::TreeEvaluator::ifInstanceOfEvaluator 890: +0.01% libj9jit29.so [.] J9::PersistentAllocator::allocateInternal 891: +0.01% libj9jit29.so [.] virtualGuardHelper 892: +0.01% libj9jit29.so [.] TR::CompilationInfo::acquireCompMonitor 893: +0.01% libj9jit29.so [.] OMR::Node::get32bitIntegralValue 894: +0.01% libj9jit29.so [.] TR_OutOfLineCodeSection::assignRegisters 895: +0.01% libj9jit29.so [.] OMR::Instruction::isMergeableGuard 896: +0.01% libj9jit29.so [.] TR::PPCCallSnippet::generateInvokeExactJ2IThunk 897: +0.01% libj9jit29.so [.] TR::PPCTrg1MemInstruction::PPCTrg1MemInstruction 898: +0.01% libj9jit29.so [.] OMR::CodeGenerator::lowerTrees 899: +0.01% libj9jit29.so [.] TR_J9VMBase::getReferenceField 900: +0.01% libj9jit29.so [.] J9::Node::isUnsafePutOrderedCall 901: +0.01% libj9jit29.so [.] OMR::GlobalRegister::setCurrentRegisterCandidate 902: +0.01% libj9jit29.so [.] TR_BlockStructure::TR_BlockStructure 903: +0.01% libj9jit29.so [.] OMR::Power::TreeEvaluator::generateNullTestInstructions 904: +0.01% libj9jit29.so [.] TR_ClassQueries::collectAllSubClassesLocked 905: +0.01% libj9jit29.so [.] J9::Compilation::reportOptimizationPhase 906: +0.01% libj9jit29.so [.] non-virtual thunk to TR_ResolvedJ9Method::fieldNameChars(int, int&) 907: +0.01% libj9jit29.so [.] TR_UseDefInfo::isLoadAddrUse 908: +0.01% libj9jit29.so [.] fillFieldRB 909: +0.01% libj9jit29.so [.] jitThrowException 910: +0.01% libj9jit29.so [.] TR_ResolvedJ9Method::numberOfExplicitParameters 911: +0.01% libj9jit29.so [.] OMR::Peephole::comp 912: +0.01% libj9jit29.so [.] fillFieldRT 913: +0.01% libj9jit29.so [.] OMR::Node::setCannotOverflow 914: +0.01% libj9jit29.so [.] J9::CodeGenerator::fixUpProfiledInterfaceGuardTest 915: +0.01% libj9jit29.so [.] OMR::CFGSimplifier::perform 916: +0.01% libj9jit29.so [.] TR::PPCTrg1Src1Instruction::defsRegister 917: +0.01% libj9jit29.so [.] OMR::LocalCSE::setIsInMemoryCopyPropFlag 918: +0.01% libj9jit29.so [.] non-virtual thunk to TR_ResolvedJ9Method::getResolvedStaticMethod(TR::Compilation*, int, bool*) 919: +0.01% libj9jit29.so [.] lsubSimplifier 920: +0.01% libj9jit29.so [.] TR_VirtualGuard::TR_VirtualGuard 921: +0.01% libj9jit29.so [.] OMR::MemoryReference::self 923: +0.01% libj9jit29.so [.] collectNodesForIsCorrectChecks 924: +0.01% libj9jit29.so [.] L.quadWordAligned_vsx_residue 925: +0.01% libj9jit29.so [.] TR_ScratchRegisterManager::reclaimScratchRegister 926: +0.01% libj9jit29.so [.] OMR::Node::copyValidProperties 927: +0.01% libj9jit29.so [.] OMR::CodeGenerator::fe 928: +0.01% libj9jit29.so [.] TR_ValueNumberInfo::allocateParmValueNumbers 929: +0.01% libj9jit29.so [.] TR_DebuggingCounters::initializeCompilation 930: +0.01% libj9jit29.so [.] std::_Rb_tree, std::_Select1st >, std::less, TR::typed_allocator, TR::Region&> >::_M_erase 931: +0.01% libj9jit29.so [.] OMR::TransformUtil::removeTree 932: +0.01% libj9jit29.so [.] TR::VPClass::isClassObject 933: +0.01% libj9jit29.so [.] TR_UseDefInfo::getDefiningLoads_ref 934: +0.01% libj9jit29.so [.] TR::RegDepCopyRemoval::discardAllNodeChoices 936: +0.01% libj9jit29.so [.] J9::VMEnv::maxHeapSizeInBytes 937: +0.01% libj9jit29.so [.] J9::MethodSymbol::safeToSkipNullChecks 938: +0.01% libj9jit29.so [.] J9::SystemSegmentProvider::createSegmentFromArea 939: +0.01% libj9jit29.so [.] OMR::Power::RegisterDependencyConditions::searchPreConditionRegister 940: +0.01% libj9jit29.so [.] TR_PrexArgInfo::enhance 941: +0.01% libj9jit29.so [.] TR_J9VMBase::getClassSignature_DEPRECATED 942: +0.01% libj9jit29.so [.] isubSimplifier 943: +0.01% libj9jit29.so [.] OMR::Block::getPrevBlock 944: +0.01% libj9jit29.so [.] OMR::ValuePropagation::copyValueConstraints 945: +0.01% libj9jit29.so [.] OMR::Node::getGlobalRegisterNumber 946: +0.01% libj9jit29.so [.] TR_J9VMBase::acquireClassTableMutex 948: +0.01% libj9jit29.so [.] OMR::VMEnv::canAnyMethodEventsBeHooked 949: +0.01% libj9jit29.so [.] TR::VPConstraint::Tracer::Tracer 950: +0.01% libj9jit29.so [.] OMR::Options::realTimeGC 952: +0.01% libj9jit29.so [.] TR_J9InlinerPolicy::isJSR292SmallHelperMethod 953: +0.01% libj9jit29.so [.] OMR::CFG::addNode 954: +0.01% libj9jit29.so [.] OMR::Compilation::performVirtualGuardNOPing 955: +0.01% libj9jit29.so [.] fast_jitANewArray 956: +0.01% libj9jit29.so [.] TR_J9InlinerUtil::createInnerPrexInfo 957: +0.01% libj9jit29.so [.] collectSymbolReferencesInNode 958: +0.01% libj9jit29.so [.] _interpreterGPR3GPR4StaticGlue 959: +0.01% libj9jit29.so [.] OMR::Compilation::isPICSite 960: +0.01% libj9jit29.so [.] J9::ValuePropagation::getArrayLengthLimits 961: +0.01% libj9jit29.so [.] OMR::Block::inheritBlockInfo 962: +0.01% libj9jit29.so [.] OMR::RegisterCandidates::findOrCreate 963: +0.01% libj9jit29.so [.] J9::CompilationStrategy::processEvent 965: +0.01% libj9jit29.so [.] J9::Compilation::reportAnalysisPhase 967: +0.01% libj9jit29.so [.] TR_ResolvedJ9Method::isMethodInValidLibrary 969: +0.01% libj9jit29.so [.] TR_J9VMBase::shouldPerformEDO 970: +0.01% libj9jit29.so [.] TR_HandleInjectedBasicBlock::find 971: +0.01% libj9jit29.so [.] OMR::Compilation::generateArraylets 972: +0.01% libj9jit29.so [.] TR::PPCAdminInstruction::fillBinaryEncodingFields 973: +0.01% libj9jit29.so [.] OMR::Node::setRegister 974: +0.01% libj9jit29.so [.] TR_ValueNumberInfo::TR_ValueNumberInfo 975: +0.01% libj9jit29.so [.] OMR::Compilation::restoreInlineDepthUntil 976: +0.01% libj9jit29.so [.] TR_J9InlinerUtil::getTransformInlinedFunction 977: +0.01% libj9jit29.so [.] TR_CallStack::addTemp 978: +0.01% libj9jit29.so [.] OMR::CodeGenPhase::performCleanUpFlagsPhase 979: +0.01% libj9jit29.so [.] OMR::Power::Machine::assignOneRegister 980: +0.01% libj9jit29.so [.] OMR::SymbolReference::isThisPointer 982: +0.01% libj9jit29.so [.] TR_ResolvedJ9Method::isStatic 983: +0.01% libj9jit29.so [.] TR::VPConstraint::asUnreachablePath 984: +0.01% libj9jit29.so [.] J9::MethodSymbol::safeToSkipZeroInitializationOnNewarrays 985: +0.01% libj9jit29.so [.] OMR::ResolvedMethodSymbol::addAutomatic 986: +0.01% libj9jit29.so [.] OMR::Optimizer::optimize 987: +0.01% libj9jit29.so [.] OMR::Power::TreeEvaluator::ificmpeqEvaluator 988: +0.01% libj9jit29.so [.] TR_RegionStructure::removeSubNode 991: +0.01% libj9jit29.so [.] TR_BlockStructure::removeExternalEdgeTo 992: +0.01% libj9jit29.so [.] TR::VPEqual::merge1 993: +0.01% libj9jit29.so [.] simplifyJ9ClassFlags 994: +0.01% libj9jit29.so [.] TR::RegDepCopyRemoval::perform 996: +0.01% libj9jit29.so [.] TR::StackMemoryRegion::StackMemoryRegion 997: +0.01% libj9jit29.so [.] jitFieldsAreIdentical 998: +0.01% libj9jit29.so [.] std::map, TR::typed_allocator, TR::Region&> >::operator[] 999: +0.01% libj9jit29.so [.] simplifyIfacmpneHelper 1000: +0.01% libj9jit29.so [.] OMR::Optimization::getSymRefTab 1001: +0.01% libj9jit29.so [.] constrainLoadaddr 1002: +0.01% libj9jit29.so [.] OMR::ValuePropagation::findStoreValueConstraint 1003: +0.01% libj9jit29.so [.] OMR::Peephole::self 1004: +0.01% libj9jit29.so [.] OMR::Compilation::adjustInlineDepth 1005: +0.01% libj9jit29.so [.] J9::SystemSegmentProvider::request 1006: +0.01% libj9jit29.so [.] TR_MultipleCallTargetInliner::applyArgumentHeuristics 1007: +0.01% libj9jit29.so [.] OMR::Compilation::convertNonDeterministicInput 1008: +0.01% libj9jit29.so [.] OMR::Power::RegisterDependencyConditions::assignPreConditionRegisters 1009: +0.01% libj9jit29.so [.] TR_J9VMBase::isAOT_DEPRECATED_DO_NOT_USE 1010: +0.01% libj9jit29.so [.] TR_RegionStructure::resetAnalysisInfo 1012: +0.01% libj9jit29.so [.] OMR::LocalCSE::getNode 1013: +0.01% libj9jit29.so [.] TR_BlockSplitter::TR_BlockSplitter 1015: +0.01% libj9jit29.so [.] TR_ValueNumberInfo::~TR_ValueNumberInfo 1017: +0.01% libj9jit29.so [.] OMR::ValuePropagation::freeRelationship 1018: +0.01% libj9jit29.so [.] OMR::Optimization::requestOpt 1019: +0.01% libj9jit29.so [.] TR_J9VMBase::saveCompilationPhase 1020: +0.01% libj9jit29.so [.] OMR::Instruction::expandInstruction 1021: +0.01% libj9jit29.so [.] J9::Power::PrivateLinkage::buildIndirectDispatch 1022: +0.01% libj9jit29.so [.] OMR::Compilation::getStartBlock 1023: +0.01% libj9jit29.so [.] TR_J9VMBase::getInt64FieldAt 1024: +0.01% libj9jit29.so [.] J9::Compilation::getOrCreateKnownObjectTable 1025: +0.01% libj9jit29.so [.] TR::PPCTrg1Src1Instruction::fillBinaryEncodingFields 1026: +0.01% libj9jit29.so [.] OMR::CodeGenerator::recursivelyDecReferenceCount 1027: +0.01% libj9jit29.so [.] OMR::SymbolReference::getUseonlyAliasesBV 1028: +0.01% libj9jit29.so [.] OMR::Optimizer::areNodesEquivalent 1029: +0.01% libj9jit29.so [.] TR_BitVector::commonElementCount 1030: +0.01% libj9jit29.so [.] OMR::Node::getSize 1031: +0.01% libj9jit29.so [.] getFieldAnnotationsDataFromROMField 1032: +0.01% libj9jit29.so [.] TR_ExternalValueProfileInfo::getInfo 1033: +0.01% libj9jit29.so [.] J9::VMEnv::canMethodExitEventBeHooked 1034: +0.01% libj9jit29.so [.] TR_ResolvedJ9Method::isConstructor 1035: +0.01% libj9jit29.so [.] OMR::Power::TreeEvaluator::treetopEvaluator 1036: +0.01% libj9jit29.so [.] TR::CFGNode::normalizeFrequency 1037: +0.01% libj9jit29.so [.] jitNewObject 1038: +0.01% libj9jit29.so [.] OMR::Power::CodeGenerator::findOutLinedInstructionsFromLabel 1040: +0.01% libj9jit29.so [.] TR_J9MutableCallSite::findCallSiteTarget 1041: +0.01% libj9jit29.so [.] InterpreterEmulator::visitInvokestatic 1042: +0.01% libj9jit29.so [.] TR_RegionAnalysis::getRegions 1043: +0.01% libj9jit29.so [.] TR::VPIntRange::getHigh 1044: +0.01% libj9jit29.so [.] OMR::Block::createBlock 1045: +0.01% libj9jit29.so [.] OMR::Options::getInitialHotnessLevel 1046: +0.01% libj9jit29.so [.] CS2::ArrayOf > >, 8ul, int>::GrowTo 1047: +0.01% libj9jit29.so [.] non-virtual thunk to TR_ResolvedJ9Method::signature(TR_Memory*, TR_AllocationKind) 1048: +0.01% libj9jit29.so [.] CS2::ABitVector > > >::Clear 1049: +0.01% libj9jit29.so [.] TR_CompactNullChecks::compactNullChecks 1051: +0.01% libj9jit29.so [.] TR_TrivialBlockExtension::performOnBlock 1052: +0.01% libj9jit29.so [.] J9::Compilation::exitHeuristicRegion 1053: +0.01% libj9jit29.so [.] getUniqueSymRef 1054: +0.01% libj9jit29.so [.] TR_J9VMBase::get 1055: +0.01% libj9jit29.so [.] std::__detail::_List_node_base::_M_hook 1056: +0.01% libj9jit29.so [.] OMR::Power::LoadStoreHandler::generateLoadNodeSequence 1057: +0.01% libj9jit29.so [.] TR::VPClass::getKnownObject 1060: +0.01% libj9jit29.so [.] OMR::Compilation::resetVisitCounts 1061: +0.01% libj9jit29.so [.] OMR::Node::canGet64bitIntegralValue 1062: +0.01% libj9jit29.so [.] OMR::TreeTop::getExtendedBlockExitTreeTop 1063: +0.01% libj9jit29.so [.] J9::Power::CodeGenerator::insertPrefetchIfNecessary 1064: +0.01% libj9jit29.so [.] jitMethodTranslated 1065: +0.01% libj9jit29.so [.] TR::MemoryReference::createWithRootLoadOrStore 1066: +0.01% libj9jit29.so [.] OMR::SymbolReferenceTable::getNonhelperIndex 1067: +0.01% libj9jit29.so [.] J9::Power::CodeGenerator::inlineDirectCall 1068: +0.01% libj9jit29.so [.] TR_J9ByteCodeIlGenerator::loadClassObject 1070: +0.01% libj9jit29.so [.] InterpreterEmulator::isCurrentCallUnresolvedOrCold 1071: +0.01% libj9jit29.so [.] OMR::ValuePropagation::addEdgeConstraint 1072: +0.01% libj9jit29.so [.] OMR::ValuePropagation::replaceByConstant 1073: +0.01% libj9jit29.so [.] TR_J9InlinerPolicy::shouldRemoveDifferingTargets 1074: +0.01% libj9jit29.so [.] TR::PPCConditionalBranchInstruction::assignRegisters 1075: +0.01% libj9jit29.so [.] non-virtual thunk to TR_ResolvedJ9Method::getPersistentIdentifier() 1076: +0.01% libj9jit29.so [.] J9::ObjectModel::offsetOfHeaderFlags 1078: +0.01% libj9jit29.so [.] old_slow_jitCallCFunction 1079: +0.01% libj9jit29.so [.] initialInvokeExactThunk_unwrapper 1080: +0.01% libj9jit29.so [.] non-virtual thunk to TR_ResolvedJ9Method::isNonEmptyObjectConstructor() 1081: +0.01% libj9jit29.so [.] TR::VPIntRange::createWithPrecision 1082: +0.01% libj9jit29.so [.] J9::VMEnv::canMethodEnterEventBeHooked 1083: +0.01% libj9jit29.so [.] TR_J9MethodBase::classNameLength 1084: +0.01% libj9jit29.so [.] OMR::LocalCSE::isFirstReferenceToNode 1085: +0.01% libj9jit29.so [.] OMR::ResolvedMethodSymbol::detectInternalCycles 1086: +0.01% libj9jit29.so [.] checkcastSimplifier 1087: +0.01% libj9jit29.so [.] std::map, TR::typed_allocator, TR::Region&> >::operator[] 1088: +0.01% libj9jit29.so [.] TR_IProfiler::getCallCount 1089: +0.01% libj9jit29.so [.] J9::SymbolReferenceTable::findClassFromJavaLangClassAsPrimitiveSymbolRef 1090: +0.01% libj9jit29.so [.] OMR::ObjectModel::sizeofReferenceAddress 1091: +0.01% libj9jit29.so [.] nullchkSimplifier 1092: +0.01% libj9jit29.so [.] OMR::ResolvedMethodSymbol::getPendingPushSymRefs 1093: +0.01% libj9jit29.so [.] TR_ParameterToArgumentMapper::findMapping 1095: +0.01% libj9jit29.so [.] OMR::CompilationStrategy::self 1096: +0.01% libj9jit29.so [.] J9::SystemSegmentProvider::remaining 1098: +0.01% libj9jit29.so [.] non-virtual thunk to TR_ResolvedJ9Method::isStatic() 1099: +0.01% libj9jit29.so [.] jitIsMethodTaggedWithForceInline 1100: +0.01% libj9jit29.so [.] TR_J9MethodBase::isUnsafeWithObjectArg 1101: +0.01% libj9jit29.so [.] TR_J9ByteCodeIlGenerator::genArgPlaceholderCall 1102: +0.01% libj9jit29.so [.] OMR::AliasBuilder::updateSubSets 1103: +0.01% libj9jit29.so [.] OMR::CodeGenerator::traceRAInstruction 1105: +0.01% libj9jit29.so [.] OMR::Power::Linkage::saveArguments 1106: +0.01% libj9jit29.so [.] TR_BitVector::elementCount 1107: +0.01% libj9jit29.so [.] TR::VPRelation::asRelation 1108: +0.01% libj9jit29.so [.] TR_OptimizationPlan::operator new 1109: +0.01% libj9jit29.so [.] TR_OrderBlocks::peepHoleGotoToEmpty 1110: +0.01% libj9jit29.so [.] TR_Memory::currentStackRegion 1111: +0.01% libj9jit29.so [.] TR_BranchProfileInfoManager::getCallFactor 1112: +0.01% libj9jit29.so [.] OMR::Power::Machine::disassociateUnspilledBackingStorage 1113: +0.01% libj9jit29.so [.] OMR::Compilation::aliasRegion 1114: +0.01% libj9jit29.so [.] OMR::ILOpCode::isArrayRef 1115: +0.01% libj9jit29.so [.] TR_J9VMBase::reserveTrampolineIfNecessary 1117: +0.01% libj9jit29.so [.] TR_J9InlinerPolicy::isInlineableJNI 1118: +0.01% libj9jit29.so [.] J9::Compilation::saveCompilationPhase 1119: +0.01% libj9jit29.so [.] TR_IProfiler::getCGProfilingData 1120: +0.01% libj9jit29.so [.] OMR::LocalCSE::removeFromHashTable 1121: +0.01% libj9jit29.so [.] J9::Compilation::getCachedClassPointer 1122: +0.01% libj9jit29.so [.] OMR::MethodSymbol::MethodSymbol 1123: +0.01% libj9jit29.so [.] jit_artifact_search 1124: +0.01% libj9jit29.so [.] TR_DataFlowAnalysis::removeHeadFromAnalysisQueue 1126: +0.01% libj9jit29.so [.] OMR::Node::recreateAndCopyValidPropertiesImpl 1127: +0.01% libj9jit29.so [.] J9::IlGeneratorMethodDetails::sameMethod 1128: +0.01% libj9jit29.so [.] estimateLikeliness 1130: +0.01% libj9jit29.so [.] TR_StringBuilderTransformer::performOnBlock 1132: +0.01% libj9jit29.so [.] non-virtual thunk to TR_ResolvedJ9Method::numberOfParameters() 1133: +0.01% libj9jit29.so [.] tryFoldCompileTimeLoad 1134: +0.01% libj9jit29.so [.] OMR::LabelSymbol::LabelSymbol 1135: +0.01% libj9jit29.so [.] TR_ValueNumberInfo::changeValueNumber 1136: +0.01% libj9jit29.so [.] TR::PPCMemInstruction::getMemoryReference 1137: +0.01% libj9jit29.so [.] TR::VPConstraint::asFixedClass 1138: +0.01% libj9jit29.so [.] TR::RegionProfiler::~RegionProfiler 1139: +0.01% libj9jit29.so [.] OMR::Node::get64bitIntegralValue 1140: +0.01% libj9jit29.so [.] TR::VPConstraint::isSpecialClass 1141: +0.01% libj9jit29.so [.] OMR::ILOpCode::isLoadReg 1142: +0.01% libj9jit29.so [.] TR_BitVector::setAll 1143: +0.01% libj9jit29.so [.] TR_BlockSplitter::splitBlock 1144: +0.01% libj9jit29.so [.] TR_J9VMBase::lookupArchetype 1145: +0.01% libj9jit29.so [.] std::_Rb_tree, std::_Select1st >, std::less, TR::typed_allocator, TR::Region&> >::_M_emplace_unique > 1146: +0.01% libj9jit29.so [.] OMR::ValuePropagation::findVarOfSimpleFormOld 1147: +0.01% libj9jit29.so [.] TR::VPLongConstraint::getHighLong 1148: +0.01% libj9jit29.so [.] TR_ResolvedJ9Method::constantPoolHdr 1149: +0.01% libj9jit29.so [.] J9::MonitorTable::readReleaseClassUnloadMonitor 1150: +0.01% libj9jit29.so [.] std::__uninitialized_fill_n_a > > >*, unsigned long, CS2::ABitVector > > >, TR::typed_allocator > > >, TR::Region&> > 1151: +0.01% libj9jit29.so [.] TR_J9VMBase::releaseClassTableMutex 1152: +0.01% libj9jit29.so [.] TR::PPCSystemLinkage::buildArgs 1153: +0.01% libj9jit29.so [.] J9::Symbol::convertTypeToSize 1154: +0.01% libj9jit29.so [.] TR_PersistentProfileInfo::get 1155: +0.01% libj9jit29.so [.] TR_J9EstimateCodeSize::labelGraph 1156: +0.01% libj9jit29.so [.] OMR::ValuePropagation::transformArrayCopySpineCheck 1157: +0.01% libj9jit29.so [.] TR::CFGNode::hasExceptionSuccessor 1158: +0.01% libj9jit29.so [.] TR::VPIntConstraint::mustBeNotEqual 1159: +0.01% libj9jit29.so [.] OMR::LocalCSE::killAllAvailableExpressions 1160: +0.01% libj9jit29.so [.] TR::VPClass::isNullObject 1161: +0.01% libj9jit29.so [.] constrainRangeByPrecision 1162: +0.01% libj9jit29.so [.] OMR::ValuePropagation::createNewBlockInfoForVersioning 1163: +0.01% libj9jit29.so [.] TR::VPClass::merge1 1165: +0.01% libj9jit29.so [.] OMR::RegisterCandidate::getType 1167: +0.01% libj9jit29.so [.] TR_VirtualGuardTailSplitter::initializeDataStructures 1168: +0.01% libj9jit29.so [.] TR_ParameterToArgumentMapper::fixCallNodeArgs 1169: +0.01% libj9jit29.so [.] J9::Simplifier::simplifyiCallMethods 1170: +0.01% libj9jit29.so [.] TR_InlinerBase::alwaysWorthInlining 1172: +0.01% libj9jit29.so [.] OMR::Block::endsInGoto 1173: +0.01% libj9jit29.so [.] OMR::Optimization::prepareToStopUsingNode 1174: +0.01% libj9jit29.so [.] constrainCall 1175: +0.01% libj9jit29.so [.] OMR::Power::MemoryReference::setOffsetRequiresWordAlignment 1176: +0.01% libj9jit29.so [.] TR_ResolvedMethod::isJ9 1177: +0.01% libj9jit29.so [.] ificmpneSimplifier 1178: +0.01% libj9jit29.so [.] OMR::Power::Instruction::Instruction 1179: +0.01% libj9jit29.so [.] TR_VMFieldsInfo::buildField 1181: +0.01% libj9jit29.so [.] OMR::LocalCSE::areSyntacticallyEquivalent 1182: +0.01% libj9jit29.so [.] TR_GlobalRegisterAllocator::markAutosUsedIn 1183: +0.01% libj9jit29.so [.] OMR::CFG::unreachableOrphan 1184: +0.01% libj9jit29.so [.] OMR::Optimizer::setUseDefInfo 1186: +0.01% libj9jit29.so [.] TR::PPCTrg1MemInstruction::getMemoryDataRegister 1187: +0.01% libj9jit29.so [.] J9::MethodSymbol::functionCallDoesNotYieldOSR 1188: +0.01% libj9jit29.so [.] TR::ClassTableCriticalSection::~ClassTableCriticalSection 1190: +0.01% libj9jit29.so [.] TR::CompilationInfo::startPCIfAlreadyCompiled 1191: +0.01% libj9jit29.so [.] TR_ResolvedJ9Method::maxBytecodeIndex 1192: +0.01% libj9jit29.so [.] J9::SystemSegmentProvider::round 1193: +0.01% libj9jit29.so [.] J9::ValuePropagation::transformDirectLoad 1194: +0.01% libj9jit29.so [.] L.24copy 1195: +0.01% libj9jit29.so [.] non-virtual thunk to TR_ResolvedJ9Method::numberOfParameterSlots() 1196: +0.01% libj9jit29.so [.] TR_MethodHandleTransformer::perform 1198: +0.01% libj9jit29.so [.] OMR::SymbolReference::getOwningMethodSymbol 1199: +0.01% libj9jit29.so [.] TR_OrderBlocks::initialize 1200: +0.01% libj9jit29.so [.] TR_CopyPropagation::skipTreeTopAndGetNode 1201: +0.01% libj9jit29.so [.] J9::MethodHandleThunkDetails::isMethodHandleThunk 1202: +0.01% libj9jit29.so [.] TR_OrderBlocks::peepHoleGotoToFollowing 1204: +0.01% libj9jit29.so [.] J9::CompilationStrategy::getInitialOptLevel 1205: +0.01% libj9jit29.so [.] TR::PostorderNodeIterator::alreadyBeenPushed 1206: +0.01% libj9jit29.so [.] OMR::Optimization::postPerform 1208: +0.01% libj9jit29.so [.] TR_J9VMBase::acquireClassUnloadMonitorAndReleaseVMAccessIfNeeded 1209: +0.01% libj9jit29.so [.] generateSrc1Instruction 1210: +0.01% libj9jit29.so [.] TR_J9ByteCodeIlGenerator::handlePendingPushSaveSideEffects 1211: +0.01% libj9jit29.so [.] TR::PPCLabelInstruction::estimateBinaryLength 1212: +0.01% libj9jit29.so [.] OMR::CodeGenerator::buildGCMapsForInstructionAndSnippet 1213: +0.01% libj9jit29.so [.] TR_StringPeepholes::detectBDPattern 1216: +0.01% libj9jit29.so [.] TR_UseDefInfo::getUseDef_ref 1217: +0.01% libj9jit29.so [.] TR_OrderBlocks::doBlockExtension 1218: +0.01% libj9jit29.so [.] OMR::Node::recreateWithoutSymRef_va_args 1220: +0.01% libj9jit29.so [.] TR_CallStack::isCurrentlyOnTheStack 1221: +0.01% libj9jit29.so [.] OMR::Compilation::CompilationPhaseScope::CompilationPhaseScope 1222: +0.01% libj9jit29.so [.] OMR::Block::setHandlerInfo 1223: +0.01% libj9jit29.so [.] OMR::SymbolReference::isLitPoolReference 1225: +0.01% libj9jit29.so [.] TR_MHJ2IThunkTable::findThunk 1226: +0.01% libj9jit29.so [.] TR::VPIntConstraint::subtract 1229: +0.01% libj9jit29.so [.] fieldContainsRuntimeAnnotation 1230: +0.01% libj9jit29.so [.] constrainSubtract 1231: +0.01% libj9jit29.so [.] J9::IL::opCodeForRegisterLoad 1232: +0.01% libj9jit29.so [.] TR::PPCTrg1Src1ImmInstruction::fillBinaryEncodingFields 1233: +0.01% libj9jit29.so [.] TR::CFGNode::normalizedFrequency 1234: +0.01% libj9jit29.so [.] TR_BlockCloner::doBlockClone 1235: +0.01% libj9jit29.so [.] J9::DataType::getSize 1236: +0.01% libj9jit29.so [.] TR_InlinerBase::replaceCallNode 1238: +0.01% libj9jit29.so [.] OMR::ILOpCode::isStore 1241: +0.01% libj9jit29.so [.] InterpreterEmulator::computePrexInfo 1243: +0.01% libj9jit29.so [.] OMR::Compilation::getProfilingMode 1245: +0.01% libj9jit29.so [.] TR_J9VMBase::canMethodExitEventBeHooked 1246: +0.01% libj9jit29.so [.] TR_InlinerBase::forceInline 1249: +0.01% libj9jit29.so [.] TR::VPIntConstraint::intersect1 1251: +0.01% libj9jit29.so [.] TR_HandleInjectedBasicBlock::collectNodesWithMultipleReferences 1253: +0.01% libj9jit29.so [.] fillMemoryReferenceDSRA 1256: +0.01% libj9jit29.so [.] J9::Compilation::notYetRunMeansCold 1258: +0.01% libj9jit29.so [.] OMR::Node::setVirtualGuardInfo 1260: +0.01% libj9jit29.so [.] constrainLload 1264: +0.01% libj9jit29.so [.] TR::VPClassType::classTypesCompatible 1285: +0.01% libj9jit29.so [.] returnFromJITConstructor0 1448: +0.00% libj9jit29.so [.] OMR::RuntimeAssumption::hashCode ```
babsingh commented 9 months ago

@ThanHenderson Thanks for the analysis. Adding the JIT label since the JIT optimizations don't occur with OJDK MHs enabled. fyi @hzongaro @0xdaryl @vijaysun-omr @jdmpapin @nbhuiyan

ThanHenderson commented 9 months ago

@babsingh I am profiling JDK17 now. I will provide updates on that too and see if I can glean anything more.

jdmpapin commented 9 months ago

The ojdk292 flame graph shows that almost the entire time was spent in internalDefineClass(), and most of that in compareROMClassForEquality()/writeROMClass(). I don't think the JIT can speed that up. In particular, I doubt that it runs any Java code. You can also see at the left that the JIT did run (functions starting with "TR", "OMR"). It just took a much smaller proportion of the time, which is understandable given that so much time was spent in the VM's class definition code

ThanHenderson commented 9 months ago

@jdmpapin That's right. I think it is on our end still, I'm continuing to investigate.

hangshao0 commented 9 months ago

The ojdk292 flame graph shows that almost the entire time was spent in internalDefineClass(), and most of that in compareROMClassForEquality()/writeROMClass()

Does the issue goes away if you run with option -XX:-ShareAnonymousClasses and/or -XX:-ShareUnsafeClasses ?

There is a trace point Trc_BCU_compareROMClassForEquality_event that can be triggered to see what are the classes being compared.

ThanHenderson commented 9 months ago

@hangshao0 I think I've gotten it.

The following snippet applies to JDK17 OJDK MHs, but not to 8 or 11 due to 8 and 11's use of defineAnonymousClass wherein the classname passed in here is NULL. https://github.com/eclipse-openj9/openj9/blob/381942ba3c01f837acbb42120e24be29411eaae3/runtime/jcl/common/jcldefine.c#L118-L132

Instead of performing this check and setting the J9_FINDCLASS_FLAG_DO_NOT_SHARE here, I am pushing it to handleAnonClassName in ROMClassBuilder because at that point we have access to a non-NULL class name for defineAnonymousClass-created classes.