[Vm-dev] VM Maker: VMMaker.oscog-eem.1074.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Feb 23 00:31:21 UTC 2015

Eliot Miranda uploaded a new version of VMMaker to project VM Maker:

==================== Summary ====================

Name: VMMaker.oscog-eem.1074
Author: eem
Time: 22 February 2015, 4:29:56.443 pm
UUID: b88dbe30-1cfb-4a06-b6ad-89e63489893e
Ancestors: VMMaker.oscog-eem.1073

Use printstringof;maybeselect for more reliable
printing of selector in Newspeak privacy check.

=============== Diff against VMMaker.oscog-eem.1073 ===============

Item was changed:
  ----- Method: StackInterpreter>>lookupMethodInClass: (in category 'message sending') -----
  lookupMethodInClass: class
  	| currentClass dictionary found |
  	<inline: false>
  	self assert: (self addressCouldBeClassObj: class).
  	currentClass := class.
  	[currentClass ~= objectMemory nilObject] whileTrue:
  		[dictionary := objectMemory followObjField: MethodDictionaryIndex ofObject: currentClass.
  		dictionary = objectMemory nilObject ifTrue:
  			["MethodDict pointer is nil (hopefully due a swapped out stub)
  				-- raise exception #cannotInterpret:."
  			self createActualMessageTo: class.
  			messageSelector := objectMemory splObj: SelectorCannotInterpret.
  			self sendBreakpoint: messageSelector receiver: nil.
  			^self lookupMethodInClass: (self superclassOf: currentClass)].
  		found := self lookupMethodInDictionary: dictionary.
  		 and: [CheckPrivacyViolations
  		 and: [isPrivateSend not
  		 and: [messageSelector ~= (objectMemory splObj: SelectorDoesNotUnderstand)
  		 and: [(self accessModifierOfMethod: newMethod) ~= 0]]]]) ifTrue:
  			[self print: (self nameOfClass: currentClass); space.
  			 self printStringOf: (messageSelector); print: ' from '.
+ 			 self printStringOf: (self maybeSelectorOfMethod: method); cr].
- 			 self printStringOf: (self fetchPointer: 0 ofObject: (self methodClassOf: method)); cr].
  		found ifTrue: [^currentClass].
  		currentClass := self superclassOf: currentClass].
  	"Could not find #doesNotUnderstand: -- unrecoverable error."
  	messageSelector = (objectMemory splObj: SelectorDoesNotUnderstand) ifTrue:
  		[self error: 'Recursive not understood error encountered'].
  	"Cound not find a normal message -- raise exception #doesNotUnderstand:"
  	self createActualMessageTo: class.
  	messageSelector := objectMemory splObj: SelectorDoesNotUnderstand.
  	self sendBreak: messageSelector + objectMemory baseHeaderSize
  		point: (objectMemory lengthOf: messageSelector)
  		receiver: nil.
  	^self lookupMethodInClass: class!

More information about the Vm-dev mailing list