@@ -62,7 +62,7 @@ class Inline
6262#endif
6363 IR::Instr * InlineGetterSetterFunction (IR::Instr *accessorInstr, const FunctionJITTimeInfo *const inlineeData, const StackSym *symCallerThis, const uint inlineCacheIndex, bool isGetter, bool *pIsInlined, uint recursiveInlineDepth);
6464 IR::Instr * InlineFunctionCommon (IR::Instr *callInstr, bool originalCallTargetOpndIsJITOpt, StackSym* originalCallTargetStackSym, const FunctionJITTimeInfo *funcInfo, Func *inlinee, IR::Instr *instrNext,
65- IR::RegOpnd * returnValueOpnd, IR::Instr *inlineBailoutChecksBeforeInstr, const StackSym *symCallerThis, uint recursiveInlineDepth, bool safeThis = false , bool isApplyTarget = false , bool isCallbackCallApplyTarget = false );
65+ IR::RegOpnd * returnValueOpnd, IR::Instr *inlineBailoutChecksBeforeInstr, const StackSym *symCallerThis, uint recursiveInlineDepth, bool safeThis = false , bool isApplyTarget = false );
6666 IR::Instr * SimulateCallForGetterSetter (IR::Instr *accessorInstr, IR::Instr* insertInstr, IR::PropertySymOpnd* methodOpnd, bool isGetter);
6767
6868 IR::Instr * InlineApply (IR::Instr *callInstr, const FunctionJITTimeInfo * applyData, const FunctionJITTimeInfo * inlinerData, const StackSym *symThis, bool * pIsInlined, uint callSiteId, uint recursiveInlineDepth, uint argsCount);
@@ -73,11 +73,12 @@ class Inline
7373 const StackSym *symThis, IR::Instr ** returnInstr, uint recursiveInlineDepth, bool isArrayOpndArgumentsObject, uint argsCount);
7474 void GetArgInstrsForCallAndApply (IR::Instr* callInstr, IR::Instr** implicitThisArgOut, IR::Instr** explicitThisArgOut, IR::Instr** argumentsOrArrayArgOut, uint &argOutCount);
7575 _Success_ (return != false ) bool TryGetCallApplyAndTargetLdInstrs (IR::Instr * callInstr, _Outptr_result_nullonfailure_ IR::Instr ** callApplyLdInstr, _Outptr_result_nullonfailure_ IR::Instr ** callApplyTargetLdInstr);
76- IR::Instr * InlineCall (IR::Instr *callInstr, const FunctionJITTimeInfo * inlineeData, const FunctionJITTimeInfo * inlinerData, const StackSym *symThis, bool * pIsInlined, uint callSiteId, uint recursiveInlineDepth);
76+ IR::Instr * InlineCall (IR::Instr *callInstr, const FunctionJITTimeInfo * inlineeData, const FunctionJITTimeInfo * inlinerData, const StackSym *symThis, bool * pIsInlined, uint callSiteId, uint recursiveInlineDepth, bool isCallInstanceFunction );
7777 bool InlineCallTarget (IR::Instr *callInstr, const FunctionJITTimeInfo* inlinerData, const FunctionJITTimeInfo** pInlineeData, const FunctionJITTimeInfo *callFuncInfo,
78- const StackSym *symThis, IR::Instr ** returnInstr, uint recursiveInlineDepth);
78+ const StackSym *symThis, IR::Instr ** returnInstr, uint recursiveInlineDepth, bool isCallInstanceFunction );
7979
80- bool TryGetCallApplyInlineeData (const FunctionJITTimeInfo* inlinerData, IR::Instr * callApplyLdInstr, IR::Instr * callApplyTargetLdInstr, const FunctionJITTimeInfo ** inlineeData, Js::InlineCacheIndex * inlineCacheIndex, IR::Instr ** callbackDefInstr);
80+ bool TryGetCallApplyInlineeData (const FunctionJITTimeInfo* inlinerData, IR::Instr * callInstr, IR::Instr * callApplyLdInstr, IR::Instr * callApplyTargetLdInstr, const FunctionJITTimeInfo ** inlineeData, Js::InlineCacheIndex * inlineCacheIndex,
81+ IR::Instr ** callbackDefInstr, bool isCallInstanceFunction);
8182
8283 bool InlConstFoldArg (IR::Instr *instr, __in_ecount_opt(callerArgOutCount) IR::Instr *callerArgOuts[], Js::ArgSlot callerArgOutCount);
8384 bool InlConstFold (IR::Instr *instr, IntConstType *pValue, __in_ecount_opt(callerArgOutCount) IR::Instr *callerArgOuts[], Js::ArgSlot callerArgOutCount);
@@ -100,6 +101,7 @@ class Inline
100101 IR::Instr * TryGetCallbackDefInstr (StackSym * callbackSym);
101102 IR::Instr * TryGetCallbackDefInstrForCallInstr (IR::Instr * callInstr);
102103 IR::Instr * TryGetCallbackDefInstrForCallApplyTarget (IR::Instr * callApplyLdInstr);
104+ IR::Instr * TryGetCallbackDefInstrForCallInstanceFunction (IR::Instr * callInstr);
103105
104106 IR::Instr * InlineSpread (IR::Instr *spreadCall);
105107
@@ -108,7 +110,7 @@ class Inline
108110 void SetupInlineeFrame (Func *inlinee, IR::Instr *inlineeStart, Js::ArgSlot actualCount, IR::Opnd *functionObject);
109111 void FixupExtraActualParams (IR::Instr * instr, IR::Instr *argOuts[], IR::Instr *argOutsExtra[], uint index, uint actualCount, Js::ProfileId callSiteId);
110112 void RemoveExtraFixupArgouts (IR::Instr* instr, uint argoutRemoveCount, Js::ProfileId callSiteId);
111- IR::Instr* PrepareInsertionPoint (IR::Instr *callInstr, const FunctionJITTimeInfo *funcInfo, IR::Instr *insertBeforeInstr, bool isCallbackCallApplyTarget = false );
113+ IR::Instr* PrepareInsertionPoint (IR::Instr *callInstr, const FunctionJITTimeInfo *funcInfo, IR::Instr *insertBeforeInstr);
112114 IR::ByteCodeUsesInstr* EmitFixedMethodOrFunctionObjectChecksForBuiltIns (IR::Instr *callInstr, IR::Instr * funcObjCheckInsertInstr, const FunctionJITTimeInfo * inlineeInfo, bool isPolymorphic, bool isBuiltIn, bool isCtor, bool isInlined);
113115 Js::ArgSlot MapActuals (IR::Instr *callInstr, __out_ecount(maxParamCount) IR::Instr *argOuts[], Js::ArgSlot formalCount, Func *inlinee, Js::ProfileId callSiteId, bool *stackArgsArgOutExpanded, IR::Instr *argOutsExtra[] = nullptr, Js::ArgSlot maxParamCount = Js::InlineeCallInfo::MaxInlineeArgoutCount);
114116 uint32 CountActuals (IR::Instr *callIntr);
0 commit comments