[Vm-dev] VM Maker: VMMaker.oscog-eem.2645.mcz
commits at source.squeak.org
commits at source.squeak.org
Sun Dec 29 04:12:08 UTC 2019
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2645.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2645
Author: eem
Time: 28 December 2019, 8:11:54.164952 pm
UUID: 105caa36-0060-44f6-b8a2-200d7eb9d78e
Ancestors: VMMaker.oscog-eem.2644
Cogit:
Fix bug in genAlignCStackSavingRegisters:numArgs:wordAlignment:. Must ignore register arguments.
No need to flush the cache on rewriting prim invocaton if out-of-line literals are used.
Simulation:
Allow the break block to be easily cancelled.
=============== Diff against VMMaker.oscog-eem.2644 ===============
Item was changed:
----- Method: CogAbstractInstruction>>genAlignCStackSavingRegisters:numArgs:wordAlignment: (in category 'abi') -----
genAlignCStackSavingRegisters: regMask numArgs: numArgs wordAlignment: alignment
<inline: true>
| regMaskCopy numRegsPushed wordsPushedModAlignment delta |
<var: 'regMaskCopy' type: #usqInt>
regMaskCopy := regMask asUnsignedInteger.
numRegsPushed := 0.
[regMaskCopy ~= 0] whileTrue:
[numRegsPushed := numRegsPushed + (regMaskCopy bitAnd: 1).
regMaskCopy := regMaskCopy bitShift: -1].
(numRegsPushed = 0
and: [self numIntRegArgs >= numArgs]) ifTrue:
[^0].
+ wordsPushedModAlignment := numRegsPushed + (numArgs - self numIntRegArgs max: 0) \\ alignment.
- wordsPushedModAlignment := numRegsPushed + numArgs \\ alignment.
wordsPushedModAlignment ~= 0 ifTrue:
[delta := alignment - wordsPushedModAlignment.
cogit SubCq: delta * objectMemory wordSize R: SPReg].
^0!
Item was changed:
----- Method: CogVMSimulator>>setBreakBlockFromString: (in category 'UI') -----
setBreakBlockFromString: aString
| bString block |
bString := aString withBlanksTrimmed.
+ bString first = $- ifTrue:
+ [^cogit breakBlock: nil].
bString first ~= $[ ifTrue:
[bString := '[:ct|', bString, ']'].
block := [Compiler evaluate: bString for: self logged: false]
on: Error
do: [:ex|
UIManager default warn: ex messageText.
^self].
cogit breakBlock: block!
Item was changed:
----- Method: Cogit>>breakBlock: (in category 'simulation only') -----
breakBlock: aBlock
<doNotGenerate>
+ (breakBlock := aBlock) ifNil:
+ [breakPC == true ifTrue: [breakPC := nil].
+ ^self].
- breakBlock := aBlock.
breakPC ifNil: [breakPC := true].
singleStep := singleStep or: [breakPC singleStepRequiredToTriggerIn: self]!
Item was changed:
----- Method: SimpleStackBasedCogit>>rewritePrimInvocationIn:to: (in category 'external primitive support') -----
rewritePrimInvocationIn: cogMethod to: primFunctionPointer
<api>
<var: #cogMethod type: #'CogMethod *'>
<var: #primFunctionPointer declareC: #'void (*primFunctionPointer)(void)'>
| primIndex flags address extent |
self cCode: [] inSmalltalk:
[primFunctionPointer isInteger ifFalse:
[^self rewritePrimInvocationIn: cogMethod to: (self simulatedTrampolineFor: primFunctionPointer)]].
self assert: cogMethod cmType = CMMethod.
primIndex := coInterpreter
primitiveIndexOfMethod: cogMethod methodObject
header: cogMethod methodHeader.
flags := coInterpreter primitivePropertyFlags: primIndex.
(flags anyMask: PrimCallNeedsPrimitiveFunction) ifTrue:
[backEnd
storeLiteral: primFunctionPointer asUnsignedInteger
beforeFollowingAddress: cogMethod asUnsignedInteger
+ (externalSetPrimOffsets at: cogMethod cmNumArgs)].
"See compileInterpreterPrimitive:"
(flags anyMask: PrimCallMayCallBack)
ifTrue:
[address := cogMethod asUnsignedInteger
+ (externalPrimJumpOffsets at: cogMethod cmNumArgs).
extent := backEnd
rewriteJumpFullAt: address
target: primFunctionPointer asUnsignedInteger]
ifFalse:
[address := cogMethod asUnsignedInteger
+ (externalPrimCallOffsets at: cogMethod cmNumArgs).
extent := backEnd
rewriteCallFullAt: address
target: primFunctionPointer asUnsignedInteger].
+ extent > 0 ifTrue:
+ [processor
+ flushICacheFrom: cogMethod asUnsignedInteger + cmNoCheckEntryOffset
+ to: address asUnsignedInteger + extent]!
- processor
- flushICacheFrom: cogMethod asUnsignedInteger + cmNoCheckEntryOffset
- to: address asUnsignedInteger + extent!
More information about the Vm-dev
mailing list