Author: Armin Rigo <[email protected]>
Branch: jitframe-on-heap
Changeset: r60660:0e72a368a1b0
Date: 2013-01-29 10:44 +0100
http://bitbucket.org/pypy/pypy/changeset/0e72a368a1b0/
Log: Future-proofing code.
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
@@ -139,7 +139,6 @@
""" Allocate a new frame, overwritten by tests
"""
frame = jitframe.JITFRAME.allocate(frame_info)
- llop.gc_assume_young_pointers(lltype.Void, frame)
return frame
class JitFrameDescrs:
diff --git a/rpython/jit/backend/llsupport/llmodel.py
b/rpython/jit/backend/llsupport/llmodel.py
--- a/rpython/jit/backend/llsupport/llmodel.py
+++ b/rpython/jit/backend/llsupport/llmodel.py
@@ -59,18 +59,13 @@
frame = lltype.cast_opaque_ptr(jitframe.JITFRAMEPTR, frame)
assert size <= frame.jf_frame_info.jfi_frame_depth
new_frame = jitframe.JITFRAME.allocate(frame.jf_frame_info)
- # XXX now we know, rewrite this
- # YYY it doesn't matter at all, it's fine that way too
- # we need to do this, because we're not sure what things
- # are GC pointers and which ones are not
- llop.gc_writebarrier_before_copy(lltype.Bool, frame, new_frame,
- 0, 0, len(frame.jf_frame))
i = 0
while i < len(frame.jf_frame):
new_frame.jf_frame[i] = frame.jf_frame[i]
i += 1
new_frame.jf_savedata = frame.jf_savedata
# all other fields are empty
+ llop.gc_assume_young_pointers(lltype.Void, new_frame)
return lltype.cast_opaque_ptr(llmemory.GCREF, new_frame)
if not translate_support_code:
diff --git a/rpython/jit/backend/x86/runner.py
b/rpython/jit/backend/x86/runner.py
--- a/rpython/jit/backend/x86/runner.py
+++ b/rpython/jit/backend/x86/runner.py
@@ -1,6 +1,7 @@
import py
from rpython.rlib.unroll import unrolling_iterable
from rpython.rtyper.lltypesystem import lltype, llmemory, rffi
+from rpython.rtyper.lltypesystem.lloperation import llop
from rpython.rtyper.llinterp import LLInterpreter
from rpython.rlib.objectmodel import specialize
from rpython.rlib.jit_hooks import LOOP_RUN_CONTAINER
@@ -136,6 +137,9 @@
assert kind == history.REF
self.set_ref_value(ll_frame, num, arg)
num += WORD
+ # no GC operation between gc_assume_young_pointers and
+ # the actual call to assembler!
+ llop.gc_assume_young_pointers(lltype.Void, frame)
ll_frame = func(ll_frame)
finally:
if not self.translate_support_code:
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit