Date: Wed, 23 Jul 2014 16:26:29 GMT From: dpl@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r271282 - soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw Message-ID: <201407231626.s6NGQTvs060225@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dpl Date: Wed Jul 23 16:26:29 2014 New Revision: 271282 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=271282 Log: Modularized the LLVM code. Modified: soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.cc Modified: soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.cc ============================================================================== --- soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.cc Wed Jul 23 15:53:29 2014 (r271281) +++ soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.cc Wed Jul 23 16:26:29 2014 (r271282) @@ -12,39 +12,39 @@ using namespace llvm; -struct funcdef { - string name; - int args; -} - -vector<struct funcdef> funcdefs = { - -Module *mod; -LLVMContext con; -LLVMContext &c = con; -OwningPtr<MemoryBuffer> buffer; +class jitCompiler { + private: + Module *mod; + LLVMContext con; + LLVMContext &c = con; + OwningPtr<MemoryBuffer> buffer; + public: + jitCompiler(std::string name) + { + /* We load the bc for JIT compilation */ + error_code ec = MemoryBuffer::getFile(name, buffer); + if (ec) { + std::cerr << "Failed to open bitcode: " << ec.message() << "\n"; + exit(EXIT_FAILURE); + } + + ErrorOr<Module*> ptr = parseBitcodeFile(buffer.get(), con); + if ((ec = ptr.getError())) + { + std::cerr << "Failed to parse bitcode: " << ec.message() << "\n"; + exit(EXIT_FAILURE); + } + mod = ptr.get(); + ptr = parseBitcodeFile(buffer.get(), c); + } +} ; extern "C" void ipfw_jit_init() { - /* We load the bc for JIT compilation */ - error_code ec = MemoryBuffer::getFile("runtime.bc", buffer); - if (ec) { - std::cerr << "Failed to open runtime.bc: " << ec.message() << "\n"; - exit(EXIT_FAILURE); - } - - ErrorOr<Module*> ptr = parseBitcodeFile(buffer.get(), con); - if ((ec = ptr.getError())) - { - std::cerr << "Failed to parse runtime.bc: " << ec.message() << "\n"; - exit(EXIT_FAILURE); - } - mod = ptr.get(); - ptr = parseBitcodeFile(buffer.get(), c); - + jitCompiler("ip_fw_rules.bc"); - // XXX - We have to automate this. + /* XXX - We have to understand what we have to here. // Get the stub (prototype) for the cell function F = Mod->getFunction("cell"); // Set it to have private linkage, so that it can be removed after being @@ -84,4 +84,5 @@ g[i] = B.CreateConstGEP1_32(gArg, i); } + */ }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201407231626.s6NGQTvs060225>