1. Pypy
  2. Untitled project
  3. pypy

Commits

Armin Rigo  committed e2ced9d

Move the _check_sse2() call out of assembler.setup() and into the
very early phases of running the process.

  • Participants
  • Parent commits 69da974
  • Branches default

Comments (0)

Files changed (3)

File pypy/jit/backend/x86/assembler.py

View file
  • Ignore whitespace
         self._debug = v
 
     def setup_once(self):
-        self._check_sse2()
         # the address of the function called by 'new'
         gc_ll_descr = self.cpu.gc_ll_descr
         gc_ll_descr.initialize()
     _CHECK_SSE2_FUNC_PTR = lltype.Ptr(lltype.FuncType([], lltype.Signed))
 
     def _check_sse2(self):
+        """This function is called early in the execution of the program.
+        It checks if the CPU really supports SSE2.  It is only invoked in
+        translated versions for now."""
         if WORD == 8:
             return     # all x86-64 CPUs support SSE2
         if not self.cpu.supports_floats:

File pypy/jit/backend/x86/runner.py

View file
  • Ignore whitespace
         self.assembler.finish_once()
         self.profile_agent.shutdown()
 
+    def early_initialization(self):
+        self.assembler._check_sse2()
+
     def dump_loop_token(self, looptoken):
         """
         NOT_RPYTHON

File pypy/jit/metainterp/warmspot.py

View file
  • Ignore whitespace
 from pypy.rlib.debug import fatalerror
 from pypy.rlib.rstackovf import StackOverflow
 from pypy.translator.simplify import get_functype
+from pypy.translator.unsimplify import call_initial_function
 from pypy.translator.unsimplify import call_final_function
 
 from pypy.jit.metainterp import history, pyjitpl, gc, memmgr
         checkgraph(origportalgraph)
 
     def add_finish(self):
+        def start():
+            self.cpu.early_initialization()
+
         def finish():
             if self.metainterp_sd.profiler.initialized:
                 self.metainterp_sd.profiler.finish()
         if self.cpu.translate_support_code:
             call_final_function(self.translator, finish,
                                 annhelper = self.annhelper)
+            if hasattr(self.cpu, 'early_initialization'):
+                call_initial_function(self.translator, start,
+                                      annhelper = self.annhelper)
 
     def rewrite_set_param(self):
         from pypy.rpython.lltypesystem.rstr import STR