Author: Antonio Cuni <[email protected]>
Branch: fix-vmprof-stacklet-switch-2
Changeset: r93489:df87d2ec0d1b
Date: 2017-12-19 15:49 +0100
http://bitbucket.org/pypy/pypy/changeset/df87d2ec0d1b/
Log: move the ECI stuff into a proper function: this way, it will be
easier to ensure that the ECI is not created at all on unsupported
platforms
diff --git a/rpython/rlib/rvmprof/cintf.py b/rpython/rlib/rvmprof/cintf.py
--- a/rpython/rlib/rvmprof/cintf.py
+++ b/rpython/rlib/rvmprof/cintf.py
@@ -19,62 +19,68 @@
SHARED = SRC.join('shared')
BACKTRACE = SHARED.join('libbacktrace')
-compile_extra = ['-DRPYTHON_VMPROF']
-separate_module_files = [
- SHARED.join('symboltable.c'),
- SHARED.join('vmprof_unix.c')
-]
-if sys.platform.startswith('linux'):
- separate_module_files += [
- BACKTRACE.join('atomic.c'),
- BACKTRACE.join('backtrace.c'),
- BACKTRACE.join('state.c'),
- BACKTRACE.join('elf.c'),
- BACKTRACE.join('dwarf.c'),
- BACKTRACE.join('fileline.c'),
- BACKTRACE.join('mmap.c'),
- BACKTRACE.join('mmapio.c'),
- BACKTRACE.join('posix.c'),
- BACKTRACE.join('sort.c'),
+def make_eci():
+ if make_eci.called:
+ raise ValueError("make_eci() should be called at most once")
+ #
+ compile_extra = ['-DRPYTHON_VMPROF']
+ separate_module_files = [
+ SHARED.join('symboltable.c'),
+ SHARED.join('vmprof_unix.c')
]
- _libs = ['dl']
- compile_extra += ['-DVMPROF_UNIX']
- compile_extra += ['-DVMPROF_LINUX']
-elif sys.platform == 'win32':
- compile_extra += ['-DVMPROF_WINDOWS']
- separate_module_files = [SHARED.join('vmprof_win.c')]
- _libs = []
-else:
- # Guessing a BSD-like Unix platform
- compile_extra += ['-DVMPROF_UNIX']
- compile_extra += ['-DVMPROF_MAC']
- if sys.platform.startswith('freebsd'):
- _libs = ['unwind']
+ if sys.platform.startswith('linux'):
+ separate_module_files += [
+ BACKTRACE.join('atomic.c'),
+ BACKTRACE.join('backtrace.c'),
+ BACKTRACE.join('state.c'),
+ BACKTRACE.join('elf.c'),
+ BACKTRACE.join('dwarf.c'),
+ BACKTRACE.join('fileline.c'),
+ BACKTRACE.join('mmap.c'),
+ BACKTRACE.join('mmapio.c'),
+ BACKTRACE.join('posix.c'),
+ BACKTRACE.join('sort.c'),
+ ]
+ _libs = ['dl']
+ compile_extra += ['-DVMPROF_UNIX']
+ compile_extra += ['-DVMPROF_LINUX']
+ elif sys.platform == 'win32':
+ compile_extra += ['-DVMPROF_WINDOWS']
+ separate_module_files = [SHARED.join('vmprof_win.c')]
+ _libs = []
else:
- _libs = []
+ # Guessing a BSD-like Unix platform
+ compile_extra += ['-DVMPROF_UNIX']
+ compile_extra += ['-DVMPROF_MAC']
+ if sys.platform.startswith('freebsd'):
+ _libs = ['unwind']
+ else:
+ _libs = []
-eci_kwds = dict(
- include_dirs = [SRC, SHARED, BACKTRACE],
- includes = ['rvmprof.h','vmprof_stack.h'],
- libraries = _libs,
- separate_module_files = [
- SRC.join('rvmprof.c'),
- SHARED.join('compat.c'),
- SHARED.join('machine.c'),
- SHARED.join('vmp_stack.c'),
- SHARED.join('vmprof_memory.c'),
- SHARED.join('vmprof_common.c'),
- # symbol table already in separate_module_files
- ] + separate_module_files,
- post_include_bits=[],
- compile_extra=compile_extra
- )
-if sys.platform != 'win32':
- eci_kwds['separate_module_files'].append(
- SHARED.join('vmprof_mt.c'),
- )
-global_eci = ExternalCompilationInfo(**eci_kwds)
+ eci_kwds = dict(
+ include_dirs = [SRC, SHARED, BACKTRACE],
+ includes = ['rvmprof.h','vmprof_stack.h'],
+ libraries = _libs,
+ separate_module_files = [
+ SRC.join('rvmprof.c'),
+ SHARED.join('compat.c'),
+ SHARED.join('machine.c'),
+ SHARED.join('vmp_stack.c'),
+ SHARED.join('vmprof_memory.c'),
+ SHARED.join('vmprof_common.c'),
+ # symbol table already in separate_module_files
+ ] + separate_module_files,
+ post_include_bits=[],
+ compile_extra=compile_extra
+ )
+ if sys.platform != 'win32':
+ eci_kwds['separate_module_files'].append(
+ SHARED.join('vmprof_mt.c'),
+ )
+ make_eci.called = True
+ return ExternalCompilationInfo(**eci_kwds), eci_kwds
+make_eci.called = False
def configure_libbacktrace_linux():
bits = 32 if sys.maxsize == 2**31-1 else 64
@@ -88,11 +94,11 @@
if sys.platform.startswith('linux'):
configure_libbacktrace_linux()
+ eci, eci_kwds = make_eci()
eci_kwds['compile_extra'].append('-DRPYTHON_LL2CTYPES')
platform.verify_eci(ExternalCompilationInfo(
**eci_kwds))
- eci = global_eci
vmprof_init = rffi.llexternal("vmprof_init",
[rffi.INT, rffi.DOUBLE, rffi.INT, rffi.INT,
rffi.CCHARP, rffi.INT, rffi.INT],
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit