mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 15:14:08 +00:00
DynASM/ARM: Fix rollback for variant templates.
This commit is contained in:
parent
f45d11e2fe
commit
db7cb5ab0e
@ -929,13 +929,16 @@ map_op[".template__"] = function(params, template, nparams)
|
|||||||
-- A single opcode needs a maximum of 3 positions.
|
-- A single opcode needs a maximum of 3 positions.
|
||||||
if secpos+3 > maxsecpos then wflush() end
|
if secpos+3 > maxsecpos then wflush() end
|
||||||
local pos = wpos()
|
local pos = wpos()
|
||||||
local apos, spos = #actargs, secpos
|
local lpos, apos, spos = #actlist, #actargs, secpos
|
||||||
|
|
||||||
local ok, err
|
local ok, err
|
||||||
for t in gmatch(template, "[^|]+") do
|
for t in gmatch(template, "[^|]+") do
|
||||||
ok, err = pcall(parse_template, params, t, nparams, pos)
|
ok, err = pcall(parse_template, params, t, nparams, pos)
|
||||||
if ok then return end
|
if ok then return end
|
||||||
secpos = spos
|
secpos = spos
|
||||||
|
actlist[lpos+1] = nil
|
||||||
|
actlist[lpos+2] = nil
|
||||||
|
actlist[lpos+3] = nil
|
||||||
actargs[apos+1] = nil
|
actargs[apos+1] = nil
|
||||||
actargs[apos+2] = nil
|
actargs[apos+2] = nil
|
||||||
actargs[apos+3] = nil
|
actargs[apos+3] = nil
|
||||||
|
Loading…
Reference in New Issue
Block a user