Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r50462:7d73e99929bb Date: 2011-12-13 13:55 +0100 http://bitbucket.org/pypy/pypy/changeset/7d73e99929bb/
Log: Let the JIT see the app-level 'type(x)' construct. diff --git a/pypy/objspace/std/typetype.py b/pypy/objspace/std/typetype.py --- a/pypy/objspace/std/typetype.py +++ b/pypy/objspace/std/typetype.py @@ -10,7 +10,6 @@ w_dict=gateway.NoneNotWrapped): "This is used to create user-defined classes only." - from pypy.objspace.std.typeobject import W_TypeObject # XXX check types w_typetype = _precheck_for_new(space, w_typetype) @@ -19,10 +18,18 @@ if (space.is_w(space.type(w_typetype), space.w_type) and w_bases is None and w_dict is None): return space.type(w_name) - elif w_bases is None or w_dict is None: + else: + return _create_new_type(space, w_typetype, w_name, w_bases, w_dict) + + +def _create_new_type(space, w_typetype, w_name, w_bases, w_dict): + # this is in its own function because we want the special case 'type(x)' + # above to be seen by the jit. + from pypy.objspace.std.typeobject import W_TypeObject + + if w_bases is None or w_dict is None: raise OperationError(space.w_TypeError, space.wrap("type() takes 1 or 3 arguments")) - bases_w = space.fixedview(w_bases) w_winner = w_typetype _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit