[Vm-dev] VM Maker: BytecodeSets.spur-cb.27.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Apr 2 22:54:22 UTC 2015
ClementBera uploaded a new version of BytecodeSets to project VM Maker:
http://source.squeak.org/VMMaker/BytecodeSets.spur-cb.27.mcz
==================== Summary ====================
Name: BytecodeSets.spur-cb.27
Author: cb
Time: 2 April 2015, 3:54:17.505 pm
UUID: 2311fa15-b113-4acd-8272-2f9f2fb1c272
Ancestors: BytecodeSets.spur-cb.26
empty log message
=============== Diff against BytecodeSets.spur-cb.26 ===============
Item was added:
+ ----- Method: EncoderForSistaV1 class>>backJumpBytecodeSize (in category 'bytecode decoding') -----
+ backJumpBytecodeSize
+ ^ 4!
Item was added:
+ ----- Method: EncoderForSistaV1 class>>isAlternateBytecodeSet (in category 'bytecode decoding') -----
+ isAlternateBytecodeSet
+ ^ true!
Item was added:
+ ----- Method: EncoderForSistaV1 class>>isCreateBlockAt:in: (in category 'instruction stream support') -----
+ isCreateBlockAt: pc in: method
+ "Answer whether the bytecode at pc is a block creation bytecode."
+
+ "250 11111010 eeiiikkk jjjjjjjj Push Closure Num Copied iii (+ExtA//16*8) Num Args kkk (+ ExtA\\16*8) BlockSize jjjjjjjj (+ExtB*256). ee = num extensions"
+
+ | byte |
+ byte := self nonExtensionBytecodeAt: pc in: method.
+ ^ byte = 250!
Item was added:
+ ----- Method: EncoderForSistaV1 class>>nonExtensionBytecodeAt:in: (in category 'instruction stream support') -----
+ nonExtensionBytecodeAt: pc in: method
+ "Answer the actual bytecode at pc in method, skipping past any preceeding extensions."
+ | scanpc byte |
+ scanpc := pc.
+ [ byte := method at: scanpc.
+ byte >= 224 and: [byte <= 225]] whileTrue: [ scanpc := scanpc + 2 ].
+ ^ byte!
Item was added:
+ ----- Method: EncoderForSistaV1 class>>numLocalTempsForBlockAt:in: (in category 'block closure support') -----
+ numLocalTempsForBlockAt: startpc in: method
+ | firstByte |
+ firstByte := method at: startpc.
+ ^ firstByte = 230
+ ifFalse: [ 0 ]
+ ifTrue: [ (method at: startpc + 1) + 1 ]
+ !
Item was added:
+ ----- Method: EncoderForSistaV1 class>>specialLiterals (in category 'bytecode decoding') -----
+ specialLiterals
+ ^ #(true false nil 0 1) !
Item was added:
+ ----- Method: EncoderForSistaV1>>genPushNClosureTemps: (in category 'bytecode generation') -----
+ genPushNClosureTemps: numTemps
+ " 230 11100110 iiiiiiii PushNClosureTemps iiiiiiii"
+ (numTemps < 0 or: [numTemps >= 64]) ifTrue:
+ [^self outOfRangeError: 'closure num temps' index: numTemps range: 0 to: 127].
+ stream nextPut: 230.
+ stream nextPut: numTemps!
More information about the Vm-dev
mailing list