<div dir="ltr"><div><div>Hi Clement &amp; Eliot,<br><br></div>I had a doubt because genPrimitiveFullClosureValue is generated unconditionnally and test primitiveRoutine = #primitiveFullClosureValueNoContextSwitch, but maybe this method should be tagged &lt;option: #SistaV1BytecodeSet&gt; too...<br><br></div>What if a primitive referenced thru primitiveTable i absent?<br></div><div class="gmail_extra"><br><div class="gmail_quote">2016-04-11 23:26 GMT+02:00 Eliot Miranda <span dir="ltr">&lt;<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br><div dir="auto"><div>Hi Nicolas,<br><br></div><div><br>On Apr 11, 2016, at 12:03 PM, Nicolas Cellier &lt;<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>&gt; wrote:<br><br></div><blockquote type="cite"><div><span></span></div></blockquote><blockquote type="cite"><div><div dir="ltr"><div><div>Hi Clement,<br></div>currently primitiveFullClosureValueNoContextSwitch is not generated unless:<br>    &lt;option: #SistaV1BytecodeSet&gt;<br><br></div>Should we remove the option and always generate the primitive?<br></div></div></blockquote><div><br></div><div><br></div><span style="background-color:rgba(255,255,255,0)">IMO, no.  One needs the createFullClosure bytecode in the bytecode set give able to generate it, and methods can have multiple option: pragmas.  So later on, if we wanted to we could add some other option to bring it in.  But right now our plan is to move to the Sista bytecode set towards the end of the year so that the new releases of Squeak &amp; Pharo in 2017 would use it.</span><div><br></div><div>Why do you want the VM to always include the primitive?<br><div><span style="background-color:rgba(255,255,255,0)"><br>_,,,^..^,,,_ (phone)</span><div><br><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">2016-04-11 20:02 GMT+02:00  <span dir="ltr">&lt;<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
ClementBera uploaded a new version of VMMaker to project VM Maker:<br>
<a href="http://source.squeak.org/VMMaker/VMMaker.oscog-cb.1795.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/VMMaker/VMMaker.oscog-cb.1795.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: VMMaker.oscog-cb.1795<br>
Author: cb<br>
Time: 11 April 2016, 11:01:37.99209 am<br>
UUID: 7e723234-b8d0-46a7-8e2c-180da3482a3b<br>
Ancestors: VMMaker.oscog-cb.1794<br>
<br>
Fixed minor things to make slang compilation happy.<br>
<br>
=============== Diff against VMMaker.oscog-cb.1794 ===============<br>
<br>
Item was changed:<br>
  ----- Method: Cogit&gt;&gt;computeFullBlockEntryOffsets (in category &#39;initialization&#39;) -----<br>
  computeFullBlockEntryOffsets<br>
        &quot;Generate the entry code for a method to determine cmEntryOffset and cmNoCheckEntryOffset.  We<br>
         need cmNoCheckEntryOffset up front to be able to generate the map starting from cmNoCheckEntryOffset&quot;<br>
        &quot;stack allocate the various collections so that they<br>
         are effectively garbage collected on return.&quot;<br>
-       &lt;var: &#39;sendMissCall&#39; type: #&#39;AbstractInstruction *&#39;&gt;<br>
        self allocateOpcodes: 24 bytecodes: 0.<br>
        methodOrBlockNumArgs := 0.<br>
        self compileFullBlockEntry.<br>
        self computeMaximumSizes.<br>
        self generateInstructionsAt: methodZoneBase + (self sizeof: CogMethod).<br>
        cbEntryOffset := fullBlockEntry address - methodZoneBase.<br>
        cbNoSwitchEntryOffset := fullBlockNoContextSwitchEntry address - methodZoneBase!<br>
<br>
Item was changed:<br>
  ----- Method: SimpleStackBasedCogit class&gt;&gt;initializePrimitiveTableForSqueak (in category &#39;class initialization&#39;) -----<br>
  initializePrimitiveTableForSqueak<br>
        &quot;Initialize the table of primitive generators.  This does not include normal primitives implemented in the coInterpreter.<br>
         N.B. primitives that don&#39;t have an explicit arg count (the integer following the generator) may be variadic.&quot;<br>
        &quot;SimpleStackBasedCogit initializePrimitiveTableForSqueak&quot;<br>
        MaxCompiledPrimitiveIndex := self objectRepresentationClass wordSize = 8<br>
                                                                                ifTrue: [555]<br>
                                                                                ifFalse: [222].<br>
        primitiveTable := CArrayAccessor on: (Array new: MaxCompiledPrimitiveIndex + 1).<br>
        self table: primitiveTable from:<br>
        #(      &quot;Integer Primitives (0-19)&quot;<br></blockquote><div><br></div><div>SNIP ... <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                (207 genPrimitiveFullClosureValue) &quot;value[:value:value:value:] et al&quot;<br>
                &quot;(208 genPrimitiveFullClosureValueWithArgs)&quot; &quot;valueWithArguments:&quot;<br>
+               (209 genPrimitiveFullClosureValue) &quot;valueNoContextSwitch[:value:] et al&quot;<br>
-               (209 genPrimitiveFullClosureValueNoContextSwitch) &quot;valueNoContextSwitch[:value:] et al&quot;<br>
<br></blockquote><div><br></div><div>SNIP...</div></div><br></div></div>
</div></blockquote></div></div></div></div><br></blockquote></div><br></div>