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

Eliot Miranda eliot.miranda at gmail.com
Wed Jun 10 22:00:53 UTC 2015


Isn't it nice when things just ... work.  ;-)

On Wed, Jun 10, 2015 at 7:24 AM, <commits at source.squeak.org> wrote:

>
> Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
> http://source.squeak.org/VMMaker/VMMaker.oscog-cb.1343.mcz
>
> ==================== Summary ====================
>
> Name: VMMaker.oscog-cb.1343
> Author: cb
> Time: 10 June 2015, 4:23:56.634 pm
> UUID: 666300e9-e0db-40f6-bf41-7c9df3946f79
> Ancestors: VMMaker.oscog-eem.1342
>
> Added support for jumpOrPopIfNotInstanceOf: in cogit's scanner.
>
> =============== Diff against VMMaker.oscog-eem.1342 ===============
>
> Item was added:
> + ----- Method:
> SimpleStackBasedCogit>>v4:Long:BranchIfNotInstanceOf:Distance: (in category
> 'span functions') -----
> + v4: descriptor Long: pc BranchIfNotInstanceOf: nExts Distance: aMethodObj
> +       "**     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)"
> +       <var: #descriptor type: #'BytecodeDescriptor *'>
> +       | extBValue |
> +       self assert: nExts >= 0.
> +       self parseV4Exts: nExts priorTo: pc in: aMethodObj into: [:ea :eb|
> extBValue := eb].
> +       ^(objectMemory fetchByte: pc + 2 ofObject: aMethodObj) +
> (extBValue << 8)!
>
> Item was added:
> + ----- Method: StackDepthFinder>>jumpOrPop:IfNotInstanceOf: (in category
> 'instruction decoding') -----
> + jumpOrPop: delta IfNotInstanceOf: behaviors
> +       "Conditional Jump bytecode."
> +       self doJump: delta.
> +       self drop.!
>
> Item was added:
> + ----- Method: StackDepthFinder>>trap (in category 'instruction
> decoding') -----
> + trap
> +       !
>
> Item was changed:
>   ----- Method: StackToRegisterMappingCogit
> class>>initializeBytecodeTableForSistaV1 (in category 'class
> initialization') -----
>   initializeBytecodeTableForSistaV1
>         "StackToRegisterMappingCogit initializeBytecodeTableForSistaV1"
>
>         numPushNilsFunction := #sistaV1:Num:Push:Nils:.
>         pushNilSizeFunction := #sistaV1PushNilSize:numInitialNils:.
>         BytecodeSetHasDirectedSuperSend := true.
>         FirstSpecialSelector := 96.
>         self flag:
>   'Special selector send class must be inlined to agree with the
> interpreter, which
>    inlines class.  If class is sent to e.g. a general instance of
> ProtoObject then unless
>    class is inlined there will be an MNU.  It must be that the
> Cointerpreter and Cogit
>    have identical semantics.  We get away with not hardwiring the other
> special
>    selectors either because in the Cointerpreter they are not inlined or
> because they
>    are inlined only to instances of classes for which there will always be
> a method.'.
>         self generatorTableFrom: #(
>                 "1 byte bytecodes"
>                 "pushes"
>                 (1    0   15 genPushReceiverVariableBytecode isInstVarRef
>              needsFrameNever: 1)
>                 (1  16   31 genPushLitVarDirSup16CasesBytecode
>               needsFrameNever: 1)
>                 (1  32   63 genPushLiteralConstantBytecode
>                       needsFrameNever: 1)
>                 (1  64   75 genPushTemporaryVariableBytecode
>               needsFrameIfMod16GENumArgs: 1)
>                 (1  76   76 genPushReceiverBytecode
>                              needsFrameNever: 1)
>                 (1  77   77 genPushConstantTrueBytecode
>                      needsFrameNever: 1)
>                 (1  78   78 genPushConstantFalseBytecode
>                       needsFrameNever: 1)
>                 (1  79   79 genPushConstantNilBytecode
>                       needsFrameNever: 1)
>                 (1  80   80 genPushConstantZeroBytecode
>                      needsFrameNever: 1)
>                 (1  81   81 genPushConstantOneBytecode
>                       needsFrameNever: 1)
>                 (1  82   82 genExtPushPseudoVariable)
>                 (1  83   83 duplicateTopBytecode
>                                       needsFrameNever: 1)
>
>                 (1  84   87 unknownBytecode)
>
>                 "returns"
>                 (1  88   88 genReturnReceiver
>  return needsFrameIfInBlock: isMappedInBlock 0)
>                 (1  89   89 genReturnTrue
>      return needsFrameIfInBlock: isMappedInBlock 0)
>                 (1  90   90 genReturnFalse
>       return needsFrameIfInBlock: isMappedInBlock 0)
>                 (1  91   91 genReturnNil
>       return needsFrameIfInBlock: isMappedInBlock 0)
>                 (1  92   92 genReturnTopFromMethod              return
> needsFrameIfInBlock: isMappedInBlock -1)
>                 (1  93   93 genReturnNilFromBlock
>  return needsFrameNever: -1)
>                 (1  94   94 genReturnTopFromBlock               return
> needsFrameNever: -1)
>                 (1  95   95 genExtNopBytecode
>  needsFrameNever: 0)
>
>                 "sends"
>                 (1  96   96 genSpecialSelectorArithmetic isMapped AddRR)
>                 (1  97   97 genSpecialSelectorArithmetic isMapped SubRR)
>                 (1  98   98 genSpecialSelectorComparison isMapped JumpLess)
>                 (1  99   99 genSpecialSelectorComparison isMapped
> JumpGreater)
>                 (1 100 100 genSpecialSelectorComparison isMapped
> JumpLessOrEqual)
>                 (1 101 101 genSpecialSelectorComparison isMapped
> JumpGreaterOrEqual)
>                 (1 102 102 genSpecialSelectorComparison isMapped JumpZero)
>                 (1 103 103 genSpecialSelectorComparison isMapped
> JumpNonZero)
>                 (1 104 109 genSpecialSelectorSend isMapped)      " #* #/
> #\\ #@ #bitShift: //"
>                 (1 110 110 genSpecialSelectorArithmetic isMapped AndRR)
>                 (1 111 111 genSpecialSelectorArithmetic isMapped OrRR)
>                 (1 112 117 genSpecialSelectorSend isMapped) "#at: #at:put:
> #size #next #nextPut: #atEnd"
>                 (1 118 118 genSpecialSelectorEqualsEquals needsFrameNever:
> notMapped -1) "not mapped because it is directly inlined (for now)"
>                 (1 119 119 genSpecialSelectorClass
> needsFrameIfStackGreaterThanOne: notMapped 0) "not mapped because it is
> directly inlined (for now)"
>                 (1 120 127 genSpecialSelectorSend isMapped) "#blockCopy:
> #value #value: #do: #new #new: #x #y"
>
>                 (1 128 143 genSendLiteralSelector0ArgsBytecode isMapped)
>                 (1 144 159 genSendLiteralSelector1ArgBytecode isMapped)
>                 (1 160 175 genSendLiteralSelector2ArgsBytecode isMapped)
>
>                 "jumps"
>                 (1 176 183 genShortUnconditionalJump    branch
> v3:ShortForward:Branch:Distance:)
>                 (1 184 191 genShortJumpIfTrue                   branch
> isBranchTrue isMapped "because of mustBeBoolean"
>
>                               v3:ShortForward:Branch:Distance:)
>                 (1 192 199 genShortJumpIfFalse                  branch
> isBranchFalse isMapped "because of mustBeBoolean"
>
>                               v3:ShortForward:Branch:Distance:)
>
>                 "stores"
>                 (1 200 207 genStoreAndPopReceiverVariableBytecode
> isInstVarRef needsFrameNever: -1) "N.B. not frameless if immutability"
>                 (1 208 215 genStoreAndPopTemporaryVariableBytecode)
>
>                 (1 216 216 genPopStackBytecode needsFrameNever: -1)
>
>                 (1 217 217 genUnconditionalTrapBytecode isMapped)
>
>                 (1 218 223 unknownBytecode)
>
>                 "2 byte bytecodes"
>                 (2 224 224 extABytecode extension)
>                 (2 225 225 extBBytecode extension)
>
>                 "pushes"
>                 (2 226 226 genExtPushReceiverVariableBytecode
> isInstVarRef)             "Needs a frame for context inst var access"
>                 (2 227 227 genExtPushLitVarDirSupBytecode
>      needsFrameNever: 1)
>                 (2 228 228 genExtPushLiteralBytecode
>               needsFrameNever: 1)
>                 (2 229 229 genLongPushTemporaryVariableBytecode)
>                 (2 230 230 genPushClosureTempsBytecode)
>                 (2 231 231 genPushNewArrayBytecode)
>                 (2 232 232 genExtPushIntegerBytecode
>       needsFrameNever: 1)
>                 (2 233 233 genExtPushCharacterBytecode
>       needsFrameNever: 1)
>
>                 "returns"
>                 "sends"
>                 (2 234 234 genExtSendBytecode isMapped)
>                 (2 235 235 genExtSendSuperBytecode isMapped)
>
>                 "sista bytecodes"
>                 (2 236 236 unknownBytecode)
>
>                 "jumps"
>                 (2 237 237 genExtUnconditionalJump      branch isMapped
> "because of interrupt check" v4:Long:Branch:Distance:)
>                 (2 238 238 genExtJumpIfTrue                     branch
> isBranchTrue isMapped "because of mustBeBoolean" v4:Long:Branch:Distance:)
>                 (2 239 239 genExtJumpIfFalse                    branch
> isBranchFalse isMapped "because of mustBeBoolean" v4:Long:Branch:Distance:)
>
>                 "stores"
>                 (2 240 240 genExtStoreAndPopReceiverVariableBytecode
> isInstVarRef)
>                 (2 241 241 genExtStoreAndPopLiteralVariableBytecode)
>                 (2 242 242 genLongStoreAndPopTemporaryVariableBytecode)
>                 (2 243 243 genExtStoreReceiverVariableBytecode
> isInstVarRef)
>                 (2 244 244 genExtStoreLiteralVariableBytecode)
>                 (2 245 245 genLongStoreTemporaryVariableBytecode)
>
>                 (2 246 247      unknownBytecode)
>
>                 "3 byte bytecodes"
>                 (3 248 248 genCallPrimitiveBytecode)
>                 (3 249 249 unknownBytecode) "reserved for Push Float"
>                 (3 250 250 genExtPushClosureBytecode block
> v4:Block:Code:Size:)
>                 (3 251 251 genPushRemoteTempLongBytecode)
>                 (3 252 252 genStoreRemoteTempLongBytecode)
>                 (3 253 253 genStoreAndPopRemoteTempLongBytecode)
>
> +               (3 254 254
> genExtJumpIfNotInstanceOfBehaviorsOrPopBytecode branch
> v4:Long:BranchIfNotInstanceOf:Distance:)
> -               (3 254 254
> genExtJumpIfNotInstanceOfBehaviorsOrPopBytecode)
>
>                 (3 255 255      unknownBytecode))!
>
>


-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20150610/4498011b/attachment-0001.htm


More information about the Vm-dev mailing list