[Vm-dev] VM Maker: VMMaker.oscog-cb.1795.mcz

Eliot Miranda eliot.miranda at gmail.com
Mon Apr 11 21:26:33 UTC 2016


Hi Nicolas,


> On Apr 11, 2016, at 12:03 PM, Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com> wrote:
> 
> Hi Clement,
> currently primitiveFullClosureValueNoContextSwitch is not generated unless:
>     <option: #SistaV1BytecodeSet>
> 
> Should we remove the option and always generate the primitive?


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 & Pharo in 2017 would use it.

Why do you want the VM to always include the primitive?

_,,,^..^,,,_ (phone)

> 
> 2016-04-11 20:02 GMT+02:00 <commits at source.squeak.org>:
>> 
>> ClementBera uploaded a new version of VMMaker to project VM Maker:
>> http://source.squeak.org/VMMaker/VMMaker.oscog-cb.1795.mcz
>> 
>> ==================== Summary ====================
>> 
>> Name: VMMaker.oscog-cb.1795
>> Author: cb
>> Time: 11 April 2016, 11:01:37.99209 am
>> UUID: 7e723234-b8d0-46a7-8e2c-180da3482a3b
>> Ancestors: VMMaker.oscog-cb.1794
>> 
>> Fixed minor things to make slang compilation happy.
>> 
>> =============== Diff against VMMaker.oscog-cb.1794 ===============
>> 
>> Item was changed:
>>   ----- Method: Cogit>>computeFullBlockEntryOffsets (in category 'initialization') -----
>>   computeFullBlockEntryOffsets
>>         "Generate the entry code for a method to determine cmEntryOffset and cmNoCheckEntryOffset.  We
>>          need cmNoCheckEntryOffset up front to be able to generate the map starting from cmNoCheckEntryOffset"
>>         "stack allocate the various collections so that they
>>          are effectively garbage collected on return."
>> -       <var: 'sendMissCall' type: #'AbstractInstruction *'>
>>         self allocateOpcodes: 24 bytecodes: 0.
>>         methodOrBlockNumArgs := 0.
>>         self compileFullBlockEntry.
>>         self computeMaximumSizes.
>>         self generateInstructionsAt: methodZoneBase + (self sizeof: CogMethod).
>>         cbEntryOffset := fullBlockEntry address - methodZoneBase.
>>         cbNoSwitchEntryOffset := fullBlockNoContextSwitchEntry address - methodZoneBase!
>> 
>> Item was changed:
>>   ----- Method: SimpleStackBasedCogit class>>initializePrimitiveTableForSqueak (in category 'class initialization') -----
>>   initializePrimitiveTableForSqueak
>>         "Initialize the table of primitive generators.  This does not include normal primitives implemented in the coInterpreter.
>>          N.B. primitives that don't have an explicit arg count (the integer following the generator) may be variadic."
>>         "SimpleStackBasedCogit initializePrimitiveTableForSqueak"
>>         MaxCompiledPrimitiveIndex := self objectRepresentationClass wordSize = 8
>>                                                                                 ifTrue: [555]
>>                                                                                 ifFalse: [222].
>>         primitiveTable := CArrayAccessor on: (Array new: MaxCompiledPrimitiveIndex + 1).
>>         self table: primitiveTable from:
>>         #(      "Integer Primitives (0-19)"
> 
> SNIP ... 
>>                 (207 genPrimitiveFullClosureValue) "value[:value:value:value:] et al"
>>                 "(208 genPrimitiveFullClosureValueWithArgs)" "valueWithArguments:"
>> +               (209 genPrimitiveFullClosureValue) "valueNoContextSwitch[:value:] et al"
>> -               (209 genPrimitiveFullClosureValueNoContextSwitch) "valueNoContextSwitch[:value:] et al"
> 
> SNIP...
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20160411/4c8200da/attachment.htm


More information about the Vm-dev mailing list