about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2016-10-22 12:16:02 -0700
committerKartik K. Agaram <vc@akkartik.com>2016-10-22 12:16:02 -0700
commite939023612da044098e649e1e77cacceb73c564d (patch)
tree065f3e158bfb78d97c12c0c4b435681e722fe7ba
parentada5eb55cb185edf30dcac48b25cc485d44677ef (diff)
downloadmu-e939023612da044098e649e1e77cacceb73c564d.tar.gz
3553
Tag all transforms as idempotent or not.
I'd fallen off this wagon.
I might even be getting it wrong. Something a type system should
automatically verify.
-rw-r--r--028call_reply.cc2
-rw-r--r--030container.cc4
-rw-r--r--031merge.cc2
-rw-r--r--036refcount.cc2
-rw-r--r--060rewrite_literal_string.cc2
-rw-r--r--062convert_ingredients_to_text.cc2
6 files changed, 7 insertions, 7 deletions
diff --git a/028call_reply.cc b/028call_reply.cc
index 200c9f9d..ea853058 100644
--- a/028call_reply.cc
+++ b/028call_reply.cc
@@ -46,7 +46,7 @@ case RETURN: {
 //: Types in reply instructions are checked ahead of time.
 
 :(before "End Checks")
-Transform.push_back(check_types_of_reply_instructions);
+Transform.push_back(check_types_of_reply_instructions);  // idempotent
 :(code)
 void check_types_of_reply_instructions(recipe_ordinal r) {
   const recipe& caller = get(Recipe, r);
diff --git a/030container.cc b/030container.cc
index 6abbbcc6..03e146ec 100644
--- a/030container.cc
+++ b/030container.cc
@@ -175,7 +175,7 @@ const type_tree* root_type(const type_tree* t) {
 //: also store a copy in each reagent in each instruction in each recipe
 
 :(after "End Type Modifying Transforms")
-Transform.push_back(compute_container_sizes);
+Transform.push_back(compute_container_sizes);  // idempotent
 :(code)
 void compute_container_sizes(recipe_ordinal r) {
   recipe& caller = get(Recipe, r);
@@ -820,7 +820,7 @@ def main [
 +mem: storing 34 in location 2
 
 :(after "Transform.push_back(expand_type_abbreviations)")
-Transform.push_back(expand_type_abbreviations_in_containers);
+Transform.push_back(expand_type_abbreviations_in_containers);  // idempotent
 :(code)
 // extremely inefficient; we process all types over and over again, once for every single recipe
 // but it doesn't seem to cause any noticeable slowdown
diff --git a/031merge.cc b/031merge.cc
index 396a3160..d89ce2b0 100644
--- a/031merge.cc
+++ b/031merge.cc
@@ -110,7 +110,7 @@ struct merge_check_state {
 };
 
 :(before "End Checks")
-Transform.push_back(check_merge_calls);
+Transform.push_back(check_merge_calls);  // idempotent
 :(code)
 void check_merge_calls(const recipe_ordinal r) {
   const recipe& caller = get(Recipe, r);
diff --git a/036refcount.cc b/036refcount.cc
index 5deaa675..688a4682 100644
--- a/036refcount.cc
+++ b/036refcount.cc
@@ -281,7 +281,7 @@ bool operator<(const address_element_info& a, const address_element_info& b) {
 //: already knowing the sizes of all types
 
 :(after "Transform.push_back(compute_container_sizes)")
-Transform.push_back(compute_container_address_offsets);
+Transform.push_back(compute_container_address_offsets);  // idempotent
 :(code)
 void compute_container_address_offsets(const recipe_ordinal r) {
   recipe& caller = get(Recipe, r);
diff --git a/060rewrite_literal_string.cc b/060rewrite_literal_string.cc
index e8e0bc5a..30699644 100644
--- a/060rewrite_literal_string.cc
+++ b/060rewrite_literal_string.cc
@@ -13,7 +13,7 @@ def foo x:text -> n:num [
 
 :(before "End Instruction Inserting/Deleting Transforms")
 initialize_transform_rewrite_literal_string_to_text();
-Transform.push_back(rewrite_literal_string_to_text);
+Transform.push_back(rewrite_literal_string_to_text);  // idempotent
 
 :(before "End Globals")
 set<string> recipes_taking_literal_strings;
diff --git a/062convert_ingredients_to_text.cc b/062convert_ingredients_to_text.cc
index 43c459f5..c67b58c7 100644
--- a/062convert_ingredients_to_text.cc
+++ b/062convert_ingredients_to_text.cc
@@ -54,7 +54,7 @@ def bar -> x:foo [
 //: misplaced; should be in instruction inserting/deleting transforms, but has
 //: prerequisites: deduce_types_from_header and check_or_set_types_by_name
 :(after "Transform.push_back(deduce_types_from_header)")
-Transform.push_back(convert_ingredients_to_text);
+Transform.push_back(convert_ingredients_to_text);  // idempotent
 
 :(code)
 void convert_ingredients_to_text(recipe_ordinal r) {