[Vm-dev] VM Maker: VMMaker.oscog-eem.3293.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Jan 12 22:05:02 UTC 2023
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3293.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3293
Author: eem
Time: 12 January 2023, 2:04:39.652465 pm
UUID: 6c5cfa45-6e31-404f-aa63-7340e2b32723
Ancestors: VMMaker.oscog-eem.3292
Simplify the TempVectReadBarrier testing in Stack/CoInterpreter, adding one method and deleting four, and testing TempVectReadBarrier in a single method only (albeit one that is overridden in CoInterpreter).
Fix a regression introduced in VMMaker.oscog-eem.3288/3289
=============== Diff against VMMaker.oscog-eem.3292 ===============
Item was removed:
- ----- Method: CoInterpreter>>pushRemoteTemp:inVectorAt: (in category 'stack bytecodes') -----
- pushRemoteTemp: index inVectorAt: tempVectorIndex
- "Override to use itemporary:in:put:"
- | tempVector |
- tempVector := self itemporary: tempVectorIndex in: localFP.
- TempVectReadBarrier
- ifTrue:
- [(objectMemory isForwarded: tempVector) ifTrue:
- [tempVector := self unfollowTempVector: tempVector atIndex: tempVectorIndex in: localFP]].
- self internalPush: (objectMemory fetchPointer: index ofObject: tempVector)!
Item was removed:
- ----- Method: CoInterpreter>>storeRemoteTemp:inVectorAt: (in category 'stack bytecodes') -----
- storeRemoteTemp: index inVectorAt: tempVectorIndex
- "Override to use itemporary:in:put:"
- | tempVector |
- tempVector := self itemporary: tempVectorIndex in: localFP.
- TempVectReadBarrier
- ifTrue:
- [(objectMemory isForwarded: tempVector) ifTrue:
- [tempVector := self unfollowTempVector: tempVector atIndex: tempVectorIndex in: localFP]].
- objectMemory storePointer: index ofObject: tempVector withValue: self internalStackTop!
Item was added:
+ ----- Method: CoInterpreter>>temporaryVector:in: (in category 'internal interpreter access') -----
+ temporaryVector: tempVectorIndex in: theFP
+ "Override to use itemporary:in:[put:]"
+ <inline: true>
+ | tempVector |
+ tempVector := self itemporary: tempVectorIndex in: theFP.
+ (TempVectReadBarrier
+ and: [objectMemory isForwarded: tempVector]) ifTrue:
+ [tempVector := objectMemory followForwarded: tempVector.
+ self itemporary: tempVectorIndex in: theFP put: tempVector].
+ ^tempVector!
Item was removed:
- ----- Method: CoInterpreter>>unfollowTempVector:atIndex:in: (in category 'compiled methods') -----
- unfollowTempVector: tempVector atIndex: tempVectorIndex in: theFP
- "override for itemporary"
- <option: #TempVectReadBarrier>
- <inline: #never> "So rare it mustn't bulk up the common path"
- | followed |
- followed := objectMemory followForwarded: tempVector.
- self itemporary: tempVectorIndex in: theFP put: followed.
- ^followed!
Item was changed:
----- Method: StackInterpreter>>pushRemoteTemp:inVectorAt: (in category 'stack bytecodes') -----
pushRemoteTemp: index inVectorAt: tempVectorIndex
| tempVector |
+ tempVector := self temporaryVector: tempVectorIndex in: localFP.
- tempVector := self temporary: tempVectorIndex in: localFP.
- TempVectReadBarrier
- ifTrue:
- [(objectMemory isForwarded: tempVector) ifTrue:
- [tempVector := self unfollowTempVector: tempVector atIndex: tempVectorIndex in: localFP]].
self internalPush: (objectMemory fetchPointer: index ofObject: tempVector)!
Item was changed:
----- Method: StackInterpreter>>storeRemoteTemp:inVectorAt: (in category 'stack bytecodes') -----
storeRemoteTemp: index inVectorAt: tempVectorIndex
| tempVector |
+ tempVector := self temporaryVector: tempVectorIndex in: localFP.
+ objectMemory storePointer: index ofObject: tempVector withValue: self internalStackTop!
- tempVector := self temporary: tempVectorIndex in: localFP.
- TempVectReadBarrier
- ifTrue:
- [(objectMemory isForwarded: tempVector) ifTrue:
- [tempVector := self unfollowTempVector: tempVector atIndex: tempVectorIndex in: localFP]].
- objectMemory storePointer: index ofObject: tempVector withValue: self internalStackTop.!
Item was added:
+ ----- Method: StackInterpreter>>temporaryVector:in: (in category 'internal interpreter access') -----
+ temporaryVector: tempVectorIndex in: theFP
+ <inline: true>
+ | tempVector |
+ tempVector := self temporary: tempVectorIndex in: theFP.
+ (TempVectReadBarrier
+ and: [objectMemory isForwarded: tempVector]) ifTrue:
+ [tempVector := objectMemory followForwarded: tempVector.
+ self temporary: tempVectorIndex in: theFP put: tempVector].
+ ^tempVector!
Item was removed:
- ----- Method: StackInterpreter>>unfollowTempVector:atIndex:in: (in category 'compiled methods') -----
- unfollowTempVector: tempVector atIndex: tempVectorIndex in: theFP
- <option: #TempVectReadBarrier>
- <inline: #never> "So rare it mustn't bulk up the common path"
- | followed |
- followed := objectMemory followForwarded: tempVector.
- self temporary: tempVectorIndex in: theFP put: followed.
- ^followed!
Item was changed:
----- Method: TMethod>>inlineableSend:in: (in category 'inlining') -----
inlineableSend: aNode in: aCodeGen
"Answer if the given send node is a call to a method that can be inlined."
| m |
aCodeGen maybeBreakForTestToInline: aNode in: self.
aNode isSend ifFalse: [^false].
m := aCodeGen methodNamed: aNode selector. "nil if builtin or external function"
^m ~= nil
and: [m ~~ self
- and: [m unmodifiedSelector ~= self unmodifiedSelector
and: [m mayBeInlined
and: [(m isComplete and: [aCodeGen mayInline: m selector])
+ or: [m checkForRequiredInlinabilityIn: self]]]]!
- or: [m checkForRequiredInlinabilityIn: self]]]]]!
More information about the Vm-dev
mailing list