From d983ae66c7c616a9e78e98025c7378bb2039d207 Mon Sep 17 00:00:00 2001 From: Jonathan Russell Date: Sat, 18 Aug 2018 20:37:55 +0100 Subject: [PATCH] - removed the ability to use printf-like formatting in emitAbortExceptionCall, it barely worked --- src/scripting/vm/jit.cpp | 39 ++------------------------------------- 1 file changed, 2 insertions(+), 37 deletions(-) diff --git a/src/scripting/vm/jit.cpp b/src/scripting/vm/jit.cpp index ffba12cd466..c2ce7398c96 100644 --- a/src/scripting/vm/jit.cpp +++ b/src/scripting/vm/jit.cpp @@ -296,51 +296,16 @@ void setPCOnAbort(VMScriptFunction *sfunc, VMOP* pc) { sfunc->pcOnJitAbort = pc; } -template -void setCallArg(T call, int num, int64_t arg) { - call->setArg(num, asmjit::imm(arg)); -} - -void setCallArg(asmjit::CCFuncCall* call, int num, uint64_t arg) { - call->setArg(num, asmjit::imm_u(arg)); -} - -void setCallArg(asmjit::CCFuncCall* call, int num, const asmjit::Reg& arg) { - call->setArg(num, arg); -} - -template -void setCallArg(asmjit::CCFuncCall* call, int num, Arg* arg) { - call->setArg(num, asmjit::imm_ptr(arg)); -} - -template -void emitCallVariadicArgs(asmjit::CCFuncCall* call, int num, Arg arg) { - setCallArg(call, num, arg); -} - -template -void emitCallVariadicArgs(asmjit::CCFuncCall* call, int num, Arg arg, Args... args) { - setCallArg(call, num, arg); - emitCallVariadicArgs(call, num + 1, args...); -} - -void emitCallVariadicArgs(asmjit::CCFuncCall*, int num) {} - -template -void emitAbortExceptionCall(asmjit::X86Compiler& cc, VMScriptFunction* sfunc, const VMOP* pc, EVMAbortException reason, const char* moreinfo, Args... args) { +void emitAbortExceptionCall(asmjit::X86Compiler& cc, VMScriptFunction* sfunc, const VMOP* pc, EVMAbortException reason, const char* moreinfo) { using namespace asmjit; - auto ptr = cc.newIntPtr(); - CCFuncCall* setPCCall = cc.call(imm_ptr((void*)setPCOnAbort), FuncSignature2(CallConv::kIdHost)); setPCCall->setArg(0, imm_ptr(sfunc)); setPCCall->setArg(1, imm_ptr(pc)); - CCFuncCall* throwAbortCall = cc.call(imm_ptr((void*)ThrowAbortException), FuncSignatureT(CallConv::kIdHost)); + CCFuncCall* throwAbortCall = cc.call(imm_ptr((void*)ThrowAbortException), FuncSignatureT(CallConv::kIdHost)); throwAbortCall->setArg(0, imm(reason)); throwAbortCall->setArg(1, imm_ptr(moreinfo)); - emitCallVariadicArgs(throwAbortCall, 2, args...); } static void CallSqrt(asmjit::X86Compiler& cc, const asmjit::X86Xmm &a, const asmjit::X86Xmm &b)