def rtype_simple_call(self, hop): TYPE = self.lowleveltype _, meth = TYPE._lookup('Invoke') assert isinstance(meth, ootype._overloaded_meth) ARGS = tuple([repr.lowleveltype for repr in hop.args_r[1:]]) desc = meth._get_desc('Invoke', ARGS) cname = hop.inputconst(ootype.Void, desc) vlist = hop.inputargs(self, *hop.args_r[1:]) hop.exception_is_here() return hop.genop("oosend", [cname] + vlist, resulttype=hop.r_result.lowleveltype)
def rtype_simple_call(self, hop): TYPE = self.lowleveltype _, meth = TYPE._lookup('Invoke') assert isinstance(meth, ootype._overloaded_meth) ARGS = tuple([repr.lowleveltype for repr in hop.args_r[1:]]) desc = meth._get_desc('Invoke', ARGS) cname = hop.inputconst(ootype.Void, desc) vlist = hop.inputargs(self, *hop.args_r[1:]) hop.exception_is_here() return hop.genop("oosend", [cname]+vlist, resulttype = hop.r_result.lowleveltype)
def _lookup(self, meth_name, ARGS): meth = self._static_methods[meth_name] return meth._get_desc(ARGS)
def _get_desc(self, ARGS): meth = self._resolver.resolve(ARGS) assert isinstance(meth, _static_meth) return meth._get_desc(ARGS)