def parse_tuple(self, lstr, llvm_tuple, types, name=''): "Unpack a Python tuple into typed llvm variables" lresults = [] for i, type in enumerate(types): var = llvm_alloca(self.translator.lfunc, self.builder, type.to_llvm(self.context), name=name and "%s%d" % (name, i)) lresults.append(var) largs = [llvm_tuple, lstr] + lresults if debug.debug_conversion: self.translator.puts("parsing tuple... %s" % (types, )) nodes.print_llvm(self.translator.env, object_, llvm_tuple) parse_result = self.builder.call(self.pyarg_parsetuple, largs) self.check_err_int(parse_result, 0) # Some conversion functions don't reset the exception state... # self.builder.call(self.pyerr_clear, []) if debug.debug_conversion: self.translator.puts("successfully parsed tuple...") return [self.builder.load(result) for result in lresults]
def parse_tuple(self, lstr, llvm_tuple, types, name=''): "Unpack a Python tuple into typed llvm variables" lresults = [] for i, type in enumerate(types): var = llvm_alloca(self.translator.lfunc, self.builder, type.to_llvm(self.context), name=name and "%s%d" % (name, i)) lresults.append(var) largs = [llvm_tuple, lstr] + lresults if debug_conversion: self.translator.puts("parsing tuple... %s" % (types,)) nodes.print_llvm(self.translator, object_, llvm_tuple) parse_result = self.builder.call(self.pyarg_parsetuple, largs) self.check_err_int(parse_result, 0) # Some conversion functions don't reset the exception state... # self.builder.call(self.pyerr_clear, []) if debug_conversion: self.translator.puts("successfully parsed tuple...") return [self.builder.load(result) for result in lresults]
def buildvalue(self, types, *largs, **kwds): # The caller should check for errors using check_err or by wrapping # its node in an ObjectTempNode name = kwds.get('name', '') fmt = kwds.get('fmt', None) types, lstr = self.lstr(types, fmt) largs = (lstr, ) + largs if debug.debug_conversion: self.translator.puts("building... %s" % name) # func_type = object_(*types).pointer() # py_buildvalue = self.builder.bitcast( # self.py_buildvalue, func_type.to_llvm(self.context)) py_buildvalue = self.py_buildvalue result = self.builder.call(py_buildvalue, largs, name=name) if debug.debug_conversion: self.translator.puts("done building... %s" % name) nodes.print_llvm(self.translator.env, object_, result) self.translator.puts("--------------------------") return result
def buildvalue(self, types, *largs, **kwds): # The caller should check for errors using check_err or by wrapping # its node in an ObjectTempNode name = kwds.get('name', '') fmt = kwds.get('fmt', None) types, lstr = self.lstr(types, fmt) largs = (lstr,) + largs if debug_conversion: self.translator.puts("building... %s" % name) # func_type = object_(*types).pointer() # py_buildvalue = self.builder.bitcast( # self.py_buildvalue, func_type.to_llvm(self.context)) py_buildvalue = self.py_buildvalue result = self.builder.call(py_buildvalue, largs, name=name) if debug_conversion: self.translator.puts("done building... %s" % name) nodes.print_llvm(self.translator, object_, result) self.translator.puts("--------------------------") return result