def _emit_call(self, op, arglocs, is_call_release_gil=False): resloc = arglocs[0] func_index = 1 + is_call_release_gil adr = arglocs[func_index] arglist = arglocs[func_index + 1:] cb = callbuilder.CallBuilder(self, adr, arglist, resloc, op.getdescr()) descr = op.getdescr() assert isinstance(descr, CallDescr) cb.argtypes = descr.get_arg_types() cb.restype = descr.get_result_type() if is_call_release_gil: saveerrloc = arglocs[1] assert saveerrloc.is_imm() cb.emit_call_release_gil(saveerrloc.value) else: cb.emit()
def _call_assembler_emit_helper_call(self, addr, arglocs, result_loc): cb = callbuilder.CallBuilder(self, addr, arglocs, result_loc, None) cb.emit()
def _call_assembler_emit_call(self, addr, argloc, _): self.regalloc_mov(argloc, r.r2) self.mc.LG(r.r3, l.addr(THREADLOCAL_ADDR_OFFSET, r.SP)) cb = callbuilder.CallBuilder(self, addr, [r.r2, r.r3], r.r2, None) cb.emit()