VM Maker: VMMaker.oscog-nice.1853.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

VM Maker: VMMaker.oscog-nice.1853.mcz

commits-2
 
Nicolas Cellier uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-nice.1853.mcz

==================== Summary ====================

Name: VMMaker.oscog-nice.1853
Author: nice
Time: 29 April 2016, 10:58:38.094 pm
UUID: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e
Ancestors: VMMaker.oscog-nice.1852

Fix missing comparison operation in genPrimitiveIdentical. This should fix Character = problem encounterd in Cuis.

Comment concretizePrefetchAw, and store machineCode in last statement so as to avoid a -Wunused-value warning.

=============== Diff against VMMaker.oscog-nice.1852 ===============

Item was changed:
  ----- Method: CogIA32Compiler>>concretizePrefetchAw (in category 'generate machine code') -----
  concretizePrefetchAw
  "Will get inlined into concretizeAt: switch."
  <inline: true>
  | addressOperand |
+ "Note that maxSize has been set to 7 or 0 in computeMaximumSize whether hasSSEInstructions or not"
- machineCodeSize := maxSize.
  maxSize > 0 ifTrue:
  [addressOperand := operands at: 0.
  machineCode
  at: 0 put: 16r0f;
  at: 1 put: 16r18;
  at: 2 put: (self mod: 0 RM: 5 RO: 1); "prefetch0, prefetch using the T0 temporal data hint"
  at: 3 put: (addressOperand bitAnd: 16rFF);
  at: 4 put: (addressOperand >> 8 bitAnd: 16rFF);
  at: 5 put: (addressOperand >> 16 bitAnd: 16rFF);
  at: 6 put: (addressOperand >> 24 bitAnd: 16rFF)].
+ ^machineCodeSize := maxSize!
- ^maxSize!

Item was changed:
  ----- Method: CogObjectRepresentationForSqueakV3>>genPrimitiveIdenticalOrNotIf: (in category 'primitive generators') -----
  genPrimitiveIdenticalOrNotIf: orNot
  | jumpCmp |
  <var: #jumpCmp type: #'AbstractInstruction *'>
  cogit genLoadArgAtDepth: 0 into: Arg0Reg.
+ cogit CmpR: Arg0Reg R: ReceiverResultReg.
  jumpCmp := orNot
  ifTrue: [cogit JumpZero: 0]
  ifFalse: [cogit JumpNonZero: 0].
  cogit genMoveTrueR: ReceiverResultReg.
  cogit genPrimReturn.
  jumpCmp jmpTarget: (cogit genMoveFalseR: ReceiverResultReg).
  cogit genPrimReturn.
  ^UnfailingPrimitive!

Reply | Threaded
Open this post in threaded view
|

Re: VM Maker: VMMaker.oscog-nice.1853.mcz

Juan Vuletich-3
 
Thanks Nicolas!

On 4/29/2016 9:00 PM, [hidden email] wrote:

>
> Nicolas Cellier uploaded a new version of VMMaker to project VM Maker:
> http://source.squeak.org/VMMaker/VMMaker.oscog-nice.1853.mcz
>
> ==================== Summary ====================
>
> Name: VMMaker.oscog-nice.1853
> Author: nice
> Time: 29 April 2016, 10:58:38.094 pm
> UUID: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e
> Ancestors: VMMaker.oscog-nice.1852
>
> Fix missing comparison operation in genPrimitiveIdentical. This should fix Character = problem encounterd in Cuis.
>
> Comment concretizePrefetchAw, and store machineCode in last statement so as to avoid a -Wunused-value warning.
>
> =============== Diff against VMMaker.oscog-nice.1852 ===============
>
> Item was changed:
>    ----- Method: CogIA32Compiler>>concretizePrefetchAw (in category 'generate machine code') -----
>    concretizePrefetchAw
>     "Will get inlined into concretizeAt: switch."
>     <inline: true>
>     | addressOperand |
> + "Note that maxSize has been set to 7 or 0 in computeMaximumSize whether hasSSEInstructions or not"
> - machineCodeSize := maxSize.
>     maxSize>  0 ifTrue:
>     [addressOperand := operands at: 0.
>     machineCode
>     at: 0 put: 16r0f;
>     at: 1 put: 16r18;
>     at: 2 put: (self mod: 0 RM: 5 RO: 1); "prefetch0, prefetch using the T0 temporal data hint"
>     at: 3 put: (addressOperand bitAnd: 16rFF);
>     at: 4 put: (addressOperand>>  8 bitAnd: 16rFF);
>     at: 5 put: (addressOperand>>  16 bitAnd: 16rFF);
>     at: 6 put: (addressOperand>>  24 bitAnd: 16rFF)].
> + ^machineCodeSize := maxSize!
> - ^maxSize!
>
> Item was changed:
>    ----- Method: CogObjectRepresentationForSqueakV3>>genPrimitiveIdenticalOrNotIf: (in category 'primitive generators') -----
>    genPrimitiveIdenticalOrNotIf: orNot
>     | jumpCmp |
>     <var: #jumpCmp type: #'AbstractInstruction *'>
>     cogit genLoadArgAtDepth: 0 into: Arg0Reg.
> + cogit CmpR: Arg0Reg R: ReceiverResultReg.
>     jumpCmp := orNot
>     ifTrue: [cogit JumpZero: 0]
>     ifFalse: [cogit JumpNonZero: 0].
>     cogit genMoveTrueR: ReceiverResultReg.
>     cogit genPrimReturn.
>     jumpCmp jmpTarget: (cogit genMoveFalseR: ReceiverResultReg).
>     cogit genPrimReturn.
>     ^UnfailingPrimitive!
>
>