diff options
Diffstat (limited to 'tnslc/compile/scope.tnsl')
| -rw-r--r-- | tnslc/compile/scope.tnsl | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/tnslc/compile/scope.tnsl b/tnslc/compile/scope.tnsl index 6e4d44d..1afaeab 100644 --- a/tnslc/compile/scope.tnsl +++ b/tnslc/compile/scope.tnsl @@ -106,8 +106,8 @@ struct Scope { ;/ /; mk_set_var (~Var src) - Var out - + Var out = src`.copy() + /; if (src`.is_reg_passed() == true) out.loc = self._next_reg_slot() /; if (out.loc == 0) @@ -117,6 +117,15 @@ struct Scope { out.loc = self._next_stack_slot() ;/ + ~int32 p = out.top_ptrc() + /; if (p == NULL) + out.set(self.cb, src) + ;; else if (p` == 0) + out.set_ref(self.cb, src) + ;; else + out.set(self.cb, src) + ;/ + self.vars.push(~out) ;/ |