about summary refs log tree commit diff stats
path: root/cpp/012run
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/012run')
-rw-r--r--cpp/012run8
1 files changed, 7 insertions, 1 deletions
diff --git a/cpp/012run b/cpp/012run
index 5d0e28cf..63ffdff1 100644
--- a/cpp/012run
+++ b/cpp/012run
@@ -59,7 +59,7 @@ vector<int> read_memory(reagent x) {
 
 void write_memory(reagent x, vector<int> data) {
   int base = to_int(x.name);
-  size_t size = Type[x.types[0]].size;
+  size_t size = size_of(x.types[0]);
   if (size != data.size()) raise << "size mismatch in storing to " << x.to_string();
   for (size_t offset = 0; offset < size; ++offset) {
     trace("mem") << "storing in location " << base+offset;
@@ -74,3 +74,9 @@ int to_int(string n) {
   assert(*end == '\0');
   return result;
 }
+
+int size_of(type_number x) {
+  type_info t = Type[x];
+  if (!t.is_record && !t.is_array) return t.size;
+  return t.size;  // TODO
+}