1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-26 04:00:43 +03:00

Absorbed the remaining content of "6M62 Patches" extension

This commit is contained in:
Graham Nelson 2022-05-31 23:09:11 +01:00
parent de4d348fda
commit 033eec5ef1
13 changed files with 49 additions and 45 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
v10.1.0-beta+6V17 'Krypton' (30 May 2022)
v10.1.0-beta+6V18 'Krypton' (31 May 2022)
## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: beta
Build Date: 30 May 2022
Build Number: 6V17
Build Date: 31 May 2022
Build Number: 6V18

View file

@ -230,7 +230,7 @@ a \(2^n\)-sized block exactly containing the whole of the rest of the heap.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">HeapInitialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> </span><span class="identifier-syntax">bsize</span><span class="plain-syntax"> </span><span class="identifier-syntax">blk2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">blk2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Flex_Heap</span><span class="plain-syntax"> + </span><span class="constant-syntax">16</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">blk2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Flex_Heap</span><span class="plain-syntax"> + </span><span class="identifier-syntax">BLK_DATA_MULTI_OFFSET</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Flex_Heap</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">BLK_HEADER_N</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Flex_Heap</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">BLK_HEADER_KOV</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Flex_Heap</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">BLK_HEADER_RCOUNT</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAX_POSITIVE_NUMBER</span><span class="plain-syntax">;</span>
@ -288,17 +288,18 @@ which handles non-multiple blocks better.)
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">SMALLEST_BLK_WORTH_ALLOCATING</span><span class="plain-syntax"> = </span><span class="constant-syntax">12</span><span class="plain-syntax">; </span><span class="comment-syntax">i.e. 2^12 = 4096 bytes</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">HeapMakeSpace</span><span class="plain-syntax"> </span><span class="identifier-syntax">size</span><span class="plain-syntax"> </span><span class="identifier-syntax">multiple</span><span class="plain-syntax"> </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> </span><span class="identifier-syntax">newblock</span><span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">HeapMakeSpace</span><span class="plain-syntax"> </span><span class="identifier-syntax">size</span><span class="plain-syntax"> </span><span class="identifier-syntax">multiple</span><span class="plain-syntax"> </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> </span><span class="identifier-syntax">newblock</span><span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> </span><span class="identifier-syntax">hsize</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (::) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">multiple</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">hsize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BLK_DATA_MULTI_OFFSET</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">HeapNetFreeSpace</span><span class="plain-syntax">(</span><span class="identifier-syntax">multiple</span><span class="plain-syntax">) &gt;= </span><span class="identifier-syntax">size</span><span class="plain-syntax">) </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">hsize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BLK_DATA_OFFSET</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">HeapLargestFreeBlock</span><span class="plain-syntax">(0) &gt;= </span><span class="identifier-syntax">size</span><span class="plain-syntax">) </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n</span><span class="plain-syntax">=0: (</span><span class="identifier-syntax">n</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">SMALLEST_BLK_WORTH_ALLOCATING</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">size</span><span class="plain-syntax">): </span><span class="identifier-syntax">n</span><span class="plain-syntax">++)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n</span><span class="plain-syntax">=0: (</span><span class="identifier-syntax">n</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">SMALLEST_BLK_WORTH_ALLOCATING</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax">&lt;(</span><span class="identifier-syntax">size</span><span class="plain-syntax">+</span><span class="identifier-syntax">hsize</span><span class="plain-syntax">)): </span><span class="identifier-syntax">n</span><span class="plain-syntax">++)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax">*2;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">size</span><span class="plain-syntax">+16) </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax">*2;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">newblock</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VM_AllocateMemory</span><span class="plain-syntax">(</span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">newblock</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">newblock</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">BLK_HEADER_N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>

View file

@ -91,15 +91,15 @@ words 2 and 3 are meaningless.
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax"> --&gt; </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">RecordRuleOutcome</span><span class="plain-syntax"> </span><span class="identifier-syntax">usage</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule1</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule2</span><span class="plain-syntax">;</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">RecordRuleOutcome</span><span class="plain-syntax"> </span><span class="identifier-syntax">usage</span><span class="plain-syntax"> </span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">--&gt;0 == </span><span class="identifier-syntax">RS_SUCCEEDS</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">RS_FAILS</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">KOVIsBlockValue</span><span class="plain-syntax">(</span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">--&gt;1)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BlkValueFree</span><span class="plain-syntax">(</span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">--&gt;2);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">usage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">RS_SUCCEEDS</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">RS_FAILS</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">KOVIsBlockValue</span><span class="plain-syntax">(</span><span class="identifier-syntax">rule1</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rule2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BlkValueCopy</span><span class="plain-syntax">(</span><span class="identifier-syntax">BlkValueCreate</span><span class="plain-syntax">(</span><span class="identifier-syntax">rule1</span><span class="plain-syntax">), </span><span class="identifier-syntax">rule2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">usage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">RS_SUCCEEDS</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">RS_FAILS</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">KOVIsBlockValue</span><span class="plain-syntax">(</span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BlkValueCopy</span><span class="plain-syntax">(</span><span class="identifier-syntax">BlkValueCreate</span><span class="plain-syntax">(</span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax">), </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">--&gt;0 = </span><span class="identifier-syntax">usage</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">--&gt;1 = </span><span class="identifier-syntax">rule1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">--&gt;2 = </span><span class="identifier-syntax">rule2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">--&gt;1 = </span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">--&gt;2 = </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Following. </b>Until January 2011, there were two ways to invoke a rulebook: to "follow" it
@ -236,12 +236,12 @@ call it.)
<span class="plain-syntax"> </span><span class="identifier-syntax">RulebookFails</span><span class="plain-syntax">();</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">RulebookSucceeds</span><span class="plain-syntax"> </span><span class="identifier-syntax">weak_kind</span><span class="plain-syntax"> </span><span class="identifier-syntax">value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RecordRuleOutcome</span><span class="plain-syntax">(</span><span class="identifier-syntax">RS_SUCCEEDS</span><span class="plain-syntax">, </span><span class="identifier-syntax">weak_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">RulebookSucceeds</span><span class="plain-syntax"> </span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax"> </span><span class="identifier-syntax">value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RecordRuleOutcome</span><span class="plain-syntax">(</span><span class="identifier-syntax">RS_SUCCEEDS</span><span class="plain-syntax">, </span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">RulebookFails</span><span class="plain-syntax"> </span><span class="identifier-syntax">weak_kind</span><span class="plain-syntax"> </span><span class="identifier-syntax">value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RecordRuleOutcome</span><span class="plain-syntax">(</span><span class="identifier-syntax">RS_FAILS</span><span class="plain-syntax">, </span><span class="identifier-syntax">weak_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">RulebookFails</span><span class="plain-syntax"> </span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax"> </span><span class="identifier-syntax">value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RecordRuleOutcome</span><span class="plain-syntax">(</span><span class="identifier-syntax">RS_FAILS</span><span class="plain-syntax">, </span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">RuleHasNoOutcome</span><span class="plain-syntax">;</span>

View file

@ -640,6 +640,7 @@ read if the blob in question were replaced with the text in <span class="extract
<span class="plain-syntax"> </span><span class="identifier-syntax">cp1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">txt</span><span class="plain-syntax">--&gt;0; </span><span class="identifier-syntax">p1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TEXT_TY_Temporarily_Transmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">txt</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cp2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rtxt</span><span class="plain-syntax">--&gt;0; </span><span class="identifier-syntax">p2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TEXT_TY_Temporarily_Transmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">rtxt</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_TY_Transmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">ctxt</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ctxt</span><span class="plain-syntax">) </span><span class="identifier-syntax">BlkMakeMutable</span><span class="plain-syntax">(</span><span class="identifier-syntax">ctxt</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TEXT_TY_BlobAccessI</span><span class="plain-syntax">(</span><span class="identifier-syntax">txt</span><span class="plain-syntax">, </span><span class="identifier-syntax">blobtype</span><span class="plain-syntax">, </span><span class="identifier-syntax">ctxt</span><span class="plain-syntax">, </span><span class="identifier-syntax">wanted</span><span class="plain-syntax">, </span><span class="identifier-syntax">rtxt</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_TY_Untransmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">txt</span><span class="plain-syntax">, </span><span class="identifier-syntax">p1</span><span class="plain-syntax">, </span><span class="identifier-syntax">cp1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_TY_Untransmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">rtxt</span><span class="plain-syntax">, </span><span class="identifier-syntax">p2</span><span class="plain-syntax">, </span><span class="identifier-syntax">cp2</span><span class="plain-syntax">);</span>

View file

@ -1828,7 +1828,7 @@ there's no decision.
<span class="plain-syntax"> (- </span><span class="identifier-syntax">RulebookFails</span><span class="plain-syntax">(); </span><span class="identifier-syntax">rtrue</span><span class="plain-syntax">; -) - </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">succeeds</span><span class="plain-syntax"> </span><span class="identifier-syntax">with</span><span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax"> (</span><span class="identifier-syntax">val</span><span class="plain-syntax"> - </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">value</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">documented</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax"> </span><span class="identifier-syntax">ph_succeedswith</span><span class="plain-syntax">):</span>
<span class="plain-syntax"> (- </span><span class="identifier-syntax">RulebookSucceeds</span><span class="plain-syntax">({-</span><span class="identifier-syntax">weak</span><span class="plain-syntax">-</span><span class="identifier-syntax">kind</span><span class="plain-syntax">:</span><span class="identifier-syntax">rule</span><span class="plain-syntax">-</span><span class="identifier-syntax">return</span><span class="plain-syntax">-</span><span class="identifier-syntax">kind</span><span class="plain-syntax">},{-</span><span class="identifier-syntax">return</span><span class="plain-syntax">-</span><span class="identifier-syntax">value</span><span class="plain-syntax">-</span><span class="identifier-syntax">from</span><span class="plain-syntax">-</span><span class="identifier-syntax">rule</span><span class="plain-syntax">:</span><span class="identifier-syntax">val</span><span class="plain-syntax">}); </span><span class="identifier-syntax">rtrue</span><span class="plain-syntax">; -) - </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax">.</span>
<span class="plain-syntax"> (- </span><span class="identifier-syntax">RulebookSucceeds</span><span class="plain-syntax">({-</span><span class="identifier-syntax">strong</span><span class="plain-syntax">-</span><span class="identifier-syntax">kind</span><span class="plain-syntax">:</span><span class="identifier-syntax">rule</span><span class="plain-syntax">-</span><span class="identifier-syntax">return</span><span class="plain-syntax">-</span><span class="identifier-syntax">kind</span><span class="plain-syntax">},{-</span><span class="identifier-syntax">return</span><span class="plain-syntax">-</span><span class="identifier-syntax">value</span><span class="plain-syntax">-</span><span class="identifier-syntax">from</span><span class="plain-syntax">-</span><span class="identifier-syntax">rule</span><span class="plain-syntax">:</span><span class="identifier-syntax">val</span><span class="plain-syntax">}); </span><span class="identifier-syntax">rtrue</span><span class="plain-syntax">; -) - </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">decide</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">succeeded</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">documented</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax"> </span><span class="identifier-syntax">ph_succeeded</span><span class="plain-syntax">):</span>
<span class="plain-syntax"> (- (</span><span class="identifier-syntax">RulebookSucceeded</span><span class="plain-syntax">()) -).</span>

View file

@ -1,6 +1,6 @@
Total memory consumption was 123376K = 120 MB
Total memory consumption was 123451K = 121 MB
---- was used for 2044960 objects, in 362883 frames in 0 x 800K = 0K = 0 MB:
---- was used for 2044983 objects, in 362906 frames in 0 x 800K = 0K = 0 MB:
33.0% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
20.5% text_stream_array 4605 x 100 = 460500 objects, 25935360 bytes
@ -113,7 +113,7 @@ Total memory consumption was 123376K = 120 MB
---- booking_list 407 objects, 13024 bytes
---- adjective_iname_holder 320 objects, 12800 bytes
---- pathname 308 objects, 12320 bytes
---- uniqueness_count 454 objects, 10896 bytes
---- uniqueness_count 477 objects, 11448 bytes
---- inter_construct 30 objects, 10320 bytes
---- filename 253 objects, 10120 bytes
---- stopwatch_timer 113 objects, 9040 bytes
@ -237,7 +237,7 @@ Total memory consumption was 123376K = 120 MB
100.0% was used for memory not allocated for objects:
57.7% text stream storage 72935620 bytes in 478023 claims
57.7% text stream storage 72943316 bytes in 478057 claims
4.1% dictionary storage 5228544 bytes in 7520 claims
---- sorting 1448 bytes in 149 claims
5.6% source text 7200000 bytes in 3 claims
@ -245,8 +245,8 @@ Total memory consumption was 123376K = 120 MB
0.2% documentation fragments 262144 bytes in 1 claim
---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims
3.5% inter symbols storage 4520272 bytes in 27949 claims
13.2% inter bytecode storage 16767568 bytes in 14 claims
3.5% inter symbols storage 4520768 bytes in 27950 claims
13.3% inter bytecode storage 16836156 bytes in 14 claims
4.9% inter links storage 6222976 bytes in 11 claims
0.1% inter tree location list storage 191232 bytes in 32 claims
1.3% instance-of-kind counting 1700416 bytes in 1 claim
@ -255,5 +255,5 @@ Total memory consumption was 123376K = 120 MB
---- code generation workspace for objects 1336 bytes in 4 claims
0.2% emitter array storage 280288 bytes in 1999 claims
-146.-1% was overhead - -184657272 bytes = -180329K = -176 MB
-146.0% was overhead - -184657824 bytes = -180329K = -176 MB

View file

@ -1,25 +1,25 @@
100.0% in inform7 run
71.7% in compilation to Inter
51.2% in //Sequence::undertake_queued_tasks//
71.4% in compilation to Inter
50.8% in //Sequence::undertake_queued_tasks//
4.7% in //MajorNodes::pre_pass//
3.3% in //MajorNodes::pass_1//
1.7% in //ImperativeDefinitions::assess_all//
1.7% in //RTPhrasebook::compile_entries//
1.3% in //RTKindConstructors::compile//
0.9% in //Sequence::lint_inter//
0.5% in //ImperativeDefinitions::compile_first_block//
0.5% in //MajorNodes::pass_2//
0.5% in //Sequence::undertake_queued_tasks//
0.5% in //World::stage_V//
0.3% in //ImperativeDefinitions::compile_first_block//
0.3% in //Sequence::undertake_queued_tasks//
0.1% in //CompletionModule::compile//
0.1% in //InferenceSubjects::emit_all//
0.1% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::stages_II_and_III//
2.8% not specifically accounted for
25.6% in running Inter pipeline
10.1% in step 14/15: generate inform6 -> auto.inf
2.6% not specifically accounted for
25.9% in running Inter pipeline
10.3% in step 14/15: generate inform6 -> auto.inf
5.5% in step 5/15: load-binary-kits
5.3% in step 6/15: make-synoptic-module
1.3% in step 9/15: make-identifiers-unique

View file

@ -1325,7 +1325,7 @@ To rule fails
(- RulebookFails(); rtrue; -) - in to only.
To rule succeeds with result (val - a value)
(documented at ph_succeedswith):
(- RulebookSucceeds({-weak-kind:rule-return-kind},{-return-value-from-rule:val}); rtrue; -) - in to only.
(- RulebookSucceeds({-strong-kind:rule-return-kind},{-return-value-from-rule:val}); rtrue; -) - in to only.
To decide if rule succeeded
(documented at ph_succeeded):
(- (RulebookSucceeded()) -).

View file

@ -151,7 +151,7 @@ a $2^n$-sized block exactly containing the whole of the rest of the heap.
=
[ HeapInitialise n bsize blk2;
blk2 = Flex_Heap + 16;
blk2 = Flex_Heap + BLK_DATA_MULTI_OFFSET;
Flex_Heap->BLK_HEADER_N = 4;
Flex_Heap-->BLK_HEADER_KOV = 0;
Flex_Heap-->BLK_HEADER_RCOUNT = MAX_POSITIVE_NUMBER;
@ -207,17 +207,18 @@ which handles non-multiple blocks better.)
=
Constant SMALLEST_BLK_WORTH_ALLOCATING = 12; ! i.e. 2^12 = 4096 bytes
[ HeapMakeSpace size multiple newblocksize newblock B n;
[ HeapMakeSpace size multiple newblocksize newblock B n hsize;
for (::) {
if (multiple) {
hsize = BLK_DATA_MULTI_OFFSET;
if (HeapNetFreeSpace(multiple) >= size) rtrue;
} else {
hsize = BLK_DATA_OFFSET;
if (HeapLargestFreeBlock(0) >= size) rtrue;
}
newblocksize = 1;
for (n=0: (n<SMALLEST_BLK_WORTH_ALLOCATING) || (newblocksize<size): n++)
for (n=0: (n<SMALLEST_BLK_WORTH_ALLOCATING) || (newblocksize<(size+hsize)): n++)
newblocksize = newblocksize*2;
while (newblocksize < size+16) newblocksize = newblocksize*2;
newblock = VM_AllocateMemory(newblocksize);
if (newblock == 0) rfalse;
newblock->BLK_HEADER_N = n;

View file

@ -26,15 +26,15 @@ Constant RS_FAILS = 2;
Array latest_rule_result --> 3;
[ RecordRuleOutcome usage rule1 rule2;
[ RecordRuleOutcome usage strong_kind val;
if ((latest_rule_result-->0 == RS_SUCCEEDS or RS_FAILS) &&
(KOVIsBlockValue(latest_rule_result-->1)))
BlkValueFree(latest_rule_result-->2);
if ((usage == RS_SUCCEEDS or RS_FAILS) && (KOVIsBlockValue(rule1)))
rule2 = BlkValueCopy(BlkValueCreate(rule1), rule2);
if ((usage == RS_SUCCEEDS or RS_FAILS) && (KOVIsBlockValue(strong_kind)))
val = BlkValueCopy(BlkValueCreate(strong_kind), val);
latest_rule_result-->0 = usage;
latest_rule_result-->1 = rule1;
latest_rule_result-->2 = rule2;
latest_rule_result-->1 = strong_kind;
latest_rule_result-->2 = val;
];
@h Following.
@ -165,12 +165,12 @@ call it.)
RulebookFails();
];
[ RulebookSucceeds weak_kind value;
RecordRuleOutcome(RS_SUCCEEDS, weak_kind, value);
[ RulebookSucceeds strong_kind value;
RecordRuleOutcome(RS_SUCCEEDS, strong_kind, value);
];
[ RulebookFails weak_kind value;
RecordRuleOutcome(RS_FAILS, weak_kind, value);
[ RulebookFails strong_kind value;
RecordRuleOutcome(RS_FAILS, strong_kind, value);
];
[ RuleHasNoOutcome;

View file

@ -580,6 +580,7 @@ Constant ACCEPTEDPN_BRM = 6;
cp1 = txt-->0; p1 = TEXT_TY_Temporarily_Transmute(txt);
cp2 = rtxt-->0; p2 = TEXT_TY_Temporarily_Transmute(rtxt);
TEXT_TY_Transmute(ctxt);
if (ctxt) BlkMakeMutable(ctxt);
r = TEXT_TY_BlobAccessI(txt, blobtype, ctxt, wanted, rtxt);
TEXT_TY_Untransmute(txt, p1, cp1);
TEXT_TY_Untransmute(rtxt, p2, cp2);

View file

@ -1677,7 +1677,7 @@ To rule fails
(- RulebookFails(); rtrue; -) - in to only.
To rule succeeds with result (val - a value)
(documented at ph_succeedswith):
(- RulebookSucceeds({-weak-kind:rule-return-kind},{-return-value-from-rule:val}); rtrue; -) - in to only.
(- RulebookSucceeds({-strong-kind:rule-return-kind},{-return-value-from-rule:val}); rtrue; -) - in to only.
To decide if rule succeeded
(documented at ph_succeeded):
(- (RulebookSucceeded()) -).