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