[pypy-svn] r40595 - in pypy/branch/jit-virtual-world/pypy/translator/js: . test

ac at codespeak.net ac at codespeak.net
Fri Mar 16 18:06:20 CET 2007


Author: ac
Date: Fri Mar 16 18:06:16 2007
New Revision: 40595

Modified:
   pypy/branch/jit-virtual-world/pypy/translator/js/function.py
   pypy/branch/jit-virtual-world/pypy/translator/js/opcodes.py
   pypy/branch/jit-virtual-world/pypy/translator/js/test/test_genllvm.py
Log:
is_early_constant for JavaScript.

Modified: pypy/branch/jit-virtual-world/pypy/translator/js/function.py
==============================================================================
--- pypy/branch/jit-virtual-world/pypy/translator/js/function.py	(original)
+++ pypy/branch/jit-virtual-world/pypy/translator/js/function.py	Fri Mar 16 18:06:16 2007
@@ -444,3 +444,6 @@
         self.load(base_obj)
         self.load(item)
         self.ilasm.list_getitem()
+
+    def push_primitive_constant(self, TYPE, value):
+        self.db.load_const(TYPE, value, self.ilasm)        

Modified: pypy/branch/jit-virtual-world/pypy/translator/js/opcodes.py
==============================================================================
--- pypy/branch/jit-virtual-world/pypy/translator/js/opcodes.py	(original)
+++ pypy/branch/jit-virtual-world/pypy/translator/js/opcodes.py	Fri Mar 16 18:06:16 2007
@@ -2,7 +2,7 @@
 """
 
 from pypy.translator.oosupport.metavm import PushArg, PushAllArgs, StoreResult,\
-    InstructionList, New, SetField, GetField, MicroInstruction, RuntimeNew
+    InstructionList, New, SetField, GetField, MicroInstruction, RuntimeNew, PushPrimitive
      
 from pypy.translator.oosupport.metavm import _GetFieldDispatcher, _SetFieldDispatcher, \
     _CallDispatcher, _MethodDispatcher
@@ -12,6 +12,7 @@
     IndirectCall, CallExternalObject, SetExternalField, _CastMethod, _LoadConst
 
 from pypy.translator.js.jsbuiltin import Builtins
+from pypy.rpython.ootypesystem import ootype
 
 DoNothing = [PushAllArgs]
 
@@ -147,6 +148,7 @@
     'truncate_longlong_to_int': CopyName,
     
     'debug_assert' : DoNothing,
+    'is_early_constant': [PushPrimitive(ootype.Bool, False)]
 }
 
 for key, value in opcodes.iteritems():

Modified: pypy/branch/jit-virtual-world/pypy/translator/js/test/test_genllvm.py
==============================================================================
--- pypy/branch/jit-virtual-world/pypy/translator/js/test/test_genllvm.py	(original)
+++ pypy/branch/jit-virtual-world/pypy/translator/js/test/test_genllvm.py	Fri Mar 16 18:06:16 2007
@@ -441,3 +441,14 @@
     
     fn = compile_function(symbolic1, [])
     assert fn() == 2
+
+def test_is_early_constant():
+    from pypy.rlib import objectmodel
+    def f(x):
+        if objectmodel._is_early_constant(x):
+            return 42
+        return 0
+    fn = compile_function(f, [int])
+    res = fn(5)
+    assert res == 0
+


More information about the pypy-svn mailing list