Skip to content

Commit 449b0b3

Browse files
fixed a nasty bug with push fragments not pushing
1 parent 9952343 commit 449b0b3

File tree

4 files changed

+54
-10
lines changed

4 files changed

+54
-10
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lambda_mountain"
3-
version = "1.11.80"
3+
version = "1.11.81"
44
authors = ["Andrew <andrew@subarctic.org>"]
55
license = "MIT"
66
description = "Lambda Mountain"

STDLIB/default-instruction-set.lm

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,26 @@ fragment push := λ(: src GlobalVariable+Sized<size>). (: (
5454
))
5555
) Nil);
5656
fragment push := λ(: src LocalVariable+Sized<size>). (: (
57-
(.program ( for word-offset in (range( 0 (/( size 8 )) )) (
58-
\t 'pushq \s (+(
59-
(.expression src)
60-
(+(
61-
(+( size '-8 ))
62-
(inv(*( word-offset 8 )))
63-
))
64-
)) \[ '%rbp \] \n
65-
)))
57+
(.program (
58+
(for word-offset in (range( 0 (/( size 8 )) )) (
59+
\t 'pushq \s (+(
60+
(.expression src)
61+
(+(
62+
(+( size '-8 ))
63+
(inv(*( word-offset 8 )))
64+
))
65+
)) \[ '%rbp \] \n
66+
))
67+
(if-eq size 4 (
68+
\t 'pushq \s (.expression src) \[ '%rbp \] \n
69+
))
70+
(if-eq size 2 (
71+
\t 'pushq \s (.expression src) \[ '%rbp \] \n
72+
))
73+
(if-eq size 1 (
74+
\t 'pushq \s (.expression src) \[ '%rbp \] \n
75+
))
76+
))
6677
) Nil);
6778
fragment pop := λ(: src LocalVariable+Sized<size>). (: (
6879
(.program ( for word-offset in (range( 1 (+( (/( size 8 )) 1 )) )) (

tests/strict/ifeq.lm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ main := (tail(
1414
(print x)(print y)(print \n_s)
1515
(if (==( x y )) (print 'Failure\n_s) (print 'ZeroNotEqualOne\n_s) )
1616
))
17+
()
1718
(tail(
1819
(let x 0u16)
1920
(let y 0u16)

tests/strict/ifeq.lm.out

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
00
2+
ZeroEqZero
3+
01
4+
ZeroNotEqualOne
5+
00
6+
ZeroEqZero
7+
01
8+
ZeroNotEqualOne
9+
00
10+
ZeroEqZero
11+
01
12+
ZeroNotEqualOne
13+
00
14+
ZeroEqZero
15+
01
16+
ZeroNotEqualOne
17+
00
18+
ZeroEqZero
19+
01
20+
ZeroNotEqualOne
21+
00
22+
ZeroEqZero
23+
01
24+
ZeroNotEqualOne
25+
00
26+
ZeroEqZero
27+
01
28+
ZeroNotEqualOne
29+
00
30+
ZeroEqZero
31+
01
32+
ZeroNotEqualOne

0 commit comments

Comments
 (0)