]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
DynASM/ARM: Fix rollback for variant templates.
authorMike Pall <mike>
Sat, 27 Dec 2014 05:08:36 +0000 (06:08 +0100)
committerMike Pall <mike>
Sat, 27 Dec 2014 05:08:36 +0000 (06:08 +0100)
dynasm/dasm_arm.lua

index 3aa8dead6419c92d11c239eb230fc11ad5ab0d9f..d5078f7e5de8870429a3c1d66e831a0d7b3d71f4 100644 (file)
@@ -929,13 +929,16 @@ map_op[".template__"] = function(params, template, nparams)
   -- A single opcode needs a maximum of 3 positions.
   if secpos+3 > maxsecpos then wflush() end
   local pos = wpos()
-  local apos, spos = #actargs, secpos
+  local lpos, apos, spos = #actlist, #actargs, secpos
 
   local ok, err
   for t in gmatch(template, "[^|]+") do
     ok, err = pcall(parse_template, params, t, nparams, pos)
     if ok then return end
     secpos = spos
+    actlist[lpos+1] = nil
+    actlist[lpos+2] = nil
+    actlist[lpos+3] = nil
     actargs[apos+1] = nil
     actargs[apos+2] = nil
     actargs[apos+3] = nil