Author: Armin Rigo <[email protected]>
Branch: ec-threadlocal
Changeset: r72148:0a347260dde5
Date: 2014-06-23 10:33 +0200
http://bitbucket.org/pypy/pypy/changeset/0a347260dde5/

Log:    Helps translation

diff --git a/rpython/rlib/rthread.py b/rpython/rlib/rthread.py
--- a/rpython/rlib/rthread.py
+++ b/rpython/rlib/rthread.py
@@ -295,29 +295,31 @@
         self.local = thread._local()      # <- NOT_RPYTHON
         unique_id = ThreadLocalReference._COUNT
         ThreadLocalReference._COUNT += 1
-        self.opaque_id = lltype.opaqueptr(ThreadLocalReference.OPAQUEID,
-                                          'tlref%d' % unique_id)
+        opaque_id = lltype.opaqueptr(ThreadLocalReference.OPAQUEID,
+                                     'tlref%d' % unique_id)
+        self.opaque_id = opaque_id
+
+        def get():
+            if we_are_translated():
+                from rpython.rtyper.lltypesystem import rclass
+                from rpython.rtyper.annlowlevel import 
cast_base_ptr_to_instance
+                ptr = llop.threadlocalref_get(rclass.OBJECTPTR, opaque_id)
+                return cast_base_ptr_to_instance(Cls, ptr)
+            else:
+                return getattr(self.local, 'value', None)
+
+        @jit.dont_look_inside
+        def set(value):
+            assert isinstance(value, Cls) or value is None
+            if we_are_translated():
+                from rpython.rtyper.annlowlevel import 
cast_instance_to_base_ptr
+                ptr = cast_instance_to_base_ptr(value)
+                llop.threadlocalref_set(lltype.Void, opaque_id, ptr)
+            else:
+                self.local.value = value
+
+        self.get = get
+        self.set = set
 
     def _freeze_(self):
         return True
-
-    @specialize.arg(0)
-    def get(self):
-        if we_are_translated():
-            from rpython.rtyper.lltypesystem import rclass
-            from rpython.rtyper.annlowlevel import cast_base_ptr_to_instance
-            ptr = llop.threadlocalref_get(rclass.OBJECTPTR, self.opaque_id)
-            return cast_base_ptr_to_instance(self.Cls, ptr)
-        else:
-            return getattr(self.local, 'value', None)
-
-    @specialize.arg(0)
-    @jit.dont_look_inside
-    def set(self, value):
-        assert isinstance(value, self.Cls) or value is None
-        if we_are_translated():
-            from rpython.rtyper.annlowlevel import cast_instance_to_base_ptr
-            ptr = cast_instance_to_base_ptr(value)
-            llop.threadlocalref_set(lltype.Void, self.opaque_id, ptr)
-        else:
-            self.local.value = value
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to