[Vm-dev] VM Maker: BytecodeSets.spur-cb.48.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Apr 8 22:12:40 UTC 2016
ClementBera uploaded a new version of BytecodeSets to project VM Maker:
http://source.squeak.org/VMMaker/BytecodeSets.spur-cb.48.mcz
==================== Summary ====================
Name: BytecodeSets.spur-cb.48
Author: cb
Time: 8 April 2016, 3:12:35.233 pm
UUID: bf759b38-fe73-40b8-9810-f11668820be3
Ancestors: BytecodeSets.spur-eem.47
empty log message
=============== Diff against BytecodeSets.spur-eem.47 ===============
Item was changed:
BytecodeEncoder subclass: #EncoderForSistaV1
(excessive size, no diff calculated)
Item was added:
+ ----- Method: EncoderForSistaV1>>genPushFullClosure:numCopied: (in category 'extended bytecode generation') -----
+ genPushFullClosure: compiledBlockLiteralIndex numCopied: numCopied
+ "By default the closure will have an outer context and the receiver will be fetched from the current context"
+ self genPushFullClosure: compiledBlockLiteralIndex numCopied: numCopied receiverOnStack: false outerContextNeeded: true!
Item was changed:
----- Method: EncoderForSistaV1>>genPushFullClosure:numCopied:receiverOnStack:outerContextNeeded: (in category 'extended bytecode generation') -----
genPushFullClosure: compiledBlockLiteralIndex numCopied: numCopied receiverOnStack: receiverOnStack outerContextNeeded: outerContextNeeded
+ "* 255 11111111 xxxxxxxx siyyyyyy push Closure Compiled block literal index xxxxxxxx (+ Extend A * 256) numCopied yyyyyy receiverOnStack: s = 1 ignoreOuterContext: i = 1"
- "* 255 11111111 xxxxxxxx siyyyyyy push Closure Compiled block literal index xxxxxxxx (+ Extend A * 256) numCopied yyyyyy receiverOnStack: s = 1 needsOuterContext: i = 1"
| extendedIndex |
(numCopied < 1 or: [numCopied > 64]) ifTrue:
[self outOfRangeError: 'num copied' index: numCopied range: 1 to: 64].
(compiledBlockLiteralIndex < 0 or: [compiledBlockLiteralIndex > 32768]) ifTrue:
[^self outOfRangeError: 'index' index: compiledBlockLiteralIndex range: 0 to: 32768].
(extendedIndex := compiledBlockLiteralIndex) > 255 ifTrue:
[self genUnsignedSingleExtendA: extendedIndex // 256.
extendedIndex := extendedIndex \\ 256].
stream
nextPut: 255;
nextPut: extendedIndex;
+ nextPut: receiverOnStack asBit << 7 + (outerContextNeeded not asBit << 6) + numCopied!
- nextPut: receiverOnStack asBit << 7 + (outerContextNeeded asBit << 6) + numCopied!
More information about the Vm-dev
mailing list