Igor Munkin
a019e8a111
Merge d969cb9c31a4de6f922da7de5b267f00eb2d2daf into 538a82133ad6fddfd0ca64de167c4aca3bc1a2da
2025-03-12 16:42:27 +08:00
Mike Pall
8358eb0cce
Merge branch 'master' into v2.1
2025-01-13 16:15:19 +01:00
Mike Pall
e8236561d4
Bump copyright date.
2025-01-13 15:59:10 +01:00
Mike Pall
913df6a945
Merge branch 'master' into v2.1
2024-03-10 17:26:03 +01:00
Mike Pall
88ed9fdbbb
Handle stack reallocation in debug.setmetatable() and lua_setmetatable().
...
Thanks to Sergey Kaplun. #1172
2024-03-10 17:13:28 +01:00
Igor Munkin
d969cb9c31
Prevent Lua VM re-entry through JIT trace.
...
JIT recording semantics assumes FFI calls are leaf regarding the LuaJIT
VM: if the execution exited Lua world through FFI machinery it is not
re-entering Lua world again.
However, there is a way to break this assumption via FFI: one can
re-enter LuaJIT VM via Lua C API used within the particular C routine
called via FFI. As a result the following host stack mix is created:
| Lua-FFI -> C routine -> Lua-C API -> Lua VM
This sort of re-entrancy is not supported by LuaJIT tracing compiler.
@mraleph named such kind of the call stack an "FFI sandwich" in the
tarantool/tarantool#4427 .
This changeset introduces the mechanism for Lua-C API callbacks similar
to the one implemented for Lua-FFI: trace recording is aborted when the
execution re-enters LuaJIT VM. If re-enter is detected while running the
particular mcode, the runtime finishes its execution with EXIT_FAILURE
code and calls panic routine prior to the exit.
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
Co-authored-by: Sergey Ostanevich <sergos@tarantool.org>
Signed-off-by: Igor Munkin <imun@cpan.org>
2024-02-21 19:30:34 +03:00
Mike Pall
a5d2f70c73
Handle OOM error on stack resize in coroutine.resume and lua_checkstack.
...
Thanks to Peter Cawley. #1066
2023-09-21 04:40:48 +02:00
Mike Pall
ef587afb2c
Merge branch 'master' into v2.1
2023-08-20 21:33:37 +02:00
Mike Pall
158a284cc9
Bump copyright date.
2023-08-20 21:25:30 +02:00
Mike Pall
633f265f67
LJ_GC64: Fix lua_concat().
...
Reported by Mathias Westerdahl.
2022-08-10 19:27:53 +02:00
Mike Pall
7306ba78d6
Merge branch 'master' into v2.1
2022-01-15 19:42:30 +01:00
Mike Pall
c4dfb625ba
Bump copyright date.
2022-01-15 19:30:54 +01:00
Mike Pall
c6f5ef649b
Refactor table traversal.
...
Sponsored by OpenResty Inc.
2021-09-19 17:38:49 +02:00
Mike Pall
836fb5bbd3
Reorganize lightuserdata interning code.
2021-03-25 02:15:26 +01:00
Mike Pall
1e66d0f9e6
Merge branch 'master' into v2.1
2021-01-02 21:56:07 +01:00
Mike Pall
f47c864b01
Bump copyright date.
2021-01-02 21:49:41 +01:00
Mike Pall
e9af1abec5
Add support for full-range 64 bit lightuserdata.
2020-09-30 01:34:49 +02:00
Mike Pall
dd5032ed84
Fix lua_yield() from C hook.
...
Reported by Jason Carr.
2020-09-15 01:02:24 +02:00
Mike Pall
8ae5170cdc
Improve assertions.
2020-06-15 02:52:00 +02:00
Mike Pall
fc1c4da3cc
Merge branch 'master' into v2.1
2020-03-20 13:38:05 +01:00
Mike Pall
e613105ca9
Fix write barrier for lua_setupvalue() and debug.setupvalue().
2020-03-20 13:35:49 +01:00
Mike Pall
87b111f0fe
Merge branch 'master' into v2.1
2020-01-20 23:34:21 +01:00
Mike Pall
38a5ed4b43
Bump copyright date.
2020-01-20 23:26:51 +01:00
Mike Pall
de26f76e2e
From Lua 5.2: Add lua_tonumberx() and lua_tointegerx().
...
Contributed by François Perrad.
2017-04-07 12:48:37 +02:00
Mike Pall
2b8de8cfc6
From Lua 5.2: Add luaL_setmetatable().
...
Contributed by François Perrad.
2017-04-07 12:38:05 +02:00
Mike Pall
cde968f91f
From Lua 5.2: Add luaL_testudata().
...
Contributed by François Perrad.
2017-04-07 12:31:06 +02:00
Mike Pall
f2e2a3f757
From Lua 5.3: Add lua_isyieldable().
...
Contributed by François Perrad.
2017-04-07 12:27:09 +02:00
Mike Pall
ef23b70eb6
From Lua 5.2: Add lua_copy().
...
Contributed by François Perrad.
2017-04-07 12:24:26 +02:00
Mike Pall
c67a098292
From Lua 5.2: Add lua_version().
...
Contributed by François Perrad.
2017-04-07 12:21:41 +02:00
Mike Pall
9c685f7003
Refactor with LUA_OK.
...
Contributed by François Perrad.
2017-04-07 12:12:03 +02:00
Mike Pall
71ff7ef8a7
Merge branch 'master' into v2.1
2017-01-17 12:41:05 +01:00
Mike Pall
b93a1dd0c8
Bump copyright date to 2017.
2017-01-17 12:35:03 +01:00
Mike Pall
f4231949b5
Merge branch 'master' into v2.1
2016-03-03 12:11:37 +01:00
Mike Pall
db1b399af1
Bump copyright date to 2016.
2016-03-03 12:02:22 +01:00
Mike Pall
86c21bd245
Add collectgarbage("isrunning").
2015-10-01 16:26:00 +02:00
Mike Pall
9647aab0dc
LJ_FR2: Fix lua_settable() and lua_setfield().
2015-01-07 13:17:57 +01:00
Mike Pall
0a5045c34e
Merge branch 'master' into v2.1
2015-01-06 00:12:45 +01:00
Mike Pall
86913b9bbf
Bump copyright date to 2015.
2015-01-05 23:59:31 +01:00
Mike Pall
cb481ddc8f
Add LJ_GC64 mode: 64 bit GC object references.
...
Actually NaN tagging with 47 bit pointers and 13+4 bit tags.
2015-01-03 15:23:58 +01:00
Mike Pall
054e6abe37
Add LJ_FR2 mode: Two-slot frame info.
2015-01-03 15:04:38 +01:00
Mike Pall
5cb6e2eaaf
Cleanup of TValue setters. No functional changes.
2014-12-20 01:48:00 +01:00
Mike Pall
6e9145a882
Cleanup of memory vs. GC sizes. No functional changes.
2014-12-20 00:17:50 +01:00
Mike Pall
881f48f980
Cleanup of frame handling. No functional changes.
2014-12-15 02:27:27 +01:00
Mike Pall
a9d4543601
Merge branch 'master' into v2.1
2014-01-16 23:18:34 +01:00
Mike Pall
ef59e54820
Bump copyright date to 2014.
2014-01-16 23:10:16 +01:00
Mike Pall
8a2b2beac2
Merge branch 'master' into v2.1
2013-11-05 19:46:41 +01:00
Mike Pall
8941b1994e
Fix for last commit
2013-11-05 19:45:04 +01:00
Mike Pall
c8cfca0557
Add table.new().
2013-10-09 17:02:01 +02:00
Mike Pall
8f90a1279e
Big renaming of string buffer/formatting/conversion functions.
2013-05-13 10:15:07 +02:00
Mike Pall
625ffca739
Refactor raw object to pointer or string conversions.
2013-05-13 01:23:33 +02:00