Js::FunctionInfo *InliningDecider::GetCallSiteFuncInfo(Js::FunctionBody *const inliner, const Js::ProfileId profiledCallSiteId, bool* isConstructorCall, bool* isPolymorphicCall) { Assert(inliner); Assert(profiledCallSiteId < inliner->GetProfiledCallSiteCount()); const auto profileData = inliner->GetAnyDynamicProfileInfo(); Assert(profileData); return profileData->GetCallSiteInfo(inliner, profiledCallSiteId, isConstructorCall, isPolymorphicCall); }
ValueType JITTimeProfileInfo::GetReturnType(Js::OpCode opcode, Js::ProfileId callSiteId) const { if (opcode < Js::OpCode::ProfiledReturnTypeCallI || (opcode > Js::OpCode::ProfiledReturnTypeCallIFlags && opcode < Js::OpCode::ProfiledReturnTypeCallIExtended) || opcode > Js::OpCode::ProfiledReturnTypeCallIExtendedFlags) { Assert(Js::DynamicProfileInfo::IsProfiledCallOp(opcode)); Assert(callSiteId < GetProfiledCallSiteCount()); return GetCallSiteInfo()[callSiteId].returnType; } Assert(Js::DynamicProfileInfo::IsProfiledReturnTypeOp(opcode)); Assert(callSiteId < GetProfiledReturnTypeCount()); return reinterpret_cast<ValueType*>(m_profileData.returnTypeData)[callSiteId]; }
uint16 JITTimeProfileInfo::GetConstantArgInfo(Js::ProfileId callSiteId) const { return GetCallSiteInfo()[callSiteId].isArgConstant; }