Skip to content

Commit 1de3251

Browse files
Merge pull request #209 from andrew-johnson-4/strict-functions-complex-1
Strict functions complex 1
2 parents 64eccc0 + d07442f commit 1de3251

File tree

4 files changed

+77
-41
lines changed

4 files changed

+77
-41
lines changed

BOOTSTRAP/cli.s

+64-32
Original file line numberDiff line numberDiff line change
@@ -68639,38 +68639,6 @@ uuid_0000000000000411:
6863968639
call __assert_eq_C___
6864068640
mov -72(%rbp),%r12
6864168641
mov -80(%rbp),%r13
68642-
push %r12
68643-
push %r13
68644-
mov -88(%rbp),%r12
68645-
mov -96(%rbp),%r13
68646-
call uuid_0000000000000003
68647-
mov %r12, 0(%r8)
68648-
mov %r13, 8(%r8)
68649-
pop %r13
68650-
pop %r12
68651-
push %r8
68652-
call uuid_0000000000000003
68653-
mov %r12, 0(%r8)
68654-
mov %r13, 8(%r8)
68655-
mov %r8, %r12
68656-
pop %r13
68657-
call __expr_C__C_chain_C___
68658-
push %r12
68659-
push %r13
68660-
mov -104(%rbp),%r12
68661-
mov -112(%rbp),%r13
68662-
call uuid_0000000000000003
68663-
mov %r12, 0(%r8)
68664-
mov %r13, 8(%r8)
68665-
pop %r13
68666-
pop %r12
68667-
push %r8
68668-
call uuid_0000000000000003
68669-
mov %r12, 0(%r8)
68670-
mov %r13, 8(%r8)
68671-
mov %r8, %r12
68672-
pop %r13
68673-
call __expr_C__C_chain_C___
6867468642
mov %r12, -120(%rbp)
6867568643
mov %r13, -128(%rbp)
6867668644
mov $0, %r12
@@ -68787,6 +68755,22 @@ uuid_0000000000000411:
6878768755
push %r13
6878868756
mov -104(%rbp),%r12
6878968757
mov -112(%rbp),%r13
68758+
call __expr_C__C_get_frame_C___
68759+
call uuid_0000000000000003
68760+
mov %r12, 0(%r8)
68761+
mov %r13, 8(%r8)
68762+
pop %r13
68763+
pop %r12
68764+
push %r8
68765+
call uuid_0000000000000003
68766+
mov %r12, 0(%r8)
68767+
mov %r13, 8(%r8)
68768+
mov %r8, %r12
68769+
pop %r13
68770+
push %r12
68771+
push %r13
68772+
mov -104(%rbp),%r12
68773+
mov -112(%rbp),%r13
6879068774
call __expr_C__C_get_prog_C___
6879168775
call uuid_0000000000000003
6879268776
mov %r12, 0(%r8)
@@ -68801,6 +68785,22 @@ uuid_0000000000000411:
6880168785
pop %r13
6880268786
push %r12
6880368787
push %r13
68788+
mov -104(%rbp),%r12
68789+
mov -112(%rbp),%r13
68790+
call __expr_C__C_get_unframe_C___
68791+
call uuid_0000000000000003
68792+
mov %r12, 0(%r8)
68793+
mov %r13, 8(%r8)
68794+
pop %r13
68795+
pop %r12
68796+
push %r8
68797+
call uuid_0000000000000003
68798+
mov %r12, 0(%r8)
68799+
mov %r13, 8(%r8)
68800+
mov %r8, %r12
68801+
pop %r13
68802+
push %r12
68803+
push %r13
6880468804
mov $uuid_0000000000000008, %r12
6880568805
mov $0, %r13
6880668806
call uuid_0000000000000003
@@ -68923,6 +68923,22 @@ uuid_0000000000000411:
6892368923
push %r13
6892468924
mov -88(%rbp),%r12
6892568925
mov -96(%rbp),%r13
68926+
call __expr_C__C_get_frame_C___
68927+
call uuid_0000000000000003
68928+
mov %r12, 0(%r8)
68929+
mov %r13, 8(%r8)
68930+
pop %r13
68931+
pop %r12
68932+
push %r8
68933+
call uuid_0000000000000003
68934+
mov %r12, 0(%r8)
68935+
mov %r13, 8(%r8)
68936+
mov %r8, %r12
68937+
pop %r13
68938+
push %r12
68939+
push %r13
68940+
mov -88(%rbp),%r12
68941+
mov -96(%rbp),%r13
6892668942
call __expr_C__C_get_prog_C___
6892768943
call uuid_0000000000000003
6892868944
mov %r12, 0(%r8)
@@ -68937,6 +68953,22 @@ uuid_0000000000000411:
6893768953
pop %r13
6893868954
push %r12
6893968955
push %r13
68956+
mov -88(%rbp),%r12
68957+
mov -96(%rbp),%r13
68958+
call __expr_C__C_get_unframe_C___
68959+
call uuid_0000000000000003
68960+
mov %r12, 0(%r8)
68961+
mov %r13, 8(%r8)
68962+
pop %r13
68963+
pop %r12
68964+
push %r8
68965+
call uuid_0000000000000003
68966+
mov %r12, 0(%r8)
68967+
mov %r13, 8(%r8)
68968+
mov %r8, %r12
68969+
pop %r13
68970+
push %r12
68971+
push %r13
6894068972
mov -392(%rbp),%r12
6894168973
mov -400(%rbp),%r13
6894268974
call uuid_0000000000000003

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lambda_mountain"
3-
version = "1.11.71"
3+
version = "1.11.72"
44
authors = ["Andrew <andrew@subarctic.org>"]
55
license = "MIT"
66
description = "Lambda Mountain"

PRODUCTION/codegen-strict.lm

+5-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ compile-expr-strict := λctx e offset used . (tail(
101101
(set e2 (compile-expr-strict( ctx t offset Used )))
102102
(set e3 (compile-expr-strict( ctx f offset Used )))
103103
(assert-eq( 'strict-compile-expr::while::ConditionMustBeBranchConditional (expr::get-type e1) BranchConditional ))
104-
(set e4 (expr::chain( (expr::chain( e1 e2 )) e3 )) )
104+
(set e4 e1)
105105
(local label-true-branch)
106106
(set label-true-branch (uuid()))
107107
(local label-false-branch)
@@ -111,10 +111,14 @@ compile-expr-strict := λctx e offset used . (tail(
111111
(set e4 (expr::set-prog( e4 (
112112
(expr::get-prog e1)
113113
\t (expr::get-expr e1) \s label-true-branch \n
114+
(expr::get-frame e3)
114115
(expr::get-prog e3)
116+
(expr::get-unframe e3)
115117
\t 'jmp \s label-end \n
116118
label-true-branch ': \n
119+
(expr::get-frame e2)
117120
(expr::get-prog e2)
121+
(expr::get-unframe e2)
118122
label-end ': \n
119123
))))
120124
e4

STDLIB/default-stdlib.lm

+7-7
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ print := λ(: x S). (: (tail(
1818
(print (.1 (as x SAtom)))
1919
) (
2020
(if (==( (.0 x) 1u64 )) (tail(
21-
# (let c SNil)
21+
(let c SNil)
2222
(print '\[_s)
23-
# (print( (as (.1 (as x SCons)) U64) ))
24-
# (mov( (.1 (as x SCons)) 0u64 c ))
25-
# (print c)
23+
(print( (as (.1 (as x SCons)) U64) ))
24+
(mov( (.1 (as x SCons)) 0u64 c ))
25+
(print c)
2626
(print '\s_s)
27-
# (print( (as (.2 (as x SCons)) U64) ))
28-
# (mov( (.2 (as x SCons)) 0u64 c ))
29-
# (print c)
27+
(print( (as (.2 (as x SCons)) U64) ))
28+
(mov( (.2 (as x SCons)) 0u64 c ))
29+
(print c)
3030
(print '\]_s)
3131
()
3232
)) (tail(

0 commit comments

Comments
 (0)