Author: Alex Gaynor <[email protected]>
Branch:
Changeset: r71697:d54efd025688
Date: 2014-05-24 12:21 -0500
http://bitbucket.org/pypy/pypy/changeset/d54efd025688/
Log: Remove a pointless distinction between the base class and the
subclass
diff --git a/rpython/rtyper/typesystem.py b/rpython/rtyper/typesystem.py
--- a/rpython/rtyper/typesystem.py
+++ b/rpython/rtyper/typesystem.py
@@ -6,24 +6,27 @@
from rpython.rtyper.lltypesystem import lltype
from rpython.rtyper.error import TyperError
-class TypeSystem(object):
+class LowLevelTypeSystem(object):
__metaclass__ = extendabletype
+ name = "lltypesystem"
+ callable_trait = (lltype.FuncType, lltype.functionptr)
+
def derefType(self, T):
- raise NotImplementedError()
+ assert isinstance(T, lltype.Ptr)
+ return T.TO
def deref(self, obj):
- """Dereference `obj' to concrete object."""
- raise NotImplementedError()
+ assert isinstance(lltype.typeOf(obj), lltype.Ptr)
+ return obj._obj
def check_null(self, repr, hop):
- """Emit operations to check that `hop's argument is not a null object.
-"""
- raise NotImplementedError()
+ # None is a nullptr, which is false; everything else is true.
+ vlist = hop.inputargs(repr)
+ return hop.genop('ptr_nonzero', vlist, resulttype=lltype.Bool)
def null_callable(self, T):
- """null callable object of type T"""
- raise NotImplementedError()
+ return lltype.nullptr(T.TO)
def getcallabletype(self, ARGS, RESTYPE):
cls = self.callable_trait[0]
@@ -67,34 +70,8 @@
return constr(FT, name, **kwds)
def getconcretetype(self, v):
- """Helper called by getcallable() to get the conrete type of a variable
-in a graph."""
- raise NotImplementedError()
-
-
-class LowLevelTypeSystem(TypeSystem):
- name = "lltypesystem"
- callable_trait = (lltype.FuncType, lltype.functionptr)
-
- def derefType(self, T):
- assert isinstance(T, lltype.Ptr)
- return T.TO
-
- def deref(self, obj):
- assert isinstance(lltype.typeOf(obj), lltype.Ptr)
- return obj._obj
-
- def check_null(self, repr, hop):
- # None is a nullptr, which is false; everything else is true.
- vlist = hop.inputargs(repr)
- return hop.genop('ptr_nonzero', vlist, resulttype=lltype.Bool)
-
- def getconcretetype(self, v):
return v.concretetype
- def null_callable(self, T):
- return lltype.nullptr(T.TO)
-
def generic_is(self, robj1, robj2, hop):
roriginal1 = robj1
roriginal2 = robj2
@@ -113,7 +90,7 @@
v_list = hop.inputargs(robj1, robj2)
return hop.genop('ptr_eq', v_list, resulttype=lltype.Bool)
+
# All typesystems are singletons
LowLevelTypeSystem.instance = LowLevelTypeSystem()
-
getfunctionptr = LowLevelTypeSystem.instance.getcallable
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit