diff options
Diffstat (limited to 'src/qml/jit/qv4assembler.cpp')
-rw-r--r-- | src/qml/jit/qv4assembler.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/qml/jit/qv4assembler.cpp b/src/qml/jit/qv4assembler.cpp index c9a2b7c451..be6c03ab8f 100644 --- a/src/qml/jit/qv4assembler.cpp +++ b/src/qml/jit/qv4assembler.cpp @@ -680,6 +680,12 @@ struct PlatformAssembler64 : PlatformAssemblerCommon store64(AccumulatorRegister, addr); } + void moveReg(Address sourceRegAddress, Address destRegAddress) + { + load64(sourceRegAddress, ScratchRegister); + store64(ScratchRegister, destRegAddress); + } + void loadString(int stringId) { loadAccumulator(loadStringAddress(stringId)); @@ -951,6 +957,16 @@ struct PlatformAssembler32 : PlatformAssemblerCommon store32(AccumulatorRegisterTag, addr); } + void moveReg(Address sourceRegAddress, Address destRegAddress) + { + load32(sourceRegAddress, ReturnValueRegisterValue); + sourceRegAddress.offset += 4; + load32(sourceRegAddress, ReturnValueRegisterTag); + store32(ReturnValueRegisterValue, destRegAddress); + destRegAddress.offset += 4; + store32(ReturnValueRegisterTag, destRegAddress); + } + void loadString(int stringId) { load32(loadStringAddress(stringId), AccumulatorRegisterValue); @@ -1443,6 +1459,11 @@ void Assembler::loadReg(int reg) pasm()->loadAccumulator(regAddr(reg)); } +void JIT::Assembler::moveReg(int sourceReg, int destReg) +{ + pasm()->moveReg(regAddr(sourceReg), regAddr(destReg)); +} + void Assembler::storeReg(int reg) { pasm()->storeAccumulator(regAddr(reg)); |