Author: Stephan <step...@stzal.com>
Branch: 
Changeset: r286:276382b0bf8f
Date: 2012-08-24 13:41 +0200
http://bitbucket.org/pypy/lang-js/changeset/276382b0bf8f/

Log:    added some jit annotations

diff --git a/js/jsobj.py b/js/jsobj.py
--- a/js/jsobj.py
+++ b/js/jsobj.py
@@ -5,16 +5,21 @@
 from js.execution import JsTypeError, JsRangeError
 
 from pypy.rlib.objectmodel import enforceargs
+from pypy.rlib import jit
 
 from js.property_descriptor import PropertyDescriptor, DataPropertyDescriptor, 
AccessorPropertyDescriptor, is_data_descriptor, is_generic_descriptor, 
is_accessor_descriptor
 from js.property import DataProperty, AccessorProperty
 
+
+@jit.elidable
 def is_array_index(p):
     try:
-        return unicode(str(uint32(abs(int(p))))) == p
+        return unicode(str(uint32(abs(int(str(p)))))) == p
     except ValueError:
         return False
 
+
+@jit.elidable
 def sign(i):
     if i > 0:
         return 1
@@ -22,7 +27,9 @@
         return -1
     return 0
 
+
 class W_Root(object):
+    _immutable_fields_ = ['_type_']
     _type_ = ''
 
     def __str__(self):
@@ -156,7 +163,10 @@
 w_proto_getter = W_ProtoGetter()
 w_proto_setter = W_ProtoSetter()
 proto_desc = AccessorPropertyDescriptor(w_proto_getter, w_proto_setter, False, 
False)
+jit.promote(proto_desc)
 
+
+@jit.elidable
 def reject(throw, msg=u''):
     if throw:
         raise JsTypeError(msg)
@@ -167,6 +177,7 @@
     _type_ = 'object'
     _class_ = 'Object'
     _extensible_ = True
+    _immutable_fields_ = ['_type_', '_class_', '_extensible_']
 
     def __init__(self):
         self._properties_ = {}
@@ -858,12 +869,15 @@
             # 10.6 14 thrower
             pass
 
-def make_arg_getter(name, env):
-    code = u'return %s;' % (name)
 
-def make_arg_setter(name, env):
-    param = u'%s_arg' % (name)
-    code = u'%s = %s;' % (name, param)
+def make_arg_getter(name, env): pass
+    #code = u'return %s;' % (name)
+
+
+def make_arg_setter(name, env): pass
+    #param = u'%s_arg' % (name)
+    #code = u'%s = %s;' % (name, param)
+
 
 # 15.4.2
 class W_ArrayConstructor(W_BasicFunction):
@@ -906,6 +920,7 @@
 
 class W_Boolean(W_Primitive):
     _type_ = 'boolean'
+    _immutable_fields_ = ['_boolval_']
 
     def __init__(self, boolval):
         self._boolval_ = bool(boolval)
@@ -940,6 +955,7 @@
 
 class W_String(W_Primitive):
     _type_ = 'string'
+    _immutable_fields_ = ['_strval_']
 
     def __init__(self, strval):
         assert strval is not None and isinstance(strval, unicode)
@@ -1031,7 +1047,10 @@
         else:
             return False
 
+
 class W_IntNumber(W_Number):
+    _immutable_fields_ = ['_intval_']
+
     """ Number known to be an integer
     """
     def __init__(self, intval):
@@ -1055,6 +1074,7 @@
 MASK_16 = (2 ** 16) - 1
 
 @enforceargs(int)
+@jit.elidable
 def int32(n):
     if n & (1 << (32 - 1)):
       res = n | ~MASK_32
@@ -1064,10 +1084,12 @@
     return res
 
 @enforceargs(int)
+@jit.elidable
 def uint32(n):
     return n & MASK_32
 
 @enforceargs(int)
+@jit.elidable
 def uint16(n):
     return n & MASK_16
 
diff --git a/js/opcodes.py b/js/opcodes.py
--- a/js/opcodes.py
+++ b/js/opcodes.py
@@ -116,7 +116,8 @@
 
 
 class LOAD_VARIABLE(Opcode):
-    #_immutable_fields_ = ['identifier']
+    _immutable_fields_ = ['identifier', 'index']
+
     def __init__(self, index, identifier):
         assert index is not None
         self.index = index
@@ -438,7 +439,7 @@
 
 
 class STORE(Opcode):
-    #_immutable_fields_ = ['name']
+    _immutable_fields_ = ['name']
     _stack_change = 0
 
     def __init__(self, index, identifier):
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to