about summary refs log tree commit diff stats
path: root/071rewrite_stash.cc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2016-03-19 09:14:25 -0700
committerKartik K. Agaram <vc@akkartik.com>2016-03-19 11:49:34 -0700
commitfda4f09181db880dc5199d191161d75d8b9ad2b4 (patch)
tree458ddbe5b80205b17f0c53c937e274c85d4e24a8 /071rewrite_stash.cc
parentb105b9799f5604027e82ff225c25bcf67b8523c7 (diff)
downloadmu-fda4f09181db880dc5199d191161d75d8b9ad2b4.tar.gz
2795 - quick hacks for Caleb
It turns out that my extensible stash doesn't yet work well in all
situations. If you try to stash an array, you end up trying to create an
array local that's not statically sized -- a no-no.

Bah, just throw it all out.
Diffstat (limited to '071rewrite_stash.cc')
-rw-r--r--071rewrite_stash.cc50
1 files changed, 0 insertions, 50 deletions
diff --git a/071rewrite_stash.cc b/071rewrite_stash.cc
deleted file mode 100644
index ea7c140f..00000000
--- a/071rewrite_stash.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-//: when encountering other types, try to convert them to strings using
-//: 'to-text'
-
-:(scenarios transform)
-:(scenario rewrite_stashes_to_text)
-recipe main [
-  local-scope
-  n:number <- copy 34
-  stash n
-]
-+transform: stash_2_0:address:shared:array:character <- to-text-line n
-+transform: stash stash_2_0:address:shared:array:character
-
-:(before "End Instruction Inserting/Deleting Transforms")
-Transform.push_back(rewrite_stashes_to_text);
-
-:(code)
-void rewrite_stashes_to_text(recipe_ordinal r) {
-  recipe& caller = get(Recipe, r);
-  trace(9991, "transform") << "--- rewrite 'stash' instructions in recipe " << caller.name << end();
-  // in recipes without named locations, 'stash' is still not extensible
-  if (contains_numeric_locations(caller)) return;
-  rewrite_stashes_to_text(caller);
-}
-
-void rewrite_stashes_to_text(recipe& caller) {
-  vector<instruction> new_instructions;
-  for (int i = 0; i < SIZE(caller.steps); ++i) {
-    instruction& inst = caller.steps.at(i);
-    if (inst.name == "stash") {
-      for (int j = 0; j < SIZE(inst.ingredients); ++j) {
-        if (is_literal(inst.ingredients.at(j))) continue;
-        if (is_mu_string(inst.ingredients.at(j))) continue;
-        instruction def;
-        def.name = "to-text-line";
-        def.ingredients.push_back(inst.ingredients.at(j));
-        ostringstream ingredient_name;
-        ingredient_name << "stash_" << i << '_' << j << ":address:shared:array:character";
-        def.products.push_back(reagent(ingredient_name.str()));
-        trace(9993, "transform") << to_string(def) << end();
-        new_instructions.push_back(def);
-        inst.ingredients.at(j).clear();  // reclaim old memory
-        inst.ingredients.at(j) = reagent(ingredient_name.str());
-      }
-    }
-    trace(9993, "transform") << to_string(inst) << end();
-    new_instructions.push_back(inst);
-  }
-  caller.steps.swap(new_instructions);
-}