Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2657.mcz==================== Summary ====================
Name: VMMaker.oscog-eem.2657
Author: eem
Time: 9 January 2020, 7:16:59.989172 pm
UUID: 213f7e09-fdf7-4fc5-8387-7fbe915e08bb
Ancestors: VMMaker.oscog-eem.2656
Cogit Minor changes to make the Slang thang clang.
=============== Diff against VMMaker.oscog-eem.2656 ===============
Item was changed:
----- Method: CogAbstractInstruction>>roundUpToMethodAlignment: (in category 'method zone and entry point alignment') -----
roundUpToMethodAlignment: numBytes
"Determine the default alignment for the start of a CogMehtod, which in turn
determines the size of the mask used to distinguish the checked and unchecked
entry-points, used to distinguish normal and super sends on method unlinking.
This is implemented here to allow processors with coarse instructions (ARM) to
increase the alignment if required."
+ <cmacro: '(ignored,numBytes) ((numBytes) + 7 & -8)'>
- <cmacro: '(numBytes) ((numBytes) + 7 & -8)'>
^numBytes + 7 bitAnd: -8!
Item was changed:
----- Method: Cogit>>maybeBreakGeneratingFrom:to: (in category 'simulation only') -----
maybeBreakGeneratingFrom: address to: end
"Variation on maybeBreakAt: that only works for integer breakPCs,
so we can have break blocks that stop at any pc, except when generating."
+ <cmacro: '(address,end) 0'> "Simulation only; void in C"
- <cmacro: '(address) 0'> "Simulation only; void in C"
(breakPC isInteger
and: [(breakPC between: address and: end)
and: [breakBlock shouldStopIfAtPC: address]]) ifTrue:
[coInterpreter changed: #byteCountText.
self halt: 'machine code generation at ', address hex, ' in ', thisContext sender selector]!
Item was changed:
----- Method: ObjectMemory>>isNonImmediate: (in category 'interpreter access') -----
isNonImmediate: anOop
+ <api>
^self isNonIntegerObject: anOop!
Item was changed:
----- Method: SimpleStackBasedCogit>>genExtSendSuperBytecode (in category 'bytecode generators') -----
genExtSendSuperBytecode
"239 11101111 i i i i i j j j Send To Superclass Literal Selector #iiiii (+ Extend A * 32) with jjj (+ Extend B * 8) Arguments"
| isDirected litIndex nArgs |
(isDirected := extB >= 64) ifTrue:
[extB := extB bitAnd: 63].
litIndex := (byte1 >> 3) + (extA << 5).
extA := 0.
nArgs := (byte1 bitAnd: 7) + (extB << 3).
extB := 0.
numExtB := 0.
+ BytecodeSetHasDirectedSuperSend
+ ifTrue:
+ [^isDirected
+ ifTrue: [self genSendDirectedSuper: litIndex numArgs: nArgs]
+ ifFalse: [self genSendSuper: litIndex numArgs: nArgs]]
+ ifFalse:
+ [self deny: isDirected.
+ ^self genSendSuper: litIndex numArgs: nArgs]!
- ^isDirected
- ifTrue: [self genSendDirectedSuper: litIndex numArgs: nArgs]
- ifFalse: [self genSendSuper: litIndex numArgs: nArgs]!