Author: Armin Rigo <[email protected]>
Branch:
Changeset: r66111:1ab21f809581
Date: 2013-08-13 08:37 +0200
http://bitbucket.org/pypy/pypy/changeset/1ab21f809581/
Log: Make the crash clearer, e.g. if we compile old code which still uses
'_virtualizable2_'
diff --git a/rpython/jit/metainterp/typesystem.py
b/rpython/jit/metainterp/typesystem.py
--- a/rpython/jit/metainterp/typesystem.py
+++ b/rpython/jit/metainterp/typesystem.py
@@ -52,7 +52,10 @@
return FUNCTYPE, FUNCPTRTYPE
def get_superclass(self, TYPE):
- return lltype.Ptr(TYPE.TO._first_struct()[1])
+ SUPER = TYPE.TO._first_struct()[1]
+ if SUPER is None:
+ return None
+ return lltype.Ptr(SUPER)
def cast_to_instance_maybe(self, TYPE, instance):
return lltype.cast_pointer(TYPE, instance)
diff --git a/rpython/jit/metainterp/virtualizable.py
b/rpython/jit/metainterp/virtualizable.py
--- a/rpython/jit/metainterp/virtualizable.py
+++ b/rpython/jit/metainterp/virtualizable.py
@@ -17,8 +17,14 @@
self.cpu = cpu
self.BoxArray = cpu.ts.BoxRef
#
+ VTYPEPTR1 = VTYPEPTR
while 'virtualizable_accessor' not in deref(VTYPEPTR)._hints:
VTYPEPTR = cpu.ts.get_superclass(VTYPEPTR)
+ assert VTYPEPTR is not None, (
+ "%r is listed in the jit driver's 'virtualizables', "
+ "but that class doesn't have a '_virtualizable_' attribute "
+ "(if it has _virtualizable2_, rename it to _virtualizable_)"
+ % (VTYPEPTR1,))
self.VTYPEPTR = VTYPEPTR
self.VTYPE = VTYPE = deref(VTYPEPTR)
self.vable_token_descr = cpu.fielddescrof(VTYPE, 'vable_token')
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit