VirtualBox

Changeset 102879 in vbox


Ignore:
Timestamp:
Jan 15, 2024 3:28:34 PM (14 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
161099
Message:

VMM/IEM: Skip PC validation and such if we don't jump on a conditional branch (when compiling). Disabled setting two unused IEMCPU members. bugref:10371

Location:
trunk/src/VBox/VMM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllThrdPython.py

    r102876 r102879  
    14181418        variation and any subsequent checks that may be necessary after that.
    14191419
    1420         The sCallVarNm is for emitting
     1420        The sCallVarNm is the name of the variable with the threaded function
     1421        to call.  This is for the case where all the variations have the same
     1422        parameters and only the threaded function number differs.
    14211423        """
    14221424        aoStmts = [
     
    14721474            elif sFlag.startswith('IEM_CIMPL_F_BRANCH_'):
    14731475                asTbBranchedFlags.append(sFlag);
    1474         if asTbBranchedFlags:
     1476        if (    asTbBranchedFlags
     1477            and (   'IEM_CIMPL_F_BRANCH_CONDITIONAL' not in asTbBranchedFlags
     1478                 or self.sVariation not in self.kdVariationsWithConditionalNoJmp)):
    14751479            aoStmts.append(iai.McCppGeneric('iemThreadedSetBranched(pVCpu, %s);'
    14761480                                            % ((' | '.join(asTbBranchedFlags)).replace('IEM_CIMPL_F_BRANCH', 'IEMBRANCHED_F'),),
     
    17401744        # Special case for only default variation:
    17411745        if len(self.aoVariations) == 1  and  self.aoVariations[0].sVariation == ThreadedFunctionVariation.ksVariation_Default:
     1746            assert not sBranch;
    17421747            return self.aoVariations[0].emitThreadedCallStmts(0);
    17431748
  • trunk/src/VBox/VMM/VMMAll/IEMAllThrdTables.h

    r102366 r102879  
    351351{
    352352    pVCpu->iem.s.fTbBranched          = fTbBranched;
    353     pVCpu->iem.s.GCPhysTbBranchSrcBuf = pVCpu->iem.s.GCPhysInstrBuf;
    354     pVCpu->iem.s.GCVirtTbBranchSrcBuf = pVCpu->iem.s.uInstrBufPc;
     353    //pVCpu->iem.s.GCPhysTbBranchSrcBuf = pVCpu->iem.s.GCPhysInstrBuf;
     354    //pVCpu->iem.s.GCVirtTbBranchSrcBuf = pVCpu->iem.s.uInstrBufPc;
    355355}
    356356
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r102867 r102879  
    17011701     * whether a branch instruction jumps to a new page or stays within the
    17021702     * current one. */
    1703     RTGCPHYS                GCPhysTbBranchSrcBuf;
     1703    RTGCPHYS                GCPhysTbBranchSrcBufUnused;
    17041704    /** Copy of IEMCPU::uInstrBufPc after decoding a branch instruction.  */
    1705     uint64_t                GCVirtTbBranchSrcBuf;
     1705    uint64_t                GCVirtTbBranchSrcBufUnused;
    17061706    /** Pointer to the ring-3 TB allocator for this EMT. */
    17071707    R3PTRTYPE(PIEMTBALLOCATOR) pTbAllocatorR3;
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette