<div dir="ltr"><div><div>Hi Clement,<br></div>currently primitiveFullClosureValueNoContextSwitch is not generated unless:<br> <option: #SistaV1BytecodeSet><br><br></div>Should we remove the option and always generate the primitive?<br><div class="gmail_extra"><br><div class="gmail_quote">2016-04-11 20:02 GMT+02:00 <span dir="ltr"><<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>></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>>computeFullBlockEntryOffsets (in category 'initialization') -----<br>
computeFullBlockEntryOffsets<br>
"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"<br>
"stack allocate the various collections so that they<br>
are effectively garbage collected on return."<br>
- <var: 'sendMissCall' type: #'AbstractInstruction *'><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>>initializePrimitiveTableForSqueak (in category 'class initialization') -----<br>
initializePrimitiveTableForSqueak<br>
"Initialize the table of primitive generators. This does not include normal primitives implemented in the coInterpreter.<br>
N.B. primitives that don't have an explicit arg count (the integer following the generator) may be variadic."<br>
"SimpleStackBasedCogit initializePrimitiveTableForSqueak"<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>
#( "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">
(207 genPrimitiveFullClosureValue) "value[:value:value:value:] et al"<br>
"(208 genPrimitiveFullClosureValueWithArgs)" "valueWithArguments:"<br>
+ (209 genPrimitiveFullClosureValue) "valueNoContextSwitch[:value:] et al"<br>
- (209 genPrimitiveFullClosureValueNoContextSwitch) "valueNoContextSwitch[:value:] et al"<br>
<br></blockquote><div><br></div><div>SNIP...</div></div><br></div></div>