Faster lua_rotate for Lua < 5.3
This commit is contained in:
parent
dba76f3994
commit
3904213ed0
|
@ -155,6 +155,13 @@ pub unsafe fn lua_absindex(L: *mut lua_State, mut idx: c_int) -> c_int {
|
||||||
|
|
||||||
pub unsafe fn lua_rotate(L: *mut lua_State, mut idx: c_int, mut n: c_int) {
|
pub unsafe fn lua_rotate(L: *mut lua_State, mut idx: c_int, mut n: c_int) {
|
||||||
idx = lua_absindex(L, idx);
|
idx = lua_absindex(L, idx);
|
||||||
|
if n > 0 {
|
||||||
|
// Faster version
|
||||||
|
for _ in 0..n {
|
||||||
|
lua_insert(L, idx);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
let n_elems = lua_gettop(L) - idx + 1;
|
let n_elems = lua_gettop(L) - idx + 1;
|
||||||
if n < 0 {
|
if n < 0 {
|
||||||
n += n_elems;
|
n += n_elems;
|
||||||
|
|
|
@ -27,6 +27,13 @@ unsafe fn compat53_reverse(L: *mut lua_State, mut a: c_int, mut b: c_int) {
|
||||||
|
|
||||||
pub unsafe fn lua_rotate(L: *mut lua_State, mut idx: c_int, mut n: c_int) {
|
pub unsafe fn lua_rotate(L: *mut lua_State, mut idx: c_int, mut n: c_int) {
|
||||||
idx = lua_absindex(L, idx);
|
idx = lua_absindex(L, idx);
|
||||||
|
if n > 0 {
|
||||||
|
// Faster version
|
||||||
|
for _ in 0..n {
|
||||||
|
lua_insert(L, idx);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
let n_elems = lua_gettop(L) - idx + 1;
|
let n_elems = lua_gettop(L) - idx + 1;
|
||||||
if n < 0 {
|
if n < 0 {
|
||||||
n += n_elems;
|
n += n_elems;
|
||||||
|
|
|
@ -90,6 +90,13 @@ unsafe fn compat53_pushfuncname(L: *mut lua_State, level: c_int, ar: *mut lua_De
|
||||||
|
|
||||||
pub unsafe fn lua_rotate(L: *mut lua_State, mut idx: c_int, mut n: c_int) {
|
pub unsafe fn lua_rotate(L: *mut lua_State, mut idx: c_int, mut n: c_int) {
|
||||||
idx = lua_absindex(L, idx);
|
idx = lua_absindex(L, idx);
|
||||||
|
if n > 0 {
|
||||||
|
// Faster version
|
||||||
|
for _ in 0..n {
|
||||||
|
lua_insert(L, idx);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
let n_elems = lua_gettop(L) - idx + 1;
|
let n_elems = lua_gettop(L) - idx + 1;
|
||||||
if n < 0 {
|
if n < 0 {
|
||||||
n += n_elems;
|
n += n_elems;
|
||||||
|
|
Loading…
Reference in New Issue