Author: Remi Meier <[email protected]>
Branch: stmgc-c8
Changeset: r83530:8488cce5d3cf
Date: 2016-04-06 09:35 +0300
http://bitbucket.org/pypy/pypy/changeset/8488cce5d3cf/

Log:    make jit backend test for vmprof pass. however, we are still missing
        resetting the thread locals used by vmprof on transaction abort.

diff --git a/rpython/jit/backend/llsupport/test/zrpy_vmprof_test.py 
b/rpython/jit/backend/llsupport/test/zrpy_vmprof_test.py
--- a/rpython/jit/backend/llsupport/test/zrpy_vmprof_test.py
+++ b/rpython/jit/backend/llsupport/test/zrpy_vmprof_test.py
@@ -6,6 +6,8 @@
 from rpython.rlib import rthread
 from rpython.translator.translator import TranslationContext
 from rpython.jit.backend.detect_cpu import getcpuclass
+from rpython.rlib.rweaklist import RWeakListMixin
+
 
 class CompiledVmprofTest(CCompiledMixin):
     CPUClass = getcpuclass()
@@ -21,6 +23,7 @@
 
         class MyCode:
             _vmprof_unique_id = 0
+            _vmprof_weak_list = RWeakListMixin() ; 
_vmprof_weak_list.initialize()
             def __init__(self, name):
                 self.name = name
 
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
@@ -1020,15 +1020,15 @@
         self.mc.LEA_rs(eax.value, (FRAME_FIXED_SIZE - 4) * WORD)
         # old = current value of vmprof_tl_stack
         offset = cintf.vmprof_tl_stack.getoffset()
-        self.mc.MOV_rm(old.value, (tloc.value, offset))
+        self.mc.MOV_rm(old.value, (self.SEGMENT_NO, tloc.value, offset))
         # eax->next = old
-        self.mc.MOV_mr((eax.value, 0), old.value)
+        self.mc.MOV_mr((self.SEGMENT_NO, eax.value, 0), old.value)
         # eax->value = my esp
-        self.mc.MOV_mr((eax.value, WORD), esp.value)
+        self.mc.MOV_mr((self.SEGMENT_NO, eax.value, WORD), esp.value)
         # eax->kind = VMPROF_JITTED_TAG
-        self.mc.MOV_mi((eax.value, WORD * 2), VMPROF_JITTED_TAG)
+        self.mc.MOV_mi((self.SEGMENT_NO, eax.value, WORD * 2), 
VMPROF_JITTED_TAG)
         # save in vmprof_tl_stack the new eax
-        self.mc.MOV_mr((tloc.value, offset), eax.value)
+        self.mc.MOV_mr((self.SEGMENT_NO, tloc.value, offset), eax.value)
 
     def _call_footer_vmprof(self):
         from rpython.rlib.rvmprof.rvmprof import cintf
@@ -1039,14 +1039,14 @@
         self.mc.MOV_rs(eax.value, (FRAME_FIXED_SIZE - 4 + 0) * WORD)
         # save in vmprof_tl_stack the value eax
         offset = cintf.vmprof_tl_stack.getoffset()
-        self.mc.MOV_mr((edx.value, offset), eax.value)
+        self.mc.MOV_mr((self.SEGMENT_NO, edx.value, offset), eax.value)
 
     def _call_header(self):
         self.mc.SUB_ri(esp.value, self._get_whole_frame_size() * WORD)
         self.mc.MOV_sr(PASS_ON_MY_FRAME * WORD, ebp.value)
         if IS_X86_64:
             self.mc.MOV_sr(THREADLOCAL_OFS, esi.value)
-        if not self.cpu.gc_ll_descr.stm and self.cpu.translate_support_code:
+        if self.cpu.translate_support_code:
             self._call_header_vmprof()     # on X86_64, this uses esi
         if IS_X86_64:
             self.mc.MOV_rr(ebp.value, edi.value)
@@ -1086,7 +1086,7 @@
             self._call_footer_shadowstack()
 
         # the return value is the jitframe
-        if not self.cpu.gc_ll_descr.stm and self.cpu.translate_support_code:
+        if self.cpu.translate_support_code:
             self._call_footer_vmprof()
         self.mc.MOV_rr(eax.value, ebp.value)
 
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to