about summary refs log tree commit diff stats
path: root/shell/main.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-04-15 21:40:48 -0700
committerKartik K. Agaram <vc@akkartik.com>2021-04-15 21:40:48 -0700
commit5b20f177b6743f9a72b4a4b38da973a33f3f4ced (patch)
treec07782be52e8615721c11bb04c253a20c516d6d1 /shell/main.mu
parent9d367ec2ed0091e1042f1cc8cf10c78d134dac3c (diff)
downloadmu-5b20f177b6743f9a72b4a4b38da973a33f3f4ced.tar.gz
shell: restore bindings after restart
Diffstat (limited to 'shell/main.mu')
-rw-r--r--shell/main.mu15
1 files changed, 15 insertions, 0 deletions
diff --git a/shell/main.mu b/shell/main.mu
index a13e6b83..8abc6ed1 100644
--- a/shell/main.mu
+++ b/shell/main.mu
@@ -48,6 +48,21 @@ fn load-state data-disk: (addr disk), _sandbox: (addr sandbox), globals: (addr g
     break-if-!=
     return
   }
+  # load globals from assoc(initial-root, 'globals)
+  var globals-literal-storage: (handle cell)
+  var globals-literal-ah/eax: (addr handle cell) <- address globals-literal-storage
+  new-symbol globals-literal-ah, "globals"
+  var globals-literal/eax: (addr cell) <- lookup *globals-literal-ah
+  var globals-cell-storage: (handle cell)
+  var globals-cell-ah/edx: (addr handle cell) <- address globals-cell-storage
+  lookup-symbol globals-literal, globals-cell-ah, *initial-root, 0/no-globals, 0/no-trace, 0/no-screen, 0/no-keyboard
+  var globals-cell/eax: (addr cell) <- lookup *globals-cell-ah
+  compare globals-cell, 0
+  {
+    break-if-!=
+    return
+  }
+  load-globals globals-cell-ah, globals
   # sandbox = assoc(initial-root, 'sandbox)
   var sandbox-literal-storage: (handle cell)
   var sandbox-literal-ah/eax: (addr handle cell) <- address sandbox-literal-storage