summaryrefslogtreecommitdiff
path: root/tnslc/compile/function.tnsl
diff options
context:
space:
mode:
authorCircleShift <kgunger12@gmail.com>2025-12-24 04:09:21 -0500
committerCircleShift <kgunger12@gmail.com>2025-12-24 04:09:21 -0500
commit871bec579241882e8b05eb17cf177652e4f37781 (patch)
treee54910346875df2b7fb7d59a76d3a7d637d5eb55 /tnslc/compile/function.tnsl
parent562547d3c55c79f5ec92464718dab5b524c7ae83 (diff)
strip refsorigin
Diffstat (limited to 'tnslc/compile/function.tnsl')
-rw-r--r--tnslc/compile/function.tnsl18
1 files changed, 17 insertions, 1 deletions
diff --git a/tnslc/compile/function.tnsl b/tnslc/compile/function.tnsl
index 0f885f8..18d6c36 100644
--- a/tnslc/compile/function.tnsl
+++ b/tnslc/compile/function.tnsl
@@ -38,9 +38,9 @@ struct Function {
p.loc = reg
reg++
;; else
+ stack_up = stack_up + p.actual_size()
p.loc = 0 - 1
p.offset = stack_up
- stack_up = stack_up + p.actual_size()
;/
self.inputs.push(~p)
;/
@@ -51,6 +51,9 @@ struct Function {
~parse.Node n
parse.Node dummy
dummy.data = "### OUTPUT ###\0"
+
+ int reg = 1
+ int stack = 0
/; loop (int i = 0; i < tl`.sub.count) [i++]
n = tl`.sub.get(i)
/; if (n`._type == parse.NTYPE_TYPE)
@@ -58,6 +61,19 @@ struct Function {
Var r
r.init(n, ~dummy)
r._resolve_type(parent)
+
+ /; if (r.regable() == true && reg < 7)
+ r.loc = reg
+ /; if (reg > 4)
+ r.loc = r.loc + 4
+ ;/
+ reg++
+ ;; else
+ r.loc = 0 - 1
+ r.offset = stack
+ stack = stack + r.actual_size()
+ ;/
+
self.outputs.push(~r)
;/
;/