<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body 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">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>&nbsp;&nbsp;&nbsp; &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. &nbsp;One needs the createFullClosure bytecode in the bytecode set give able to generate it, and methods can have multiple option: pragmas. &nbsp;So later on, if we wanted to we could add some other option to bring it in. &nbsp;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>
&nbsp; ----- Method: Cogit&gt;&gt;computeFullBlockEntryOffsets (in category 'initialization') -----<br>
&nbsp; computeFullBlockEntryOffsets<br>
&nbsp; &nbsp; &nbsp; &nbsp; "Generate the entry code for a method to determine cmEntryOffset and cmNoCheckEntryOffset.&nbsp; We<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;need cmNoCheckEntryOffset up front to be able to generate the map starting from cmNoCheckEntryOffset"<br>
&nbsp; &nbsp; &nbsp; &nbsp; "stack allocate the various collections so that they<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;are effectively garbage collected on return."<br>
-&nbsp; &nbsp; &nbsp; &nbsp;&lt;var: 'sendMissCall' type: #'AbstractInstruction *'&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; self allocateOpcodes: 24 bytecodes: 0.<br>
&nbsp; &nbsp; &nbsp; &nbsp; methodOrBlockNumArgs := 0.<br>
&nbsp; &nbsp; &nbsp; &nbsp; self compileFullBlockEntry.<br>
&nbsp; &nbsp; &nbsp; &nbsp; self computeMaximumSizes.<br>
&nbsp; &nbsp; &nbsp; &nbsp; self generateInstructionsAt: methodZoneBase + (self sizeof: CogMethod).<br>
&nbsp; &nbsp; &nbsp; &nbsp; cbEntryOffset := fullBlockEntry address - methodZoneBase.<br>
&nbsp; &nbsp; &nbsp; &nbsp; cbNoSwitchEntryOffset := fullBlockNoContextSwitchEntry address - methodZoneBase!<br>
<br>
Item was changed:<br>
&nbsp; ----- Method: SimpleStackBasedCogit class&gt;&gt;initializePrimitiveTableForSqueak (in category 'class initialization') -----<br>
&nbsp; initializePrimitiveTableForSqueak<br>
&nbsp; &nbsp; &nbsp; &nbsp; "Initialize the table of primitive generators.&nbsp; This does not include normal primitives implemented in the coInterpreter.<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;N.B. primitives that don't have an explicit arg count (the integer following the generator) may be variadic."<br>
&nbsp; &nbsp; &nbsp; &nbsp; "SimpleStackBasedCogit initializePrimitiveTableForSqueak"<br>
&nbsp; &nbsp; &nbsp; &nbsp; MaxCompiledPrimitiveIndex := self objectRepresentationClass wordSize = 8<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ifTrue: [555]<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ifFalse: [222].<br>
&nbsp; &nbsp; &nbsp; &nbsp; primitiveTable := CArrayAccessor on: (Array new: MaxCompiledPrimitiveIndex + 1).<br>
&nbsp; &nbsp; &nbsp; &nbsp; self table: primitiveTable from:<br>
&nbsp; &nbsp; &nbsp; &nbsp; #(&nbsp; &nbsp; &nbsp; "Integer Primitives (0-19)"<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">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (207 genPrimitiveFullClosureValue) "value[:value:value:value:] et al"<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "(208 genPrimitiveFullClosureValueWithArgs)" "valueWithArguments:"<br>
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(209 genPrimitiveFullClosureValue) "valueNoContextSwitch[:value:] et al"<br>
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(209 genPrimitiveFullClosureValueNoContextSwitch) "valueNoContextSwitch[:value:] et al"<br>
<br></blockquote><div><br></div><div>SNIP...</div></div><br></div></div>
</div></blockquote></div></div></div></body></html>