Author: Maciej Fijalkowski <fij...@gmail.com> Branch: vmprof Changeset: r75343:3d53ff995d24 Date: 2015-01-15 14:52 +0200 http://bitbucket.org/pypy/pypy/changeset/3d53ff995d24/
Log: try to make jit entrypoints work diff --git a/rpython/jit/backend/llsupport/asmmemmgr.py b/rpython/jit/backend/llsupport/asmmemmgr.py --- a/rpython/jit/backend/llsupport/asmmemmgr.py +++ b/rpython/jit/backend/llsupport/asmmemmgr.py @@ -7,12 +7,12 @@ from rpython.rtyper.lltypesystem import lltype, llmemory, rffi from rpython.rlib.rbisect import bisect from rpython.rlib import rgc -from rpython.rlib.entrypoint import entrypoint_lowlevel +from rpython.rlib.entrypoint import jit_entrypoint _memmngr = None # global reference so we can use @entrypoint :/ -@entrypoint_lowlevel('main', [lltype.Signed], - c_name='pypy_jit_stack_depth_at_loc') +@jit_entrypoint([lltype.Signed], lltype.Signed, + c_name='pypy_jit_stack_depth_at_loc') @rgc.no_collect def stack_depth_at_loc(loc): global _memmngr @@ -22,13 +22,13 @@ return -1 return _memmngr.jit_frame_depth_map[pos-1] -@entrypoint_lowlevel('main', [], c_name='pypy_jit_start_addr') +@jit_entrypoint([], lltype.Signed, c_name='pypy_jit_start_addr') def jit_start_addr(loc): global _memmngr return _memmngr.jit_addr_map[0] -@entrypoint_lowlevel('main', [], c_name='pypy_jit_end_addr') +@jit_entrypoint([], lltype.Signed, c_name='pypy_jit_end_addr') def jit_end_addr(loc): global _memmngr diff --git a/rpython/jit/metainterp/warmspot.py b/rpython/jit/metainterp/warmspot.py --- a/rpython/jit/metainterp/warmspot.py +++ b/rpython/jit/metainterp/warmspot.py @@ -25,6 +25,7 @@ from rpython.jit.codewriter.policy import JitPolicy from rpython.jit.codewriter.effectinfo import EffectInfo from rpython.jit.metainterp.optimizeopt import ALL_OPTS_NAMES +from rpython.rlib.entrypoint import all_jit_entrypoints # ____________________________________________________________ @@ -228,6 +229,7 @@ verbose = False # not self.cpu.translate_support_code self.rewrite_access_helpers() + self.create_jit_entry_points() self.codewriter.make_jitcodes(verbose=verbose) self.rewrite_can_enter_jits() self.rewrite_set_param_and_get_stats() @@ -676,6 +678,10 @@ op = block.operations[index] self.rewrite_access_helper(op) + def create_jit_entry_points(self): + for func, args_s, s_result in all_jit_entrypoints: + self.helper_func(func, args_s, s_result) + def rewrite_access_helper(self, op): # make sure we make a copy of function so it no longer belongs # to extregistry diff --git a/rpython/rlib/entrypoint.py b/rpython/rlib/entrypoint.py --- a/rpython/rlib/entrypoint.py +++ b/rpython/rlib/entrypoint.py @@ -10,6 +10,16 @@ func.exported_symbol = True return func +all_jit_entrypoints = [] + +def jit_entrypoint(argtypes, restype, c_name): + def deco(func): + func.c_name = c_name + func.relax_sig_check = True + export_symbol(func) + all_jit_entrypoints.append((func, argtypes, restype)) + return func + return deco def entrypoint_lowlevel(key, argtypes, c_name=None, relax=False): """ Note: entrypoint should call llop.gc_stack_bottom on it's own. _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit