summaryrefslogtreecommitdiff
path: root/tnslc/compile/scope.tnsl
diff options
context:
space:
mode:
authorCircleShift <kgunger12@gmail.com>2025-12-09 02:25:30 -0500
committerCircleShift <kgunger12@gmail.com>2025-12-09 02:25:30 -0500
commit0587f854d80a9ad95c459b45509fcda7926cde20 (patch)
tree2b3e0d2f2cbfa541bb4d9bf2e2c7f5af5bcaafdc /tnslc/compile/scope.tnsl
parentde71ecd4d3f52deb6f854540f42f931b2e55055c (diff)
begin on the actual codegenorigin
Diffstat (limited to 'tnslc/compile/scope.tnsl')
-rw-r--r--tnslc/compile/scope.tnsl13
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)
;/