where I can see that Instrumented annotation has suspendableCallSites, suspendableCallSitesOffsetsAfterInstr attributes but not suspendableCallSiteNames.
As I see from InstrumentMethod.collectCallsites that all above attributes are actually collected simultaneously:
So it puzzles me why they are not emitted at InstrumentMethod.emitInstrumentedAnn.
The original problem that I have that when SuspendableHelper.isCallSiteInstrumented is invoked it does not see callSiteNames and hence checks for instrumentation by source line only. But when a stack trace element does not have a source line, Quasar claims that a call site is not instrumented while in fact it is. Thus you have a strong dependency on a fact that a stack trace always has source lines (while they can be stripped).
I have a simple Quasar Test like here:
that is passed through AOT instrumentation.
when I disassemble Test$1.class with
javap - v Test$1.class
I see the followingwhere I can see that Instrumented annotation has
suspendableCallSites
,suspendableCallSitesOffsetsAfterInstr
attributes but notsuspendableCallSiteNames
.As I see from InstrumentMethod.collectCallsites that all above attributes are actually collected simultaneously:
So it puzzles me why they are not emitted at
InstrumentMethod.emitInstrumentedAnn
.The original problem that I have that when
SuspendableHelper.isCallSiteInstrumented
is invoked it does not seecallSiteNames
and hence checks for instrumentation by source line only. But when a stack trace element does not have a source line, Quasar claims that a call site is not instrumented while in fact it is. Thus you have a strong dependency on a fact that a stack trace always has source lines (while they can be stripped).