[BUG]ByteSymbol(Object)>>doesNotUnderstand: #key

alangrimes at starpower.net alangrimes at starpower.net
Thu Jun 2 19:02:13 UTC 2005


here insert explanation of what you were doing, suspect changes you've
made and so forth.

[lets see if I can do this right this time...
Okay, I think I got it to work but this "Mister Postman" application
still has HORRIBLE, usibility deficits.. It relies on the user's
clarvoyance in knowing to hit "alt-S" to make it do what every other
mail application in the known universe does automaticly... 
] 

I was attempting to generate a 3.8 VM on a squeaky 3.8 image,
I did my normal routine of heaping on all of the plugins as internal, --
I don't trust ld.so at all and think that its authors are among the most
evil people ever to sit down at a keyboard...

I was supprised to get a debug box during this excercise...

I think what's going on is that a receient refactoring of Symbol broke
the first line of MessageNode>> asTranslatorNode... 

The missing symbol #key is, I beleive, a "red herring" because the CPU
should have taken the ifTrue path... I think the code "isMemberOf:"
should be replaced with something like "isMemberOrSubclassOf:"... But I
don't know if that method exists or what its name is... 


2 June 2004 2:51:37 pm

VM: unix - a SmalltalkImage
Image: Squeak3.8 [latest update: #6665]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/atg/source/trunk/test
Trusted Dir /home/atg/source/trunk/test/secure
Untrusted Dir /home/atg/source/trunk/test/untrusted

ByteSymbol(Object)>>doesNotUnderstand: #key
	Receiver: #ifTrue:ifFalse:
	Arguments and temporary variables: 
		aMessage: 	key
	Receiver's instance variables: 
#ifTrue:ifFalse:

MessageNode>>asTranslatorNode
	Receiver: {self hasEdgeTransform
	ifTrue: [self transformPoint: point into: point]
	ifFalse: [point ...etc...
	Arguments and temporary variables: 
		sel: 	nil
		args: 	nil
		i: 	nil
	Receiver's instance variables: 
		comment: 	nil
		pc: 	nil
		receiver: 	{self hasEdgeTransform}
		selector: 	#ifTrue:ifFalse:
		precedence: 	3
		special: 	4
		arguments: 	an OrderedCollection({[self transformPoint: point into:
point]} {[po...etc...
		sizes: 	#(nil nil)
		equalNode: 	nil
		caseErrorNode: 	nil

[] in BlockNode>>asTranslatorNode {[:s |  newS := s asTranslatorNode. 
newS isStmtList   ifTrue: [statementList...]}
	Arguments and temporary variables: 
		statementList: 	an OrderedCollection(self var: #point declareC: 'int
*point')
		newS: 	self var: #point declareC: 'int *point'
		s: 	{self hasEdgeTransform
	ifTrue: [self transformPoint: point into: point]
	if...etc...
		arg: 	nil

OrderedCollection>>do:
	Receiver: an OrderedCollection({self var: #point declareC: 'int
*point'} {self hasEdgeTransform
	ifT...etc...
	Arguments and temporary variables: 
		aBlock: 	[] in BlockNode>>asTranslatorNode {[:s |  newS := s
asTranslatorNode.  ...etc...
		index: 	4
	Receiver's instance variables: 
		array: 	#(nil nil {self var: #point declareC: 'int *point'} {self
hasEdgeTransfo...etc...
		firstIndex: 	3
		lastIndex: 	5


--- The full stack ---
ByteSymbol(Object)>>doesNotUnderstand: #key
MessageNode>>asTranslatorNode
[] in BlockNode>>asTranslatorNode {[:s |  newS := s asTranslatorNode. 
newS isStmtList   ifTrue: [statementList...]}
OrderedCollection>>do:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BlockNode>>asTranslatorNode
TMethod>>setSelector:args:locals:block:primitive:
MethodNode>>asTranslationMethodOfClass:
[] in VMPluginCodeGenerator(CCodeGenerator)>>addClass: {[:sel :i |  bar
value: i.  source := aClass sourceCodeAt: sel.  self   addMe...]}
[] in Set>>doWithIndex: {[:item | aBlock2 value: item value: (index :=
index + 1)]}
Set>>do:
Set>>doWithIndex:
[] in VMPluginCodeGenerator(CCodeGenerator)>>addClass: {[:bar | aClass
selectors   doWithIndex: [:sel :i |     bar value: i.    sour...]}
[] in ProgressInitiationException>>defaultMorphicAction {[result :=
workBlock value: progress]}
BlockContext>>ensure:
ProgressInitiationException>>defaultMorphicAction
ProgressInitiationException>>defaultAction
UndefinedObject>>handleSignal:
MethodContext(ContextPart)>>handleSignal:
MethodContext(ContextPart)>>handleSignal:
ProgressInitiationException(Exception)>>signal
ProgressInitiationException>>display:at:from:to:during:
ProgressInitiationException class>>display:at:from:to:during:
ByteString(String)>>displayProgressAt:from:to:during:
VMPluginCodeGenerator(CCodeGenerator)>>addClass:
BalloonEnginePlugin class(InterpreterPlugin
class)>>buildCodeGeneratorUpTo:
BalloonEnginePlugin class(InterpreterPlugin
class)>>translateInDirectory:doInlining:
UnixVMMaker(VMMaker)>>privateGenerateInternalPlugin:
[] in UnixVMMaker(VMMaker)>>generateInternalPlugins {[:plugin | self
privateGenerateInternalPlugin: plugin]}
[] in UnixVMMaker(VMMaker)>>plugins:do: {[:sym | (Smalltalk
hasClassNamed: sym)   ifTrue: [aBlock     value: (Smallta...]}
SortedCollection(OrderedCollection)>>do:
UnixVMMaker(VMMaker)>>plugins:do:
UnixVMMaker(VMMaker)>>internalPluginsDo:
UnixVMMaker(VMMaker)>>generateInternalPlugins
UnixVMMaker(VMMaker)>>generateMainVM
UnixVMMaker(VMMaker)>>generateEntire
[] in VMMakerTool>>generateAll {[vmMaker generateEntire]}
BlockContext>>on:do:
VMMakerTool>>generateAll
[] in SimpleButtonMorph>>doButtonAction {[target perform: actionSelector
withArguments: arguments]}
BlockContext>>ensure:
CursorWithMask(Cursor)>>showWhile:
SimpleButtonMorph>>doButtonAction
SimpleButtonMorph>>mouseUp:
SimpleButtonMorph(Morph)>>handleMouseUp:
MouseButtonEvent>>sentTo:
SimpleButtonMorph(Morph)>>handleEvent:
...etc...



More information about the Squeak-dev mailing list