[Vm-dev] VM Maker: VMMaker.oscog-eem.199.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Aug 10 21:10:13 UTC 2012
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.199.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.199
Author: eem
Time: 10 August 2012, 2:09:02.546 pm
UUID: 1b0cff66-2042-49a7-ae74-5fa119256732
Ancestors: VMMaker.oscog-eem.198
Rename parameter to eliminate translation-time warning.
=============== Diff against VMMaker.oscog-eem.198 ===============
Item was changed:
----- Method: Cogit>>linkSendAt:in:to:offset:receiver: (in category 'in-line cacheing') -----
+ linkSendAt: callSiteReturnAddress in: sendingMethod to: targetMethod offset: theEntryOffset receiver: receiver
- linkSendAt: callSiteReturnAddress in: sendingMethod to: targetMethod offset: entryOffset receiver: receiver
<api>
<var: #sendingMethod type: #'CogMethod *'>
<var: #targetMethod type: #'CogMethod *'>
| inlineCacheTag address extent |
self cppIf: NewspeakVM
+ ifTrue: [self assert: (theEntryOffset = cmEntryOffset
+ or: [theEntryOffset = cmNoCheckEntryOffset
+ or: [theEntryOffset = cmDynSuperEntryOffset]])]
+ ifFalse: [self assert: (theEntryOffset = cmEntryOffset
+ or: [theEntryOffset = cmNoCheckEntryOffset])].
- ifTrue: [self assert: (entryOffset = cmEntryOffset
- or: [entryOffset = cmNoCheckEntryOffset
- or: [entryOffset = cmDynSuperEntryOffset]])]
- ifFalse: [self assert: (entryOffset = cmEntryOffset
- or: [entryOffset = cmNoCheckEntryOffset])].
self assert: (callSiteReturnAddress between: methodZoneBase and: methodZone zoneLimit).
+ inlineCacheTag := theEntryOffset = cmNoCheckEntryOffset
- inlineCacheTag := entryOffset = cmNoCheckEntryOffset
ifTrue: [targetMethod selector "i.e. no change"]
ifFalse: [objectRepresentation inlineCacheTagForInstance: receiver].
(sendingMethod cmRefersToYoung not
and: [(objectRepresentation inlineCacheTagIsYoung: inlineCacheTag)]) ifTrue:
[self assert: (methodZone occurrencesInYoungReferrers: sendingMethod) = 0.
sendingMethod cmRefersToYoung: true.
methodZone addToYoungReferrers: sendingMethod].
+ address := targetMethod asInteger + theEntryOffset.
- address := targetMethod asInteger + entryOffset.
extent := backEnd
rewriteInlineCacheAt: callSiteReturnAddress
tag: inlineCacheTag
target: address.
processor
flushICacheFrom: callSiteReturnAddress - 1 - extent
to: callSiteReturnAddress - 1!
More information about the Vm-dev
mailing list