[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