Author: Armin Rigo <[email protected]>
Branch: stmgc-c7
Changeset: r70122:a82acece79d2
Date: 2014-03-20 17:08 +0100
http://bitbucket.org/pypy/pypy/changeset/a82acece79d2/

Log:    in-progress

diff --git a/rpython/jit/backend/x86/assembler.py 
b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -685,8 +685,8 @@
 
 
     @rgc.no_release_gil
-    def assemble_loop(self, loopname, inputargs, operations, looptoken, log,
-                      logger=None):
+    def assemble_loop(self, inputargs, operations, looptoken, log,
+                      loopname, logger):
         '''adds the following attributes to looptoken:
                _ll_function_addr    (address of the generated func, as an int)
                _ll_loop_code       (debug: addr of the start of the ResOps)
@@ -767,7 +767,7 @@
 
     @rgc.no_release_gil
     def assemble_bridge(self, faildescr, inputargs, operations,
-                        original_loop_token, log, logger=None):
+                        original_loop_token, log, logger):
         if not we_are_translated():
             # Arguments should be unique
             assert len(set(inputargs)) == len(inputargs)
diff --git a/rpython/jit/backend/x86/regalloc.py 
b/rpython/jit/backend/x86/regalloc.py
--- a/rpython/jit/backend/x86/regalloc.py
+++ b/rpython/jit/backend/x86/regalloc.py
@@ -11,7 +11,7 @@
      RegisterManager, TempBox, compute_vars_longevity, is_comparison_or_ovf_op)
 from rpython.jit.backend.x86 import rx86
 from rpython.jit.backend.x86.arch import (WORD, JITFRAME_FIXED_SIZE, IS_X86_32,
-    IS_X86_64, FRAME_FIXED_SIZE)
+    IS_X86_64)
 from rpython.jit.backend.x86.jump import remap_frame_layout_mixed
 from rpython.jit.backend.x86.regloc import (FrameLoc, RegLoc, ConstFloatLoc,
     FloatImmedLoc, ImmedLoc, imm, imm0, imm1, ecx, eax, edx, ebx, esi, edi,
@@ -26,7 +26,7 @@
 from rpython.rlib import rgc
 from rpython.rlib.objectmodel import we_are_translated
 from rpython.rlib.rarithmetic import r_longlong, r_uint
-from rpython.rtyper.lltypesystem.lloperation import llop
+from rpython.rtyper.annlowlevel import cast_instance_to_gcref
 from rpython.rtyper.lltypesystem import lltype, rffi, rstr
 from rpython.rtyper.lltypesystem.lloperation import llop
 
@@ -45,11 +45,9 @@
         if isinstance(c, ConstInt):
             return imm(c.value)
         elif isinstance(c, ConstPtr):
-            # if we_are_translated() and c.value and rgc.can_move(c.value):
-            #     not_implemented("convert_to_imm: ConstPtr needs special 
care")
-            if c.value and not c.imm_value:
+            if we_are_translated() and c.value and rgc.can_move(c.value):
                 not_implemented("convert_to_imm: ConstPtr needs special care")
-            return imm(c.get_imm_value())
+            return imm(rffi.cast(lltype.Signed, c.value))
         else:
             not_implemented("convert_to_imm: got a %s" % c)
 
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
@@ -94,16 +94,15 @@
 
     def compile_loop(self, inputargs, operations, looptoken, log=True,
                      name='', logger=None):
-        return self.assembler.assemble_loop(logger, name, inputargs, 
operations,
-                                            looptoken, log=log)
+        return self.assembler.assemble_loop(inputargs, operations, looptoken, 
log,
+                                            name, logger)
 
     def compile_bridge(self, faildescr, inputargs, operations,
                        original_loop_token, log=True, logger=None):
         clt = original_loop_token.compiled_loop_token
         clt.compiling_a_bridge()
-        return self.assembler.assemble_bridge(logger, faildescr, inputargs,
-                                              operations,
-                                              original_loop_token, log=log)
+        return self.assembler.assemble_bridge(faildescr, inputargs, operations,
+                                              original_loop_token, log, logger)
 
     def guard_already_patched(self, faildescr):
         # only needed for STM so far
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,7 +1,7 @@
 import weakref
 from rpython.rtyper.lltypesystem import lltype, llmemory
 from rpython.rtyper.annlowlevel import cast_instance_to_gcref
-from rpython.rlib.objectmodel import we_are_translated, stm_ignored
+from rpython.rlib.objectmodel import we_are_translated
 from rpython.rlib.debug import debug_start, debug_stop, debug_print
 from rpython.rlib.rarithmetic import r_uint, intmask
 from rpython.rlib import rstack, rgc
@@ -394,8 +394,8 @@
     metainterp_sd.profiler.start_backend()
     debug_start("jit-backend")
     try:
-        asminfo = do_compile_bridge(metainterp_sd, faildescr,
-                                    inputargs, operations,
+        asminfo = do_compile_bridge(metainterp_sd, faildescr, inputargs,
+                                    operations,
                                     original_loop_token)
     finally:
         debug_stop("jit-backend")
@@ -526,8 +526,6 @@
             self.status = hash & self.ST_SHIFT_MASK
 
     def make_a_counter_per_value(self, guard_value_op):
-        if rgc.stm_is_enabled():
-            return    # XXX don't use the special counters in stm mode for now
         assert guard_value_op.getopnum() == rop.GUARD_VALUE
         box = guard_value_op.getarg(0)
         try:
diff --git a/rpython/jit/metainterp/history.py 
b/rpython/jit/metainterp/history.py
--- a/rpython/jit/metainterp/history.py
+++ b/rpython/jit/metainterp/history.py
@@ -9,7 +9,6 @@
 from rpython.jit.metainterp.resoperation import ResOperation, rop
 from rpython.jit.codewriter import heaptracker, longlong
 from rpython.rlib.objectmodel import compute_identity_hash
-from rpython.rlib import rgc
 import weakref
 
 # ____________________________________________________________
@@ -298,24 +297,17 @@
 class ConstPtr(Const):
     type = REF
     value = lltype.nullptr(llmemory.GCREF.TO)
-    imm_value = 0
-    _attrs_ = ('value', 'imm_value',)
+    _attrs_ = ('value',)
 
     def __init__(self, value):
         assert lltype.typeOf(value) == llmemory.GCREF
         self.value = value
-        self.imm_value = 0
 
     def clonebox(self):
         return BoxPtr(self.value)
 
     nonconstbox = clonebox
 
-    def get_imm_value(self):
-        # imm_value set if needed:
-        assert (not self.value) or self.imm_value
-        return self.imm_value
-    
     def getref_base(self):
         return self.value
 
diff --git a/rpython/jit/metainterp/pyjitpl.py 
b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -18,7 +18,7 @@
 from rpython.rlib.jit import Counters
 from rpython.rlib.objectmodel import we_are_translated, specialize
 from rpython.rlib.unroll import unrolling_iterable
-from rpython.rtyper.lltypesystem import lltype, rclass, rffi, llmemory
+from rpython.rtyper.lltypesystem import lltype, rclass, rffi
 
 
 # ____________________________________________________________
@@ -201,6 +201,7 @@
     
     @arguments("int")
     def opimpl_stm_should_break_transaction(self, if_there_is_no_other):
+        from rpython.rtyper.lltypesystem import llmemory
         val = bool(if_there_is_no_other)
         mi = self.metainterp
         if val:
@@ -2749,6 +2750,7 @@
         # if the codewriter didn't produce any OS_LIBFFI_CALL at all.
         assert self.staticdata.has_libffi_call
         #
+        from rpython.rtyper.lltypesystem import llmemory
         from rpython.rlib.jit_libffi import CIF_DESCRIPTION_P
         from rpython.jit.backend.llsupport.ffisupport import get_arg_descr
         #
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to