about summary refs log tree commit diff stats
path: root/shell/sandbox.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-03-04 23:08:44 -0800
committerKartik K. Agaram <vc@akkartik.com>2021-03-05 05:28:28 -0800
commit091a4e4001f42fb059107e854ba0449b3d27c16f (patch)
treeab8b3512c125eb67d05a45e0175323e38acd167f /shell/sandbox.mu
parent7baa80a2fb1a2818368c2cec8e7ca7c7c07f9621 (diff)
downloadmu-091a4e4001f42fb059107e854ba0449b3d27c16f.tar.gz
7851 - shell snapshot: symbol lookup
Diffstat (limited to 'shell/sandbox.mu')
-rw-r--r--shell/sandbox.mu21
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