@@ -1975,15 +1975,22 @@ extern "C" void InterpreterStubRetVoid();
19751975extern " C" void InterpreterStubRetDouble ();
19761976extern " C" void InterpreterStubRetI8 ();
19771977
1978- #if defined(TARGET_WINDOWS) && defined(TARGET_AMD64)
1978+ #ifdef TARGET_AMD64
1979+ #ifdef TARGET_WINDOWS
19791980extern " C" void CallJittedMethodRetBuffRCX (PCODE *routines, int8_t *pArgs, int8_t *pRet, int totalStackSize);
19801981extern " C" void CallJittedMethodRetBuffRDX (PCODE *routines, int8_t *pArgs, int8_t *pRet, int totalStackSize);
19811982extern " C" void InterpreterStubRetBuffRCX ();
19821983extern " C" void InterpreterStubRetBuffRDX ();
1983- #else // TARGET_WINDOWS && TARGET_AMD64
1984+ #else // TARGET_WINDOWS
1985+ extern " C" void CallJittedMethodRetBuffRDI (PCODE *routines, int8_t *pArgs, int8_t *pRet, int totalStackSize);
1986+ extern " C" void CallJittedMethodRetBuffRSI (PCODE *routines, int8_t *pArgs, int8_t *pRet, int totalStackSize);
1987+ extern " C" void InterpreterStubRetBuffRDI ();
1988+ extern " C" void InterpreterStubRetBuffRSI ();
1989+ #endif // TARGET_WINDOWS
1990+ #else // TARGET_AMD64
19841991extern " C" void CallJittedMethodRetBuff (PCODE *routines, int8_t *pArgs, int8_t *pRet, int totalStackSize);
19851992extern " C" void InterpreterStubRetBuff ();
1986- #endif // TARGET_WINDOWS && TARGET_AMD64
1993+ #endif // TARGET_AMD64
19871994
19881995#ifdef UNIX_AMD64_ABI
19891996extern " C" void CallJittedMethodRetI8I8 (PCODE *routines, int8_t *pArgs, int8_t *pRet, int totalStackSize);
@@ -2060,15 +2067,22 @@ CallStubHeader::InvokeFunctionPtr CallStubGenerator::GetInvokeFunctionPtr(CallSt
20602067 INVOKE_FUNCTION_PTR (CallJittedMethodRetDouble);
20612068 case ReturnTypeI8:
20622069 INVOKE_FUNCTION_PTR (CallJittedMethodRetI8);
2063- #if defined(TARGET_WINDOWS) && defined(TARGET_AMD64)
2070+ #ifdef TARGET_AMD64
2071+ #ifdef TARGET_WINDOWS
20642072 case ReturnTypeBuffArg1:
20652073 INVOKE_FUNCTION_PTR (CallJittedMethodRetBuffRCX);
20662074 case ReturnTypeBuffArg2:
20672075 INVOKE_FUNCTION_PTR (CallJittedMethodRetBuffRDX);
2068- #else // TARGET_WINDOWS && TARGET_AMD64
2076+ #else // TARGET_WINDOWS
2077+ case ReturnTypeBuffArg1:
2078+ INVOKE_FUNCTION_PTR (CallJittedMethodRetBuffRDI);
2079+ case ReturnTypeBuffArg2:
2080+ INVOKE_FUNCTION_PTR (CallJittedMethodRetBuffRSI);
2081+ #endif // TARGET_WINDOWS
2082+ #else // TARGET_AMD64
20692083 case ReturnTypeBuff:
20702084 INVOKE_FUNCTION_PTR (CallJittedMethodRetBuff);
2071- #endif // TARGET_WINDOWS && TARGET_AMD64
2085+ #endif // TARGET_AMD64
20722086#ifdef UNIX_AMD64_ABI
20732087 case ReturnTypeI8I8:
20742088 INVOKE_FUNCTION_PTR (CallJittedMethodRetI8I8);
@@ -2147,15 +2161,23 @@ PCODE CallStubGenerator::GetInterpreterReturnTypeHandler(CallStubGenerator::Retu
21472161 RETURN_TYPE_HANDLER (InterpreterStubRetDouble);
21482162 case ReturnTypeI8:
21492163 RETURN_TYPE_HANDLER (InterpreterStubRetI8);
2150- #if defined(TARGET_WINDOWS) && defined( TARGET_AMD64)
2164+ #ifdef TARGET_AMD64
21512165 case ReturnTypeBuffArg1:
2166+ #ifdef TARGET_WINDOWS
21522167 RETURN_TYPE_HANDLER (InterpreterStubRetBuffRCX);
2168+ #else
2169+ RETURN_TYPE_HANDLER (InterpreterStubRetBuffRDI);
2170+ #endif
21532171 case ReturnTypeBuffArg2:
2172+ #ifdef TARGET_WINDOWS
21542173 RETURN_TYPE_HANDLER (InterpreterStubRetBuffRDX);
2155- #else // TARGET_WINDOWS && TARGET_AMD64
2174+ #else
2175+ RETURN_TYPE_HANDLER (InterpreterStubRetBuffRSI);
2176+ #endif
2177+ #else // TARGET_AMD64
21562178 case ReturnTypeBuff:
21572179 RETURN_TYPE_HANDLER (InterpreterStubRetBuff);
2158- #endif // TARGET_WINDOWS && TARGET_AMD64
2180+ #endif // TARGET_AMD64
21592181#ifdef UNIX_AMD64_ABI
21602182 case ReturnTypeI8I8:
21612183 RETURN_TYPE_HANDLER (InterpreterStubRetI8I8);
@@ -2799,7 +2821,7 @@ CallStubGenerator::ReturnType CallStubGenerator::GetReturnType(ArgIterator *pArg
27992821{
28002822 if (pArgIt->HasRetBuffArg ())
28012823 {
2802- #if defined(TARGET_WINDOWS) && defined( TARGET_AMD64)
2824+ #ifdef TARGET_AMD64
28032825 if (pArgIt->HasThis ())
28042826 {
28052827 return ReturnTypeBuffArg2;
@@ -2810,7 +2832,7 @@ CallStubGenerator::ReturnType CallStubGenerator::GetReturnType(ArgIterator *pArg
28102832 }
28112833#else
28122834 return ReturnTypeBuff;
2813- #endif
2835+ #endif // TARGET_AMD64
28142836 }
28152837 else
28162838 {
0 commit comments