[pypy-svn] r54932 - in pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk: . test
tverwaes at codespeak.net
tverwaes at codespeak.net
Mon May 19 15:28:07 CEST 2008
Author: tverwaes
Date: Mon May 19 15:28:06 2008
New Revision: 54932
Modified:
pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/constants.py
pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/objtable.py
pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/squeakimage.py
pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/test/test_primitives.py
pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/wrapper.py
Log:
(cfbolz, tverwaes) moving from global object dictionary, since it's not
necessarily consistent after translating
Modified: pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/constants.py
==============================================================================
--- pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/constants.py (original)
+++ pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/constants.py Mon May 19 15:28:06 2008
@@ -128,7 +128,6 @@
"false": SO_FALSE,
"charactertable": SO_CHARACTER_TABLE_ARRAY,
"schedulerassociationpointer" : SO_SCHEDULERASSOCIATIONPOINTER,
- "compactclasses" : SO_COMPACT_CLASSES_ARRAY,
"smalltalkdict" : SO_SMALLTALK,
}
Modified: pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/objtable.py
==============================================================================
--- pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/objtable.py (original)
+++ pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/objtable.py Mon May 19 15:28:06 2008
@@ -31,11 +31,19 @@
w_nil = model.w_nil
w_nil.w_class = classtable.classtable['w_UndefinedObject']
-objtable = {}
+# We use indirection because translated globals are assumed to be constant
+class ObjectTableHolder(object):
+ pass
+
+object_table_holder = ObjectTableHolder()
+object_table_holder.objtable = {}
+
+def get_objtable():
+ return object_table_holder.objtable
for name in constants.objects_in_special_object_table:
name = "w_" + name
try:
- objtable[name] = globals()[name]
+ get_objtable()[name] = globals()[name]
except KeyError, e:
- objtable[name] = None
+ get_objtable()[name] = None
Modified: pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/squeakimage.py
==============================================================================
--- pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/squeakimage.py (original)
+++ pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/squeakimage.py Mon May 19 15:28:06 2008
@@ -124,7 +124,7 @@
chunk.g_object.init_w_object()
def assign_prebuilt_constants(self):
- from pypy.lang.smalltalk import classtable, constants, objtable
+ from pypy.lang.smalltalk import classtable, constants
# assign w_objects for objects that are already in classtable
for name, so_index in constants.classes_in_special_object_table.items():
# w_object = getattr(classtable, "w_" + name)
@@ -133,7 +133,7 @@
# assign w_objects for objects that are already in objtable
for name, so_index in constants.objects_in_special_object_table.items():
# w_object = getattr(objtable, "w_" + name)
- w_object = objtable.objtable["w_" + name]
+ w_object = objtable.get_objtable()["w_" + name]
self.special_object(so_index).w_object = w_object
def special_object(self, index):
@@ -204,7 +204,7 @@
from pypy.lang.smalltalk import objtable
for name, idx in constants.objects_in_special_object_table.items():
- objtable.objtable["w_" + name] = self.special_objects[idx]
+ objtable.get_objtable()["w_" + name] = self.special_objects[idx]
def special(self, index):
return self.special_objects[index]
Modified: pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/test/test_primitives.py
==============================================================================
--- pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/test/test_primitives.py (original)
+++ pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/test/test_primitives.py Mon May 19 15:28:06 2008
@@ -393,45 +393,6 @@
now = int(time.time())
assert (prim(primitives.SECONDS_CLOCK, [42]).value - now) <= 2
-def test_become():
- py.test.skip("implement me!")
- """
- testBecome
- | p1 p2 a |
- p1 := 1 at 2.
- p2 := #(3 4 5).
- a := p1 -> p2.
- XXX ? self assert: 1 at 2 = a key.
- XXX ? self assert: #(3 4 5) = a value.
- XXX ? self assert: p1 -> p2 = a.
- self assert: p1 == a key.
- self assert: p2 == a value.
- p1 become: p2.
- XXX ? self assert: 1 at 2 = a value.
- XXX ? self assert: #(3 4 5) = a key.
- XXX ? self assert: p1 -> p2 = a.
- self assert: p1 == a key.
- self assert: p2 == a value.
-
- self should: [1 become: 2] raise: Error.
- """
- # XXX Test deviates from original spec
- w_p1 = model.W_PointersObject(None, 2)
- w_p2 = model.W_PointersObject(None, 3)
- w_a = model.W_PointersObject(classtable.w_Array, 2)
- w_a.atput0(0,w_p1)
- w_a.atput0(1,w_p2)
- objtable.objects += [w_p1]
- objtable.objects += [w_p2]
- objtable.objects += [w_a]
- s_a = w_a.as_association_get_shadow()
- assert s_a.key() == w_p1
- assert s_a.value() == w_p2
- prim(primitives.BECOME, [w_p1, w_p2])
- s_a = w_a.as_association_get_shadow()
- assert s_a.key() == w_p2
- assert s_a.value() == w_p1
-
def test_load_inst_var():
" try to test the LoadInstVar primitives a little "
w_v = prim(primitives.INST_VAR_AT_0, ["q"])
Modified: pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/wrapper.py
==============================================================================
--- pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/wrapper.py (original)
+++ pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/wrapper.py Mon May 19 15:28:06 2008
@@ -163,7 +163,7 @@
def scheduler():
from pypy.lang.smalltalk import objtable
- w_association = objtable.objtable["w_schedulerassociationpointer"]
+ w_association = objtable.get_objtable()["w_schedulerassociationpointer"]
assert w_association is not None
w_scheduler = AssociationWrapper(w_association).value()
assert isinstance(w_scheduler, model.W_PointersObject)
More information about the Pypy-commit
mailing list