[pypy-commit] pypy stmgc-c4: give up and hack to make test pass (checking guard_true/false with ptr_eq)
Raemi
noreply at buildbot.pypy.org
Fri Aug 9 20:05:16 CEST 2013
Author: Remi Meier <remi.meier at gmail.com>
Branch: stmgc-c4
Changeset: r66046:7fdbd173748c
Date: 2013-08-09 20:04 +0200
http://bitbucket.org/pypy/pypy/changeset/7fdbd173748c/
Log: give up and hack to make test pass (checking guard_true/false with
ptr_eq)
diff --git a/rpython/jit/backend/llsupport/gc.py b/rpython/jit/backend/llsupport/gc.py
--- a/rpython/jit/backend/llsupport/gc.py
+++ b/rpython/jit/backend/llsupport/gc.py
@@ -5,7 +5,8 @@
from rpython.rtyper.lltypesystem import lltype, llmemory, rffi, rclass, rstr
from rpython.rtyper.lltypesystem import llgroup
from rpython.rtyper.lltypesystem.lloperation import llop
-from rpython.rtyper.annlowlevel import llhelper, cast_instance_to_gcref
+from rpython.rtyper.annlowlevel import (llhelper, cast_instance_to_gcref,
+ cast_base_ptr_to_instance)
from rpython.translator.tool.cbuild import ExternalCompilationInfo
from rpython.jit.codewriter import heaptracker
from rpython.jit.metainterp.history import ConstPtr, AbstractDescr
@@ -110,16 +111,14 @@
# the only ops with descrs that get recorded in a trace
from rpython.jit.metainterp.history import AbstractDescr
descr = op.getdescr()
- if not we_are_translated() and descr is None:
- return
- llref = rgc.cast_instance_to_gcref(descr)
+ llref = cast_instance_to_gcref(descr)
new_llref = rgc._make_sure_does_not_move(llref)
- new_d = rgc.try_cast_gcref_to_instance(AbstractDescr, new_llref)
if we_are_translated():
- # tests don't allow this
+ new_d = cast_base_ptr_to_instance(AbstractDescr, new_llref)
+ # tests don't allow this:
op.setdescr(new_d)
else:
- assert new_d is descr
+ assert llref == new_llref
gcrefs_output_list.append(new_llref)
def rewrite_assembler(self, cpu, operations, gcrefs_output_list):
diff --git a/rpython/jit/backend/x86/test/test_stm_integration.py b/rpython/jit/backend/x86/test/test_stm_integration.py
--- a/rpython/jit/backend/x86/test/test_stm_integration.py
+++ b/rpython/jit/backend/x86/test/test_stm_integration.py
@@ -19,6 +19,7 @@
GCDescrShadowstackDirect, BaseTestRegalloc, JitFrameDescrs)
from rpython.jit.backend.llsupport import jitframe
from rpython.memory.gc.stmgc import StmGC
+from rpython.jit.metainterp import history
import itertools, sys
import ctypes
@@ -373,7 +374,8 @@
frame = self.cpu.execute_token(looptoken, *args)
frame = rffi.cast(JITFRAMEPTR, frame)
- guard_failed = frame.jf_descr is not finaldescr
+ frame_adr = rffi.cast(lltype.Signed, frame.jf_descr)
+ guard_failed = frame_adr != id(finaldescr)
# CHECK:
a, b = s1, s2
More information about the pypy-commit
mailing list