aboutsummaryrefslogtreecommitdiff
path: root/src/linda.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/linda.c')
-rw-r--r--src/linda.c14
1 files changed, 2 insertions, 12 deletions
diff --git a/src/linda.c b/src/linda.c
index 637f909..390816b 100644
--- a/src/linda.c
+++ b/src/linda.c
@@ -794,17 +794,12 @@ static void* linda_id( lua_State* L, DeepOp op_)
794 * One can use any memory allocation scheme. 794 * One can use any memory allocation scheme.
795 * just don't use L's allocF because we don't know which state will get the honor of GCing the linda 795 * just don't use L's allocF because we don't know which state will get the honor of GCing the linda
796 */ 796 */
797 // don't hijack the state allocator when running LuaJIT because it looks like LuaJIT does not expect it and might invalidate the memory unexpectedly
798#if USE_LUA_STATE_ALLOCATOR()
799 { 797 {
800 Universe* const U = universe_get(L); 798 Universe* const U = universe_get(L);
801 AllocatorDefinition* const allocD = &U->protected_allocator.definition; 799 AllocatorDefinition* const allocD = &U->internal_allocator;
802 800
803 s = (struct s_Linda*)allocD->allocF(allocD->allocUD, NULL, 0, sizeof(struct s_Linda) + name_len); // terminating 0 is already included 801 s = (struct s_Linda*)allocD->allocF(allocD->allocUD, NULL, 0, sizeof(struct s_Linda) + name_len); // terminating 0 is already included
804 } 802 }
805#else // USE_LUA_STATE_ALLOCATOR()
806 s = (struct s_Linda*)malloc(sizeof(struct s_Linda) + name_len); // terminating 0 is already included
807#endif // USE_LUA_STATE_ALLOCATOR()
808 if( s) 803 if( s)
809 { 804 {
810 s->prelude.magic.value = DEEP_VERSION.value; 805 s->prelude.magic.value = DEEP_VERSION.value;
@@ -837,17 +832,12 @@ static void* linda_id( lua_State* L, DeepOp op_)
837 // There aren't any lanes waiting on these lindas, since all proxies have been gc'ed. Right? 832 // There aren't any lanes waiting on these lindas, since all proxies have been gc'ed. Right?
838 SIGNAL_FREE( &linda->read_happened); 833 SIGNAL_FREE( &linda->read_happened);
839 SIGNAL_FREE( &linda->write_happened); 834 SIGNAL_FREE( &linda->write_happened);
840 // don't hijack the state allocator when running LuaJIT because it looks like LuaJIT does not expect it and might invalidate the memory unexpectedly
841#if USE_LUA_STATE_ALLOCATOR()
842 { 835 {
843 Universe* const U = universe_get(L); 836 Universe* const U = universe_get(L);
844 AllocatorDefinition* const allocD = &U->protected_allocator.definition; 837 AllocatorDefinition* const allocD = &U->internal_allocator;
845 838
846 allocD->allocF(allocD->allocUD, linda, sizeof(struct s_Linda) + strlen(linda->name), 0); 839 allocD->allocF(allocD->allocUD, linda, sizeof(struct s_Linda) + strlen(linda->name), 0);
847 } 840 }
848#else // USE_LUA_STATE_ALLOCATOR()
849 free(linda);
850#endif // USE_LUA_STATE_ALLOCATOR()
851 return NULL; 841 return NULL;
852 } 842 }
853 843