diff options
Diffstat (limited to 'html/043new.cc.html')
-rw-r--r-- | html/043new.cc.html | 45 |
1 files changed, 24 insertions, 21 deletions
diff --git a/html/043new.cc.html b/html/043new.cc.html index 4f4321e1..82eaa244 100644 --- a/html/043new.cc.html +++ b/html/043new.cc.html @@ -115,8 +115,8 @@ case NEW: <span class="Delimiter">{</span> size = size_of<span class="Delimiter">(</span>type<span class="Delimiter">);</span> <span class="Delimiter">}</span> <span class="Delimiter">}</span> -<span class="CommentedCode">//? Total_alloc += size; //? 1</span> -<span class="CommentedCode">//? Num_alloc++; //? 1</span> +<span class="CommentedCode">//? Total_alloc += size;</span> +<span class="CommentedCode">//? Num_alloc++;</span> <span class="Comment">// compute the region of memory to return</span> <span class="Comment">// really crappy at the moment</span> ensure_space<span class="Delimiter">(</span>size<span class="Delimiter">);</span> @@ -139,21 +139,25 @@ case NEW: <span class="Delimiter">{</span> <span class="Identifier">break</span><span class="Delimiter">;</span> <span class="Delimiter">}</span> -<span class="CommentedCode">//? :(before "End Globals") //? 1</span> -<span class="CommentedCode">//? long long int Total_alloc = 0; //? 1</span> -<span class="CommentedCode">//? long long int Num_alloc = 0; //? 1</span> -<span class="CommentedCode">//? long long int Total_free = 0; //? 1</span> -<span class="CommentedCode">//? long long int Num_free = 0; //? 1</span> -<span class="CommentedCode">//? :(before "End Setup") //? 1</span> -<span class="CommentedCode">//? Total_alloc = Num_alloc = Total_free = Num_free = 0; //? 1</span> -<span class="CommentedCode">//? :(before "End Teardown") //? 1</span> -<span class="CommentedCode">//? cerr << Total_alloc << "/" << Num_alloc //? 1</span> -<span class="CommentedCode">//? << " vs " << Total_free << "/" << Num_free << '\n'; //? 1</span> -<span class="CommentedCode">//? cerr << SIZE(Memory) << '\n'; //? 1</span> +<span class="CommentedCode">//? :(before "End Globals")</span> +<span class="CommentedCode">//? long long int Total_alloc = 0;</span> +<span class="CommentedCode">//? long long int Num_alloc = 0;</span> +<span class="CommentedCode">//? long long int Total_free = 0;</span> +<span class="CommentedCode">//? long long int Num_free = 0;</span> +<span class="CommentedCode">//? :(before "End Setup")</span> +<span class="CommentedCode">//? Total_alloc = Num_alloc = Total_free = Num_free = 0;</span> +<span class="CommentedCode">//? :(before "End Teardown")</span> +<span class="CommentedCode">//? cerr << Total_alloc << "/" << Num_alloc</span> +<span class="CommentedCode">//? << " vs " << Total_free << "/" << Num_free << '\n';</span> +<span class="CommentedCode">//? cerr << SIZE(Memory) << '\n';</span> <span class="Delimiter">:(code)</span> void ensure_space<span class="Delimiter">(</span>long long int size<span class="Delimiter">)</span> <span class="Delimiter">{</span> - assert<span class="Delimiter">(</span>size <= Initial_memory_per_routine<span class="Delimiter">);</span> + if <span class="Delimiter">(</span>size > Initial_memory_per_routine<span class="Delimiter">)</span> <span class="Delimiter">{</span> + tb_shutdown<span class="Delimiter">();</span> + cerr << <span class="Constant">"can't allocate "</span> << size << <span class="Constant">" locations, that's too much.</span><span class="cSpecial">\n</span><span class="Constant">"</span><span class="Delimiter">;</span> + exit<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span> + <span class="Delimiter">}</span> if <span class="Delimiter">(</span>Current_routine<span class="Delimiter">-></span>alloc + size > Current_routine<span class="Delimiter">-></span>alloc_max<span class="Delimiter">)</span> <span class="Delimiter">{</span> <span class="Comment">// waste the remaining space and create a new chunk</span> Current_routine<span class="Delimiter">-></span>alloc = Memory_allocated_until<span class="Delimiter">;</span> @@ -267,9 +271,9 @@ case ABANDON: <span class="Delimiter">{</span> <span class="Delimiter">:(code)</span> void abandon<span class="Delimiter">(</span>long long int address<span class="Delimiter">,</span> long long int size<span class="Delimiter">)</span> <span class="Delimiter">{</span> -<span class="CommentedCode">//? Total_free += size; //? 1</span> -<span class="CommentedCode">//? Num_free++; //? 1</span> -<span class="CommentedCode">//? cerr << "abandon: " << size << '\n'; //? 2</span> +<span class="CommentedCode">//? Total_free += size;</span> +<span class="CommentedCode">//? Num_free++;</span> +<span class="CommentedCode">//? cerr << "abandon: " << size << '\n';</span> <span class="Comment">// clear memory</span> for <span class="Delimiter">(</span>long long int curr = address<span class="Delimiter">;</span> curr < address+size<span class="Delimiter">;</span> ++curr<span class="Delimiter">)</span> Memory[curr] = <span class="Constant">0</span><span class="Delimiter">;</span> @@ -359,9 +363,8 @@ if <span class="Delimiter">(</span>is_literal<span class="Delimiter">(</span>cur long long int new_mu_string<span class="Delimiter">(</span>const string& contents<span class="Delimiter">)</span> <span class="Delimiter">{</span> <span class="Comment">// allocate an array just large enough for it</span> long long int string_length = unicode_length<span class="Delimiter">(</span>contents<span class="Delimiter">);</span> -<span class="CommentedCode">//? cout << "string_length is " << string_length << '\n'; //? 1</span> -<span class="CommentedCode">//? Total_alloc += string_length+1; //? 1</span> -<span class="CommentedCode">//? Num_alloc++; //? 1</span> +<span class="CommentedCode">//? Total_alloc += string_length+1;</span> +<span class="CommentedCode">//? Num_alloc++;</span> ensure_space<span class="Delimiter">(</span>string_length+<span class="Constant">1</span><span class="Delimiter">);</span> <span class="Comment">// don't forget the extra location for array size</span> <span class="Comment">// initialize string</span> long long int result = Current_routine<span class="Delimiter">-></span>alloc<span class="Delimiter">;</span> @@ -385,7 +388,7 @@ long long int new_mu_string<span class="Delimiter">(</span>const string& con <span class="Delimiter">:(scenario stash_string)</span> recipe main [ x:address:array:character<span class="Special"> <- </span>new [abc] - stash [foo: ]<span class="Delimiter">,</span> x:address:array:character + stash [foo:]<span class="Delimiter">,</span> x:address:array:character ] <span class="traceContains">+app: foo: abc</span> |