Author: Anton Gulenko <[email protected]>
Branch: strategies-tagging
Changeset: r678:4aa0466bbb5a
Date: 2014-03-20 16:14 +0100
http://bitbucket.org/pypy/lang-smalltalk/changeset/4aa0466bbb5a/
Log: Fix did not work, had to use we_are_translated(). Also removed
obsolete pieces of fieldtype functionality.
diff --git a/spyvm/model.py b/spyvm/model.py
--- a/spyvm/model.py
+++ b/spyvm/model.py
@@ -22,7 +22,7 @@
from rpython.rlib.rarithmetic import intmask, r_uint, r_int
from rpython.rlib.debug import make_sure_not_resized
from rpython.tool.pairtype import extendabletype
-from rpython.rlib.objectmodel import instantiate, compute_hash,
import_from_mixin
+from rpython.rlib.objectmodel import instantiate, compute_hash,
import_from_mixin, we_are_translated
from rpython.rtyper.lltypesystem import lltype, rffi
from rsdl import RSDL, RSDL_helper
@@ -143,10 +143,6 @@
def unwrap_uint(self, space):
raise error.UnwrappingError("Got unexpected class in unwrap_uint")
- def fieldtype(self):
- from spyvm.strategies import obj
- return obj
-
def is_array_object(self):
return False
@@ -221,10 +217,6 @@
def clone(self, space):
return self
- def fieldtype(self):
- from spyvm.strategies import SInt
- return SInt
-
class W_AbstractObjectWithIdentityHash(W_Object):
"""Object with explicit hash (ie all except small
ints and floats)."""
@@ -327,10 +319,6 @@
def invariant(self):
return isinstance(self.value, int)
- def fieldtype(self):
- from spyvm.strategies import LPI
- return LPI
-
def is_array_object(self):
return True
@@ -422,10 +410,6 @@
def size(self):
return 2
- def fieldtype(self):
- from spyvm.strategies import flt
- return flt
-
@signature.finishsigs
class W_AbstractObjectWithClassReference(W_AbstractObjectWithIdentityHash):
"""Objects with arbitrary class (ie not CompiledMethod, SmallInteger or
@@ -654,6 +638,9 @@
class W_PointersObject(W_AbstractPointersObject):
_attrs_ = ['_size', 'list_storage', 'int_storage', 'strategy']
+ if not we_are_translated():
+ list_storage = None
+ int_storage = None
@jit.unroll_safe
def __init__(self, space, w_class, size):
@@ -736,26 +723,8 @@
return False
self.strategy, w_other.strategy = w_other.strategy, self.strategy
self._size, w_other._size = w_other._size, self._size
-
- # Unfortunately, the following is necessary to work both with RPYTHON
and in interpreted mode.
- # Rpython cannot handle list_storage = None in combination with a
rerased pair.
-
- if hasattr(self, 'list_storage'):
- if hasattr(w_other, 'list_storage'):
- self.list_storage, w_other.list_storage =
w_other.list_storage, self.list_storage
- else:
- w_other.list_storage = self.list_storage
- elif hasattr(w_other, 'list_storage'):
- self.list_storage = w_other.list_storage
-
- if hasattr(self, 'int_storage'):
- if hasattr(w_other, 'int_storage'):
- self.int_storage, w_other.int_storage = w_other.int_storage,
self.int_storage
- else:
- w_other.int_storage = self.int_storage
- elif hasattr(w_other, 'int_storage'):
- self.int_storage = w_other.int_storage
-
+ self.list_storage, w_other.list_storage = w_other.list_storage,
self.list_storage
+ self.int_storage, w_other.int_storage = w_other.int_storage,
self.int_storage
return W_AbstractPointersObject.become(self, w_other)
@jit.unroll_safe
@@ -766,13 +735,9 @@
self.log_strategy_operation("Cloned")
return w_result
- def fieldtype(self):
- from spyvm.strategies import obj
- return obj
-
class W_WeakPointersObject(W_AbstractPointersObject):
_attrs_ = ['_weakvars']
-
+
@jit.unroll_safe
def __init__(self, space, w_class, size):
W_AbstractPointersObject.__init__(self, space, w_class, size)
diff --git a/spyvm/test/test_strategies.py b/spyvm/test/test_strategies.py
--- a/spyvm/test/test_strategies.py
+++ b/spyvm/test/test_strategies.py
@@ -4,8 +4,6 @@
from spyvm.test import test_miniimage as tools
from spyvm.error import WrapperException, FatalError
-# Fieldtypes have a separate test file
-
space, interp = tools.setup_module(tools, filename='bootstrapped.image')
class_Array = space.classtable["w_Array"]
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit