[pypy-svn] r61486 - pypy/branch/avm/pypy/translator/avm

magcius at codespeak.net magcius at codespeak.net
Sat Jan 31 18:49:20 CET 2009


Author: magcius
Date: Sat Jan 31 18:49:18 2009
New Revision: 61486

Modified:
   pypy/branch/avm/pypy/translator/avm/avm1.py
   pypy/branch/avm/pypy/translator/avm/function.py
   pypy/branch/avm/pypy/translator/avm/metavm.py
Log:
Latest port of Mecheye Fusion

Modified: pypy/branch/avm/pypy/translator/avm/avm1.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm/avm1.py	(original)
+++ pypy/branch/avm/pypy/translator/avm/avm1.py	Sat Jan 31 18:49:18 2009
@@ -45,13 +45,12 @@
 Undefined = object()
 Undefined.type = DataTypes.UNDEFINED
 
+class ConstantIndexDescriptor(object):
+    def __get__(self, obj, objtype):
+        return DataTypes.CONSTANT8 if obj.index < 256 else DataTypes.CONSTANT16
+
 class Constant(Index):
-    def __getattr__(self, name):
-        if name == "type":
-            if self.index < 256:
-                return DataTypes.CONSTANT8
-            return DataTypes.CONSTANT16
-        return Index.__getattr__(self, name)
+    type = ConstantIndexDescriptor()
 
 class RegisterByIndex(Index):
     type = DataTypes.REGISTER
@@ -541,7 +540,7 @@
     def __len__(self):
         return 1 # 1 (Action ID)
 
-    def serialize(self)
+    def serialize(self):
         return chr(self.ACTION_ID)
 
 ActionNextFrame           = ShortAction(0x04, "ActionNextFrame")

Modified: pypy/branch/avm/pypy/translator/avm/function.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm/function.py	(original)
+++ pypy/branch/avm/pypy/translator/avm/function.py	Sat Jan 31 18:49:18 2009
@@ -24,10 +24,8 @@
                 self.ilasm.push_local(v)
         elif isinstance(v, flowmodel.Constant):
             self.db.push_const(v.concretetype, v.value, self.ilasm)
-        elif isinstance(v, str):
+        else: # Assume a primitive or special type
             self.ilasm.push_const(v)
-        else:
-            assert False
 
     def store(self, v):
         assert isinstance(v, flowmodel.Variable)

Modified: pypy/branch/avm/pypy/translator/avm/metavm.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm/metavm.py	(original)
+++ pypy/branch/avm/pypy/translator/avm/metavm.py	Sat Jan 31 18:49:18 2009
@@ -49,29 +49,29 @@
 
     def _render_builtin(self, generator, builtin, args):
         for func_arg in args[1:]: # push parameters
-            generator.load(func_arg)
+            generator.push(func_arg)
         generator.call_external(builtin, args[1:])
 
     def _render_builtin_prepared_args(self, generator, builtin, args):
         for func_arg in args:
-            generator.load_str(func_arg)
+            generator.push(func_arg)
         generator.call_external(builtin, args)
     
     def _render_builtin_method(self, generator, builtin, args):
         for func_arg in args:
-            generator.load_special(func_arg)
+            generator.push(func_arg)
         generator.call_external_method(builtin, len(args)-1)
 
     def _render_function(self, generator, graph, args):
         for func_arg in args[1:]: # push parameters
             if func_arg.concretetype is not ootype.Void:
-                generator.load(func_arg)
+                generator.push(func_arg)
         generator.call_graph(graph)
     
     def _render_method(self, generator, method_name, args):
         this = args[0]
-        for arg in args: # push parametes
-            generator.load(arg)
+        for arg in args: # push parameters
+            generator.push(arg)
         generator.call_method(this.concretetype, method_name)
 
 Call = _Call()



More information about the Pypy-commit mailing list