Author: Manuel Jacob Branch: remove-remaining-smm Changeset: r69472:d5a11afb2206 Date: 2014-02-27 01:35 +0100 http://bitbucket.org/pypy/pypy/changeset/d5a11afb2206/
Log: Fix translation. diff --git a/pypy/interpreter/gateway.py b/pypy/interpreter/gateway.py --- a/pypy/interpreter/gateway.py +++ b/pypy/interpreter/gateway.py @@ -593,8 +593,16 @@ self.__class__ = BuiltinCodePassThroughArguments1 self.func__args__ = func elif unwrap_spec == [self_type, ObjSpace, Arguments]: - self.__class__ = BuiltinCodePassThroughArgumentsMethod - self.func__args__ = func + self.__class__ = BuiltinCodePassThroughArguments1 + miniglobals = {'func': func, 'self_type': self_type} + d = {} + source = """if 1: + def _call(space, w_obj, args): + self = space.descr_self_interp_w(self_type, w_obj) + return func(self, space, args) + \n""" + exec compile2(source) in miniglobals, d + self.func__args__ = d['_call'] else: self.__class__ = globals()['BuiltinCode%d' % arity] setattr(self, 'fastfunc_%d' % arity, fastfunc) @@ -703,27 +711,6 @@ return w_result -class BuiltinCodePassThroughArgumentsMethod(BuiltinCodePassThroughArguments1): - # almost the same as BuiltinCodePassThroughArguments1 but passes w_obj - # first for the case when self.func__args__ is a method - - def funcrun_obj(self, func, w_obj, args): - space = func.space - try: - w_result = self.func__args__(w_obj, space, args) - except DescrMismatch: - return args.firstarg().descr_call_mismatch(space, - self.descrmismatch_op, - self.descr_reqcls, - args.prepend(w_obj)) - except Exception, e: - self.handle_exception(space, e) - w_result = None - if w_result is None: - w_result = space.w_None - return w_result - - class BuiltinCode0(BuiltinCode): _immutable_ = True fast_natural_arity = 0 _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit