示例#1
0
文件: ee.py 项目: afrolov/llvm-py
 def new(module, force_interpreter=False):
     core.check_is_module(module)
     _util.check_is_unowned(module)
     ret = _core.LLVMCreateExecutionEngine(module.ptr, int(force_interpreter))
     if isinstance(ret, str):
         raise llvm.LLVMException(ret)
     return ExecutionEngine(ret, module)
示例#2
0
 def new(module, force_interpreter=False):
     core.check_is_module(module)
     _util.check_is_unowned(module)
     ret = _core.LLVMCreateExecutionEngine(module.ptr,
                                           int(force_interpreter))
     if isinstance(ret, str):
         raise llvm.LLVMException, ret
     return ExecutionEngine(ret, module)
示例#3
0
    def test_enginebuilder_basic(self):
        module = self.make_test_module()
        ee = EngineBuilder.new(module).create()

        with self.assertRaises(LLVMException):
            # Ensure the module is owned.
            _util.check_is_unowned(module)

        self.run_foo(ee, module)
示例#4
0
文件: passes.py 项目: chiehwen/llvmpy
 def add(self, pass_obj):
     '''Add a pass to the pass manager.
     
     pass_obj --- Either a Pass instance, a string name of a pass
     '''
     if isinstance(pass_obj, Pass):
         _util.check_is_unowned(pass_obj)
         _core.LLVMAddPass(self.ptr, pass_obj.ptr)
         pass_obj._own(self) # PassManager owns the pass
     elif _util.isstring(pass_obj):
         self._add_pass(pass_obj)
     else:
         raise llvm.LLVMException("invalid pass_id (%s)" % pass_obj)
示例#5
0
文件: ee.py 项目: bfroehle/llvmpy
 def create(self, tm=None):
     '''
     tm --- Optional. Provide a TargetMachine.  Ownership is transfered
            to the returned execution engine.
     '''
     if tm:
         _util.check_is_unowned(tm)
         ret = _core.LLVMEngineBuilderCreateTM(self.ptr, tm.ptr)
     else:
         ret = _core.LLVMEngineBuilderCreate(self.ptr)
     if isinstance(ret, str):
         raise llvm.LLVMException(ret)
     engine = ExecutionEngine(ret, self._module)
     if tm:
         tm._own(owner=engine)
     return engine
示例#6
0
文件: ee.py 项目: chiehwen/llvmpy
    def create(self, tm=None):
        """
        tm --- Optional. Provide a TargetMachine.  Ownership is transfered
               to the returned execution engine.
        """
        if not self.__has_mattrs and FORCE_DISABLE_AVX:
            self.mattrs("-avx")

        if tm:
            _util.check_is_unowned(tm)
            ret = _core.LLVMEngineBuilderCreateTM(self.ptr, tm.ptr)
        else:
            ret = _core.LLVMEngineBuilderCreate(self.ptr)
        if isinstance(ret, str):
            raise llvm.LLVMException(ret)
        engine = ExecutionEngine(ret, self._module)
        if tm:
            tm._own(owner=llvm.DummyOwner)
        return engine
示例#7
0
文件: ee.py 项目: chiehwen/llvmpy
 def new(module):
     core.check_is_module(module)
     _util.check_is_unowned(module)
     obj = _core.LLVMCreateEngineBuilder(module.ptr)
     return EngineBuilder(obj, module)
示例#8
0
文件: ee.py 项目: takluyver/llvmpy
 def new(module):
     core.check_is_module(module)
     _util.check_is_unowned(module)
     obj = _core.LLVMCreateEngineBuilder(module.ptr)
     return EngineBuilder(obj, module)