diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-03-14 22:33:42 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-03-14 22:33:42 -0700 |
commit | 0cc8fa9af894f1d8594173f3083acf5acfbebf3a (patch) | |
tree | 049453af51cb6ee4d1044b353e077ca470ec8afe | |
parent | 15433557812c1b8153fe3f238311ff808c8389b6 (diff) | |
download | mu-0cc8fa9af894f1d8594173f3083acf5acfbebf3a.tar.gz |
924
-rw-r--r-- | cpp/.traces/next_ingredient | 6 | ||||
-rw-r--r-- | cpp/012run | 3 | ||||
-rw-r--r-- | cpp/020call | 9 |
3 files changed, 11 insertions, 7 deletions
diff --git a/cpp/.traces/next_ingredient b/cpp/.traces/next_ingredient index 8ded3d51..1970698a 100644 --- a/cpp/.traces/next_ingredient +++ b/cpp/.traces/next_ingredient @@ -16,3 +16,9 @@ run/0: ingredient 1 is 12 mem/0: location 12 is 2 run/0: product 0 is 3 mem/0: storing in location 13 +run/0: instruction main/1 +run/0: ingredient 0 is 1 +run/0: ingredient 1 is 12 +mem/0: location 12 is 2 +run/0: product 0 is 3 +mem/0: storing in location 13 diff --git a/cpp/012run b/cpp/012run index 0d102660..eec9b61c 100644 --- a/cpp/012run +++ b/cpp/012run @@ -51,8 +51,8 @@ void run(recipe_number r) { void run(routine rr) { // #defines save us the trouble of updating aliases when dependent variables // change. -#define instructions Recipe[rr.calls.top().running_recipe].steps while (!rr.calls.empty()) { + vector<instruction>& instructions = Recipe[rr.calls.top().running_recipe].steps; while (rr.calls.top().pc >= instructions.size()) { rr.calls.pop(); if (rr.calls.empty()) return; @@ -76,7 +76,6 @@ void run(routine rr) { } ++pc; } -#undef instructions } :(before "End Main") diff --git a/cpp/020call b/cpp/020call index 9aef7931..1b40b1de 100644 --- a/cpp/020call +++ b/cpp/020call @@ -85,12 +85,11 @@ case REPLY: { } rr.calls.pop(); size_t& caller_pc = rr.calls.top().pc; -//? cout << caller_pc << ": " << instructions[caller_pc].products.size() << " <=> " << callee_results.size(); //? 2 - assert(instructions[caller_pc].products.size() <= callee_results.size()); - for (size_t i = 0; i < instructions[caller_pc].products.size(); ++i) { -//? cout << "AAA " << i << '\n'; //? 1 + instruction& caller_instruction = Recipe[rr.calls.top().running_recipe].steps[caller_pc]; + assert(caller_instruction.products.size() <= callee_results.size()); + for (size_t i = 0; i < caller_instruction.products.size(); ++i) { trace("run") << "result " << i << " is " << callee_results[i].size() << "[" << callee_results[i][0] << "...]"; - write_memory(instructions[caller_pc].products[i], callee_results[i]); + write_memory(caller_instruction.products[i], callee_results[i]); } ++caller_pc; break; |