about summary refs log tree commit diff stats
path: root/mu.arc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2014-11-28 17:55:45 -0800
committerKartik K. Agaram <vc@akkartik.com>2014-11-28 17:55:45 -0800
commit1cb7f78fe8fd30a2b95cda06f7335f2ff20829ab (patch)
tree54f1e2549393841b1932c7f6460b19ca02c47248 /mu.arc
parent2ca395e7ea24ff7db0bbdc51a130d7bbb586f569 (diff)
downloadmu-1cb7f78fe8fd30a2b95cda06f7335f2ff20829ab.tar.gz
365 - new primitives let us generalize 'addr'
Diffstat (limited to 'mu.arc')
-rw-r--r--mu.arc9
1 files changed, 5 insertions, 4 deletions
diff --git a/mu.arc b/mu.arc
index 693bd73c..5ca46993 100644
--- a/mu.arc
+++ b/mu.arc
@@ -310,10 +310,11 @@
   (or types*.typename!size
       (err "type @typename doesn't have a size: " (tostring:pr types*.typename))))
 
-(def addr (loc)
-  (ret result (v absolutize.loc)
-    (when (pos 'deref metadata.loc)
-      (zap memory* result))))
+(def addr (operand)
+  (let loc absolutize.operand
+    (while (pos 'deref metadata.loc)
+      (zap deref loc))
+    v.loc))
 
 (def addrs (n sz)
   (accum yield