Changeset 105997 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Sep 10, 2024 8:55:10 AM (4 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp
r105877 r105997 2096 2096 pReNative->Core.u64ArgVars = UINT64_MAX; 2097 2097 2098 AssertCompile(RT_ELEMENTS(pReNative->aidxUniqueLabels) == 23);2099 2098 pReNative->aidxUniqueLabels[0] = UINT32_MAX; 2100 2099 pReNative->aidxUniqueLabels[1] = UINT32_MAX; … … 2120 2119 pReNative->aidxUniqueLabels[21] = UINT32_MAX; 2121 2120 pReNative->aidxUniqueLabels[22] = UINT32_MAX; 2121 #ifdef IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE 2122 pReNative->aidxUniqueLabels[23] = UINT32_MAX; 2123 AssertCompile(RT_ELEMENTS(pReNative->aidxUniqueLabels) == 24); 2124 #else 2125 AssertCompile(RT_ELEMENTS(pReNative->aidxUniqueLabels) == 23); 2126 #endif 2122 2127 2123 2128 pReNative->idxLastCheckIrqCallNo = UINT32_MAX; … … 8949 8954 STR_CASE_CMN(CheckBranchMiss); 8950 8955 STR_CASE_CMN(Return); 8956 #ifdef IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE 8957 STR_CASE_CMN(ReturnZero); 8958 #endif 8951 8959 STR_CASE_CMN(ReturnBreak); 8952 8960 STR_CASE_CMN(ReturnBreakFF); … … 9784 9792 * Emit the epilog code. 9785 9793 */ 9794 aoffLabels[kIemNativeLabelType_ReturnZero] = off; 9795 off = iemNativeEmitGprZero(pReNative, off, IEMNATIVE_CALL_RET_GREG); 9796 9786 9797 aoffLabels[kIemNativeLabelType_Return] = off; 9787 9798 off = iemNativeEmitCoreEpilog(pReNative, off); … … 9883 9894 /* Make sure we've generate code for all labels. */ 9884 9895 for (uint32_t i = kIemNativeLabelType_Invalid + 1; i < RT_ELEMENTS(aoffLabels); i++) 9885 Assert(aoffLabels[i] != 0 || i == kIemNativeLabelType_Return );9886 # endif9896 Assert(aoffLabels[i] != 0 || i == kIemNativeLabelType_ReturnZero); 9897 # endif 9887 9898 } 9888 9899 IEMNATIVE_CATCH_LONGJMP_BEGIN(pReNative, rc); … … 9922 9933 for (uint32_t i = kIemNativeLabelType_Invalid + 1; i < RT_ELEMENTS(pCtx->apExitLabels); i++) 9923 9934 { 9924 Assert(aoffLabels[i] != 0 || i == kIemNativeLabelType_Return );9935 Assert(aoffLabels[i] != 0 || i == kIemNativeLabelType_ReturnZero); 9925 9936 pCtx->apExitLabels[i] = &paFinalCommonCodeRx[aoffLabels[i]]; 9926 9937 Log10((" apExitLabels[%u]=%p %s\n", i, pCtx->apExitLabels[i], iemNativeGetLabelName((IEMNATIVELABELTYPE)i, true))); … … 10180 10191 off = iemNativeRegFlushPendingWrites(pReNative, off); 10181 10192 10193 #ifndef IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE 10182 10194 /* 10183 10195 * Successful return, so clear the return register (eax, w0). … … 10185 10197 off = iemNativeEmitGprZero(pReNative, off, IEMNATIVE_CALL_RET_GREG); 10186 10198 10187 #ifndef IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE10188 10199 /* 10189 10200 * Emit the epilog code. … … 10196 10207 */ 10197 10208 //off = iemNativeEmitBrk(pReNative, off, 0x1227); 10198 off = iemNativeEmitTbExit(pReNative, off, kIemNativeLabelType_Return );10209 off = iemNativeEmitTbExit(pReNative, off, kIemNativeLabelType_ReturnZero); 10199 10210 #endif 10200 10211 -
trunk/src/VBox/VMM/include/IEMN8veRecompiler.h
r105895 r105997 501 501 kIemNativeLabelType_ReturnWithFlags, 502 502 kIemNativeLabelType_NonZeroRetOrPassUp, 503 #ifdef IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE 504 kIemNativeLabelType_ReturnZero, /**< Sets eax/w0 to zero and returns. */ 505 #endif 503 506 kIemNativeLabelType_Return, 504 507 /** The last fixup for branches that can span almost the whole TB length.
Note:
See TracChangeset
for help on using the changeset viewer.