[pypy-commit] pypy stmgc-c7: Revert of some old and recent checkins, getting rid of cast_current_ptr_to_int again. It's not

arigo noreply at buildbot.pypy.org
Thu Mar 27 19:25:26 CET 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: stmgc-c7
Changeset: r70311:9fd001585246
Date: 2014-03-27 19:24 +0100
http://bitbucket.org/pypy/pypy/changeset/9fd001585246/

Log:	Revert of some old and recent checkins, getting rid of
	cast_current_ptr_to_int again. It's not different any more from the
	trunk's cast_ptr_to_int, which gets us the address of the GC object,
	which might still be moving once but which is otherwise coherent.

diff --git a/rpython/jit/metainterp/compile.py b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -1,6 +1,5 @@
 import weakref
 from rpython.rtyper.lltypesystem import lltype, llmemory
-from rpython.rtyper.lltypesystem.lloperation import llop
 from rpython.rtyper.annlowlevel import cast_instance_to_gcref
 from rpython.rlib.objectmodel import we_are_translated
 from rpython.rlib.debug import debug_start, debug_stop, debug_print
@@ -594,7 +593,7 @@
                 intval = metainterp_sd.cpu.get_int_value(deadframe, index)
             elif typetag == self.TY_REF:
                 refval = metainterp_sd.cpu.get_ref_value(deadframe, index)
-                intval = llop.cast_current_ptr_to_int(lltype.Signed, refval)
+                intval = lltype.cast_ptr_to_int(refval)
             elif typetag == self.TY_FLOAT:
                 floatval = metainterp_sd.cpu.get_float_value(deadframe, index)
                 intval = longlong.gethash_fast(floatval)
diff --git a/rpython/rlib/objectmodel.py b/rpython/rlib/objectmodel.py
--- a/rpython/rlib/objectmodel.py
+++ b/rpython/rlib/objectmodel.py
@@ -572,7 +572,7 @@
         hop.exception_cannot_occur()
         from rpython.rtyper.lltypesystem import lltype
         if isinstance(vobj.concretetype, lltype.Ptr):
-            return hop.genop('cast_current_ptr_to_int', [vobj],
+            return hop.genop('cast_ptr_to_int', [vobj],
                              resulttype = lltype.Signed)
         from rpython.rtyper.error import TyperError
         raise TyperError("current_object_addr_as_int() cannot be applied to"
diff --git a/rpython/rtyper/llinterp.py b/rpython/rtyper/llinterp.py
--- a/rpython/rtyper/llinterp.py
+++ b/rpython/rtyper/llinterp.py
@@ -749,8 +749,6 @@
         checkptr(ptr1)
         return lltype.cast_ptr_to_int(ptr1)
 
-    op_cast_current_ptr_to_int = op_cast_ptr_to_int
-
     def op_cast_opaque_ptr(self, RESTYPE, obj):
         checkptr(obj)
         return lltype.cast_opaque_ptr(RESTYPE, obj)
diff --git a/rpython/rtyper/lltypesystem/lloperation.py b/rpython/rtyper/lltypesystem/lloperation.py
--- a/rpython/rtyper/lltypesystem/lloperation.py
+++ b/rpython/rtyper/lltypesystem/lloperation.py
@@ -399,7 +399,6 @@
     'ptr_iszero':           LLOp(canfold=True),
     'cast_ptr_to_int':      LLOp(sideeffects=False),
     'cast_int_to_ptr':      LLOp(sideeffects=False),
-    'cast_current_ptr_to_int': LLOp(sideeffects=False),  # gcptr->int, approx.
     'direct_fieldptr':      LLOp(canfold=True),
     'direct_arrayitems':    LLOp(canfold=True),
     'direct_ptradd':        LLOp(canfold=True),
diff --git a/rpython/translator/c/funcgen.py b/rpython/translator/c/funcgen.py
--- a/rpython/translator/c/funcgen.py
+++ b/rpython/translator/c/funcgen.py
@@ -666,7 +666,6 @@
     OP_CAST_ADR_TO_PTR = OP_CAST_POINTER
     OP_CAST_OPAQUE_PTR = OP_CAST_POINTER
     OP_CAST_PTR_TO_ADR = OP_CAST_POINTER
-    OP_CAST_PTR_TO_INT = OP_CAST_POINTER
 
     def OP_CAST_INT_TO_PTR(self, op):
         TYPE = self.lltypemap(op.result)
diff --git a/rpython/translator/c/src/int.h b/rpython/translator/c/src/int.h
--- a/rpython/translator/c/src/int.h
+++ b/rpython/translator/c/src/int.h
@@ -224,6 +224,7 @@
 #define OP_CAST_INT_TO_LONGLONGLONG(x,r) r = (__int128)(x)
 #define OP_CAST_CHAR_TO_INT(x,r)    r = (Signed)((unsigned char)(x))
 #define OP_CAST_INT_TO_CHAR(x,r)    r = (char)(x)
+#define OP_CAST_PTR_TO_INT(x,r)     r = (Signed)(x)
 #define OP_CAST_CURRENT_PTR_TO_INT(x,r)  r = (Signed)(x)
 
 #define OP_TRUNCATE_LONGLONG_TO_INT(x,r) r = (Signed)(x)
diff --git a/rpython/translator/stm/inevitable.py b/rpython/translator/stm/inevitable.py
--- a/rpython/translator/stm/inevitable.py
+++ b/rpython/translator/stm/inevitable.py
@@ -10,9 +10,7 @@
     'debug_print', 'debug_assert',
     'debug_start', 'debug_stop', 'have_debug_prints',
     'cast_opaque_ptr', 'hint',
-    'stack_current', 'gc_stack_bottom',
-    'cast_current_ptr_to_int',   # this variant of 'cast_ptr_to_int' is ok
-    'cast_ptr_to_int',           # only for non-gc, crashes in genc for gc
+    'stack_current', 'gc_stack_bottom', 'cast_ptr_to_int',
     'jit_force_virtual', 'jit_force_virtualizable',
     'jit_force_quasi_immutable', 'jit_marker', 'jit_is_virtual',
     'jit_record_known_class',


More information about the pypy-commit mailing list