[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