blob: b8284426c3b12687796638b0d84e54c6def88efb (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
fn evaluate _in: (addr handle cell), out: (addr handle cell), trace: (addr trace) {
trace-text trace, "eval", "evaluate"
trace-lower trace
var in/eax: (addr handle cell) <- copy _in
var in-addr/eax: (addr cell) <- lookup *in
{
var is-nil?/eax: boolean <- is-nil? in-addr
compare is-nil?, 0/false
break-if-=
# nil is a literal
copy-object _in, out
trace-higher trace
return
}
var in-type/ecx: (addr int) <- get in-addr, type
compare *in-type, 1/number
{
break-if-!=
# numbers are literals
copy-object _in, out
trace-higher trace
return
}
copy-object _in, out
trace-higher trace
}
|