VirtualBox

Changeset 103624 in vbox


Ignore:
Timestamp:
Mar 1, 2024 12:45:18 AM (9 months ago)
Author:
vboxsync
Message:

VMM/IEM: Must release variable register when done with them. bugref:10371

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp

    r103623 r103624  
    1355113551    IEMNATIVE_ASSERT_VAR_SIZE(pReNative, idxDstVar, sizeof(uint16_t));
    1355213552
     13553    uint8_t const idxReg = iemNativeVarRegisterAcquire(pReNative, idxDstVar, &off);
     13554
    1355313555    /* Allocate a temporary FCW register. */
    13554     uint8_t const idxReg = iemNativeVarRegisterAcquire(pReNative, idxDstVar, &off, false /*fInitialized*/);
    13555     uint8_t const idxFcwReg = iemNativeRegAllocTmpForGuestReg(pReNative, &off, kIemNativeGstReg_FpuFcw, kIemNativeGstRegUse_ReadOnly);
     13556    /** @todo eliminate extra register   */
     13557    uint8_t const idxFcwReg = iemNativeRegAllocTmpForGuestReg(pReNative, &off, kIemNativeGstReg_FpuFcw,
     13558                                                              kIemNativeGstRegUse_ReadOnly);
    1355613559
    1355713560    off = iemNativeEmitLoadGprFromGpr16(pReNative, off, idxReg, idxFcwReg);
     
    1355913562    /* Free but don't flush the FCW register. */
    1356013563    iemNativeRegFreeTmp(pReNative, idxFcwReg);
     13564    iemNativeVarRegisterRelease(pReNative, idxDstVar);
    1356113565
    1356213566    return off;
     
    1357413578    IEMNATIVE_ASSERT_VAR_SIZE(pReNative, idxDstVar, sizeof(uint16_t));
    1357513579
     13580    uint8_t const idxReg = iemNativeVarRegisterAcquire(pReNative, idxDstVar, &off, false /*fInitialized*/);
    1357613581    /* Allocate a temporary FSW register. */
    13577     uint8_t const idxReg = iemNativeVarRegisterAcquire(pReNative, idxDstVar, &off, false /*fInitialized*/);
    13578     uint8_t const idxFswReg = iemNativeRegAllocTmpForGuestReg(pReNative, &off, kIemNativeGstReg_FpuFsw, kIemNativeGstRegUse_ReadOnly);
     13582    /** @todo eliminate extra register   */
     13583    uint8_t const idxFswReg = iemNativeRegAllocTmpForGuestReg(pReNative, &off, kIemNativeGstReg_FpuFsw,
     13584                                                              kIemNativeGstRegUse_ReadOnly);
    1357913585
    1358013586    off = iemNativeEmitLoadGprFromGpr16(pReNative, off, idxReg, idxFswReg);
     
    1358213588    /* Free but don't flush the FSW register. */
    1358313589    iemNativeRegFreeTmp(pReNative, idxFswReg);
     13590    iemNativeVarRegisterRelease(pReNative, idxDstVar);
    1358413591
    1358513592    return off;
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