Update Lua allocator for sessions scripts
* increase memory pool (bindings alone require 1.5 MB), and all session scripts have a shared memory pool. * use TLSF (like Lua DSP processors) - this fixes an issue with atomics (notably int62_t, temporal) on macOS and ARM, which need to be aligned.
This commit is contained in:
parent
afb519cd84
commit
9d046af47a
@ -30,7 +30,6 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#define USE_TLSF
|
|
||||||
#ifdef USE_TLSF
|
#ifdef USE_TLSF
|
||||||
# include "pbd/tlsf.h"
|
# include "pbd/tlsf.h"
|
||||||
#else
|
#else
|
||||||
|
@ -60,11 +60,15 @@
|
|||||||
#include "pbd/event_loop.h"
|
#include "pbd/event_loop.h"
|
||||||
#include "pbd/file_archive.h"
|
#include "pbd/file_archive.h"
|
||||||
#include "pbd/rcu.h"
|
#include "pbd/rcu.h"
|
||||||
#include "pbd/reallocpool.h"
|
|
||||||
#include "pbd/statefuldestructible.h"
|
#include "pbd/statefuldestructible.h"
|
||||||
#include "pbd/signals.h"
|
#include "pbd/signals.h"
|
||||||
#include "pbd/undo.h"
|
#include "pbd/undo.h"
|
||||||
|
|
||||||
|
#ifdef USE_TLSF
|
||||||
|
# include "pbd/tlsf.h"
|
||||||
|
#else
|
||||||
|
# include "pbd/reallocpool.h"
|
||||||
|
#endif
|
||||||
#include "lua/luastate.h"
|
#include "lua/luastate.h"
|
||||||
|
|
||||||
#include "temporal/range.h"
|
#include "temporal/range.h"
|
||||||
@ -1652,7 +1656,11 @@ private:
|
|||||||
bool pending_abort;
|
bool pending_abort;
|
||||||
bool pending_auto_loop;
|
bool pending_auto_loop;
|
||||||
|
|
||||||
|
#ifdef USE_TLSF
|
||||||
|
PBD::TLSF _mempool;
|
||||||
|
#else
|
||||||
PBD::ReallocPool _mempool;
|
PBD::ReallocPool _mempool;
|
||||||
|
#endif
|
||||||
LuaState lua;
|
LuaState lua;
|
||||||
mutable Glib::Threads::Mutex lua_lock;
|
mutable Glib::Threads::Mutex lua_lock;
|
||||||
luabridge::LuaRef * _lua_run;
|
luabridge::LuaRef * _lua_run;
|
||||||
|
@ -258,8 +258,14 @@ Session::Session (AudioEngine &eng,
|
|||||||
, _last_roll_or_reversal_location (0)
|
, _last_roll_or_reversal_location (0)
|
||||||
, _last_record_location (0)
|
, _last_record_location (0)
|
||||||
, pending_auto_loop (false)
|
, pending_auto_loop (false)
|
||||||
, _mempool ("Session", 3145728)
|
, _mempool ("Session", 4194304)
|
||||||
|
#ifdef USE_TLSF
|
||||||
|
, lua (lua_newstate (&PBD::TLSF::lalloc, &_mempool))
|
||||||
|
#elif defined USE_MALLOC
|
||||||
|
, lua (lua_newstate (true, true))
|
||||||
|
#else
|
||||||
, lua (lua_newstate (&PBD::ReallocPool::lalloc, &_mempool))
|
, lua (lua_newstate (&PBD::ReallocPool::lalloc, &_mempool))
|
||||||
|
#endif
|
||||||
, _lua_run (0)
|
, _lua_run (0)
|
||||||
, _lua_add (0)
|
, _lua_add (0)
|
||||||
, _lua_del (0)
|
, _lua_del (0)
|
||||||
|
@ -321,6 +321,8 @@ def configure(conf):
|
|||||||
atleast_version='0.24.2', mandatory=True)
|
atleast_version='0.24.2', mandatory=True)
|
||||||
conf.define ('LV2_SUPPORT', 1)
|
conf.define ('LV2_SUPPORT', 1)
|
||||||
|
|
||||||
|
conf.define ('USE_TLSF', 1)
|
||||||
|
|
||||||
# non-standard LV2 extention -- TODO: add option to disable??
|
# non-standard LV2 extention -- TODO: add option to disable??
|
||||||
if conf.is_defined ('HAVE_LV2_1_10_0'):
|
if conf.is_defined ('HAVE_LV2_1_10_0'):
|
||||||
conf.define ('LV2_EXTENDED', 1)
|
conf.define ('LV2_EXTENDED', 1)
|
||||||
|
Loading…
Reference in New Issue
Block a user