[Vm-dev] VM Maker: VMMaker.oscog-eem.1151.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Apr 2 16:33:58 UTC 2015
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1151.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1151
Author: eem
Time: 2 April 2015, 9:31:47.639 am
UUID: 4356fa11-234c-40ba-b3cc-fc9797b15238
Ancestors: VMMaker.oscog-tpr.1150
Include the directedSuperclassSend shared case in
the right bytecode.
=============== Diff against VMMaker.oscog-tpr.1150 ===============
Item was changed:
----- Method: StackInterpreter>>directedSuperclassSend (in category 'send bytecodes') -----
directedSuperclassSend
"Send a message to self, starting lookup with the superclass of the class on top of stack."
"Assume: messageSelector and argumentCount have been set, and that
the receiver and arguments have been pushed onto the stack,"
"Note: This method is inlined into the interpreter dispatch loop."
+ <sharedCodeInCase: #extSendSuperBytecode>
- <sharedCodeInCase: #singleExtendedSuperBytecode>
<option: #SistaVM>
| class superclass |
class := self internalPopStack.
(objectMemory isForwarded: class) ifTrue:
[class := objectMemory followForwarded: class].
superclass := self superclassOf: class.
objectMemory ensureBehaviorHash: superclass.
lkupClassTag := objectMemory classTagForClass: superclass.
"To maintain the invariant that all receivers are unforwarded we need an explicit
read barrier in the super send cases. Even though we always follow receivers
on become e.g. super doSomethingWith: (self become: other) forwards the receiver
self pushed on the stack."
self ensureReceiverUnforwarded.
self assert: lkupClassTag ~= objectMemory nilObject.
self commonSend!
More information about the Vm-dev
mailing list