[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