VirtualBox

Changeset 100222 in vbox for trunk/src/VBox/VMM/VMMR3


Ignore:
Timestamp:
Jun 20, 2023 2:40:48 AM (19 months ago)
Author:
vboxsync
Message:

VMM/IEM: More recompilation code. bugref:10369

Location:
trunk/src/VBox/VMM/VMMR3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/EM.cpp

    r100145 r100222  
    202202        pVCpu->em.s.cHistoryProbeMaxInstructionsWithoutExit   = cHistoryProbeMaxInstructionsWithoutExit;
    203203    }
     204
     205#ifdef VBOX_WITH_IEM_RECOMPILER
     206    /** @cfgm{/EM/IemRecompiled, bool, true}
     207     * Whether IEM bulk execution is recompiled or interpreted. */
     208    rc = CFGMR3QueryBoolDef(pCfgEM, "IemRecompiled", &pVM->em.s.fIemRecompiled, true);
     209    AssertLogRelRCReturn(rc, rc);
     210#endif
    204211
    205212    /*
     
    21852192                case VINF_EM_RESCHEDULE_EXEC_ENGINE:
    21862193                    Assert(!pVM->em.s.fIemExecutesAll || pVCpu->em.s.enmState != EMSTATE_IEM);
     2194                    if (!pVM->em.s.fIemExecutesAll)
     2195                    {
    21872196#if !defined(VBOX_VMM_TARGET_ARMV8)
    2188                     if (VM_IS_HM_ENABLED(pVM))
    2189                     {
    2190                         if (HMCanExecuteGuest(pVM, pVCpu, &pVCpu->cpum.GstCtx))
     2197                        if (VM_IS_HM_ENABLED(pVM))
    21912198                        {
    2192                             Log2(("EMR3ExecuteVM: VINF_EM_RESCHEDULE_EXEC_ENGINE: %d -> %d (EMSTATE_HM)\n", enmOldState, EMSTATE_HM));
    2193                             pVCpu->em.s.enmState = EMSTATE_HM;
    2194                             break;
     2199                            if (HMCanExecuteGuest(pVM, pVCpu, &pVCpu->cpum.GstCtx))
     2200                            {
     2201                                Log2(("EMR3ExecuteVM: VINF_EM_RESCHEDULE_EXEC_ENGINE: %d -> %d (EMSTATE_HM)\n", enmOldState, EMSTATE_HM));
     2202                                pVCpu->em.s.enmState = EMSTATE_HM;
     2203                                break;
     2204                            }
    21952205                        }
    2196                     }
    2197                     else
    2198 #endif
    2199                     if (VM_IS_NEM_ENABLED(pVM))
    2200                     {
    2201                         if (NEMR3CanExecuteGuest(pVM, pVCpu))
     2206                        else
     2207#endif
     2208                        if (VM_IS_NEM_ENABLED(pVM) && NEMR3CanExecuteGuest(pVM, pVCpu))
    22022209                        {
    22032210                            Log2(("EMR3ExecuteVM: VINF_EM_RESCHEDULE_EXEC_ENGINE: %d -> %d (EMSTATE_NEM)\n", enmOldState, EMSTATE_NEM));
  • trunk/src/VBox/VMM/VMMR3/IEMR3.cpp

    r98993 r100222  
    166166        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.DataTlb.uTlbPhysRev, STAMTYPE_X64,       STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
    167167                        "Data TLB physical revision",               "/IEM/CPU%u/DataTlb-PhysRev", idCpu);
     168
     169        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.cTbAllocs,           STAMTYPE_U64,       STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
     170                        "Translation block allocations",            "/IEM/CPU%u/cTbAllocs", idCpu);
     171        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.cTbFrees,            STAMTYPE_U64,       STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
     172                        "Translation block frees",                  "/IEM/CPU%u/cTbFrees", idCpu);
     173        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.cTbLookupHits,       STAMTYPE_U64,       STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
     174                        "Translation block lookup hits",            "/IEM/CPU%u/cTbLookupHits", idCpu);
     175        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.cTbLookupMisses, STAMTYPE_U64,       STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
     176                        "Translation block lookup misses",          "/IEM/CPU%u/cTbLookupMisses", idCpu);
    168177
    169178        for (uint32_t i = 0; i < RT_ELEMENTS(pVCpu->iem.s.aStatXcpts); i++)
Note: See TracChangeset for help on using the changeset viewer.

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