From 102c00ce13c6b262b818b8900696aed1435334f8 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Sun, 16 Sep 2018 22:39:48 +0200 Subject: [PATCH] - implement string part of OP_CASTB --- src/scripting/vm/jit.cpp | 5 ----- src/scripting/vm/jit_move.cpp | 8 +++++++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/scripting/vm/jit.cpp b/src/scripting/vm/jit.cpp index a419e5bb7e..2ee5f9d5e2 100644 --- a/src/scripting/vm/jit.cpp +++ b/src/scripting/vm/jit.cpp @@ -172,11 +172,6 @@ bool JitCompiler::CanJit(VMScriptFunction *sfunc) return false; } } - else if (sfunc->Code[i].op == OP_CASTB) - { - if (C == CASTB_S) - return false; - } else if (sfunc->Code[i].op == OP_PARAM) { if (!!(B & REGT_MULTIREG3) || !!(B & REGT_MULTIREG2)) diff --git a/src/scripting/vm/jit_move.cpp b/src/scripting/vm/jit_move.cpp index 00cecf47ac..f93f776384 100644 --- a/src/scripting/vm/jit_move.cpp +++ b/src/scripting/vm/jit_move.cpp @@ -147,7 +147,13 @@ void JitCompiler::EmitCASTB() } else { - //reg.d[A] = reg.s[B].Len() > 0; + using namespace asmjit; + typedef int(*FuncPtr)(FString*); + auto call = cc.call(ToMemAddress(reinterpret_cast(static_cast([](FString *s) -> int { + return s->Len() > 0; + }))), FuncSignature1()); + call->setRet(0, regD[A]); + call->setArg(0, regS[B]); } }