Author: Armin Rigo <[email protected]>
Branch: 
Changeset: r79463:9291449ec424
Date: 2015-09-05 14:39 +0200
http://bitbucket.org/pypy/pypy/changeset/9291449ec424/

Log:    hg backout 75a00a3b038f: the jit explodes when seeing and optimizing
        getfield_gc(p, 'hash')

diff --git a/rpython/rtyper/lltypesystem/rstr.py 
b/rpython/rtyper/lltypesystem/rstr.py
--- a/rpython/rtyper/lltypesystem/rstr.py
+++ b/rpython/rtyper/lltypesystem/rstr.py
@@ -358,21 +358,20 @@
         return b
 
     @staticmethod
-    def _compute_hash(s):
+    @jit.elidable
+    def ll_strhash(s):
         # unlike CPython, there is no reason to avoid to return -1
         # but our malloc initializes the memory to zero, so we use zero as the
         # special non-computed-yet value.
-        x = _hash_string(s.chars)
-        if x == 0:
-            x = 29872897
-        s.hash = x
-
-    @staticmethod
-    def ll_strhash(s):
         if not s:
             return 0
-        jit.conditional_call(s.hash == 0, LLHelpers._compute_hash, s)
-        return s.hash
+        x = s.hash
+        if x == 0:
+            x = _hash_string(s.chars)
+            if x == 0:
+                x = 29872897
+            s.hash = x
+        return x
 
     @staticmethod
     def ll_length(s):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to