[Vm-dev] VM Maker: VMMaker.oscog-cb.1795.mcz
Nicolas Cellier
nicolas.cellier.aka.nice at gmail.com
Mon Apr 11 21:33:26 UTC 2016
Hi Clement & Eliot,
I had a doubt because genPrimitiveFullClosureValue is generated
unconditionnally and test primitiveRoutine =
#primitiveFullClosureValueNoContextSwitch, but maybe this method should be
tagged <option: #SistaV1BytecodeSet> too...
What if a primitive referenced thru primitiveTable i absent?
2016-04-11 23:26 GMT+02:00 Eliot Miranda <eliot.miranda at gmail.com>:
>
> 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/55577f67/attachment.htm
More information about the Vm-dev
mailing list