diff --git a/source/backends/lua.d b/source/backends/lua.d index 84af844..0e5c28a 100644 --- a/source/backends/lua.d +++ b/source/backends/lua.d @@ -912,10 +912,9 @@ class BackendLua : CompilerBackend { scopeSize += var.Size(); if (var.type.hasDeinit) { - output ~= format("lea rax, [rsp + %d\n]", var.offset); - output ~= "mov [r15], rax\n"; - output ~= "add r15, 8\n"; - output ~= format("call __type_deinit_%s\n", Sanitise(var.type.name)); + output ~= format("mem[dsp] = vsp + %d\n", var.offset); + output ~= "dsp = dsp + 1\n"; + output ~= format("type_deinit_%s()\n", var.type.name.Sanitise()); } } output ~= format("vsp = vsp + %d\n", scopeSize); diff --git a/std b/std index 83b046e..d4b0e78 160000 --- a/std +++ b/std @@ -1 +1 @@ -Subproject commit 83b046e2092d85250a704717e7925ddc90a31558 +Subproject commit d4b0e78663f57802a0aa24ffc179d63edee2e4c4