[pypy-svn] r53340 - in pypy/branch/less-meta-instances/pypy/rpython: ootypesystem test
arigo at codespeak.net
arigo at codespeak.net
Fri Apr 4 18:55:43 CEST 2008
Author: arigo
Date: Fri Apr 4 18:55:41 2008
New Revision: 53340
Modified:
pypy/branch/less-meta-instances/pypy/rpython/ootypesystem/rbuiltin.py
pypy/branch/less-meta-instances/pypy/rpython/test/test_normalizecalls.py
pypy/branch/less-meta-instances/pypy/rpython/test/test_rbuiltin.py
Log:
Fix instantiate(). Fix some other tests.
Modified: pypy/branch/less-meta-instances/pypy/rpython/ootypesystem/rbuiltin.py
==============================================================================
--- pypy/branch/less-meta-instances/pypy/rpython/ootypesystem/rbuiltin.py (original)
+++ pypy/branch/less-meta-instances/pypy/rpython/ootypesystem/rbuiltin.py Fri Apr 4 18:55:41 2008
@@ -98,17 +98,12 @@
else:
r_instance = hop.s_result.rtyper_makerepr(hop.rtyper)
INSTANCE = r_instance.lowleveltype
- c_instance = hop.inputconst(ootype.Void, INSTANCE)
- v_cls = hop.inputarg(hop.args_r[0], arg=0)
- v_obj = hop.gendirectcall(ll_instantiate, c_instance, v_cls)
+ class_repr = rclass.get_type_repr(hop.rtyper)
+ v_cls = hop.inputarg(class_repr, arg=0)
+ v_obj = hop.genop('runtimenew', [v_cls], resulttype=ootype.ROOT)
v_instance = hop.genop('oodowncast', [v_obj], resulttype=hop.r_result.lowleveltype)
- c_meta = hop.inputconst(ootype.Void, "meta")
- hop.genop("oosetfield", [v_instance, c_meta, v_cls], resulttype=ootype.Void)
return v_instance
-def ll_instantiate(INST, C):
- return ootype.runtimenew(C.class_)
-
BUILTIN_TYPER = {}
BUILTIN_TYPER[ootype.new] = rtype_new
BUILTIN_TYPER[ootype.oonewarray] = rtype_oonewarray
Modified: pypy/branch/less-meta-instances/pypy/rpython/test/test_normalizecalls.py
==============================================================================
--- pypy/branch/less-meta-instances/pypy/rpython/test/test_normalizecalls.py (original)
+++ pypy/branch/less-meta-instances/pypy/rpython/test/test_normalizecalls.py Fri Apr 4 18:55:41 2008
@@ -219,6 +219,7 @@
def test_add_more_subclasses(self):
from pypy.rpython import rclass
from pypy.rpython.lltypesystem.rclass import ll_issubclass
+ from pypy.rpython.lltypesystem.rclass import CLASSTYPE
class Sub3(PBase):
def newmethod(self):
return 3
@@ -232,9 +233,9 @@
bk = translator.annotator.bookkeeper
rtyper = translator.rtyper
base_classdef = bk.getuniqueclassdef(PBase)
- base_vtable = rclass.getclassrepr(rtyper, base_classdef).getruntime()
+ base_vtable = rclass.getclassrepr(rtyper, base_classdef).getruntime(CLASSTYPE)
sub3_classdef = bk.getuniqueclassdef(Sub3)
- sub3_vtable = rclass.getclassrepr(rtyper, sub3_classdef).getruntime()
+ sub3_vtable = rclass.getclassrepr(rtyper, sub3_classdef).getruntime(CLASSTYPE)
assert ll_issubclass(sub3_vtable, base_vtable)
assert not ll_issubclass(base_vtable, sub3_vtable)
Modified: pypy/branch/less-meta-instances/pypy/rpython/test/test_rbuiltin.py
==============================================================================
--- pypy/branch/less-meta-instances/pypy/rpython/test/test_rbuiltin.py (original)
+++ pypy/branch/less-meta-instances/pypy/rpython/test/test_rbuiltin.py Fri Apr 4 18:55:41 2008
@@ -530,24 +530,19 @@
class TestOOtype(BaseTestRbuiltin, OORtypeMixin):
- def test_instantiate_meta(self):
- class A:
- pass
- def f():
- return instantiate(A)
- res = self.interpret(f, [])
- assert res.meta # check that it's not null
-
def test_instantiate_multiple_meta(self):
class A:
- pass
+ x = 2
class B(A):
- pass
+ x = 3
+ def do_stuff(cls):
+ return cls.x
def f(i):
if i == 1:
cls = A
else:
cls = B
+ do_stuff(cls)
return instantiate(cls)
res = self.interpret(f, [1])
- assert res.meta # check that it's not null
+ assert res.getmeta() # check that it exists
More information about the Pypy-commit
mailing list