- changed a bunch of manual address additions in string opcodes to leas

This commit is contained in:
Jonathan Russell 2018-09-15 21:09:43 +01:00
commit 69bc39914b
3 changed files with 12 additions and 27 deletions

View file

@ -65,22 +65,18 @@ void JitCompiler::EmitSS()
{
EmitNullPointerThrow(A, X_WRITE_NIL);
auto ptr = cc.newIntPtr();
cc.mov(ptr, regA[A]);
cc.add(ptr, konstd[C]);
cc.lea(ptr, asmjit::x86::ptr(regA[A], konstd[C]));
auto call = cc.call(ToMemAddress(reinterpret_cast<void*>(static_cast<void(*)(FString*, FString*)>(CallAssignString))),
asmjit::FuncSignature2<void, FString*, FString*>(asmjit::CallConv::kIdHostCDecl));
call->setArg(0, ptr);
call->setArg(1, regS[B]);
}
void JitCompiler::EmitSS_R()
{
EmitNullPointerThrow(A, X_WRITE_NIL);
auto ptr = cc.newIntPtr();
cc.mov(ptr, regA[A]);
auto tmp = cc.newIntPtr();
cc.mov(tmp, regD[C]);
cc.add(ptr, tmp);
cc.lea(ptr, asmjit::x86::ptr(regA[A], regD[C]));
auto call = cc.call(ToMemAddress(reinterpret_cast<void*>(static_cast<void(*)(FString*, FString*)>(CallAssignString))),
asmjit::FuncSignature2<void, FString*, FString*>(asmjit::CallConv::kIdHostCDecl));
call->setArg(0, ptr);