[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