From 7fb56277f54b9e2625357a433b18f60e4493f34a Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sun, 22 Mar 2015 21:58:32 -0700 Subject: 967 --- cpp/026space | 42 ------------------------------------------ cpp/027space | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 42 deletions(-) delete mode 100644 cpp/026space create mode 100644 cpp/027space diff --git a/cpp/026space b/cpp/026space deleted file mode 100644 index b3b2f001..00000000 --- a/cpp/026space +++ /dev/null @@ -1,42 +0,0 @@ -//: Spaces help isolate functions from each other. You can create them at will, -//: and all addresses in arguments are implicitly based on the 'default-space' -//: (unless they have the /raw property) - -:(scenarios run) -:(scenario "set_default_space") -recipe main [ - default-space:address:space <- copy 10:literal - 1:integer <- copy 12:literal -] -+mem: storing in location 11 - -:(before "End Call Fields") -size_t default_space; -:(replace "call(recipe_number r) :running_recipe(r)") -call(recipe_number r) :running_recipe(r), pc(0), next_ingredient_to_process(0), default_space(0) {} - -:(replace "reagent r = x" following "reagent canonize(reagent x)") -reagent r = absolutize(x); -:(code) -reagent absolutize(reagent x) { -//? cout << "absolutize " << x.to_string() << '\n'; //? 1 - if (is_raw(x) || is_dummy(x)) return x; -//? cout << "not raw: " << x.to_string() << '\n'; //? 1 - assert(x.initialized); - reagent r = x; - r.set_value(r.value + Current_routine.calls.top().default_space); -//? cout << "after absolutize: " << r.value << '\n'; //? 1 - if (r.properties.empty()) - r.properties.push_back(pair >("", vector())); - r.properties.push_back(pair >("raw", vector())); - assert(is_raw(r)); - return r; -} - -:(after "void write_memory(reagent x, vector data)") - if (x.name == "default-space") { - assert(data.size() == 1); - Current_routine.calls.top().default_space = data[0]; -//? cout << "AAA " << Current_routine.calls.top().default_space << '\n'; //? 1 - return; - } diff --git a/cpp/027space b/cpp/027space new file mode 100644 index 00000000..b3b2f001 --- /dev/null +++ b/cpp/027space @@ -0,0 +1,42 @@ +//: Spaces help isolate functions from each other. You can create them at will, +//: and all addresses in arguments are implicitly based on the 'default-space' +//: (unless they have the /raw property) + +:(scenarios run) +:(scenario "set_default_space") +recipe main [ + default-space:address:space <- copy 10:literal + 1:integer <- copy 12:literal +] ++mem: storing in location 11 + +:(before "End Call Fields") +size_t default_space; +:(replace "call(recipe_number r) :running_recipe(r)") +call(recipe_number r) :running_recipe(r), pc(0), next_ingredient_to_process(0), default_space(0) {} + +:(replace "reagent r = x" following "reagent canonize(reagent x)") +reagent r = absolutize(x); +:(code) +reagent absolutize(reagent x) { +//? cout << "absolutize " << x.to_string() << '\n'; //? 1 + if (is_raw(x) || is_dummy(x)) return x; +//? cout << "not raw: " << x.to_string() << '\n'; //? 1 + assert(x.initialized); + reagent r = x; + r.set_value(r.value + Current_routine.calls.top().default_space); +//? cout << "after absolutize: " << r.value << '\n'; //? 1 + if (r.properties.empty()) + r.properties.push_back(pair >("", vector())); + r.properties.push_back(pair >("raw", vector())); + assert(is_raw(r)); + return r; +} + +:(after "void write_memory(reagent x, vector data)") + if (x.name == "default-space") { + assert(data.size() == 1); + Current_routine.calls.top().default_space = data[0]; +//? cout << "AAA " << Current_routine.calls.top().default_space << '\n'; //? 1 + return; + } -- cgit 1.4.1-2-gfad0