[Vm-dev] VM Maker: BytecodeSets.spur-cb.63.mcz

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Tue Jan 17 13:13:09 UTC 2017


2017-01-17 14:03 GMT+01:00 <commits at source.squeak.org>:

>
> ClementBera uploaded a new version of BytecodeSets to project VM Maker:
> http://source.squeak.org/VMMaker/BytecodeSets.spur-cb.63.mcz
>
> ==================== Summary ====================
>
> Name: BytecodeSets.spur-cb.63
> Author: cb
> Time: 17 January 2017, 2:03:45.537598 pm
> UUID: a8ae9a8c-7784-474a-a431-fa97ce58cb14
> Ancestors: BytecodeSets.spur-cb.62
>
> Updated SistaV1 encoder for MethodMassage support.
>
> =============== Diff against BytecodeSets.spur-cb.62 ===============
>
> Item was added:
> + ----- Method: EncoderForSistaV1>>genBranchIfInstanceOf:distance: (in
> category 'extended bytecode generation') -----
> + genBranchIfInstanceOf: literalIndex distance: distance
> +       self genBranchIfInstanceOf: literalIndex distance: distance orNot:
> false!
>
> Item was added:
> + ----- Method: EncoderForSistaV1>>genBranchIfInstanceOf:distance:orNot:
> (in category 'extended bytecode generation') -----
> + genBranchIfInstanceOf: literalIndex distance: distance orNot: orNot
> +       "254            11111110        kkkkkkkk        jjjjjjjj
>       branch If Not Instance Of Behavior/Array Of Behavior kkkkkkkk (+
> Extend A * 256, where Extend A >= 0) distance jjjjjjjj (+ Extend B * 256,
> where Extend B >= 0)"
>

maybe the comment could be updated then... if ... or not ...


> +
> +       | extendedIndex extendedDistance |
> +       (literalIndex < 0 or: [literalIndex > 65535]) ifTrue:
> +               [^self outOfRangeError: 'index' index: literalIndex range:
> 0 to: 65536].
> +       (distance < 1 or: [distance > 32767]) ifTrue:
> +               [^self outOfRangeError: 'distance' index: distance range:
> 0 to: 32767].
> +       (extendedIndex := literalIndex) > 255 ifTrue:
> +               [self genUnsignedSingleExtendA: extendedIndex // 256.
> +                extendedIndex := extendedIndex \\ 256].
> +       (orNot not or: [(extendedDistance := distance) > 255]) ifTrue:
> +               [self genUnsignedSingleExtendB: (distance bitShift: -8) +
> (orNot not asBit  * 128).
> +               extendedDistance := distance bitAnd: 255].
> +
> +       stream
> +               nextPut: 254;
> +               nextPut: extendedIndex;
> +               nextPut: extendedDistance!
>
> Item was changed:
>   ----- Method: EncoderForSistaV1>>genBranchIfNotInstanceOf:distance: (in
> category 'extended bytecode generation') -----
>   genBranchIfNotInstanceOf: literalIndex distance: distance
> +       self genBranchIfInstanceOf: literalIndex distance: distance orNot:
> true!
> -       "254            11111110        kkkkkkkk        jjjjjjjj
>       branch If Not Instance Of Behavior/Array Of Behavior kkkkkkkk (+
> Extend A * 256, where Extend A >= 0) distance jjjjjjjj (+ Extend B * 256,
> where Extend B >= 0)"
> -
> -       | extendedIndex extendedDistance |
> -       (literalIndex < 0 or: [literalIndex > 65535]) ifTrue:
> -               [^self outOfRangeError: 'index' index: literalIndex range:
> 0 to: 65536].
> -       (distance < 1 or: [distance > 32767]) ifTrue:
> -               [^self outOfRangeError: 'distance' index: distance range:
> 0 to: 32767].
> -       (extendedIndex := literalIndex) > 255 ifTrue:
> -               [self genUnsignedSingleExtendA: extendedIndex // 256.
> -                extendedIndex := extendedIndex \\ 256].
> -       (extendedDistance := distance) > 255 ifTrue:
> -               [self genUnsignedSingleExtendB: (distance bitShift: -8).
> -               extendedDistance := distance bitAnd: 255].
> -
> -       stream
> -               nextPut: 254;
> -               nextPut: extendedIndex;
> -               nextPut: extendedDistance!
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20170117/33eaeab1/attachment.html>


More information about the Vm-dev mailing list