diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-03-04 23:08:44 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-03-05 05:28:28 -0800 |
commit | 091a4e4001f42fb059107e854ba0449b3d27c16f (patch) | |
tree | ab8b3512c125eb67d05a45e0175323e38acd167f /shell/sandbox.mu | |
parent | 7baa80a2fb1a2818368c2cec8e7ca7c7c07f9621 (diff) | |
download | mu-091a4e4001f42fb059107e854ba0449b3d27c16f.tar.gz |
7851 - shell snapshot: symbol lookup
Diffstat (limited to 'shell/sandbox.mu')
-rw-r--r-- | shell/sandbox.mu | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/shell/sandbox.mu b/shell/sandbox.mu index 6f25474a..fbed3cff 100644 --- a/shell/sandbox.mu +++ b/shell/sandbox.mu @@ -174,9 +174,28 @@ fn run in: (addr gap-buffer), out: (addr stream byte), trace: (addr trace) { break-if-= return } + var nil-storage: (handle cell) + var nil-ah/ecx: (addr handle cell) <- address nil-storage + allocate-pair nil-ah + # HERE + var tmp-storage: (handle cell) + var tmp-ah/edx: (addr handle cell) <- address tmp-storage + # tmp = a + new-symbol tmp-ah, "a" + # tmp = (a) + new-pair tmp-ah, *tmp-ah, *nil-ah + # tmp = (a . (a)) = (a a) + var tmp/eax: (addr cell) <- lookup *tmp-ah + { + var new-ah/ecx: (addr handle cell) <- get tmp, left + new-pair tmp-ah, *new-ah, *tmp-ah + } + # env = tmp = ((a a)) + new-pair tmp-ah, *tmp-ah, *nil-ah + var env/eax: (addr cell) <- lookup *tmp-ah var eval-result-storage: (handle cell) var eval-result/edi: (addr handle cell) <- address eval-result-storage - evaluate read-result, eval-result, trace + evaluate read-result, eval-result, env, trace var error?/eax: boolean <- has-errors? trace { compare error?, 0/false |