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