On this page
MV_INLINE
declare function MV_INLINE<A..., R...>(inlineFunction: (A...) -> R...): (A...) -> R...
will mark the passed function to be inlined where used.
Some limitations apply:
- The passed function cannot be variadic (i.e. no … usage)
- The passed function cannot tailcall or otherwise recursively call itself.
- You must use this macro in it’s specific form, i.e.
local <var> = MV_INLINE(function() ... end)
Valid Usage
local testFunc = MV_INLINE(function(start, endn)
local total = 0
for i = start, endn do
total = total + i
end
return total
end)
local testFunc2 = MV_INLINE(function()
return testFunc(1, 10), testFunc(11, 20), testFunc(1, 15)
end)
print(testFunc2())
turns into:
...
local b=o(nil)
repeat
local j=nil
repeat
local c=0
for e=1,10 do
c=c+e
end
do
j=c
break
end
until true
local a=nil
repeat
local f=0
for g=11,20 do
f=f+g
end
do
a=f
break
end
until true
local p=nil
repeat
local l=0
for i=1,15 do
l=l+i
end
do
p=l
break
end
until true
do
b=o(j,a,p)
break
end
until true;
print(m(b[1],1,b[2]))