Long method can not be compiled using #compile: aString

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|

Long method can not be compiled using #compile: aString

Bart Gauquie
Dear all,

I'm developing code which generates a method content, compiles it and adds it to an existing class. 
I compile the message using #compile: message:
for instance:

MorphicReplayDemoTest compile: '
testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 651@559 to: 643@579.
'.

This works fine. However if the contents of the method is too long; for instance: 
if the self addMMEFrom: 1054@512 to: 1037@504. is repeated around 250 times; I get following error (see stack below)

The strange thing is that if I manually add that method using the editor and paste it, it works just fine. I even tested up to 5000 lines of code; its slow, but its working.

Any ideas how to solve this?

Thanks,

Bart

I'm using Pharo 1.0 rc update: 10502; using Ubuntu 9.10, using vm pharo-vm-0.15.2f-linux.

THERE_BE_DRAGONS_HERE
MessageNotUnderstood: receiver of "<" is nil
20 December 2009 8:17:14 pm

VM: unix - i686 - linux-gnu - Pharo0.1 of 16 May 2008 [latest update: #10074]
Image: PharoCore1.0rc1 [Latest update: #10502]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image
Trusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image/secure
Untrusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image/My Squeak

UndefinedObject(Object)>>doesNotUnderstand: #<
Receiver: nil
Arguments and temporary variables:
aMessage: < 0
exception: MessageNotUnderstood: receiver of "<" is nil
resumeValue: nil
Receiver's instance variables:
nil

EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
literalIndex: nil
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
genSelector: #genPushLiteral:
args: #(nil)
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
literalIndex: nil
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

LiteralNode>>sizeCodeForValue:
Receiver: {397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
key: 397
code: -3
index: nil

[] in MessageNode>>sizeCodeForValue:
Receiver: {1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {1092}
selector: {@}
precedence: 2
special: 0
arguments: #({397})
sizes: #(nil)
equalNode: nil
caseErrorNode: nil

Array(SequenceableCollection)>>collect:
Receiver: #({397})
Arguments and temporary variables:
aBlock: [closure] in MessageNode>>sizeCodeForValue:
newCollection: #(nil)
index: 1
indexLimiT: 1
Receiver's instance variables:
#({397})

MessageNode>>sizeCodeForValue:
Receiver: {1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {1092}
selector: {@}
precedence: 2
special: 0
arguments: #({397})
sizes: #(nil)
equalNode: nil
caseErrorNode: nil

[] in MessageNode>>sizeCodeForValue:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

OrderedCollection>>collect:
Receiver: an OrderedCollection({1140 @ 387} {1092 @ 397})
Arguments and temporary variables:
aBlock: [closure] in MessageNode>>sizeCodeForValue:
newCollection: an OrderedCollection(7)
index: 4
Receiver's instance variables:
array: an Array(nil nil {1140 @ 387} {1092 @ 397} nil nil nil nil nil nil)
firstIndex: 3
lastIndex: 4

MessageNode>>sizeCodeForValue:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

MessageNode(ParseNode)>>sizeCodeForEffect:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

MessageNode>>sizeCodeForEffect:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

BlockNode>>sizeCodeExceptLast:
Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 979 @ 482.
...etc...
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
codeSize: 2564
i: 169
statement: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
iLimiT: 287
Receiver's instance variables:
comment: nil
pc: nil
arguments: #()
statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @ 504} {...etc...
returns: true
nArgsNode: nil
size: nil
remoteCopyNode: nil
temporaries: an OrderedCollection()
optimized: false
actualScopeIfOptimized: nil
blockExtent: (0 to: 2)
remoteTempNode: nil
copiedValues: nil
closureCreationNode: nil
startOfLastStatement: 11519

BlockNode>>sizeCodeForEvaluatedValue:
Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 979 @ 482.
...etc...
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
arguments: #()
statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @ 504} {...etc...
returns: true
nArgsNode: nil
size: nil
remoteCopyNode: nil
temporaries: an OrderedCollection()
optimized: false
actualScopeIfOptimized: nil
blockExtent: (0 to: 2)
remoteTempNode: nil
copiedValues: nil
closureCreationNode: nil
startOfLastStatement: 11519

BytecodeAgnosticMethodNode>>generate:
Receiver: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 9...etc...
Arguments and temporary variables:
trailer: #(0 0 0 0)
primErrNode: nil
blkSize: nil
nLits: nil
literals: nil
stack: nil
method: nil
locals: nil
lit: nil
Receiver's instance variables:
comment: nil
pc: nil
selectorOrFalse: #testMethod
precedence: 1
arguments: #()
block: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 5...etc...
primitive: 0
encoder: {an EncoderForV3PlusClosures}
temporaries: #()
properties: an AdditionalMethodState
sourceText: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFr...etc...
locationCounter: 3
localsPool: an IdentitySet()

CompiledMethodWithNode class>>generateMethodFromNode:trailer:
Receiver: CompiledMethodWithNode
Arguments and temporary variables:
aMethodNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addM...etc...
bytes: #(0 0 0 0)
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary(#method->a CompiledMethod(650: CompiledMethodWit...etc...
format: 134
instanceVariables: #('node' 'method')
organization: ('accessing' method node selector)
('private' method: node:)

subclasses: nil
name: #CompiledMethodWithNode
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'Compiler-Support'
traitComposition: nil
localSelectors: nil

MorphicReplayDemoTest class(Behavior)>>compile:classified:notifying:trailer:ifFail:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
requestor: nil
bytes: #(0 0 0 0)
failBlock: [closure] in MorphicReplayDemoTest class(ClassDescription)>>compile:...etc...
methodNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMM...etc...
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
changeStamp: 'BartGauquie 12/20/2009 20:17'
requestor: nil
logSource: true
methodAndNode: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
changeStamp: 'BartGauquie 12/20/2009 20:17'
requestor: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
requestor: nil
stamp: 'BartGauquie 12/20/2009 20:17'
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
requestor: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(Behavior)>>compile:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

ByteString>>DoIt
Receiver: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 1037@504 to: 979@48...etc...
Arguments and temporary variables:

Receiver's instance variables:
'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 1037@504 to: 979@48...etc...

Compiler>>evaluate:in:to:notifying:ifFail:logged:
Receiver: a Compiler
Arguments and temporary variables:
textOrStream: a ReadWriteStream 'MorphicReplayDemoTest
compile: self.'
aContext: nil
receiver: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom...etc...
aRequestor: a TextMorphEditor
failBlock: [closure] in [] in TextMorphEditor(ParagraphEditor)>>evaluateSelecti...etc...
logFlag: true
methodNode: DoIt
^ MorphicReplayDemoTest compile: self
method: a CompiledMethod(2378: ByteString>>DoIt)
value: nil
toLog: nil
itsSelection: nil
itsSelectionString: nil
Receiver's instance variables:
sourceStream: a ReadWriteStream 'MorphicReplayDemoTest
compile: self.'
requestor: a TextMorphEditor
class: ByteString
category: nil
context: nil
parser: a Parser

[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
Receiver: a TextMorphEditor
Arguments and temporary variables:
rcvr: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
ctxt: nil
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

BlockClosure>>on:do:
Receiver: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
Arguments and temporary variables:
exception: OutOfScopeNotification
handlerAction: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection...etc...
handlerActive: true
Receiver's instance variables:
outerContext: TextMorphEditor(ParagraphEditor)>>evaluateSelection
startpc: 116
numArgs: 0

TextMorphEditor(ParagraphEditor)>>evaluateSelection
Receiver: a TextMorphEditor
Arguments and temporary variables:
result: nil
rcvr: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
ctxt: nil
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>doIt
Receiver: a TextMorphEditor
Arguments and temporary variables:

Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

[] in TextMorphEditor(ParagraphEditor)>>doIt:
Receiver: a TextMorphEditor
Arguments and temporary variables:

Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
Receiver: a TextMorphEditor
Arguments and temporary variables:
aBlock: [closure] in TextMorphEditor(ParagraphEditor)>>doIt:
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>doIt:
Receiver: a TextMorphEditor
Arguments and temporary variables:
characterStream: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAheadStream: a WriteStream ''
honorCommandKeys: true
keyValue: 100
keyChar: $d
char: $d
action: #doIt:
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor>>dispatchOnKeyEvent:with:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAheadStream: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>keystroke:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAhead: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor>>keystroke:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

[] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
evt: [keystroke '<Cmd-d>']
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false

TextMorphForEditView(TextMorph)>>handleInteraction:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
interactionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc...
oldEditor: a TextMorphEditor
oldParagraph: a MultiNewParagraph
oldText: a Text for 'MorphicReplayDemoTest
compile: self.'
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false

TextMorphForEditView>>handleInteraction:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
interActionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc...
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false


--- The full stack ---
UndefinedObject(Object)>>doesNotUnderstand: #<
EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
LiteralNode>>sizeCodeForValue:
[] in MessageNode>>sizeCodeForValue:
Array(SequenceableCollection)>>collect:
MessageNode>>sizeCodeForValue:
[] in MessageNode>>sizeCodeForValue:
OrderedCollection>>collect:
MessageNode>>sizeCodeForValue:
MessageNode(ParseNode)>>sizeCodeForEffect:
MessageNode>>sizeCodeForEffect:
BlockNode>>sizeCodeExceptLast:
BlockNode>>sizeCodeForEvaluatedValue:
BytecodeAgnosticMethodNode>>generate:
CompiledMethodWithNode class>>generateMethodFromNode:trailer:
MorphicReplayDemoTest class(Behavior)>>compile:classified:notifying:trailer:ifFail:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:notifying:
MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
MorphicReplayDemoTest class(Behavior)>>compile:
ByteString>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
BlockClosure>>on:do:
TextMorphEditor(ParagraphEditor)>>evaluateSelection
TextMorphEditor(ParagraphEditor)>>doIt
[] in TextMorphEditor(ParagraphEditor)>>doIt:
TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
TextMorphEditor(ParagraphEditor)>>doIt:
TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
TextMorphEditor>>dispatchOnKeyEvent:with:
TextMorphEditor(ParagraphEditor)>>keystroke:
TextMorphEditor>>keystroke:
[] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView(TextMorph)>>handleInteraction:
TextMorphForEditView>>handleInteraction:
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - -
[] in TextMorphForEditView(TextMorph)>>keyStroke:
ECToolSet class>>codeCompletionAround:textMorph:keyStroke:
DEVToolSet class>>codeCompletionAround:textMorph:keyStroke:
ToolSet class>>codeCompletionAround:textMorph:keyStroke:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear:
[] in PasteUpMorph>>becomeActiveDuring:
BlockClosure>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess
[] in BlockClosure>>newProcess
-----------------------------------------------------------


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Long method can not be compiled using #compile: aString

Henrik Sperre Johansen
On 20.12.2009 20:44, Bart Gauquie wrote:

> Dear all,
>
> I'm developing code which generates a method content, compiles it and
> adds it to an existing class.
> I compile the message using #compile: message:
> for instance:
>
> MorphicReplayDemoTest compile: '
> testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 651@559 to: 643@579.
> '.
>
> This works fine. However if the contents of the method is too long;
> for instance:
> if the self addMMEFrom: 1054@512 to: 1037@504. is repeated around 250
> times; I get following error (see stack below)
>
> The strange thing is that if I manually add that method using the
> editor and paste it, it works just fine. I even tested up to 5000
> lines of code; its slow, but its working.
>
> Any ideas how to solve this?
>
> Thanks,
>
> Bart
>
> I'm using Pharo 1.0 rc update: 10502; using Ubuntu 9.10, using vm
> pharo-vm-0.15.2f-linux.
>
Sorry I can't answer your question directly, but if you're trying to do
what I think you are, why not keep an OrderedCollection of MessageSend
instances instead?

Cheers,
Henry

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Long method can not be compiled using #compile: aString

Marcus Denker-4
In reply to this post by Bart Gauquie

On Dec 20, 2009, at 8:44 PM, Bart Gauquie wrote:

> Dear all,
>
> I'm developing code which generates a method content, compiles it and adds it to an existing class.
> I compile the message using #compile: message:
> for instance:
>
In general, everything is limited to a fairly low quantity: number of temps, number of ivars, number of
literals.

Especially that the literal frame is limted to some small number (255 or something) can be easily be a problem.
(we ran into that already when using bytesurgeon on large existing methods when reifying all sends, for example).

        Marcus
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Long method can not be compiled using #compile: aString

Eliot Miranda-2
In reply to this post by Bart Gauquie
Hi Bart,  can you package this up as a reproducible case, something like
    Object compile: (Stream stringContents: [:s| s nextPutAll: 'testMethod'.  256 timesRepeat: ...])
?

TIA


2009/12/20 Bart Gauquie <[hidden email]>
Dear all,

I'm developing code which generates a method content, compiles it and adds it to an existing class. 
I compile the message using #compile: message:
for instance:

MorphicReplayDemoTest compile: '
testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 651@559 to: 643@579.
'.

This works fine. However if the contents of the method is too long; for instance: 
if the self addMMEFrom: 1054@512 to: 1037@504. is repeated around 250 times; I get following error (see stack below)

The strange thing is that if I manually add that method using the editor and paste it, it works just fine. I even tested up to 5000 lines of code; its slow, but its working.

Any ideas how to solve this?

Thanks,

Bart

I'm using Pharo 1.0 rc update: 10502; using Ubuntu 9.10, using vm pharo-vm-0.15.2f-linux.

THERE_BE_DRAGONS_HERE
MessageNotUnderstood: receiver of "<" is nil
20 December 2009 8:17:14 pm

VM: unix - i686 - linux-gnu - Pharo0.1 of 16 May 2008 [latest update: #10074]
Image: PharoCore1.0rc1 [Latest update: #10502]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image
Trusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image/secure
Untrusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image/My Squeak

UndefinedObject(Object)>>doesNotUnderstand: #<
Receiver: nil
Arguments and temporary variables:
aMessage: < 0
exception: MessageNotUnderstood: receiver of "<" is nil
resumeValue: nil
Receiver's instance variables:
nil

EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
literalIndex: nil
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
genSelector: #genPushLiteral:
args: #(nil)
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
literalIndex: nil
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

LiteralNode>>sizeCodeForValue:
Receiver: {397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
key: 397
code: -3
index: nil

[] in MessageNode>>sizeCodeForValue:
Receiver: {1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {1092}
selector: {@}
precedence: 2
special: 0
arguments: #({397})
sizes: #(nil)
equalNode: nil
caseErrorNode: nil

Array(SequenceableCollection)>>collect:
Receiver: #({397})
Arguments and temporary variables:
aBlock: [closure] in MessageNode>>sizeCodeForValue:
newCollection: #(nil)
index: 1
indexLimiT: 1
Receiver's instance variables:
#({397})

MessageNode>>sizeCodeForValue:
Receiver: {1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {1092}
selector: {@}
precedence: 2
special: 0
arguments: #({397})
sizes: #(nil)
equalNode: nil
caseErrorNode: nil

[] in MessageNode>>sizeCodeForValue:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

OrderedCollection>>collect:
Receiver: an OrderedCollection({1140 @ 387} {1092 @ 397})
Arguments and temporary variables:
aBlock: [closure] in MessageNode>>sizeCodeForValue:
newCollection: an OrderedCollection(7)
index: 4
Receiver's instance variables:
array: an Array(nil nil {1140 @ 387} {1092 @ 397} nil nil nil nil nil nil)
firstIndex: 3
lastIndex: 4

MessageNode>>sizeCodeForValue:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

MessageNode(ParseNode)>>sizeCodeForEffect:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

MessageNode>>sizeCodeForEffect:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

BlockNode>>sizeCodeExceptLast:
Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 979 @ 482.
...etc...
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
codeSize: 2564
i: 169
statement: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
iLimiT: 287
Receiver's instance variables:
comment: nil
pc: nil
arguments: #()
statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @ 504} {...etc...
returns: true
nArgsNode: nil
size: nil
remoteCopyNode: nil
temporaries: an OrderedCollection()
optimized: false
actualScopeIfOptimized: nil
blockExtent: (0 to: 2)
remoteTempNode: nil
copiedValues: nil
closureCreationNode: nil
startOfLastStatement: 11519

BlockNode>>sizeCodeForEvaluatedValue:
Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 979 @ 482.
...etc...
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
arguments: #()
statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @ 504} {...etc...
returns: true
nArgsNode: nil
size: nil
remoteCopyNode: nil
temporaries: an OrderedCollection()
optimized: false
actualScopeIfOptimized: nil
blockExtent: (0 to: 2)
remoteTempNode: nil
copiedValues: nil
closureCreationNode: nil
startOfLastStatement: 11519

BytecodeAgnosticMethodNode>>generate:
Receiver: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 9...etc...
Arguments and temporary variables:
trailer: #(0 0 0 0)
primErrNode: nil
blkSize: nil
nLits: nil
literals: nil
stack: nil
method: nil
locals: nil
lit: nil
Receiver's instance variables:
comment: nil
pc: nil
selectorOrFalse: #testMethod
precedence: 1
arguments: #()
block: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 5...etc...
primitive: 0
encoder: {an EncoderForV3PlusClosures}
temporaries: #()
properties: an AdditionalMethodState
sourceText: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFr...etc...
locationCounter: 3
localsPool: an IdentitySet()

CompiledMethodWithNode class>>generateMethodFromNode:trailer:
Receiver: CompiledMethodWithNode
Arguments and temporary variables:
aMethodNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addM...etc...
bytes: #(0 0 0 0)
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary(#method->a CompiledMethod(650: CompiledMethodWit...etc...
format: 134
instanceVariables: #('node' 'method')
organization: ('accessing' method node selector)
('private' method: node:)

subclasses: nil
name: #CompiledMethodWithNode
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'Compiler-Support'
traitComposition: nil
localSelectors: nil

MorphicReplayDemoTest class(Behavior)>>compile:classified:notifying:trailer:ifFail:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
requestor: nil
bytes: #(0 0 0 0)
failBlock: [closure] in MorphicReplayDemoTest class(ClassDescription)>>compile:...etc...
methodNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMM...etc...
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
changeStamp: 'BartGauquie 12/20/2009 20:17'
requestor: nil
logSource: true
methodAndNode: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
changeStamp: 'BartGauquie 12/20/2009 20:17'
requestor: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
requestor: nil
stamp: 'BartGauquie 12/20/2009 20:17'
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
requestor: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(Behavior)>>compile:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

ByteString>>DoIt
Receiver: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 1037@504 to: 979@48...etc...
Arguments and temporary variables:

Receiver's instance variables:
'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 1037@504 to: 979@48...etc...

Compiler>>evaluate:in:to:notifying:ifFail:logged:
Receiver: a Compiler
Arguments and temporary variables:
textOrStream: a ReadWriteStream 'MorphicReplayDemoTest
compile: self.'
aContext: nil
receiver: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom...etc...
aRequestor: a TextMorphEditor
failBlock: [closure] in [] in TextMorphEditor(ParagraphEditor)>>evaluateSelecti...etc...
logFlag: true
methodNode: DoIt
^ MorphicReplayDemoTest compile: self
method: a CompiledMethod(2378: ByteString>>DoIt)
value: nil
toLog: nil
itsSelection: nil
itsSelectionString: nil
Receiver's instance variables:
sourceStream: a ReadWriteStream 'MorphicReplayDemoTest
compile: self.'
requestor: a TextMorphEditor
class: ByteString
category: nil
context: nil
parser: a Parser

[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
Receiver: a TextMorphEditor
Arguments and temporary variables:
rcvr: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
ctxt: nil
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

BlockClosure>>on:do:
Receiver: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
Arguments and temporary variables:
exception: OutOfScopeNotification
handlerAction: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection...etc...
handlerActive: true
Receiver's instance variables:
outerContext: TextMorphEditor(ParagraphEditor)>>evaluateSelection
startpc: 116
numArgs: 0

TextMorphEditor(ParagraphEditor)>>evaluateSelection
Receiver: a TextMorphEditor
Arguments and temporary variables:
result: nil
rcvr: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
ctxt: nil
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>doIt
Receiver: a TextMorphEditor
Arguments and temporary variables:

Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

[] in TextMorphEditor(ParagraphEditor)>>doIt:
Receiver: a TextMorphEditor
Arguments and temporary variables:

Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
Receiver: a TextMorphEditor
Arguments and temporary variables:
aBlock: [closure] in TextMorphEditor(ParagraphEditor)>>doIt:
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>doIt:
Receiver: a TextMorphEditor
Arguments and temporary variables:
characterStream: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAheadStream: a WriteStream ''
honorCommandKeys: true
keyValue: 100
keyChar: $d
char: $d
action: #doIt:
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor>>dispatchOnKeyEvent:with:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAheadStream: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>keystroke:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAhead: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor>>keystroke:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

[] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
evt: [keystroke '<Cmd-d>']
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false

TextMorphForEditView(TextMorph)>>handleInteraction:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
interactionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc...
oldEditor: a TextMorphEditor
oldParagraph: a MultiNewParagraph
oldText: a Text for 'MorphicReplayDemoTest
compile: self.'
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false

TextMorphForEditView>>handleInteraction:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
interActionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc...
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false


--- The full stack ---
UndefinedObject(Object)>>doesNotUnderstand: #<
EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
LiteralNode>>sizeCodeForValue:
[] in MessageNode>>sizeCodeForValue:
Array(SequenceableCollection)>>collect:
MessageNode>>sizeCodeForValue:
[] in MessageNode>>sizeCodeForValue:
OrderedCollection>>collect:
MessageNode>>sizeCodeForValue:
MessageNode(ParseNode)>>sizeCodeForEffect:
MessageNode>>sizeCodeForEffect:
BlockNode>>sizeCodeExceptLast:
BlockNode>>sizeCodeForEvaluatedValue:
BytecodeAgnosticMethodNode>>generate:
CompiledMethodWithNode class>>generateMethodFromNode:trailer:
MorphicReplayDemoTest class(Behavior)>>compile:classified:notifying:trailer:ifFail:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:notifying:
MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
MorphicReplayDemoTest class(Behavior)>>compile:
ByteString>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
BlockClosure>>on:do:
TextMorphEditor(ParagraphEditor)>>evaluateSelection
TextMorphEditor(ParagraphEditor)>>doIt
[] in TextMorphEditor(ParagraphEditor)>>doIt:
TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
TextMorphEditor(ParagraphEditor)>>doIt:
TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
TextMorphEditor>>dispatchOnKeyEvent:with:
TextMorphEditor(ParagraphEditor)>>keystroke:
TextMorphEditor>>keystroke:
[] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView(TextMorph)>>handleInteraction:
TextMorphForEditView>>handleInteraction:
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - -
[] in TextMorphForEditView(TextMorph)>>keyStroke:
ECToolSet class>>codeCompletionAround:textMorph:keyStroke:
DEVToolSet class>>codeCompletionAround:textMorph:keyStroke:
ToolSet class>>codeCompletionAround:textMorph:keyStroke:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear:
[] in PasteUpMorph>>becomeActiveDuring:
BlockClosure>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess
[] in BlockClosure>>newProcess
-----------------------------------------------------------


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Long method can not be compiled using #compile: aString

Igor Stasenko
In reply to this post by Marcus Denker-4
2009/12/20 Marcus Denker <[hidden email]>:

>
> On Dec 20, 2009, at 8:44 PM, Bart Gauquie wrote:
>
>> Dear all,
>>
>> I'm developing code which generates a method content, compiles it and adds it to an existing class.
>> I compile the message using #compile: message:
>> for instance:
>>
> In general, everything is limited to a fairly low quantity: number of temps, number of ivars, number of
> literals.
>
> Especially that the literal frame is limted to some small number (255 or something) can be easily be a problem.
> (we ran into that already when using bytesurgeon on large existing methods when reifying all sends, for example).
>

To get around this, place all literals into one (usually array):
#( a b c d e ..... )

For instance, the above:
  self addMMEFrom: 1054@512 to: 1037@504.
  self addMMEFrom: 651@559 to: 643@579.

can be easily replaced by something like:

#( (1054 512 1037 504)
    ..... put as many as you want here.... no limit!!!

    (651 559 643 579) ) do: [:each |
self addMMEFrom: (each first @ each second) to: (each third @ each fourth)
]

>        Marcus
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Long method can not be compiled using #compile: aString

Nicolas Cellier
2009/12/20 Igor Stasenko <[hidden email]>:

> 2009/12/20 Marcus Denker <[hidden email]>:
>>
>> On Dec 20, 2009, at 8:44 PM, Bart Gauquie wrote:
>>
>>> Dear all,
>>>
>>> I'm developing code which generates a method content, compiles it and adds it to an existing class.
>>> I compile the message using #compile: message:
>>> for instance:
>>>
>> In general, everything is limited to a fairly low quantity: number of temps, number of ivars, number of
>> literals.
>>
>> Especially that the literal frame is limted to some small number (255 or something) can be easily be a problem.
>> (we ran into that already when using bytesurgeon on large existing methods when reifying all sends, for example).
>>
>
> To get around this, place all literals into one (usually array):
> #( a b c d e ..... )
>
> For instance, the above:
>  self addMMEFrom: 1054@512 to: 1037@504.
>  self addMMEFrom: 651@559 to: 643@579.
>
> can be easily replaced by something like:
>
> #( (1054 512 1037 504)
>    ..... put as many as you want here.... no limit!!!
>
>    (651 559 643 579) ) do: [:each |
> self addMMEFrom: (each first @ each second) to: (each third @ each fourth)
> ]
>
>>        Marcus
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Hehe, when generating code for evaluating monster symbolic
expressions, I bumped into many of these limitations.
Using a literal Array was not enough because even the indices would
consume a literal slot. So i had to decompose indices into
operations...  Oh, and even some message sends had to be transformed
in #perform: sends (not shown here)...
Here is a fragment of code for allocating a literal slot (in
Objectworks, an ancestor of VW).

Nicolas

CodeStream subclass: #ExtendedCodeStream
        instanceVariableNames: 'reduceLiterals'
        classVariableNames: 'MaxLiteralIndex '
        poolDictionaries: 'OpcodePool '
        category: 'System-Compiler'

ExtendedCodeStream>>pushReducedConstant: lit
        "Handle MaxLiteralsNumber"

        | classIndex newClassArray litIndex |
        self push.
        lit == nil
                ifTrue:
                        [code nextPut: OpLoadNil.
                        ^self].
        lit == true
                ifTrue:
                        [code nextPut: OpLoadTrue.
                        ^self].
        lit == false
                ifTrue:
                        [code nextPut: OpLoadFalse.
                        ^self].
        lit isInteger
                ifTrue:
                        [(lit >= 0 and: [lit <= 2])
                                ifTrue:
                                        [code nextPut: OpLoadZero + lit.
                                        ^self].
                        (lit >= 0 and: [lit <= 255])
                                ifTrue:
                                        [code nextPut: OpLoadByte with: lit.
                                        ^self].
                        (lit >= -32768 and: [lit < 32768])
                                ifTrue:
                                        [code
                                                nextPut: OpLoadTwoBytes
                                                with: ((lit bitShift: -8)
                                                                bitAnd: 255)
                                                with: (lit bitAnd: 255).
                                        ^self]].
        ((lit isMemberOf: Character)
                and: [lit asInteger between: 0 and: 255])
                ifTrue:
                        [code nextPut: OpLoadCharacter with: lit asInteger.
                        ^self].
        classIndex := literals at: lit class
                                ifAbsent:
                                        ["Add the literal class array to the collection"
                                        literalCollection addLast: Array new.
                                        literals at: lit class put: literalCollection size - 1].
        classIndex > MaxLiteralIndex
                ifTrue:
                        [Errorscript cr; show: 'compilation failure: too many literal classes...'.
                        self class literalLimitSignal raiseWith: topNode body].
        classIndex <= MaxLoadLiteral
                ifTrue: [code nextPut: OpLoadLiteral + classIndex]
                ifFalse: [code nextPut: OpXLoadLiteral with: classIndex].
        newClassArray := literalCollection at: classIndex + 1.
        litIndex := newClassArray indexOf: lit ifAbsent: [0].
        litIndex = 0
                ifTrue:
                        [newClassArray := newClassArray copyWith: lit.
                        literalCollection at: classIndex + 1 put: newClassArray.
                        litIndex := newClassArray size].
        self pushBigIndex: litIndex.
        self sendNoCheck: #at: numArgs: 1

ExtendedCodeStream>>pushBigIndex: index
        "i do not want the index to figure in literalCollection
        so it must remain < 32768"

        | q r |
        index < 32768 ifTrue: [^self pushConstant: index].
        q := index // 32768.
        r := index - (q * 32768).
        self pushConstant: 32767; pushConstant: 1; sendNoCheck: #+ numArgs: 1.
        q = 1 ifFalse: [self pushBigIndex: q; sendNoCheck: #* numArgs: 1].
        r = 0 ifFalse: [self pushConstant: r; sendNoCheck: #+ numArgs: 1].

ExtendedCodeStream>>pushStatic: binding
        "Static variables do normally consume a literal slot.
        Arrange to economize this precious ressource"

        reduceLiterals
                ifTrue:
                        [self pushReducedConstant: binding.
                        self sendNoCheck: #value numArgs: 0]
                ifFalse: [super pushStatic: binding]

ExtendedCodeStream>>pushConstant: lit
        "Handle MaxLiteralsIndex"

        reduceLiterals ifTrue: [^self pushReducedConstant: lit].
        super pushConstant: lit.

ExtendedCodeStream>>testLiteralsSize
        "Restart compilation if literal limit is exceeded"

        literalCollection size > MaxLiteralIndex ifTrue: [reduceLiterals
                        ifTrue: [self class literalLimitSignal raiseWith: topNode body]
                        ifFalse: [self doReduceLiterals; restartCompilation]]

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Long method can not be compiled using #compile: aString

Lukas Renggli
You might want to have a look at SmaCC and how it generates the
scanner code: a huge state machine implemented in a single method that
consumes the source code of a programming language. To compile the
method SmaCC repeatedly applies the "extract method" refactoring to
reduce the code into nicely sized (but still efficient) methods.

Lukas

2009/12/21 Nicolas Cellier <[hidden email]>:

> 2009/12/20 Igor Stasenko <[hidden email]>:
>> 2009/12/20 Marcus Denker <[hidden email]>:
>>>
>>> On Dec 20, 2009, at 8:44 PM, Bart Gauquie wrote:
>>>
>>>> Dear all,
>>>>
>>>> I'm developing code which generates a method content, compiles it and adds it to an existing class.
>>>> I compile the message using #compile: message:
>>>> for instance:
>>>>
>>> In general, everything is limited to a fairly low quantity: number of temps, number of ivars, number of
>>> literals.
>>>
>>> Especially that the literal frame is limted to some small number (255 or something) can be easily be a problem.
>>> (we ran into that already when using bytesurgeon on large existing methods when reifying all sends, for example).
>>>
>>
>> To get around this, place all literals into one (usually array):
>> #( a b c d e ..... )
>>
>> For instance, the above:
>>  self addMMEFrom: 1054@512 to: 1037@504.
>>  self addMMEFrom: 651@559 to: 643@579.
>>
>> can be easily replaced by something like:
>>
>> #( (1054 512 1037 504)
>>    ..... put as many as you want here.... no limit!!!
>>
>>    (651 559 643 579) ) do: [:each |
>> self addMMEFrom: (each first @ each second) to: (each third @ each fourth)
>> ]
>>
>>>        Marcus
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> Hehe, when generating code for evaluating monster symbolic
> expressions, I bumped into many of these limitations.
> Using a literal Array was not enough because even the indices would
> consume a literal slot. So i had to decompose indices into
> operations...  Oh, and even some message sends had to be transformed
> in #perform: sends (not shown here)...
> Here is a fragment of code for allocating a literal slot (in
> Objectworks, an ancestor of VW).
>
> Nicolas
>
> CodeStream subclass: #ExtendedCodeStream
>        instanceVariableNames: 'reduceLiterals'
>        classVariableNames: 'MaxLiteralIndex '
>        poolDictionaries: 'OpcodePool '
>        category: 'System-Compiler'
>
> ExtendedCodeStream>>pushReducedConstant: lit
>        "Handle MaxLiteralsNumber"
>
>        | classIndex newClassArray litIndex |
>        self push.
>        lit == nil
>                ifTrue:
>                        [code nextPut: OpLoadNil.
>                        ^self].
>        lit == true
>                ifTrue:
>                        [code nextPut: OpLoadTrue.
>                        ^self].
>        lit == false
>                ifTrue:
>                        [code nextPut: OpLoadFalse.
>                        ^self].
>        lit isInteger
>                ifTrue:
>                        [(lit >= 0 and: [lit <= 2])
>                                ifTrue:
>                                        [code nextPut: OpLoadZero + lit.
>                                        ^self].
>                        (lit >= 0 and: [lit <= 255])
>                                ifTrue:
>                                        [code nextPut: OpLoadByte with: lit.
>                                        ^self].
>                        (lit >= -32768 and: [lit < 32768])
>                                ifTrue:
>                                        [code
>                                                nextPut: OpLoadTwoBytes
>                                                with: ((lit bitShift: -8)
>                                                                bitAnd: 255)
>                                                with: (lit bitAnd: 255).
>                                        ^self]].
>        ((lit isMemberOf: Character)
>                and: [lit asInteger between: 0 and: 255])
>                ifTrue:
>                        [code nextPut: OpLoadCharacter with: lit asInteger.
>                        ^self].
>        classIndex := literals at: lit class
>                                ifAbsent:
>                                        ["Add the literal class array to the collection"
>                                        literalCollection addLast: Array new.
>                                        literals at: lit class put: literalCollection size - 1].
>        classIndex > MaxLiteralIndex
>                ifTrue:
>                        [Errorscript cr; show: 'compilation failure: too many literal classes...'.
>                        self class literalLimitSignal raiseWith: topNode body].
>        classIndex <= MaxLoadLiteral
>                ifTrue: [code nextPut: OpLoadLiteral + classIndex]
>                ifFalse: [code nextPut: OpXLoadLiteral with: classIndex].
>        newClassArray := literalCollection at: classIndex + 1.
>        litIndex := newClassArray indexOf: lit ifAbsent: [0].
>        litIndex = 0
>                ifTrue:
>                        [newClassArray := newClassArray copyWith: lit.
>                        literalCollection at: classIndex + 1 put: newClassArray.
>                        litIndex := newClassArray size].
>        self pushBigIndex: litIndex.
>        self sendNoCheck: #at: numArgs: 1
>
> ExtendedCodeStream>>pushBigIndex: index
>        "i do not want the index to figure in literalCollection
>        so it must remain < 32768"
>
>        | q r |
>        index < 32768 ifTrue: [^self pushConstant: index].
>        q := index // 32768.
>        r := index - (q * 32768).
>        self pushConstant: 32767; pushConstant: 1; sendNoCheck: #+ numArgs: 1.
>        q = 1 ifFalse: [self pushBigIndex: q; sendNoCheck: #* numArgs: 1].
>        r = 0 ifFalse: [self pushConstant: r; sendNoCheck: #+ numArgs: 1].
>
> ExtendedCodeStream>>pushStatic: binding
>        "Static variables do normally consume a literal slot.
>        Arrange to economize this precious ressource"
>
>        reduceLiterals
>                ifTrue:
>                        [self pushReducedConstant: binding.
>                        self sendNoCheck: #value numArgs: 0]
>                ifFalse: [super pushStatic: binding]
>
> ExtendedCodeStream>>pushConstant: lit
>        "Handle MaxLiteralsIndex"
>
>        reduceLiterals ifTrue: [^self pushReducedConstant: lit].
>        super pushConstant: lit.
>
> ExtendedCodeStream>>testLiteralsSize
>        "Restart compilation if literal limit is exceeded"
>
>        literalCollection size > MaxLiteralIndex ifTrue: [reduceLiterals
>                        ifTrue: [self class literalLimitSignal raiseWith: topNode body]
>                        ifFalse: [self doReduceLiterals; restartCompilation]]
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Lukas Renggli
http://www.lukas-renggli.ch

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Long method can not be compiled using #compile: aString

Nicolas Cellier
2009/12/21 Lukas Renggli <[hidden email]>:
> You might want to have a look at SmaCC and how it generates the
> scanner code: a huge state machine implemented in a single method that
> consumes the source code of a programming language. To compile the
> method SmaCC repeatedly applies the "extract method" refactoring to
> reduce the code into nicely sized (but still efficient) methods.
>
> Lukas
>

Of course, that would have been a nice option too (more general).
Above code is from 1994, not sure what was the status of SmaCC at that time...
In case of symbolic expressions, more agressive transformation could
occur, like common subexpression elimination...
(run on symbolic expression tree rather than AST, because knowing
there would be no side effect).

Nicolas


> 2009/12/21 Nicolas Cellier <[hidden email]>:
>> 2009/12/20 Igor Stasenko <[hidden email]>:
>>> 2009/12/20 Marcus Denker <[hidden email]>:
>>>>
>>>> On Dec 20, 2009, at 8:44 PM, Bart Gauquie wrote:
>>>>
>>>>> Dear all,
>>>>>
>>>>> I'm developing code which generates a method content, compiles it and adds it to an existing class.
>>>>> I compile the message using #compile: message:
>>>>> for instance:
>>>>>
>>>> In general, everything is limited to a fairly low quantity: number of temps, number of ivars, number of
>>>> literals.
>>>>
>>>> Especially that the literal frame is limted to some small number (255 or something) can be easily be a problem.
>>>> (we ran into that already when using bytesurgeon on large existing methods when reifying all sends, for example).
>>>>
>>>
>>> To get around this, place all literals into one (usually array):
>>> #( a b c d e ..... )
>>>
>>> For instance, the above:
>>>  self addMMEFrom: 1054@512 to: 1037@504.
>>>  self addMMEFrom: 651@559 to: 643@579.
>>>
>>> can be easily replaced by something like:
>>>
>>> #( (1054 512 1037 504)
>>>    ..... put as many as you want here.... no limit!!!
>>>
>>>    (651 559 643 579) ) do: [:each |
>>> self addMMEFrom: (each first @ each second) to: (each third @ each fourth)
>>> ]
>>>
>>>>        Marcus
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko AKA sig.
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>> Hehe, when generating code for evaluating monster symbolic
>> expressions, I bumped into many of these limitations.
>> Using a literal Array was not enough because even the indices would
>> consume a literal slot. So i had to decompose indices into
>> operations...  Oh, and even some message sends had to be transformed
>> in #perform: sends (not shown here)...
>> Here is a fragment of code for allocating a literal slot (in
>> Objectworks, an ancestor of VW).
>>
>> Nicolas
>>
>> CodeStream subclass: #ExtendedCodeStream
>>        instanceVariableNames: 'reduceLiterals'
>>        classVariableNames: 'MaxLiteralIndex '
>>        poolDictionaries: 'OpcodePool '
>>        category: 'System-Compiler'
>>
>> ExtendedCodeStream>>pushReducedConstant: lit
>>        "Handle MaxLiteralsNumber"
>>
>>        | classIndex newClassArray litIndex |
>>        self push.
>>        lit == nil
>>                ifTrue:
>>                        [code nextPut: OpLoadNil.
>>                        ^self].
>>        lit == true
>>                ifTrue:
>>                        [code nextPut: OpLoadTrue.
>>                        ^self].
>>        lit == false
>>                ifTrue:
>>                        [code nextPut: OpLoadFalse.
>>                        ^self].
>>        lit isInteger
>>                ifTrue:
>>                        [(lit >= 0 and: [lit <= 2])
>>                                ifTrue:
>>                                        [code nextPut: OpLoadZero + lit.
>>                                        ^self].
>>                        (lit >= 0 and: [lit <= 255])
>>                                ifTrue:
>>                                        [code nextPut: OpLoadByte with: lit.
>>                                        ^self].
>>                        (lit >= -32768 and: [lit < 32768])
>>                                ifTrue:
>>                                        [code
>>                                                nextPut: OpLoadTwoBytes
>>                                                with: ((lit bitShift: -8)
>>                                                                bitAnd: 255)
>>                                                with: (lit bitAnd: 255).
>>                                        ^self]].
>>        ((lit isMemberOf: Character)
>>                and: [lit asInteger between: 0 and: 255])
>>                ifTrue:
>>                        [code nextPut: OpLoadCharacter with: lit asInteger.
>>                        ^self].
>>        classIndex := literals at: lit class
>>                                ifAbsent:
>>                                        ["Add the literal class array to the collection"
>>                                        literalCollection addLast: Array new.
>>                                        literals at: lit class put: literalCollection size - 1].
>>        classIndex > MaxLiteralIndex
>>                ifTrue:
>>                        [Errorscript cr; show: 'compilation failure: too many literal classes...'.
>>                        self class literalLimitSignal raiseWith: topNode body].
>>        classIndex <= MaxLoadLiteral
>>                ifTrue: [code nextPut: OpLoadLiteral + classIndex]
>>                ifFalse: [code nextPut: OpXLoadLiteral with: classIndex].
>>        newClassArray := literalCollection at: classIndex + 1.
>>        litIndex := newClassArray indexOf: lit ifAbsent: [0].
>>        litIndex = 0
>>                ifTrue:
>>                        [newClassArray := newClassArray copyWith: lit.
>>                        literalCollection at: classIndex + 1 put: newClassArray.
>>                        litIndex := newClassArray size].
>>        self pushBigIndex: litIndex.
>>        self sendNoCheck: #at: numArgs: 1
>>
>> ExtendedCodeStream>>pushBigIndex: index
>>        "i do not want the index to figure in literalCollection
>>        so it must remain < 32768"
>>
>>        | q r |
>>        index < 32768 ifTrue: [^self pushConstant: index].
>>        q := index // 32768.
>>        r := index - (q * 32768).
>>        self pushConstant: 32767; pushConstant: 1; sendNoCheck: #+ numArgs: 1.
>>        q = 1 ifFalse: [self pushBigIndex: q; sendNoCheck: #* numArgs: 1].
>>        r = 0 ifFalse: [self pushConstant: r; sendNoCheck: #+ numArgs: 1].
>>
>> ExtendedCodeStream>>pushStatic: binding
>>        "Static variables do normally consume a literal slot.
>>        Arrange to economize this precious ressource"
>>
>>        reduceLiterals
>>                ifTrue:
>>                        [self pushReducedConstant: binding.
>>                        self sendNoCheck: #value numArgs: 0]
>>                ifFalse: [super pushStatic: binding]
>>
>> ExtendedCodeStream>>pushConstant: lit
>>        "Handle MaxLiteralsIndex"
>>
>>        reduceLiterals ifTrue: [^self pushReducedConstant: lit].
>>        super pushConstant: lit.
>>
>> ExtendedCodeStream>>testLiteralsSize
>>        "Restart compilation if literal limit is exceeded"
>>
>>        literalCollection size > MaxLiteralIndex ifTrue: [reduceLiterals
>>                        ifTrue: [self class literalLimitSignal raiseWith: topNode body]
>>                        ifFalse: [self doReduceLiterals; restartCompilation]]
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
>
> --
> Lukas Renggli
> http://www.lukas-renggli.ch
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Long method can not be compiled using #compile: aString

Eliot Miranda-2
In reply to this post by Bart Gauquie
Hi Bart,

    I still want to take a look at this specific case because the compiler should produce a proper error message, not an internal error.  So could you please package it up as a reproducible case, or email me the full string that fails?

TIA


2009/12/20 Bart Gauquie <[hidden email]>
Dear all,

I'm developing code which generates a method content, compiles it and adds it to an existing class. 
I compile the message using #compile: message:
for instance:

MorphicReplayDemoTest compile: '
testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 651@559 to: 643@579.
'.

This works fine. However if the contents of the method is too long; for instance: 
if the self addMMEFrom: 1054@512 to: 1037@504. is repeated around 250 times; I get following error (see stack below)

The strange thing is that if I manually add that method using the editor and paste it, it works just fine. I even tested up to 5000 lines of code; its slow, but its working.

Any ideas how to solve this?

Thanks,

Bart

I'm using Pharo 1.0 rc update: 10502; using Ubuntu 9.10, using vm pharo-vm-0.15.2f-linux.

THERE_BE_DRAGONS_HERE
MessageNotUnderstood: receiver of "<" is nil
20 December 2009 8:17:14 pm

VM: unix - i686 - linux-gnu - Pharo0.1 of 16 May 2008 [latest update: #10074]
Image: PharoCore1.0rc1 [Latest update: #10502]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image
Trusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image/secure
Untrusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image/My Squeak

UndefinedObject(Object)>>doesNotUnderstand: #<
Receiver: nil
Arguments and temporary variables:
aMessage: < 0
exception: MessageNotUnderstood: receiver of "<" is nil
resumeValue: nil
Receiver's instance variables:
nil

EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
literalIndex: nil
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
genSelector: #genPushLiteral:
args: #(nil)
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
literalIndex: nil
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

LiteralNode>>sizeCodeForValue:
Receiver: {397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
key: 397
code: -3
index: nil

[] in MessageNode>>sizeCodeForValue:
Receiver: {1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {1092}
selector: {@}
precedence: 2
special: 0
arguments: #({397})
sizes: #(nil)
equalNode: nil
caseErrorNode: nil

Array(SequenceableCollection)>>collect:
Receiver: #({397})
Arguments and temporary variables:
aBlock: [closure] in MessageNode>>sizeCodeForValue:
newCollection: #(nil)
index: 1
indexLimiT: 1
Receiver's instance variables:
#({397})

MessageNode>>sizeCodeForValue:
Receiver: {1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {1092}
selector: {@}
precedence: 2
special: 0
arguments: #({397})
sizes: #(nil)
equalNode: nil
caseErrorNode: nil

[] in MessageNode>>sizeCodeForValue:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

OrderedCollection>>collect:
Receiver: an OrderedCollection({1140 @ 387} {1092 @ 397})
Arguments and temporary variables:
aBlock: [closure] in MessageNode>>sizeCodeForValue:
newCollection: an OrderedCollection(7)
index: 4
Receiver's instance variables:
array: an Array(nil nil {1140 @ 387} {1092 @ 397} nil nil nil nil nil nil)
firstIndex: 3
lastIndex: 4

MessageNode>>sizeCodeForValue:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

MessageNode(ParseNode)>>sizeCodeForEffect:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

MessageNode>>sizeCodeForEffect:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

BlockNode>>sizeCodeExceptLast:
Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 979 @ 482.
...etc...
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
codeSize: 2564
i: 169
statement: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
iLimiT: 287
Receiver's instance variables:
comment: nil
pc: nil
arguments: #()
statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @ 504} {...etc...
returns: true
nArgsNode: nil
size: nil
remoteCopyNode: nil
temporaries: an OrderedCollection()
optimized: false
actualScopeIfOptimized: nil
blockExtent: (0 to: 2)
remoteTempNode: nil
copiedValues: nil
closureCreationNode: nil
startOfLastStatement: 11519

BlockNode>>sizeCodeForEvaluatedValue:
Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 979 @ 482.
...etc...
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
arguments: #()
statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @ 504} {...etc...
returns: true
nArgsNode: nil
size: nil
remoteCopyNode: nil
temporaries: an OrderedCollection()
optimized: false
actualScopeIfOptimized: nil
blockExtent: (0 to: 2)
remoteTempNode: nil
copiedValues: nil
closureCreationNode: nil
startOfLastStatement: 11519

BytecodeAgnosticMethodNode>>generate:
Receiver: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 9...etc...
Arguments and temporary variables:
trailer: #(0 0 0 0)
primErrNode: nil
blkSize: nil
nLits: nil
literals: nil
stack: nil
method: nil
locals: nil
lit: nil
Receiver's instance variables:
comment: nil
pc: nil
selectorOrFalse: #testMethod
precedence: 1
arguments: #()
block: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 5...etc...
primitive: 0
encoder: {an EncoderForV3PlusClosures}
temporaries: #()
properties: an AdditionalMethodState
sourceText: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFr...etc...
locationCounter: 3
localsPool: an IdentitySet()

CompiledMethodWithNode class>>generateMethodFromNode:trailer:
Receiver: CompiledMethodWithNode
Arguments and temporary variables:
aMethodNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addM...etc...
bytes: #(0 0 0 0)
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary(#method->a CompiledMethod(650: CompiledMethodWit...etc...
format: 134
instanceVariables: #('node' 'method')
organization: ('accessing' method node selector)
('private' method: node:)

subclasses: nil
name: #CompiledMethodWithNode
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'Compiler-Support'
traitComposition: nil
localSelectors: nil

MorphicReplayDemoTest class(Behavior)>>compile:classified:notifying:trailer:ifFail:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
requestor: nil
bytes: #(0 0 0 0)
failBlock: [closure] in MorphicReplayDemoTest class(ClassDescription)>>compile:...etc...
methodNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMM...etc...
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
changeStamp: 'BartGauquie 12/20/2009 20:17'
requestor: nil
logSource: true
methodAndNode: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
changeStamp: 'BartGauquie 12/20/2009 20:17'
requestor: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
requestor: nil
stamp: 'BartGauquie 12/20/2009 20:17'
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
requestor: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(Behavior)>>compile:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

ByteString>>DoIt
Receiver: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 1037@504 to: 979@48...etc...
Arguments and temporary variables:

Receiver's instance variables:
'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 1037@504 to: 979@48...etc...

Compiler>>evaluate:in:to:notifying:ifFail:logged:
Receiver: a Compiler
Arguments and temporary variables:
textOrStream: a ReadWriteStream 'MorphicReplayDemoTest
compile: self.'
aContext: nil
receiver: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom...etc...
aRequestor: a TextMorphEditor
failBlock: [closure] in [] in TextMorphEditor(ParagraphEditor)>>evaluateSelecti...etc...
logFlag: true
methodNode: DoIt
^ MorphicReplayDemoTest compile: self
method: a CompiledMethod(2378: ByteString>>DoIt)
value: nil
toLog: nil
itsSelection: nil
itsSelectionString: nil
Receiver's instance variables:
sourceStream: a ReadWriteStream 'MorphicReplayDemoTest
compile: self.'
requestor: a TextMorphEditor
class: ByteString
category: nil
context: nil
parser: a Parser

[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
Receiver: a TextMorphEditor
Arguments and temporary variables:
rcvr: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
ctxt: nil
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

BlockClosure>>on:do:
Receiver: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
Arguments and temporary variables:
exception: OutOfScopeNotification
handlerAction: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection...etc...
handlerActive: true
Receiver's instance variables:
outerContext: TextMorphEditor(ParagraphEditor)>>evaluateSelection
startpc: 116
numArgs: 0

TextMorphEditor(ParagraphEditor)>>evaluateSelection
Receiver: a TextMorphEditor
Arguments and temporary variables:
result: nil
rcvr: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
ctxt: nil
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>doIt
Receiver: a TextMorphEditor
Arguments and temporary variables:

Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

[] in TextMorphEditor(ParagraphEditor)>>doIt:
Receiver: a TextMorphEditor
Arguments and temporary variables:

Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
Receiver: a TextMorphEditor
Arguments and temporary variables:
aBlock: [closure] in TextMorphEditor(ParagraphEditor)>>doIt:
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>doIt:
Receiver: a TextMorphEditor
Arguments and temporary variables:
characterStream: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAheadStream: a WriteStream ''
honorCommandKeys: true
keyValue: 100
keyChar: $d
char: $d
action: #doIt:
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor>>dispatchOnKeyEvent:with:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAheadStream: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>keystroke:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAhead: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor>>keystroke:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

[] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
evt: [keystroke '<Cmd-d>']
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false

TextMorphForEditView(TextMorph)>>handleInteraction:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
interactionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc...
oldEditor: a TextMorphEditor
oldParagraph: a MultiNewParagraph
oldText: a Text for 'MorphicReplayDemoTest
compile: self.'
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false

TextMorphForEditView>>handleInteraction:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
interActionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc...
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false


--- The full stack ---
UndefinedObject(Object)>>doesNotUnderstand: #<
EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
LiteralNode>>sizeCodeForValue:
[] in MessageNode>>sizeCodeForValue:
Array(SequenceableCollection)>>collect:
MessageNode>>sizeCodeForValue:
[] in MessageNode>>sizeCodeForValue:
OrderedCollection>>collect:
MessageNode>>sizeCodeForValue:
MessageNode(ParseNode)>>sizeCodeForEffect:
MessageNode>>sizeCodeForEffect:
BlockNode>>sizeCodeExceptLast:
BlockNode>>sizeCodeForEvaluatedValue:
BytecodeAgnosticMethodNode>>generate:
CompiledMethodWithNode class>>generateMethodFromNode:trailer:
MorphicReplayDemoTest class(Behavior)>>compile:classified:notifying:trailer:ifFail:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:notifying:
MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
MorphicReplayDemoTest class(Behavior)>>compile:
ByteString>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
BlockClosure>>on:do:
TextMorphEditor(ParagraphEditor)>>evaluateSelection
TextMorphEditor(ParagraphEditor)>>doIt
[] in TextMorphEditor(ParagraphEditor)>>doIt:
TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
TextMorphEditor(ParagraphEditor)>>doIt:
TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
TextMorphEditor>>dispatchOnKeyEvent:with:
TextMorphEditor(ParagraphEditor)>>keystroke:
TextMorphEditor>>keystroke:
[] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView(TextMorph)>>handleInteraction:
TextMorphForEditView>>handleInteraction:
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - -
[] in TextMorphForEditView(TextMorph)>>keyStroke:
ECToolSet class>>codeCompletionAround:textMorph:keyStroke:
DEVToolSet class>>codeCompletionAround:textMorph:keyStroke:
ToolSet class>>codeCompletionAround:textMorph:keyStroke:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear:
[] in PasteUpMorph>>becomeActiveDuring:
BlockClosure>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess
[] in BlockClosure>>newProcess
-----------------------------------------------------------


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Long method can not be compiled using #compile: aString

Bart Gauquie
Hi,  


Then for instance following fails if I evaluate it in a workspace:

MorphicReplayDemoTest compile: 
'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 1037@504 to: 979@482.
self addMMEFrom: 979@482 to: 905@464.
self addMMEFrom: 905@464 to: 823@462.
self addMMEFrom: 823@462 to: 745@482.
self addMMEFrom: 745@482 to: 685@520.
self addMMEFrom: 685@520 to: 651@559.
self addMMEFrom: 651@559 to: 643@579.
self addMMEFrom: 643@579 to: 653@579.
self addMMEFrom: 653@579 to: 675@564.
self addMMEFrom: 675@564 to: 810@452.
self addMMEFrom: 810@452 to: 923@353.
self addMMEFrom: 923@353 to: 1005@287.
self addMMEFrom: 1005@287 to: 1052@257.
self addMMEFrom: 1052@257 to: 1061@252.
self addMMEFrom: 1061@252 to: 1059@259.
self addMMEFrom: 1059@259 to: 998@314.
self addMMEFrom: 998@314 to: 898@414.
self addMMEFrom: 898@414 to: 827@502.
self addMMEFrom: 827@502 to: 789@570.
self addMMEFrom: 789@570 to: 792@610.
self addMMEFrom: 792@610 to: 839@630.
self addMMEFrom: 839@630 to: 929@620.
self addMMEFrom: 929@620 to: 1039@579.
self addMMEFrom: 1039@579 to: 1086@549.
self addMMEFrom: 1086@549 to: 1158@447.
self addMMEFrom: 1158@447 to: 1147@379.
self addMMEFrom: 1147@379 to: 1066@377.
self addMMEFrom: 1066@377 to: 930@416.
self addMMEFrom: 930@416 to: 864@446.
self addMMEFrom: 864@446 to: 734@530.
self addMMEFrom: 734@530 to: 714@548.
self addMMEFrom: 714@548 to: 734@546.
self addMMEFrom: 734@546 to: 815@515.
self addMMEFrom: 815@515 to: 875@491.
self addMMEFrom: 875@491 to: 1065@407.
self addMMEFrom: 1065@407 to: 1128@361.
self addMMEFrom: 1128@361 to: 1142@343.
self addMMEFrom: 1142@343 to: 1112@340.
self addMMEFrom: 1112@340 to: 1064@349.
self addMMEFrom: 1064@349 to: 864@416.
self addMMEFrom: 864@416 to: 757@471.
self addMMEFrom: 757@471 to: 705@511.
self addMMEFrom: 705@511 to: 701@524.
self addMMEFrom: 701@524 to: 743@528.
self addMMEFrom: 743@528 to: 845@509.
self addMMEFrom: 845@509 to: 914@493.
self addMMEFrom: 914@493 to: 1101@446.
self addMMEFrom: 1101@446 to: 1154@427.
self addMMEFrom: 1154@427 to: 1163@423.
self addMMEFrom: 1163@423 to: 1156@422.
self addMMEFrom: 1156@422 to: 1129@424.
self addMMEFrom: 1129@424 to: 923@449.
self addMMEFrom: 923@449 to: 785@479.
self addMMEFrom: 785@479 to: 689@503.
self addMMEFrom: 689@503 to: 651@512.
self addMMEFrom: 651@512 to: 650@512.
self addMMEFrom: 650@512 to: 672@508.
self addMMEFrom: 672@508 to: 773@492.
self addMMEFrom: 773@492 to: 916@486.
self addMMEFrom: 916@486 to: 1066@494.
self addMMEFrom: 1066@494 to: 1175@508.
self addMMEFrom: 1175@508 to: 1229@514.
self addMMEFrom: 1229@514 to: 1232@514.
self addMMEFrom: 1232@514 to: 1142@492.
self addMMEFrom: 1142@492 to: 986@483.
self addMMEFrom: 986@483 to: 810@498.
self addMMEFrom: 810@498 to: 678@519.
self addMMEFrom: 678@519 to: 637@523.
self addMMEFrom: 637@523 to: 606@502.
self addMMEFrom: 606@502 to: 659@442.
self addMMEFrom: 659@442 to: 769@365.
self addMMEFrom: 769@365 to: 911@316.
self addMMEFrom: 911@316 to: 1052@318.
self addMMEFrom: 1052@318 to: 1129@360.
self addMMEFrom: 1129@360 to: 1153@403.
self addMMEFrom: 1153@403 to: 1127@443.
self addMMEFrom: 1127@443 to: 1015@491.
self addMMEFrom: 1015@491 to: 850@536.
self addMMEFrom: 850@536 to: 697@571.
self addMMEFrom: 697@571 to: 642@578.
self addMMEFrom: 642@578 to: 571@545.
self addMMEFrom: 571@545 to: 604@485.
self addMMEFrom: 604@485 to: 701@419.
self addMMEFrom: 701@419 to: 843@383.
self addMMEFrom: 843@383 to: 919@383.
self addMMEFrom: 919@383 to: 1095@425.
self addMMEFrom: 1095@425 to: 1126@443.
self addMMEFrom: 1126@443 to: 1102@449.
self addMMEFrom: 1102@449 to: 984@468.
self addMMEFrom: 984@468 to: 829@509.
self addMMEFrom: 829@509 to: 703@547.
self addMMEFrom: 703@547 to: 637@555.
self addMMEFrom: 637@555 to: 633@531.
self addMMEFrom: 633@531 to: 694@468.
self addMMEFrom: 694@468 to: 809@407.
self addMMEFrom: 809@407 to: 946@380.
self addMMEFrom: 946@380 to: 1011@378.
self addMMEFrom: 1011@378 to: 1119@393.
self addMMEFrom: 1119@393 to: 1110@393.
self addMMEFrom: 1110@393 to: 1010@388.
self addMMEFrom: 1010@388 to: 859@402.
self addMMEFrom: 859@402 to: 727@433.
self addMMEFrom: 727@433 to: 665@454.
self addMMEFrom: 665@454 to: 663@461.
self addMMEFrom: 663@461 to: 683@469.
self addMMEFrom: 683@469 to: 837@492.
self addMMEFrom: 837@492 to: 989@495.
self addMMEFrom: 989@495 to: 1103@476.
self addMMEFrom: 1103@476 to: 1153@433.
self addMMEFrom: 1153@433 to: 1163@404.
self addMMEFrom: 1163@404 to: 1147@307.
self addMMEFrom: 1147@307 to: 1086@294.
self addMMEFrom: 1086@294 to: 995@324.
self addMMEFrom: 995@324 to: 935@357.
self addMMEFrom: 935@357 to: 922@366.
self addMMEFrom: 922@366 to: 925@370.
self addMMEFrom: 925@370 to: 941@379.
self addMMEFrom: 941@379 to: 974@389.
self addMMEFrom: 974@389 to: 1010@399.
self addMMEFrom: 1010@399 to: 1036@408.
self addMMEFrom: 1036@408 to: 1052@414.
self addMMEFrom: 1052@414 to: 1056@416.
self addMMEFrom: 1056@416 to: 1061@418.
self addMMEFrom: 1061@418 to: 1068@419.
self addMMEFrom: 1068@419 to: 1078@418.
self addMMEFrom: 1078@418 to: 1086@414.
self addMMEFrom: 1086@414 to: 1089@411.
self addMMEFrom: 1089@411 to: 1095@404.
self addMMEFrom: 1095@404 to: 1097@404.
self addMMEFrom: 1097@404 to: 1099@406.
self addMMEFrom: 1099@406 to: 1100@407.
self addMMEFrom: 1100@407 to: 1101@408.
self addMMEFrom: 1101@408 to: 1101@409.
self addMMEFrom: 1101@409 to: 1101@410.
self addMMEFrom: 1101@410 to: 1102@411.
self addMMEFrom: 1102@411 to: 1104@412.
self addMMEFrom: 1104@412 to: 1106@411.
self addMMEFrom: 1106@411 to: 1110@409.
self addMMEFrom: 1110@409 to: 1112@408.
self addMMEFrom: 1112@408 to: 1114@407.
self addMMEFrom: 1114@407 to: 1115@408.
self addMMEFrom: 1115@408 to: 1115@408.
self addMMEFrom: 1115@408 to: 1115@407.
MouseButtonEvent new.
MouseButtonEvent new.
self addMMEFrom: 1131@401 to: 1129@403.
self addMMEFrom: 1129@403 to: 1121@408.
self addMMEFrom: 1121@408 to: 1106@416.
self addMMEFrom: 1106@416 to: 1084@426.
self addMMEFrom: 1084@426 to: 1051@443.
self addMMEFrom: 1051@443 to: 1019@470.
self addMMEFrom: 1019@470 to: 995@504.
self addMMEFrom: 995@504 to: 981@546.
self addMMEFrom: 981@546 to: 980@592.
self addMMEFrom: 980@592 to: 990@634.
self addMMEFrom: 990@634 to: 1012@665.
self addMMEFrom: 1012@665 to: 1043@680.
self addMMEFrom: 1043@680 to: 1076@677.
self addMMEFrom: 1076@677 to: 1132@658.
self addMMEFrom: 1132@658 to: 1189@626.
self addMMEFrom: 1189@626 to: 1205@606.
self addMMEFrom: 1205@606 to: 1222@543.
self addMMEFrom: 1222@543 to: 1219@504.
self addMMEFrom: 1219@504 to: 1207@464.
self addMMEFrom: 1207@464 to: 1190@425.
self addMMEFrom: 1190@425 to: 1180@409.
self addMMEFrom: 1180@409 to: 1140@387.
self addMMEFrom: 1140@387 to: 1092@397.
self addMMEFrom: 1092@397 to: 1044@424.
self addMMEFrom: 1044@424 to: 1004@464.
self addMMEFrom: 1004@464 to: 977@513.
self addMMEFrom: 977@513 to: 965@565.
self addMMEFrom: 965@565 to: 965@614.
self addMMEFrom: 965@614 to: 977@656.
self addMMEFrom: 977@656 to: 1001@689.
self addMMEFrom: 1001@689 to: 1035@709.
self addMMEFrom: 1035@709 to: 1067@714.
self addMMEFrom: 1067@714 to: 1094@710.
self addMMEFrom: 1094@710 to: 1219@673.
self addMMEFrom: 1219@673 to: 1254@635.
self addMMEFrom: 1254@635 to: 1269@594.
self addMMEFrom: 1269@594 to: 1277@552.
self addMMEFrom: 1277@552 to: 1277@530.
self addMMEFrom: 1277@530 to: 1251@459.
self addMMEFrom: 1251@459 to: 1215@418.
self addMMEFrom: 1215@418 to: 1180@389.
self addMMEFrom: 1180@389 to: 1143@377.
self addMMEFrom: 1143@377 to: 1092@379.
self addMMEFrom: 1092@379 to: 1041@397.
self addMMEFrom: 1041@397 to: 1019@410.
self addMMEFrom: 1019@410 to: 972@460.
self addMMEFrom: 972@460 to: 955@499.
self addMMEFrom: 955@499 to: 951@541.
self addMMEFrom: 951@541 to: 954@580.
self addMMEFrom: 954@580 to: 960@597.
self addMMEFrom: 960@597 to: 991@639.
self addMMEFrom: 991@639 to: 1027@657.
self addMMEFrom: 1027@657 to: 1066@666.
self addMMEFrom: 1066@666 to: 1122@665.
self addMMEFrom: 1122@665 to: 1199@651.
self addMMEFrom: 1199@651 to: 1245@625.
self addMMEFrom: 1245@625 to: 1270@596.
self addMMEFrom: 1270@596 to: 1284@565.
self addMMEFrom: 1284@565 to: 1287@528.
self addMMEFrom: 1287@528 to: 1275@486.
self addMMEFrom: 1275@486 to: 1242@445.
self addMMEFrom: 1242@445 to: 1204@412.
self addMMEFrom: 1204@412 to: 1171@390.
self addMMEFrom: 1171@390 to: 1126@383.
self addMMEFrom: 1126@383 to: 1083@394.
self addMMEFrom: 1083@394 to: 1040@420.
self addMMEFrom: 1040@420 to: 1025@438.
self addMMEFrom: 1025@438 to: 996@506.
self addMMEFrom: 996@506 to: 992@555.
self addMMEFrom: 992@555 to: 999@596.
self addMMEFrom: 999@596 to: 1015@629.
self addMMEFrom: 1015@629 to: 1027@641.
self addMMEFrom: 1027@641 to: 1068@658.
self addMMEFrom: 1068@658 to: 1115@655.
self addMMEFrom: 1115@655 to: 1184@640.
self addMMEFrom: 1184@640 to: 1234@616.
self addMMEFrom: 1234@616 to: 1266@589.
self addMMEFrom: 1266@589 to: 1290@555.
self addMMEFrom: 1290@555 to: 1301@518.
self addMMEFrom: 1301@518 to: 1296@474.
self addMMEFrom: 1296@474 to: 1267@430.
self addMMEFrom: 1267@430 to: 1223@392.
self addMMEFrom: 1223@392 to: 1187@370.
self addMMEFrom: 1187@370 to: 1172@366.
self addMMEFrom: 1172@366 to: 1115@375.
self addMMEFrom: 1115@375 to: 1076@397.
self addMMEFrom: 1076@397 to: 1046@429.
self addMMEFrom: 1046@429 to: 1027@468.
self addMMEFrom: 1027@468 to: 1022@489.
self addMMEFrom: 1022@489 to: 1023@545.
self addMMEFrom: 1023@545 to: 1033@567.
self addMMEFrom: 1033@567 to: 1061@590.
self addMMEFrom: 1061@590 to: 1104@603.
self addMMEFrom: 1104@603 to: 1165@605.
self addMMEFrom: 1165@605 to: 1220@593.
self addMMEFrom: 1220@593 to: 1258@571.
self addMMEFrom: 1258@571 to: 1284@543.
self addMMEFrom: 1284@543 to: 1298@509.
self addMMEFrom: 1298@509 to: 1299@466.
self addMMEFrom: 1299@466 to: 1276@414.
self addMMEFrom: 1276@414 to: 1255@390.
self addMMEFrom: 1255@390 to: 1189@340.
self addMMEFrom: 1189@340 to: 1148@334.
self addMMEFrom: 1148@334 to: 1094@346.
self addMMEFrom: 1094@346 to: 1051@373.
self addMMEFrom: 1051@373 to: 1021@412.
self addMMEFrom: 1021@412 to: 1006@457.
self addMMEFrom: 1006@457 to: 1002@506.
self addMMEFrom: 1002@506 to: 1006@557.
self addMMEFrom: 1006@557 to: 1012@581.
self addMMEFrom: 1012@581 to: 1041@637.
self addMMEFrom: 1041@637 to: 1070@657.
self addMMEFrom: 1070@657 to: 1127@660.
self addMMEFrom: 1127@660 to: 1209@644.
self addMMEFrom: 1209@644 to: 1234@630.
self addMMEFrom: 1234@630 to: 1284@569.
self addMMEFrom: 1284@569 to: 1302@521.
self addMMEFrom: 1302@521 to: 1304@466.
self addMMEFrom: 1304@466 to: 1286@410.
self addMMEFrom: 1286@410 to: 1247@369.
self addMMEFrom: 1247@369 to: 1208@347.
self addMMEFrom: 1208@347 to: 1196@342.
self addMMEFrom: 1196@342 to: 1170@346.
self addMMEFrom: 1170@346 to: 1151@356.
self addMMEFrom: 1151@356 to: 1137@363.
self addMMEFrom: 1137@363 to: 1133@366.
self addMMEFrom: 1133@366 to: 1133@366.
self addMMEFrom: 1133@366 to: 1135@372.
self addMMEFrom: 1135@372 to: 1133@381.
self addMMEFrom: 1133@381 to: 1128@393.
self addMMEFrom: 1128@393 to: 1126@399.
self addMMEFrom: 1126@399 to: 1125@401.
self addMMEFrom: 1125@401 to: 1125@401.
self addMMEFrom: 1125@401 to: 1125@400.
self addMMEFrom: 1125@400 to: 1124@401.
self addMMEFrom: 1124@401 to: 1124@403.
self addMMEFrom: 1124@403 to: 1124@404.
self addMMEFrom: 1124@404 to: 1124@405.
self addMMEFrom: 1124@405 to: 1124@404.
MouseButtonEvent new.
MouseButtonEvent new.
'

These are autogenerated contents I want to export as a test case. The strange thing is that, if I manually create the testMethod using the system browser, and paste the content in it; it works fine.

Kind Regards,

Bart

2009/12/21 Eliot Miranda <[hidden email]>
Hi Bart,

    I still want to take a look at this specific case because the compiler should produce a proper error message, not an internal error.  So could you please package it up as a reproducible case, or email me the full string that fails?

TIA


2009/12/20 Bart Gauquie <[hidden email]>
Dear all,

I'm developing code which generates a method content, compiles it and adds it to an existing class. 
I compile the message using #compile: message:
for instance:

MorphicReplayDemoTest compile: '
testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 651@559 to: 643@579.
'.

This works fine. However if the contents of the method is too long; for instance: 
if the self addMMEFrom: 1054@512 to: 1037@504. is repeated around 250 times; I get following error (see stack below)

The strange thing is that if I manually add that method using the editor and paste it, it works just fine. I even tested up to 5000 lines of code; its slow, but its working.

Any ideas how to solve this?

Thanks,

Bart

I'm using Pharo 1.0 rc update: 10502; using Ubuntu 9.10, using vm pharo-vm-0.15.2f-linux.

THERE_BE_DRAGONS_HERE
MessageNotUnderstood: receiver of "<" is nil
20 December 2009 8:17:14 pm

VM: unix - i686 - linux-gnu - Pharo0.1 of 16 May 2008 [latest update: #10074]
Image: PharoCore1.0rc1 [Latest update: #10502]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image
Trusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image/secure
Untrusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image/My Squeak

UndefinedObject(Object)>>doesNotUnderstand: #<
Receiver: nil
Arguments and temporary variables:
aMessage: < 0
exception: MessageNotUnderstood: receiver of "<" is nil
resumeValue: nil
Receiver's instance variables:
nil

EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
literalIndex: nil
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
genSelector: #genPushLiteral:
args: #(nil)
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
literalIndex: nil
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

LiteralNode>>sizeCodeForValue:
Receiver: {397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
key: 397
code: -3
index: nil

[] in MessageNode>>sizeCodeForValue:
Receiver: {1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {1092}
selector: {@}
precedence: 2
special: 0
arguments: #({397})
sizes: #(nil)
equalNode: nil
caseErrorNode: nil

Array(SequenceableCollection)>>collect:
Receiver: #({397})
Arguments and temporary variables:
aBlock: [closure] in MessageNode>>sizeCodeForValue:
newCollection: #(nil)
index: 1
indexLimiT: 1
Receiver's instance variables:
#({397})

MessageNode>>sizeCodeForValue:
Receiver: {1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {1092}
selector: {@}
precedence: 2
special: 0
arguments: #({397})
sizes: #(nil)
equalNode: nil
caseErrorNode: nil

[] in MessageNode>>sizeCodeForValue:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

OrderedCollection>>collect:
Receiver: an OrderedCollection({1140 @ 387} {1092 @ 397})
Arguments and temporary variables:
aBlock: [closure] in MessageNode>>sizeCodeForValue:
newCollection: an OrderedCollection(7)
index: 4
Receiver's instance variables:
array: an Array(nil nil {1140 @ 387} {1092 @ 397} nil nil nil nil nil nil)
firstIndex: 3
lastIndex: 4

MessageNode>>sizeCodeForValue:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

MessageNode(ParseNode)>>sizeCodeForEffect:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

MessageNode>>sizeCodeForEffect:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

BlockNode>>sizeCodeExceptLast:
Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 979 @ 482.
...etc...
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
codeSize: 2564
i: 169
statement: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
iLimiT: 287
Receiver's instance variables:
comment: nil
pc: nil
arguments: #()
statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @ 504} {...etc...
returns: true
nArgsNode: nil
size: nil
remoteCopyNode: nil
temporaries: an OrderedCollection()
optimized: false
actualScopeIfOptimized: nil
blockExtent: (0 to: 2)
remoteTempNode: nil
copiedValues: nil
closureCreationNode: nil
startOfLastStatement: 11519

BlockNode>>sizeCodeForEvaluatedValue:
Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 979 @ 482.
...etc...
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
arguments: #()
statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @ 504} {...etc...
returns: true
nArgsNode: nil
size: nil
remoteCopyNode: nil
temporaries: an OrderedCollection()
optimized: false
actualScopeIfOptimized: nil
blockExtent: (0 to: 2)
remoteTempNode: nil
copiedValues: nil
closureCreationNode: nil
startOfLastStatement: 11519

BytecodeAgnosticMethodNode>>generate:
Receiver: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 9...etc...
Arguments and temporary variables:
trailer: #(0 0 0 0)
primErrNode: nil
blkSize: nil
nLits: nil
literals: nil
stack: nil
method: nil
locals: nil
lit: nil
Receiver's instance variables:
comment: nil
pc: nil
selectorOrFalse: #testMethod
precedence: 1
arguments: #()
block: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 5...etc...
primitive: 0
encoder: {an EncoderForV3PlusClosures}
temporaries: #()
properties: an AdditionalMethodState
sourceText: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFr...etc...
locationCounter: 3
localsPool: an IdentitySet()

CompiledMethodWithNode class>>generateMethodFromNode:trailer:
Receiver: CompiledMethodWithNode
Arguments and temporary variables:
aMethodNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addM...etc...
bytes: #(0 0 0 0)
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary(#method->a CompiledMethod(650: CompiledMethodWit...etc...
format: 134
instanceVariables: #('node' 'method')
organization: ('accessing' method node selector)
('private' method: node:)

subclasses: nil
name: #CompiledMethodWithNode
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'Compiler-Support'
traitComposition: nil
localSelectors: nil

MorphicReplayDemoTest class(Behavior)>>compile:classified:notifying:trailer:ifFail:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
requestor: nil
bytes: #(0 0 0 0)
failBlock: [closure] in MorphicReplayDemoTest class(ClassDescription)>>compile:...etc...
methodNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMM...etc...
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
changeStamp: 'BartGauquie 12/20/2009 20:17'
requestor: nil
logSource: true
methodAndNode: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
changeStamp: 'BartGauquie 12/20/2009 20:17'
requestor: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
requestor: nil
stamp: 'BartGauquie 12/20/2009 20:17'
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
requestor: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(Behavior)>>compile:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

ByteString>>DoIt
Receiver: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 1037@504 to: 979@48...etc...
Arguments and temporary variables:

Receiver's instance variables:
'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 1037@504 to: 979@48...etc...

Compiler>>evaluate:in:to:notifying:ifFail:logged:
Receiver: a Compiler
Arguments and temporary variables:
textOrStream: a ReadWriteStream 'MorphicReplayDemoTest
compile: self.'
aContext: nil
receiver: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom...etc...
aRequestor: a TextMorphEditor
failBlock: [closure] in [] in TextMorphEditor(ParagraphEditor)>>evaluateSelecti...etc...
logFlag: true
methodNode: DoIt
^ MorphicReplayDemoTest compile: self
method: a CompiledMethod(2378: ByteString>>DoIt)
value: nil
toLog: nil
itsSelection: nil
itsSelectionString: nil
Receiver's instance variables:
sourceStream: a ReadWriteStream 'MorphicReplayDemoTest
compile: self.'
requestor: a TextMorphEditor
class: ByteString
category: nil
context: nil
parser: a Parser

[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
Receiver: a TextMorphEditor
Arguments and temporary variables:
rcvr: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
ctxt: nil
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

BlockClosure>>on:do:
Receiver: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
Arguments and temporary variables:
exception: OutOfScopeNotification
handlerAction: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection...etc...
handlerActive: true
Receiver's instance variables:
outerContext: TextMorphEditor(ParagraphEditor)>>evaluateSelection
startpc: 116
numArgs: 0

TextMorphEditor(ParagraphEditor)>>evaluateSelection
Receiver: a TextMorphEditor
Arguments and temporary variables:
result: nil
rcvr: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
ctxt: nil
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>doIt
Receiver: a TextMorphEditor
Arguments and temporary variables:

Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

[] in TextMorphEditor(ParagraphEditor)>>doIt:
Receiver: a TextMorphEditor
Arguments and temporary variables:

Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
Receiver: a TextMorphEditor
Arguments and temporary variables:
aBlock: [closure] in TextMorphEditor(ParagraphEditor)>>doIt:
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>doIt:
Receiver: a TextMorphEditor
Arguments and temporary variables:
characterStream: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAheadStream: a WriteStream ''
honorCommandKeys: true
keyValue: 100
keyChar: $d
char: $d
action: #doIt:
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor>>dispatchOnKeyEvent:with:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAheadStream: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>keystroke:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAhead: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor>>keystroke:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

[] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
evt: [keystroke '<Cmd-d>']
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false

TextMorphForEditView(TextMorph)>>handleInteraction:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
interactionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc...
oldEditor: a TextMorphEditor
oldParagraph: a MultiNewParagraph
oldText: a Text for 'MorphicReplayDemoTest
compile: self.'
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false

TextMorphForEditView>>handleInteraction:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
interActionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc...
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false


--- The full stack ---
UndefinedObject(Object)>>doesNotUnderstand: #<
EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
LiteralNode>>sizeCodeForValue:
[] in MessageNode>>sizeCodeForValue:
Array(SequenceableCollection)>>collect:
MessageNode>>sizeCodeForValue:
[] in MessageNode>>sizeCodeForValue:
OrderedCollection>>collect:
MessageNode>>sizeCodeForValue:
MessageNode(ParseNode)>>sizeCodeForEffect:
MessageNode>>sizeCodeForEffect:
BlockNode>>sizeCodeExceptLast:
BlockNode>>sizeCodeForEvaluatedValue:
BytecodeAgnosticMethodNode>>generate:
CompiledMethodWithNode class>>generateMethodFromNode:trailer:
MorphicReplayDemoTest class(Behavior)>>compile:classified:notifying:trailer:ifFail:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:notifying:
MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
MorphicReplayDemoTest class(Behavior)>>compile:
ByteString>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
BlockClosure>>on:do:
TextMorphEditor(ParagraphEditor)>>evaluateSelection
TextMorphEditor(ParagraphEditor)>>doIt
[] in TextMorphEditor(ParagraphEditor)>>doIt:
TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
TextMorphEditor(ParagraphEditor)>>doIt:
TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
TextMorphEditor>>dispatchOnKeyEvent:with:
TextMorphEditor(ParagraphEditor)>>keystroke:
TextMorphEditor>>keystroke:
[] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView(TextMorph)>>handleInteraction:
TextMorphForEditView>>handleInteraction:
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - -
[] in TextMorphForEditView(TextMorph)>>keyStroke:
ECToolSet class>>codeCompletionAround:textMorph:keyStroke:
DEVToolSet class>>codeCompletionAround:textMorph:keyStroke:
ToolSet class>>codeCompletionAround:textMorph:keyStroke:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear:
[] in PasteUpMorph>>becomeActiveDuring:
BlockClosure>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess
[] in BlockClosure>>newProcess
-----------------------------------------------------------


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project



--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
Gravitation is not responsible for people falling in love. - Albert Einstein

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Long method can not be compiled using #compile: aString

Nicolas Cellier
Shouldn't Parser Encoder & co just raise Error and Warning, and let
the upper level handle these (or not) ?
Expert driver methods would install ad-hoc handlers actions (like
inserting an error message in source controller, or opening a
Debugger, or. a SyntaxErrror window, or...)

Nicolas

2009/12/21 Bart Gauquie <[hidden email]>:

> Hi,
>
> First load the latest http://www.squeaksource.com/MorphicsRecordNPlay
> package.
> Then for instance following fails if I evaluate it in a workspace:
> MorphicReplayDemoTest compile:
> 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 1037@504 to: 979@482.
> self addMMEFrom: 979@482 to: 905@464.
> self addMMEFrom: 905@464 to: 823@462.
> self addMMEFrom: 823@462 to: 745@482.
> self addMMEFrom: 745@482 to: 685@520.
> self addMMEFrom: 685@520 to: 651@559.
> self addMMEFrom: 651@559 to: 643@579.
> self addMMEFrom: 643@579 to: 653@579.
> self addMMEFrom: 653@579 to: 675@564.
> self addMMEFrom: 675@564 to: 810@452.
> self addMMEFrom: 810@452 to: 923@353.
> self addMMEFrom: 923@353 to: 1005@287.
> self addMMEFrom: 1005@287 to: 1052@257.
> self addMMEFrom: 1052@257 to: 1061@252.
> self addMMEFrom: 1061@252 to: 1059@259.
> self addMMEFrom: 1059@259 to: 998@314.
> self addMMEFrom: 998@314 to: 898@414.
> self addMMEFrom: 898@414 to: 827@502.
> self addMMEFrom: 827@502 to: 789@570.
> self addMMEFrom: 789@570 to: 792@610.
> self addMMEFrom: 792@610 to: 839@630.
> self addMMEFrom: 839@630 to: 929@620.
> self addMMEFrom: 929@620 to: 1039@579.
> self addMMEFrom: 1039@579 to: 1086@549.
> self addMMEFrom: 1086@549 to: 1158@447.
> self addMMEFrom: 1158@447 to: 1147@379.
> self addMMEFrom: 1147@379 to: 1066@377.
> self addMMEFrom: 1066@377 to: 930@416.
> self addMMEFrom: 930@416 to: 864@446.
> self addMMEFrom: 864@446 to: 734@530.
> self addMMEFrom: 734@530 to: 714@548.
> self addMMEFrom: 714@548 to: 734@546.
> self addMMEFrom: 734@546 to: 815@515.
> self addMMEFrom: 815@515 to: 875@491.
> self addMMEFrom: 875@491 to: 1065@407.
> self addMMEFrom: 1065@407 to: 1128@361.
> self addMMEFrom: 1128@361 to: 1142@343.
> self addMMEFrom: 1142@343 to: 1112@340.
> self addMMEFrom: 1112@340 to: 1064@349.
> self addMMEFrom: 1064@349 to: 864@416.
> self addMMEFrom: 864@416 to: 757@471.
> self addMMEFrom: 757@471 to: 705@511.
> self addMMEFrom: 705@511 to: 701@524.
> self addMMEFrom: 701@524 to: 743@528.
> self addMMEFrom: 743@528 to: 845@509.
> self addMMEFrom: 845@509 to: 914@493.
> self addMMEFrom: 914@493 to: 1101@446.
> self addMMEFrom: 1101@446 to: 1154@427.
> self addMMEFrom: 1154@427 to: 1163@423.
> self addMMEFrom: 1163@423 to: 1156@422.
> self addMMEFrom: 1156@422 to: 1129@424.
> self addMMEFrom: 1129@424 to: 923@449.
> self addMMEFrom: 923@449 to: 785@479.
> self addMMEFrom: 785@479 to: 689@503.
> self addMMEFrom: 689@503 to: 651@512.
> self addMMEFrom: 651@512 to: 650@512.
> self addMMEFrom: 650@512 to: 672@508.
> self addMMEFrom: 672@508 to: 773@492.
> self addMMEFrom: 773@492 to: 916@486.
> self addMMEFrom: 916@486 to: 1066@494.
> self addMMEFrom: 1066@494 to: 1175@508.
> self addMMEFrom: 1175@508 to: 1229@514.
> self addMMEFrom: 1229@514 to: 1232@514.
> self addMMEFrom: 1232@514 to: 1142@492.
> self addMMEFrom: 1142@492 to: 986@483.
> self addMMEFrom: 986@483 to: 810@498.
> self addMMEFrom: 810@498 to: 678@519.
> self addMMEFrom: 678@519 to: 637@523.
> self addMMEFrom: 637@523 to: 606@502.
> self addMMEFrom: 606@502 to: 659@442.
> self addMMEFrom: 659@442 to: 769@365.
> self addMMEFrom: 769@365 to: 911@316.
> self addMMEFrom: 911@316 to: 1052@318.
> self addMMEFrom: 1052@318 to: 1129@360.
> self addMMEFrom: 1129@360 to: 1153@403.
> self addMMEFrom: 1153@403 to: 1127@443.
> self addMMEFrom: 1127@443 to: 1015@491.
> self addMMEFrom: 1015@491 to: 850@536.
> self addMMEFrom: 850@536 to: 697@571.
> self addMMEFrom: 697@571 to: 642@578.
> self addMMEFrom: 642@578 to: 571@545.
> self addMMEFrom: 571@545 to: 604@485.
> self addMMEFrom: 604@485 to: 701@419.
> self addMMEFrom: 701@419 to: 843@383.
> self addMMEFrom: 843@383 to: 919@383.
> self addMMEFrom: 919@383 to: 1095@425.
> self addMMEFrom: 1095@425 to: 1126@443.
> self addMMEFrom: 1126@443 to: 1102@449.
> self addMMEFrom: 1102@449 to: 984@468.
> self addMMEFrom: 984@468 to: 829@509.
> self addMMEFrom: 829@509 to: 703@547.
> self addMMEFrom: 703@547 to: 637@555.
> self addMMEFrom: 637@555 to: 633@531.
> self addMMEFrom: 633@531 to: 694@468.
> self addMMEFrom: 694@468 to: 809@407.
> self addMMEFrom: 809@407 to: 946@380.
> self addMMEFrom: 946@380 to: 1011@378.
> self addMMEFrom: 1011@378 to: 1119@393.
> self addMMEFrom: 1119@393 to: 1110@393.
> self addMMEFrom: 1110@393 to: 1010@388.
> self addMMEFrom: 1010@388 to: 859@402.
> self addMMEFrom: 859@402 to: 727@433.
> self addMMEFrom: 727@433 to: 665@454.
> self addMMEFrom: 665@454 to: 663@461.
> self addMMEFrom: 663@461 to: 683@469.
> self addMMEFrom: 683@469 to: 837@492.
> self addMMEFrom: 837@492 to: 989@495.
> self addMMEFrom: 989@495 to: 1103@476.
> self addMMEFrom: 1103@476 to: 1153@433.
> self addMMEFrom: 1153@433 to: 1163@404.
> self addMMEFrom: 1163@404 to: 1147@307.
> self addMMEFrom: 1147@307 to: 1086@294.
> self addMMEFrom: 1086@294 to: 995@324.
> self addMMEFrom: 995@324 to: 935@357.
> self addMMEFrom: 935@357 to: 922@366.
> self addMMEFrom: 922@366 to: 925@370.
> self addMMEFrom: 925@370 to: 941@379.
> self addMMEFrom: 941@379 to: 974@389.
> self addMMEFrom: 974@389 to: 1010@399.
> self addMMEFrom: 1010@399 to: 1036@408.
> self addMMEFrom: 1036@408 to: 1052@414.
> self addMMEFrom: 1052@414 to: 1056@416.
> self addMMEFrom: 1056@416 to: 1061@418.
> self addMMEFrom: 1061@418 to: 1068@419.
> self addMMEFrom: 1068@419 to: 1078@418.
> self addMMEFrom: 1078@418 to: 1086@414.
> self addMMEFrom: 1086@414 to: 1089@411.
> self addMMEFrom: 1089@411 to: 1095@404.
> self addMMEFrom: 1095@404 to: 1097@404.
> self addMMEFrom: 1097@404 to: 1099@406.
> self addMMEFrom: 1099@406 to: 1100@407.
> self addMMEFrom: 1100@407 to: 1101@408.
> self addMMEFrom: 1101@408 to: 1101@409.
> self addMMEFrom: 1101@409 to: 1101@410.
> self addMMEFrom: 1101@410 to: 1102@411.
> self addMMEFrom: 1102@411 to: 1104@412.
> self addMMEFrom: 1104@412 to: 1106@411.
> self addMMEFrom: 1106@411 to: 1110@409.
> self addMMEFrom: 1110@409 to: 1112@408.
> self addMMEFrom: 1112@408 to: 1114@407.
> self addMMEFrom: 1114@407 to: 1115@408.
> self addMMEFrom: 1115@408 to: 1115@408.
> self addMMEFrom: 1115@408 to: 1115@407.
> MouseButtonEvent new.
> MouseButtonEvent new.
> self addMMEFrom: 1131@401 to: 1129@403.
> self addMMEFrom: 1129@403 to: 1121@408.
> self addMMEFrom: 1121@408 to: 1106@416.
> self addMMEFrom: 1106@416 to: 1084@426.
> self addMMEFrom: 1084@426 to: 1051@443.
> self addMMEFrom: 1051@443 to: 1019@470.
> self addMMEFrom: 1019@470 to: 995@504.
> self addMMEFrom: 995@504 to: 981@546.
> self addMMEFrom: 981@546 to: 980@592.
> self addMMEFrom: 980@592 to: 990@634.
> self addMMEFrom: 990@634 to: 1012@665.
> self addMMEFrom: 1012@665 to: 1043@680.
> self addMMEFrom: 1043@680 to: 1076@677.
> self addMMEFrom: 1076@677 to: 1132@658.
> self addMMEFrom: 1132@658 to: 1189@626.
> self addMMEFrom: 1189@626 to: 1205@606.
> self addMMEFrom: 1205@606 to: 1222@543.
> self addMMEFrom: 1222@543 to: 1219@504.
> self addMMEFrom: 1219@504 to: 1207@464.
> self addMMEFrom: 1207@464 to: 1190@425.
> self addMMEFrom: 1190@425 to: 1180@409.
> self addMMEFrom: 1180@409 to: 1140@387.
> self addMMEFrom: 1140@387 to: 1092@397.
> self addMMEFrom: 1092@397 to: 1044@424.
> self addMMEFrom: 1044@424 to: 1004@464.
> self addMMEFrom: 1004@464 to: 977@513.
> self addMMEFrom: 977@513 to: 965@565.
> self addMMEFrom: 965@565 to: 965@614.
> self addMMEFrom: 965@614 to: 977@656.
> self addMMEFrom: 977@656 to: 1001@689.
> self addMMEFrom: 1001@689 to: 1035@709.
> self addMMEFrom: 1035@709 to: 1067@714.
> self addMMEFrom: 1067@714 to: 1094@710.
> self addMMEFrom: 1094@710 to: 1219@673.
> self addMMEFrom: 1219@673 to: 1254@635.
> self addMMEFrom: 1254@635 to: 1269@594.
> self addMMEFrom: 1269@594 to: 1277@552.
> self addMMEFrom: 1277@552 to: 1277@530.
> self addMMEFrom: 1277@530 to: 1251@459.
> self addMMEFrom: 1251@459 to: 1215@418.
> self addMMEFrom: 1215@418 to: 1180@389.
> self addMMEFrom: 1180@389 to: 1143@377.
> self addMMEFrom: 1143@377 to: 1092@379.
> self addMMEFrom: 1092@379 to: 1041@397.
> self addMMEFrom: 1041@397 to: 1019@410.
> self addMMEFrom: 1019@410 to: 972@460.
> self addMMEFrom: 972@460 to: 955@499.
> self addMMEFrom: 955@499 to: 951@541.
> self addMMEFrom: 951@541 to: 954@580.
> self addMMEFrom: 954@580 to: 960@597.
> self addMMEFrom: 960@597 to: 991@639.
> self addMMEFrom: 991@639 to: 1027@657.
> self addMMEFrom: 1027@657 to: 1066@666.
> self addMMEFrom: 1066@666 to: 1122@665.
> self addMMEFrom: 1122@665 to: 1199@651.
> self addMMEFrom: 1199@651 to: 1245@625.
> self addMMEFrom: 1245@625 to: 1270@596.
> self addMMEFrom: 1270@596 to: 1284@565.
> self addMMEFrom: 1284@565 to: 1287@528.
> self addMMEFrom: 1287@528 to: 1275@486.
> self addMMEFrom: 1275@486 to: 1242@445.
> self addMMEFrom: 1242@445 to: 1204@412.
> self addMMEFrom: 1204@412 to: 1171@390.
> self addMMEFrom: 1171@390 to: 1126@383.
> self addMMEFrom: 1126@383 to: 1083@394.
> self addMMEFrom: 1083@394 to: 1040@420.
> self addMMEFrom: 1040@420 to: 1025@438.
> self addMMEFrom: 1025@438 to: 996@506.
> self addMMEFrom: 996@506 to: 992@555.
> self addMMEFrom: 992@555 to: 999@596.
> self addMMEFrom: 999@596 to: 1015@629.
> self addMMEFrom: 1015@629 to: 1027@641.
> self addMMEFrom: 1027@641 to: 1068@658.
> self addMMEFrom: 1068@658 to: 1115@655.
> self addMMEFrom: 1115@655 to: 1184@640.
> self addMMEFrom: 1184@640 to: 1234@616.
> self addMMEFrom: 1234@616 to: 1266@589.
> self addMMEFrom: 1266@589 to: 1290@555.
> self addMMEFrom: 1290@555 to: 1301@518.
> self addMMEFrom: 1301@518 to: 1296@474.
> self addMMEFrom: 1296@474 to: 1267@430.
> self addMMEFrom: 1267@430 to: 1223@392.
> self addMMEFrom: 1223@392 to: 1187@370.
> self addMMEFrom: 1187@370 to: 1172@366.
> self addMMEFrom: 1172@366 to: 1115@375.
> self addMMEFrom: 1115@375 to: 1076@397.
> self addMMEFrom: 1076@397 to: 1046@429.
> self addMMEFrom: 1046@429 to: 1027@468.
> self addMMEFrom: 1027@468 to: 1022@489.
> self addMMEFrom: 1022@489 to: 1023@545.
> self addMMEFrom: 1023@545 to: 1033@567.
> self addMMEFrom: 1033@567 to: 1061@590.
> self addMMEFrom: 1061@590 to: 1104@603.
> self addMMEFrom: 1104@603 to: 1165@605.
> self addMMEFrom: 1165@605 to: 1220@593.
> self addMMEFrom: 1220@593 to: 1258@571.
> self addMMEFrom: 1258@571 to: 1284@543.
> self addMMEFrom: 1284@543 to: 1298@509.
> self addMMEFrom: 1298@509 to: 1299@466.
> self addMMEFrom: 1299@466 to: 1276@414.
> self addMMEFrom: 1276@414 to: 1255@390.
> self addMMEFrom: 1255@390 to: 1189@340.
> self addMMEFrom: 1189@340 to: 1148@334.
> self addMMEFrom: 1148@334 to: 1094@346.
> self addMMEFrom: 1094@346 to: 1051@373.
> self addMMEFrom: 1051@373 to: 1021@412.
> self addMMEFrom: 1021@412 to: 1006@457.
> self addMMEFrom: 1006@457 to: 1002@506.
> self addMMEFrom: 1002@506 to: 1006@557.
> self addMMEFrom: 1006@557 to: 1012@581.
> self addMMEFrom: 1012@581 to: 1041@637.
> self addMMEFrom: 1041@637 to: 1070@657.
> self addMMEFrom: 1070@657 to: 1127@660.
> self addMMEFrom: 1127@660 to: 1209@644.
> self addMMEFrom: 1209@644 to: 1234@630.
> self addMMEFrom: 1234@630 to: 1284@569.
> self addMMEFrom: 1284@569 to: 1302@521.
> self addMMEFrom: 1302@521 to: 1304@466.
> self addMMEFrom: 1304@466 to: 1286@410.
> self addMMEFrom: 1286@410 to: 1247@369.
> self addMMEFrom: 1247@369 to: 1208@347.
> self addMMEFrom: 1208@347 to: 1196@342.
> self addMMEFrom: 1196@342 to: 1170@346.
> self addMMEFrom: 1170@346 to: 1151@356.
> self addMMEFrom: 1151@356 to: 1137@363.
> self addMMEFrom: 1137@363 to: 1133@366.
> self addMMEFrom: 1133@366 to: 1133@366.
> self addMMEFrom: 1133@366 to: 1135@372.
> self addMMEFrom: 1135@372 to: 1133@381.
> self addMMEFrom: 1133@381 to: 1128@393.
> self addMMEFrom: 1128@393 to: 1126@399.
> self addMMEFrom: 1126@399 to: 1125@401.
> self addMMEFrom: 1125@401 to: 1125@401.
> self addMMEFrom: 1125@401 to: 1125@400.
> self addMMEFrom: 1125@400 to: 1124@401.
> self addMMEFrom: 1124@401 to: 1124@403.
> self addMMEFrom: 1124@403 to: 1124@404.
> self addMMEFrom: 1124@404 to: 1124@405.
> self addMMEFrom: 1124@405 to: 1124@404.
> MouseButtonEvent new.
> MouseButtonEvent new.
> '
>
> These are autogenerated contents I want to export as a test case. The
> strange thing is that, if I manually create the testMethod using the system
> browser, and paste the content in it; it works fine.
> Kind Regards,
> Bart
> 2009/12/21 Eliot Miranda <[hidden email]>
>>
>> Hi Bart,
>>     I still want to take a look at this specific case because the compiler
>> should produce a proper error message, not an internal error.  So could you
>> please package it up as a reproducible case, or email me the full string
>> that fails?
>> TIA
>>
>> 2009/12/20 Bart Gauquie <[hidden email]>
>>>
>>> Dear all,
>>>
>>> I'm developing code which generates a method content, compiles it and
>>> adds it to an existing class.
>>> I compile the message using #compile: message:
>>> for instance:
>>> MorphicReplayDemoTest compile: '
>>> testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 651@559 to: 643@579.
>>> '.
>>>
>>> This works fine. However if the contents of the method is too long; for
>>> instance:
>>> if the self addMMEFrom: 1054@512 to: 1037@504. is repeated around 250
>>> times; I get following error (see stack below)
>>> The strange thing is that if I manually add that method using the editor
>>> and paste it, it works just fine. I even tested up to 5000 lines of code;
>>> its slow, but its working.
>>> Any ideas how to solve this?
>>> Thanks,
>>> Bart
>>>
>>> I'm using Pharo 1.0 rc update: 10502; using Ubuntu 9.10, using vm
>>> pharo-vm-0.15.2f-linux.
>>> THERE_BE_DRAGONS_HERE
>>> MessageNotUnderstood: receiver of "<" is nil
>>> 20 December 2009 8:17:14 pm
>>>
>>> VM: unix - i686 - linux-gnu - Pharo0.1 of 16 May 2008 [latest update:
>>> #10074]
>>> Image: PharoCore1.0rc1 [Latest update: #10502]
>>>
>>> SecurityManager state:
>>> Restricted: false
>>> FileAccess: true
>>> SocketAccess: true
>>> Working Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground
>>> Image
>>> Trusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground
>>> Image/secure
>>> Untrusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0
>>> Playground Image/My Squeak
>>>
>>> UndefinedObject(Object)>>doesNotUnderstand: #<
>>> Receiver: nil
>>> Arguments and temporary variables:
>>> aMessage: < 0
>>> exception: MessageNotUnderstood: receiver of "<" is nil
>>> resumeValue: nil
>>> Receiver's instance variables:
>>> nil
>>>
>>> EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
>>> Receiver: {an EncoderForV3PlusClosures}
>>> Arguments and temporary variables:
>>> literalIndex: nil
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> scopeTable: a Dictionary('false'->{false} 'nil'->{nil}
>>> 'recording'->{recording}...etc...
>>> nTemps: 0
>>> supered: false
>>> requestor: nil
>>> class: MorphicReplayDemoTest
>>> selector: #testMethod
>>> literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979.
>>> 482. ...etc...
>>> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//}
>>> #<->{<} #...etc...
>>> litIndSet: a
>>> Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
>>> litSet: a LiteralDictionary(size 402)
>>> sourceRanges: a Dictionary(size 853)
>>> globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to:
>>> 5778). ...etc...
>>> addedSelectorAndMethodClassLiterals: false
>>> stream: {an EncoderForV3PlusClosures}
>>> position: 0
>>> rootNode: testMethod
>>> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEF...etc...
>>> blockExtentsToLocals: nil
>>>
>>>
>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
>>> Receiver: {an EncoderForV3PlusClosures}
>>> Arguments and temporary variables:
>>> genSelector: #genPushLiteral:
>>> args: #(nil)
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> scopeTable: a Dictionary('false'->{false} 'nil'->{nil}
>>> 'recording'->{recording}...etc...
>>> nTemps: 0
>>> supered: false
>>> requestor: nil
>>> class: MorphicReplayDemoTest
>>> selector: #testMethod
>>> literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979.
>>> 482. ...etc...
>>> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//}
>>> #<->{<} #...etc...
>>> litIndSet: a
>>> Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
>>> litSet: a LiteralDictionary(size 402)
>>> sourceRanges: a Dictionary(size 853)
>>> globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to:
>>> 5778). ...etc...
>>> addedSelectorAndMethodClassLiterals: false
>>> stream: {an EncoderForV3PlusClosures}
>>> position: 0
>>> rootNode: testMethod
>>> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEF...etc...
>>> blockExtentsToLocals: nil
>>>
>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
>>> Receiver: {an EncoderForV3PlusClosures}
>>> Arguments and temporary variables:
>>> literalIndex: nil
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> scopeTable: a Dictionary('false'->{false} 'nil'->{nil}
>>> 'recording'->{recording}...etc...
>>> nTemps: 0
>>> supered: false
>>> requestor: nil
>>> class: MorphicReplayDemoTest
>>> selector: #testMethod
>>> literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979.
>>> 482. ...etc...
>>> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//}
>>> #<->{<} #...etc...
>>> litIndSet: a
>>> Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
>>> litSet: a LiteralDictionary(size 402)
>>> sourceRanges: a Dictionary(size 853)
>>> globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to:
>>> 5778). ...etc...
>>> addedSelectorAndMethodClassLiterals: false
>>> stream: {an EncoderForV3PlusClosures}
>>> position: 0
>>> rootNode: testMethod
>>> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEF...etc...
>>> blockExtentsToLocals: nil
>>>
>>> LiteralNode>>sizeCodeForValue:
>>> Receiver: {397}
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> key: 397
>>> code: -3
>>> index: nil
>>>
>>> [] in MessageNode>>sizeCodeForValue:
>>> Receiver: {1092 @ 397}
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {1092}
>>> selector: {@}
>>> precedence: 2
>>> special: 0
>>> arguments: #({397})
>>> sizes: #(nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> Array(SequenceableCollection)>>collect:
>>> Receiver: #({397})
>>> Arguments and temporary variables:
>>> aBlock: [closure] in MessageNode>>sizeCodeForValue:
>>> newCollection: #(nil)
>>> index: 1
>>> indexLimiT: 1
>>> Receiver's instance variables:
>>> #({397})
>>>
>>> MessageNode>>sizeCodeForValue:
>>> Receiver: {1092 @ 397}
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {1092}
>>> selector: {@}
>>> precedence: 2
>>> special: 0
>>> arguments: #({397})
>>> sizes: #(nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> [] in MessageNode>>sizeCodeForValue:
>>> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {self}
>>> selector: {addMMEFrom:to:}
>>> precedence: 3
>>> special: 0
>>> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
>>> sizes: #(nil nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> OrderedCollection>>collect:
>>> Receiver: an OrderedCollection({1140 @ 387} {1092 @ 397})
>>> Arguments and temporary variables:
>>> aBlock: [closure] in MessageNode>>sizeCodeForValue:
>>> newCollection: an OrderedCollection(7)
>>> index: 4
>>> Receiver's instance variables:
>>> array: an Array(nil nil {1140 @ 387} {1092 @ 397} nil nil nil nil nil
>>> nil)
>>> firstIndex: 3
>>> lastIndex: 4
>>>
>>> MessageNode>>sizeCodeForValue:
>>> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {self}
>>> selector: {addMMEFrom:to:}
>>> precedence: 3
>>> special: 0
>>> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
>>> sizes: #(nil nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> MessageNode(ParseNode)>>sizeCodeForEffect:
>>> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {self}
>>> selector: {addMMEFrom:to:}
>>> precedence: 3
>>> special: 0
>>> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
>>> sizes: #(nil nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> MessageNode>>sizeCodeForEffect:
>>> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {self}
>>> selector: {addMMEFrom:to:}
>>> precedence: 3
>>> special: 0
>>> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
>>> sizes: #(nil nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> BlockNode>>sizeCodeExceptLast:
>>> Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEFrom: 1037 @ 504 to: 979 @ 482.
>>> ...etc...
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> codeSize: 2564
>>> i: 169
>>> statement: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
>>> iLimiT: 287
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> arguments: #()
>>> statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @
>>> 504} {...etc...
>>> returns: true
>>> nArgsNode: nil
>>> size: nil
>>> remoteCopyNode: nil
>>> temporaries: an OrderedCollection()
>>> optimized: false
>>> actualScopeIfOptimized: nil
>>> blockExtent: (0 to: 2)
>>> remoteTempNode: nil
>>> copiedValues: nil
>>> closureCreationNode: nil
>>> startOfLastStatement: 11519
>>>
>>> BlockNode>>sizeCodeForEvaluatedValue:
>>> Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEFrom: 1037 @ 504 to: 979 @ 482.
>>> ...etc...
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> arguments: #()
>>> statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @
>>> 504} {...etc...
>>> returns: true
>>> nArgsNode: nil
>>> size: nil
>>> remoteCopyNode: nil
>>> temporaries: an OrderedCollection()
>>> optimized: false
>>> actualScopeIfOptimized: nil
>>> blockExtent: (0 to: 2)
>>> remoteTempNode: nil
>>> copiedValues: nil
>>> closureCreationNode: nil
>>> startOfLastStatement: 11519
>>>
>>> BytecodeAgnosticMethodNode>>generate:
>>> Receiver: testMethod
>>> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEFrom: 1037 @ 504 to: 9...etc...
>>> Arguments and temporary variables:
>>> trailer: #(0 0 0 0)
>>> primErrNode: nil
>>> blkSize: nil
>>> nLits: nil
>>> literals: nil
>>> stack: nil
>>> method: nil
>>> locals: nil
>>> lit: nil
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> selectorOrFalse: #testMethod
>>> precedence: 1
>>> arguments: #()
>>> block: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEFrom: 1037 @ 5...etc...
>>> primitive: 0
>>> encoder: {an EncoderForV3PlusClosures}
>>> temporaries: #()
>>> properties: an AdditionalMethodState
>>> sourceText: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFr...etc...
>>> locationCounter: 3
>>> localsPool: an IdentitySet()
>>>
>>> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
>>> Receiver: CompiledMethodWithNode
>>> Arguments and temporary variables:
>>> aMethodNode: testMethod
>>> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addM...etc...
>>> bytes: #(0 0 0 0)
>>> Receiver's instance variables:
>>> superclass: Object
>>> methodDict: a MethodDictionary(#method->a CompiledMethod(650:
>>> CompiledMethodWit...etc...
>>> format: 134
>>> instanceVariables: #('node' 'method')
>>> organization: ('accessing' method node selector)
>>> ('private' method: node:)
>>>
>>> subclasses: nil
>>> name: #CompiledMethodWithNode
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'Compiler-Support'
>>> traitComposition: nil
>>> localSelectors: nil
>>>
>>> MorphicReplayDemoTest
>>> class(Behavior)>>compile:classified:notifying:trailer:ifFail:
>>> Receiver: MorphicReplayDemoTest
>>> Arguments and temporary variables:
>>> code: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> category: #'as yet unclassified'
>>> requestor: nil
>>> bytes: #(0 0 0 0)
>>> failBlock: [closure] in MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:...etc...
>>> methodNode: testMethod
>>> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMM...etc...
>>> Receiver's instance variables:
>>> superclass: AbstractReplayTestCase
>>> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
>>> MorphicRepla...etc...
>>> format: 134
>>> instanceVariables: nil
>>> organization: ('tests' testMethod)
>>>
>>> subclasses: nil
>>> name: #MorphicReplayDemoTest
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'MorphicsRecordNPlay-Model'
>>> traitComposition: nil
>>> localSelectors: nil
>>> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
>>> Set(#testM...etc...
>>>
>>> MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
>>> Receiver: MorphicReplayDemoTest
>>> Arguments and temporary variables:
>>> text: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> category: #'as yet unclassified'
>>> changeStamp: 'BartGauquie 12/20/2009 20:17'
>>> requestor: nil
>>> logSource: true
>>> methodAndNode: nil
>>> Receiver's instance variables:
>>> superclass: AbstractReplayTestCase
>>> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
>>> MorphicRepla...etc...
>>> format: 134
>>> instanceVariables: nil
>>> organization: ('tests' testMethod)
>>>
>>> subclasses: nil
>>> name: #MorphicReplayDemoTest
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'MorphicsRecordNPlay-Model'
>>> traitComposition: nil
>>> localSelectors: nil
>>> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
>>> Set(#testM...etc...
>>>
>>> MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:classified:withStamp:notifying:
>>> Receiver: MorphicReplayDemoTest
>>> Arguments and temporary variables:
>>> text: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> category: #'as yet unclassified'
>>> changeStamp: 'BartGauquie 12/20/2009 20:17'
>>> requestor: nil
>>> Receiver's instance variables:
>>> superclass: AbstractReplayTestCase
>>> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
>>> MorphicRepla...etc...
>>> format: 134
>>> instanceVariables: nil
>>> organization: ('tests' testMethod)
>>>
>>> subclasses: nil
>>> name: #MorphicReplayDemoTest
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'MorphicsRecordNPlay-Model'
>>> traitComposition: nil
>>> localSelectors: nil
>>> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
>>> Set(#testM...etc...
>>>
>>> MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:classified:notifying:
>>> Receiver: MorphicReplayDemoTest
>>> Arguments and temporary variables:
>>> text: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> category: #'as yet unclassified'
>>> requestor: nil
>>> stamp: 'BartGauquie 12/20/2009 20:17'
>>> Receiver's instance variables:
>>> superclass: AbstractReplayTestCase
>>> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
>>> MorphicRepla...etc...
>>> format: 134
>>> instanceVariables: nil
>>> organization: ('tests' testMethod)
>>>
>>> subclasses: nil
>>> name: #MorphicReplayDemoTest
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'MorphicsRecordNPlay-Model'
>>> traitComposition: nil
>>> localSelectors: nil
>>> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
>>> Set(#testM...etc...
>>>
>>> MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
>>> Receiver: MorphicReplayDemoTest
>>> Arguments and temporary variables:
>>> code: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> requestor: nil
>>> Receiver's instance variables:
>>> superclass: AbstractReplayTestCase
>>> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
>>> MorphicRepla...etc...
>>> format: 134
>>> instanceVariables: nil
>>> organization: ('tests' testMethod)
>>>
>>> subclasses: nil
>>> name: #MorphicReplayDemoTest
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'MorphicsRecordNPlay-Model'
>>> traitComposition: nil
>>> localSelectors: nil
>>> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
>>> Set(#testM...etc...
>>>
>>> MorphicReplayDemoTest class(Behavior)>>compile:
>>> Receiver: MorphicReplayDemoTest
>>> Arguments and temporary variables:
>>> code: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> Receiver's instance variables:
>>> superclass: AbstractReplayTestCase
>>> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
>>> MorphicRepla...etc...
>>> format: 134
>>> instanceVariables: nil
>>> organization: ('tests' testMethod)
>>>
>>> subclasses: nil
>>> name: #MorphicReplayDemoTest
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'MorphicsRecordNPlay-Model'
>>> traitComposition: nil
>>> localSelectors: nil
>>> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
>>> Set(#testM...etc...
>>>
>>> ByteString>>DoIt
>>> Receiver: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 1037@504 to: 979@48...etc...
>>> Arguments and temporary variables:
>>>
>>> Receiver's instance variables:
>>> 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 1037@504 to: 979@48...etc...
>>>
>>> Compiler>>evaluate:in:to:notifying:ifFail:logged:
>>> Receiver: a Compiler
>>> Arguments and temporary variables:
>>> textOrStream: a ReadWriteStream 'MorphicReplayDemoTest
>>> compile: self.'
>>> aContext: nil
>>> receiver: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom...etc...
>>> aRequestor: a TextMorphEditor
>>> failBlock: [closure] in [] in
>>> TextMorphEditor(ParagraphEditor)>>evaluateSelecti...etc...
>>> logFlag: true
>>> methodNode: DoIt
>>> ^ MorphicReplayDemoTest compile: self
>>> method: a CompiledMethod(2378: ByteString>>DoIt)
>>> value: nil
>>> toLog: nil
>>> itsSelection: nil
>>> itsSelectionString: nil
>>> Receiver's instance variables:
>>> sourceStream: a ReadWriteStream 'MorphicReplayDemoTest
>>> compile: self.'
>>> requestor: a TextMorphEditor
>>> class: ByteString
>>> category: nil
>>> context: nil
>>> parser: a Parser
>>>
>>> [] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> rcvr: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> ctxt: nil
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> BlockClosure>>on:do:
>>> Receiver: [closure] in
>>> TextMorphEditor(ParagraphEditor)>>evaluateSelection
>>> Arguments and temporary variables:
>>> exception: OutOfScopeNotification
>>> handlerAction: [closure] in
>>> TextMorphEditor(ParagraphEditor)>>evaluateSelection...etc...
>>> handlerActive: true
>>> Receiver's instance variables:
>>> outerContext: TextMorphEditor(ParagraphEditor)>>evaluateSelection
>>> startpc: 116
>>> numArgs: 0
>>>
>>> TextMorphEditor(ParagraphEditor)>>evaluateSelection
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> result: nil
>>> rcvr: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> ctxt: nil
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor(ParagraphEditor)>>doIt
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>>
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> [] in TextMorphEditor(ParagraphEditor)>>doIt:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>>
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> aBlock: [closure] in TextMorphEditor(ParagraphEditor)>>doIt:
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor(ParagraphEditor)>>doIt:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> characterStream: a WriteStream ''
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> keyEvent: [keystroke '<Cmd-d>']
>>> typeAheadStream: a WriteStream ''
>>> honorCommandKeys: true
>>> keyValue: 100
>>> keyChar: $d
>>> char: $d
>>> action: #doIt:
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor>>dispatchOnKeyEvent:with:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> keyEvent: [keystroke '<Cmd-d>']
>>> typeAheadStream: a WriteStream ''
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor(ParagraphEditor)>>keystroke:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> keyEvent: [keystroke '<Cmd-d>']
>>> typeAhead: a WriteStream ''
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor>>keystroke:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> keyEvent: [keystroke '<Cmd-d>']
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> [] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
>>> Receiver: a TextMorphForEditView(3730)
>>> Arguments and temporary variables:
>>> evt: [keystroke '<Cmd-d>']
>>> Receiver's instance variables:
>>> bounds: 0@0 corner: 358@34
>>> owner: a TransformMorph(942)
>>> submorphs: #()
>>> fullBounds: 0@0 corner: 358@34
>>> color: Color black
>>> extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
>>> borderWidth: 0
>>> borderColor: Color black
>>> textStyle: a TextStyle Bitmap DejaVu Sans 9
>>> text: a Text for 'MorphicReplayDemoTest
>>> compile: self.'
>>> wrapFlag: true
>>> paragraph: a MultiNewParagraph
>>> editor: a TextMorphEditor
>>> container: nil
>>> predecessor: nil
>>> successor: nil
>>> backgroundColor: nil
>>> margins: nil
>>> editHistory: a TextMorphCommandHistory
>>> editView: a PluggableTextMorphPlus(2866)
>>> acceptOnCR: false
>>>
>>> TextMorphForEditView(TextMorph)>>handleInteraction:
>>> Receiver: a TextMorphForEditView(3730)
>>> Arguments and temporary variables:
>>> interactionBlock: [closure] in [] in
>>> TextMorphForEditView(TextMorph)>>keyStroke...etc...
>>> oldEditor: a TextMorphEditor
>>> oldParagraph: a MultiNewParagraph
>>> oldText: a Text for 'MorphicReplayDemoTest
>>> compile: self.'
>>> Receiver's instance variables:
>>> bounds: 0@0 corner: 358@34
>>> owner: a TransformMorph(942)
>>> submorphs: #()
>>> fullBounds: 0@0 corner: 358@34
>>> color: Color black
>>> extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
>>> borderWidth: 0
>>> borderColor: Color black
>>> textStyle: a TextStyle Bitmap DejaVu Sans 9
>>> text: a Text for 'MorphicReplayDemoTest
>>> compile: self.'
>>> wrapFlag: true
>>> paragraph: a MultiNewParagraph
>>> editor: a TextMorphEditor
>>> container: nil
>>> predecessor: nil
>>> successor: nil
>>> backgroundColor: nil
>>> margins: nil
>>> editHistory: a TextMorphCommandHistory
>>> editView: a PluggableTextMorphPlus(2866)
>>> acceptOnCR: false
>>>
>>> TextMorphForEditView>>handleInteraction:
>>> Receiver: a TextMorphForEditView(3730)
>>> Arguments and temporary variables:
>>> interActionBlock: [closure] in [] in
>>> TextMorphForEditView(TextMorph)>>keyStroke...etc...
>>> Receiver's instance variables:
>>> bounds: 0@0 corner: 358@34
>>> owner: a TransformMorph(942)
>>> submorphs: #()
>>> fullBounds: 0@0 corner: 358@34
>>> color: Color black
>>> extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
>>> borderWidth: 0
>>> borderColor: Color black
>>> textStyle: a TextStyle Bitmap DejaVu Sans 9
>>> text: a Text for 'MorphicReplayDemoTest
>>> compile: self.'
>>> wrapFlag: true
>>> paragraph: a MultiNewParagraph
>>> editor: a TextMorphEditor
>>> container: nil
>>> predecessor: nil
>>> successor: nil
>>> backgroundColor: nil
>>> margins: nil
>>> editHistory: a TextMorphCommandHistory
>>> editView: a PluggableTextMorphPlus(2866)
>>> acceptOnCR: false
>>>
>>>
>>> --- The full stack ---
>>> UndefinedObject(Object)>>doesNotUnderstand: #<
>>> EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
>>>
>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
>>> LiteralNode>>sizeCodeForValue:
>>> [] in MessageNode>>sizeCodeForValue:
>>> Array(SequenceableCollection)>>collect:
>>> MessageNode>>sizeCodeForValue:
>>> [] in MessageNode>>sizeCodeForValue:
>>> OrderedCollection>>collect:
>>> MessageNode>>sizeCodeForValue:
>>> MessageNode(ParseNode)>>sizeCodeForEffect:
>>> MessageNode>>sizeCodeForEffect:
>>> BlockNode>>sizeCodeExceptLast:
>>> BlockNode>>sizeCodeForEvaluatedValue:
>>> BytecodeAgnosticMethodNode>>generate:
>>> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
>>> MorphicReplayDemoTest
>>> class(Behavior)>>compile:classified:notifying:trailer:ifFail:
>>> MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
>>> MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:classified:withStamp:notifying:
>>> MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:classified:notifying:
>>> MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
>>> MorphicReplayDemoTest class(Behavior)>>compile:
>>> ByteString>>DoIt
>>> Compiler>>evaluate:in:to:notifying:ifFail:logged:
>>> [] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
>>> BlockClosure>>on:do:
>>> TextMorphEditor(ParagraphEditor)>>evaluateSelection
>>> TextMorphEditor(ParagraphEditor)>>doIt
>>> [] in TextMorphEditor(ParagraphEditor)>>doIt:
>>> TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
>>> TextMorphEditor(ParagraphEditor)>>doIt:
>>> TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
>>> TextMorphEditor>>dispatchOnKeyEvent:with:
>>> TextMorphEditor(ParagraphEditor)>>keystroke:
>>> TextMorphEditor>>keystroke:
>>> [] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
>>> TextMorphForEditView(TextMorph)>>handleInteraction:
>>> TextMorphForEditView>>handleInteraction:
>>> - - - - - - - - - - - - - - -
>>> - - - - - - - - - - - - - - - - - -
>>> [] in TextMorphForEditView(TextMorph)>>keyStroke:
>>> ECToolSet class>>codeCompletionAround:textMorph:keyStroke:
>>> DEVToolSet class>>codeCompletionAround:textMorph:keyStroke:
>>> ToolSet class>>codeCompletionAround:textMorph:keyStroke:
>>> TextMorphForEditView(TextMorph)>>keyStroke:
>>> TextMorphForEditView>>keyStroke:
>>> TextMorphForEditView(TextMorph)>>handleKeystroke:
>>> KeyboardEvent>>sentTo:
>>> TextMorphForEditView(Morph)>>handleEvent:
>>> TextMorphForEditView(Morph)>>handleFocusEvent:
>>> [] in HandMorph>>sendFocusEvent:to:clear:
>>> [] in PasteUpMorph>>becomeActiveDuring:
>>> BlockClosure>>on:do:
>>> PasteUpMorph>>becomeActiveDuring:
>>> HandMorph>>sendFocusEvent:to:clear:
>>> HandMorph>>sendEvent:focus:clear:
>>> HandMorph>>sendKeyboardEvent:
>>> HandMorph>>handleEvent:
>>> HandMorph>>processEvents
>>> [] in WorldState>>doOneCycleNowFor:
>>> Array(SequenceableCollection)>>do:
>>> WorldState>>handsDo:
>>> WorldState>>doOneCycleNowFor:
>>> WorldState>>doOneCycleFor:
>>> PasteUpMorph>>doOneCycle
>>> [] in Project class>>spawnNewProcess
>>> [] in BlockClosure>>newProcess
>>> -----------------------------------------------------------
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
>
> --
> imagination is more important than knowledge - Albert Einstein
> Logic will get you from A to B. Imagination will take you everywhere -
> Albert Einstein
> Learn from yesterday, live for today, hope for tomorrow. The important thing
> is not to stop questioning. - Albert Einstein
> The true sign of intelligence is not knowledge but imagination. - Albert
> Einstein
> Gravitation is not responsible for people falling in love. - Albert Einstein
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Long method can not be compiled using #compile: aString

Eliot Miranda-2
In reply to this post by Bart Gauquie
This results in an MNU instead of a warning about too many literals because Encoder>>notify: does not report notifications if there is no requestor (if compilation is non-interactive).  A fix would be to integrate with Colin's compiler error changes, e.g. by having Encoder hold onto its parser and defer to Parser>>notify:.  In the interim an adequate fix is

!Encoder methodsFor: 'error handling' stamp: 'eem 12/22/2009 11:57'!
notify: string
"Put a separate notifier on top of the requestor's window"
| req |
requestor == nil
ifTrue:
[super notify: string]
ifFalse: 
[req := requestor.
self release.
req notify: string].
^false! !

With this fix a notifier opens stating:
"More than 256 literals referenced. 
 You must split or otherwise simplify this method.
 The 257th literal is: 397

 Select Proceed to continue, or close this window to cancel the operation."

Find file-in attached.


2009/12/21 Bart Gauquie <[hidden email]>
Hi,  


Then for instance following fails if I evaluate it in a workspace:

MorphicReplayDemoTest compile: 
'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 1037@504 to: 979@482.
self addMMEFrom: 979@482 to: 905@464.
self addMMEFrom: 905@464 to: 823@462.
self addMMEFrom: 823@462 to: 745@482.
self addMMEFrom: 745@482 to: 685@520.
self addMMEFrom: 685@520 to: 651@559.

self addMMEFrom: 651@559 to: 643@579.
self addMMEFrom: 643@579 to: 653@579.
self addMMEFrom: 653@579 to: 675@564.
self addMMEFrom: 675@564 to: 810@452.
self addMMEFrom: 810@452 to: 923@353.
self addMMEFrom: 923@353 to: 1005@287.
self addMMEFrom: 1005@287 to: 1052@257.
self addMMEFrom: 1052@257 to: 1061@252.
self addMMEFrom: 1061@252 to: 1059@259.
self addMMEFrom: 1059@259 to: 998@314.
self addMMEFrom: 998@314 to: 898@414.
self addMMEFrom: 898@414 to: 827@502.
self addMMEFrom: 827@502 to: 789@570.
self addMMEFrom: 789@570 to: 792@610.
self addMMEFrom: 792@610 to: 839@630.
self addMMEFrom: 839@630 to: 929@620.
self addMMEFrom: 929@620 to: 1039@579.
self addMMEFrom: 1039@579 to: 1086@549.
self addMMEFrom: 1086@549 to: 1158@447.
self addMMEFrom: 1158@447 to: 1147@379.
self addMMEFrom: 1147@379 to: 1066@377.
self addMMEFrom: 1066@377 to: 930@416.
self addMMEFrom: 930@416 to: 864@446.
self addMMEFrom: 864@446 to: 734@530.
self addMMEFrom: 734@530 to: 714@548.
self addMMEFrom: 714@548 to: 734@546.
self addMMEFrom: 734@546 to: 815@515.
self addMMEFrom: 815@515 to: 875@491.
self addMMEFrom: 875@491 to: 1065@407.
self addMMEFrom: 1065@407 to: 1128@361.
self addMMEFrom: 1128@361 to: 1142@343.
self addMMEFrom: 1142@343 to: 1112@340.
self addMMEFrom: 1112@340 to: 1064@349.
self addMMEFrom: 1064@349 to: 864@416.
self addMMEFrom: 864@416 to: 757@471.
self addMMEFrom: 757@471 to: 705@511.
self addMMEFrom: 705@511 to: 701@524.
self addMMEFrom: 701@524 to: 743@528.
self addMMEFrom: 743@528 to: 845@509.
self addMMEFrom: 845@509 to: 914@493.
self addMMEFrom: 914@493 to: 1101@446.
self addMMEFrom: 1101@446 to: 1154@427.
self addMMEFrom: 1154@427 to: 1163@423.
self addMMEFrom: 1163@423 to: 1156@422.
self addMMEFrom: 1156@422 to: 1129@424.
self addMMEFrom: 1129@424 to: 923@449.
self addMMEFrom: 923@449 to: 785@479.
self addMMEFrom: 785@479 to: 689@503.
self addMMEFrom: 689@503 to: 651@512.
self addMMEFrom: 651@512 to: 650@512.
self addMMEFrom: 650@512 to: 672@508.
self addMMEFrom: 672@508 to: 773@492.
self addMMEFrom: 773@492 to: 916@486.
self addMMEFrom: 916@486 to: 1066@494.
self addMMEFrom: 1066@494 to: 1175@508.
self addMMEFrom: 1175@508 to: 1229@514.
self addMMEFrom: 1229@514 to: 1232@514.
self addMMEFrom: 1232@514 to: 1142@492.
self addMMEFrom: 1142@492 to: 986@483.
self addMMEFrom: 986@483 to: 810@498.
self addMMEFrom: 810@498 to: 678@519.
self addMMEFrom: 678@519 to: 637@523.
self addMMEFrom: 637@523 to: 606@502.
self addMMEFrom: 606@502 to: 659@442.
self addMMEFrom: 659@442 to: 769@365.
self addMMEFrom: 769@365 to: 911@316.
self addMMEFrom: 911@316 to: 1052@318.
self addMMEFrom: 1052@318 to: 1129@360.
self addMMEFrom: 1129@360 to: 1153@403.
self addMMEFrom: 1153@403 to: 1127@443.
self addMMEFrom: 1127@443 to: 1015@491.
self addMMEFrom: 1015@491 to: 850@536.
self addMMEFrom: 850@536 to: 697@571.
self addMMEFrom: 697@571 to: 642@578.
self addMMEFrom: 642@578 to: 571@545.
self addMMEFrom: 571@545 to: 604@485.
self addMMEFrom: 604@485 to: 701@419.
self addMMEFrom: 701@419 to: 843@383.
self addMMEFrom: 843@383 to: 919@383.
self addMMEFrom: 919@383 to: 1095@425.
self addMMEFrom: 1095@425 to: 1126@443.
self addMMEFrom: 1126@443 to: 1102@449.
self addMMEFrom: 1102@449 to: 984@468.
self addMMEFrom: 984@468 to: 829@509.
self addMMEFrom: 829@509 to: 703@547.
self addMMEFrom: 703@547 to: 637@555.
self addMMEFrom: 637@555 to: 633@531.
self addMMEFrom: 633@531 to: 694@468.
self addMMEFrom: 694@468 to: 809@407.
self addMMEFrom: 809@407 to: 946@380.
self addMMEFrom: 946@380 to: 1011@378.
self addMMEFrom: 1011@378 to: 1119@393.
self addMMEFrom: 1119@393 to: 1110@393.
self addMMEFrom: 1110@393 to: 1010@388.
self addMMEFrom: 1010@388 to: 859@402.
self addMMEFrom: 859@402 to: 727@433.
self addMMEFrom: 727@433 to: 665@454.
self addMMEFrom: 665@454 to: 663@461.
self addMMEFrom: 663@461 to: 683@469.
self addMMEFrom: 683@469 to: 837@492.
self addMMEFrom: 837@492 to: 989@495.
self addMMEFrom: 989@495 to: 1103@476.
self addMMEFrom: 1103@476 to: 1153@433.
self addMMEFrom: 1153@433 to: 1163@404.
self addMMEFrom: 1163@404 to: 1147@307.
self addMMEFrom: 1147@307 to: 1086@294.
self addMMEFrom: 1086@294 to: 995@324.
self addMMEFrom: 995@324 to: 935@357.
self addMMEFrom: 935@357 to: 922@366.
self addMMEFrom: 922@366 to: 925@370.
self addMMEFrom: 925@370 to: 941@379.
self addMMEFrom: 941@379 to: 974@389.
self addMMEFrom: 974@389 to: 1010@399.
self addMMEFrom: 1010@399 to: 1036@408.
self addMMEFrom: 1036@408 to: 1052@414.
self addMMEFrom: 1052@414 to: 1056@416.
self addMMEFrom: 1056@416 to: 1061@418.
self addMMEFrom: 1061@418 to: 1068@419.
self addMMEFrom: 1068@419 to: 1078@418.
self addMMEFrom: 1078@418 to: 1086@414.
self addMMEFrom: 1086@414 to: 1089@411.
self addMMEFrom: 1089@411 to: 1095@404.
self addMMEFrom: 1095@404 to: 1097@404.
self addMMEFrom: 1097@404 to: 1099@406.
self addMMEFrom: 1099@406 to: 1100@407.
self addMMEFrom: 1100@407 to: 1101@408.
self addMMEFrom: 1101@408 to: 1101@409.
self addMMEFrom: 1101@409 to: 1101@410.
self addMMEFrom: 1101@410 to: 1102@411.
self addMMEFrom: 1102@411 to: 1104@412.
self addMMEFrom: 1104@412 to: 1106@411.
self addMMEFrom: 1106@411 to: 1110@409.
self addMMEFrom: 1110@409 to: 1112@408.
self addMMEFrom: 1112@408 to: 1114@407.
self addMMEFrom: 1114@407 to: 1115@408.
self addMMEFrom: 1115@408 to: 1115@408.
self addMMEFrom: 1115@408 to: 1115@407.
MouseButtonEvent new.
MouseButtonEvent new.
self addMMEFrom: 1131@401 to: 1129@403.
self addMMEFrom: 1129@403 to: 1121@408.
self addMMEFrom: 1121@408 to: 1106@416.
self addMMEFrom: 1106@416 to: 1084@426.
self addMMEFrom: 1084@426 to: 1051@443.
self addMMEFrom: 1051@443 to: 1019@470.
self addMMEFrom: 1019@470 to: 995@504.
self addMMEFrom: 995@504 to: 981@546.
self addMMEFrom: 981@546 to: 980@592.
self addMMEFrom: 980@592 to: 990@634.
self addMMEFrom: 990@634 to: 1012@665.
self addMMEFrom: 1012@665 to: 1043@680.
self addMMEFrom: 1043@680 to: 1076@677.
self addMMEFrom: 1076@677 to: 1132@658.
self addMMEFrom: 1132@658 to: 1189@626.
self addMMEFrom: 1189@626 to: 1205@606.
self addMMEFrom: 1205@606 to: 1222@543.
self addMMEFrom: 1222@543 to: 1219@504.
self addMMEFrom: 1219@504 to: 1207@464.
self addMMEFrom: 1207@464 to: 1190@425.
self addMMEFrom: 1190@425 to: 1180@409.
self addMMEFrom: 1180@409 to: 1140@387.
self addMMEFrom: 1140@387 to: 1092@397.
self addMMEFrom: 1092@397 to: 1044@424.
self addMMEFrom: 1044@424 to: 1004@464.
self addMMEFrom: 1004@464 to: 977@513.
self addMMEFrom: 977@513 to: 965@565.
self addMMEFrom: 965@565 to: 965@614.
self addMMEFrom: 965@614 to: 977@656.
self addMMEFrom: 977@656 to: 1001@689.
self addMMEFrom: 1001@689 to: 1035@709.
self addMMEFrom: 1035@709 to: 1067@714.
self addMMEFrom: 1067@714 to: 1094@710.
self addMMEFrom: 1094@710 to: 1219@673.
self addMMEFrom: 1219@673 to: 1254@635.
self addMMEFrom: 1254@635 to: 1269@594.
self addMMEFrom: 1269@594 to: 1277@552.
self addMMEFrom: 1277@552 to: 1277@530.
self addMMEFrom: 1277@530 to: 1251@459.
self addMMEFrom: 1251@459 to: 1215@418.
self addMMEFrom: 1215@418 to: 1180@389.
self addMMEFrom: 1180@389 to: 1143@377.
self addMMEFrom: 1143@377 to: 1092@379.
self addMMEFrom: 1092@379 to: 1041@397.
self addMMEFrom: 1041@397 to: 1019@410.
self addMMEFrom: 1019@410 to: 972@460.
self addMMEFrom: 972@460 to: 955@499.
self addMMEFrom: 955@499 to: 951@541.
self addMMEFrom: 951@541 to: 954@580.
self addMMEFrom: 954@580 to: 960@597.
self addMMEFrom: 960@597 to: 991@639.
self addMMEFrom: 991@639 to: 1027@657.
self addMMEFrom: 1027@657 to: 1066@666.
self addMMEFrom: 1066@666 to: 1122@665.
self addMMEFrom: 1122@665 to: 1199@651.
self addMMEFrom: 1199@651 to: 1245@625.
self addMMEFrom: 1245@625 to: 1270@596.
self addMMEFrom: 1270@596 to: 1284@565.
self addMMEFrom: 1284@565 to: 1287@528.
self addMMEFrom: 1287@528 to: 1275@486.
self addMMEFrom: 1275@486 to: 1242@445.
self addMMEFrom: 1242@445 to: 1204@412.
self addMMEFrom: 1204@412 to: 1171@390.
self addMMEFrom: 1171@390 to: 1126@383.
self addMMEFrom: 1126@383 to: 1083@394.
self addMMEFrom: 1083@394 to: 1040@420.
self addMMEFrom: 1040@420 to: 1025@438.
self addMMEFrom: 1025@438 to: 996@506.
self addMMEFrom: 996@506 to: 992@555.
self addMMEFrom: 992@555 to: 999@596.
self addMMEFrom: 999@596 to: 1015@629.
self addMMEFrom: 1015@629 to: 1027@641.
self addMMEFrom: 1027@641 to: 1068@658.
self addMMEFrom: 1068@658 to: 1115@655.
self addMMEFrom: 1115@655 to: 1184@640.
self addMMEFrom: 1184@640 to: 1234@616.
self addMMEFrom: 1234@616 to: 1266@589.
self addMMEFrom: 1266@589 to: 1290@555.
self addMMEFrom: 1290@555 to: 1301@518.
self addMMEFrom: 1301@518 to: 1296@474.
self addMMEFrom: 1296@474 to: 1267@430.
self addMMEFrom: 1267@430 to: 1223@392.
self addMMEFrom: 1223@392 to: 1187@370.
self addMMEFrom: 1187@370 to: 1172@366.
self addMMEFrom: 1172@366 to: 1115@375.
self addMMEFrom: 1115@375 to: 1076@397.
self addMMEFrom: 1076@397 to: 1046@429.
self addMMEFrom: 1046@429 to: 1027@468.
self addMMEFrom: 1027@468 to: 1022@489.
self addMMEFrom: 1022@489 to: 1023@545.
self addMMEFrom: 1023@545 to: 1033@567.
self addMMEFrom: 1033@567 to: 1061@590.
self addMMEFrom: 1061@590 to: 1104@603.
self addMMEFrom: 1104@603 to: 1165@605.
self addMMEFrom: 1165@605 to: 1220@593.
self addMMEFrom: 1220@593 to: 1258@571.
self addMMEFrom: 1258@571 to: 1284@543.
self addMMEFrom: 1284@543 to: 1298@509.
self addMMEFrom: 1298@509 to: 1299@466.
self addMMEFrom: 1299@466 to: 1276@414.
self addMMEFrom: 1276@414 to: 1255@390.
self addMMEFrom: 1255@390 to: 1189@340.
self addMMEFrom: 1189@340 to: 1148@334.
self addMMEFrom: 1148@334 to: 1094@346.
self addMMEFrom: 1094@346 to: 1051@373.
self addMMEFrom: 1051@373 to: 1021@412.
self addMMEFrom: 1021@412 to: 1006@457.
self addMMEFrom: 1006@457 to: 1002@506.
self addMMEFrom: 1002@506 to: 1006@557.
self addMMEFrom: 1006@557 to: 1012@581.
self addMMEFrom: 1012@581 to: 1041@637.
self addMMEFrom: 1041@637 to: 1070@657.
self addMMEFrom: 1070@657 to: 1127@660.
self addMMEFrom: 1127@660 to: 1209@644.
self addMMEFrom: 1209@644 to: 1234@630.
self addMMEFrom: 1234@630 to: 1284@569.
self addMMEFrom: 1284@569 to: 1302@521.
self addMMEFrom: 1302@521 to: 1304@466.
self addMMEFrom: 1304@466 to: 1286@410.
self addMMEFrom: 1286@410 to: 1247@369.
self addMMEFrom: 1247@369 to: 1208@347.
self addMMEFrom: 1208@347 to: 1196@342.
self addMMEFrom: 1196@342 to: 1170@346.
self addMMEFrom: 1170@346 to: 1151@356.
self addMMEFrom: 1151@356 to: 1137@363.
self addMMEFrom: 1137@363 to: 1133@366.
self addMMEFrom: 1133@366 to: 1133@366.
self addMMEFrom: 1133@366 to: 1135@372.
self addMMEFrom: 1135@372 to: 1133@381.
self addMMEFrom: 1133@381 to: 1128@393.
self addMMEFrom: 1128@393 to: 1126@399.
self addMMEFrom: 1126@399 to: 1125@401.
self addMMEFrom: 1125@401 to: 1125@401.
self addMMEFrom: 1125@401 to: 1125@400.
self addMMEFrom: 1125@400 to: 1124@401.
self addMMEFrom: 1124@401 to: 1124@403.
self addMMEFrom: 1124@403 to: 1124@404.
self addMMEFrom: 1124@404 to: 1124@405.
self addMMEFrom: 1124@405 to: 1124@404.
MouseButtonEvent new.
MouseButtonEvent new.
'

These are autogenerated contents I want to export as a test case. The strange thing is that, if I manually create the testMethod using the system browser, and paste the content in it; it works fine.

Kind Regards,

Bart

2009/12/21 Eliot Miranda <[hidden email]>

Hi Bart,

    I still want to take a look at this specific case because the compiler should produce a proper error message, not an internal error.  So could you please package it up as a reproducible case, or email me the full string that fails?

TIA


2009/12/20 Bart Gauquie <[hidden email]>
Dear all,

I'm developing code which generates a method content, compiles it and adds it to an existing class. 
I compile the message using #compile: message:
for instance:

MorphicReplayDemoTest compile: '
testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 651@559 to: 643@579.
'.

This works fine. However if the contents of the method is too long; for instance: 
if the self addMMEFrom: 1054@512 to: 1037@504. is repeated around 250 times; I get following error (see stack below)

The strange thing is that if I manually add that method using the editor and paste it, it works just fine. I even tested up to 5000 lines of code; its slow, but its working.

Any ideas how to solve this?

Thanks,

Bart

I'm using Pharo 1.0 rc update: 10502; using Ubuntu 9.10, using vm pharo-vm-0.15.2f-linux.

THERE_BE_DRAGONS_HERE
MessageNotUnderstood: receiver of "<" is nil
20 December 2009 8:17:14 pm

VM: unix - i686 - linux-gnu - Pharo0.1 of 16 May 2008 [latest update: #10074]
Image: PharoCore1.0rc1 [Latest update: #10502]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image
Trusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image/secure
Untrusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image/My Squeak

UndefinedObject(Object)>>doesNotUnderstand: #<
Receiver: nil
Arguments and temporary variables:
aMessage: < 0
exception: MessageNotUnderstood: receiver of "<" is nil
resumeValue: nil
Receiver's instance variables:
nil

EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
literalIndex: nil
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
genSelector: #genPushLiteral:
args: #(nil)
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
Receiver: {an EncoderForV3PlusClosures}
Arguments and temporary variables:
literalIndex: nil
Receiver's instance variables:
comment: nil
pc: nil
scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
nTemps: 0
supered: false
requestor: nil
class: MorphicReplayDemoTest
selector: #testMethod
literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
litSet: a LiteralDictionary(size 402)
sourceRanges: a Dictionary(size 853)
globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
addedSelectorAndMethodClassLiterals: false
stream: {an EncoderForV3PlusClosures}
position: 0
rootNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEF...etc...
blockExtentsToLocals: nil

LiteralNode>>sizeCodeForValue:
Receiver: {397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
key: 397
code: -3
index: nil

[] in MessageNode>>sizeCodeForValue:
Receiver: {1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {1092}
selector: {@}
precedence: 2
special: 0
arguments: #({397})
sizes: #(nil)
equalNode: nil
caseErrorNode: nil

Array(SequenceableCollection)>>collect:
Receiver: #({397})
Arguments and temporary variables:
aBlock: [closure] in MessageNode>>sizeCodeForValue:
newCollection: #(nil)
index: 1
indexLimiT: 1
Receiver's instance variables:
#({397})

MessageNode>>sizeCodeForValue:
Receiver: {1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {1092}
selector: {@}
precedence: 2
special: 0
arguments: #({397})
sizes: #(nil)
equalNode: nil
caseErrorNode: nil

[] in MessageNode>>sizeCodeForValue:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

OrderedCollection>>collect:
Receiver: an OrderedCollection({1140 @ 387} {1092 @ 397})
Arguments and temporary variables:
aBlock: [closure] in MessageNode>>sizeCodeForValue:
newCollection: an OrderedCollection(7)
index: 4
Receiver's instance variables:
array: an Array(nil nil {1140 @ 387} {1092 @ 397} nil nil nil nil nil nil)
firstIndex: 3
lastIndex: 4

MessageNode>>sizeCodeForValue:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

MessageNode(ParseNode)>>sizeCodeForEffect:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

MessageNode>>sizeCodeForEffect:
Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
receiver: {self}
selector: {addMMEFrom:to:}
precedence: 3
special: 0
arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
sizes: #(nil nil)
equalNode: nil
caseErrorNode: nil

BlockNode>>sizeCodeExceptLast:
Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 979 @ 482.
...etc...
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
codeSize: 2564
i: 169
statement: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
iLimiT: 287
Receiver's instance variables:
comment: nil
pc: nil
arguments: #()
statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @ 504} {...etc...
returns: true
nArgsNode: nil
size: nil
remoteCopyNode: nil
temporaries: an OrderedCollection()
optimized: false
actualScopeIfOptimized: nil
blockExtent: (0 to: 2)
remoteTempNode: nil
copiedValues: nil
closureCreationNode: nil
startOfLastStatement: 11519

BlockNode>>sizeCodeForEvaluatedValue:
Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 979 @ 482.
...etc...
Arguments and temporary variables:
encoder: {an EncoderForV3PlusClosures}
Receiver's instance variables:
comment: nil
pc: nil
arguments: #()
statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @ 504} {...etc...
returns: true
nArgsNode: nil
size: nil
remoteCopyNode: nil
temporaries: an OrderedCollection()
optimized: false
actualScopeIfOptimized: nil
blockExtent: (0 to: 2)
remoteTempNode: nil
copiedValues: nil
closureCreationNode: nil
startOfLastStatement: 11519

BytecodeAgnosticMethodNode>>generate:
Receiver: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 504 to: 9...etc...
Arguments and temporary variables:
trailer: #(0 0 0 0)
primErrNode: nil
blkSize: nil
nLits: nil
literals: nil
stack: nil
method: nil
locals: nil
lit: nil
Receiver's instance variables:
comment: nil
pc: nil
selectorOrFalse: #testMethod
precedence: 1
arguments: #()
block: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMMEFrom: 1037 @ 5...etc...
primitive: 0
encoder: {an EncoderForV3PlusClosures}
temporaries: #()
properties: an AdditionalMethodState
sourceText: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFr...etc...
locationCounter: 3
localsPool: an IdentitySet()

CompiledMethodWithNode class>>generateMethodFromNode:trailer:
Receiver: CompiledMethodWithNode
Arguments and temporary variables:
aMethodNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addM...etc...
bytes: #(0 0 0 0)
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary(#method->a CompiledMethod(650: CompiledMethodWit...etc...
format: 134
instanceVariables: #('node' 'method')
organization: ('accessing' method node selector)
('private' method: node:)

subclasses: nil
name: #CompiledMethodWithNode
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'Compiler-Support'
traitComposition: nil
localSelectors: nil

MorphicReplayDemoTest class(Behavior)>>compile:classified:notifying:trailer:ifFail:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
requestor: nil
bytes: #(0 0 0 0)
failBlock: [closure] in MorphicReplayDemoTest class(ClassDescription)>>compile:...etc...
methodNode: testMethod
self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
self addMM...etc...
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
changeStamp: 'BartGauquie 12/20/2009 20:17'
requestor: nil
logSource: true
methodAndNode: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
changeStamp: 'BartGauquie 12/20/2009 20:17'
requestor: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:classified:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
text: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
category: #'as yet unclassified'
requestor: nil
stamp: 'BartGauquie 12/20/2009 20:17'
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
requestor: nil
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

MorphicReplayDemoTest class(Behavior)>>compile:
Receiver: MorphicReplayDemoTest
Arguments and temporary variables:
code: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
Receiver's instance variables:
superclass: AbstractReplayTestCase
methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
format: 134
instanceVariables: nil
organization: ('tests' testMethod)

subclasses: nil
name: #MorphicReplayDemoTest
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'MorphicsRecordNPlay-Model'
traitComposition: nil
localSelectors: nil
history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...

ByteString>>DoIt
Receiver: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 1037@504 to: 979@48...etc...
Arguments and temporary variables:

Receiver's instance variables:
'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 1037@504 to: 979@48...etc...

Compiler>>evaluate:in:to:notifying:ifFail:logged:
Receiver: a Compiler
Arguments and temporary variables:
textOrStream: a ReadWriteStream 'MorphicReplayDemoTest
compile: self.'
aContext: nil
receiver: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom...etc...
aRequestor: a TextMorphEditor
failBlock: [closure] in [] in TextMorphEditor(ParagraphEditor)>>evaluateSelecti...etc...
logFlag: true
methodNode: DoIt
^ MorphicReplayDemoTest compile: self
method: a CompiledMethod(2378: ByteString>>DoIt)
value: nil
toLog: nil
itsSelection: nil
itsSelectionString: nil
Receiver's instance variables:
sourceStream: a ReadWriteStream 'MorphicReplayDemoTest
compile: self.'
requestor: a TextMorphEditor
class: ByteString
category: nil
context: nil
parser: a Parser

[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
Receiver: a TextMorphEditor
Arguments and temporary variables:
rcvr: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
ctxt: nil
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

BlockClosure>>on:do:
Receiver: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
Arguments and temporary variables:
exception: OutOfScopeNotification
handlerAction: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection...etc...
handlerActive: true
Receiver's instance variables:
outerContext: TextMorphEditor(ParagraphEditor)>>evaluateSelection
startpc: 116
numArgs: 0

TextMorphEditor(ParagraphEditor)>>evaluateSelection
Receiver: a TextMorphEditor
Arguments and temporary variables:
result: nil
rcvr: 'testMethod
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 10...etc...
ctxt: nil
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>doIt
Receiver: a TextMorphEditor
Arguments and temporary variables:

Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

[] in TextMorphEditor(ParagraphEditor)>>doIt:
Receiver: a TextMorphEditor
Arguments and temporary variables:

Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
Receiver: a TextMorphEditor
Arguments and temporary variables:
aBlock: [closure] in TextMorphEditor(ParagraphEditor)>>doIt:
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>doIt:
Receiver: a TextMorphEditor
Arguments and temporary variables:
characterStream: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAheadStream: a WriteStream ''
honorCommandKeys: true
keyValue: 100
keyChar: $d
char: $d
action: #doIt:
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor>>dispatchOnKeyEvent:with:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAheadStream: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor(ParagraphEditor)>>keystroke:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
typeAhead: a WriteStream ''
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

TextMorphEditor>>keystroke:
Receiver: a TextMorphEditor
Arguments and temporary variables:
keyEvent: [keystroke '<Cmd-d>']
Receiver's instance variables:
model: a NewInspector
paragraph: a MultiNewParagraph
startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
...etc...
stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
beginTypeInBlock: nil
emphasisHere: an Array(a TextFontChange font: 2)
initialText: a Text for 'MorphicReplayDemoTest
compile: self
'
selectionShowing: false
otherInterval: (38 to: 38)
lastParentLocation: nil
morph: a TextMorphForEditView(3730)
oldInterval: nil
pivotBlock: nil

[] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
evt: [keystroke '<Cmd-d>']
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false

TextMorphForEditView(TextMorph)>>handleInteraction:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
interactionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc...
oldEditor: a TextMorphEditor
oldParagraph: a MultiNewParagraph
oldText: a Text for 'MorphicReplayDemoTest
compile: self.'
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false

TextMorphForEditView>>handleInteraction:
Receiver: a TextMorphForEditView(3730)
Arguments and temporary variables:
interActionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc...
Receiver's instance variables:
bounds: 0@0 corner: 358@34
owner: a TransformMorph(942)
submorphs: #()
fullBounds: 0@0 corner: 358@34
color: Color black
extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'MorphicReplayDemoTest
compile: self.'
wrapFlag: true
paragraph: a MultiNewParagraph
editor: a TextMorphEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: nil
editHistory: a TextMorphCommandHistory
editView: a PluggableTextMorphPlus(2866)
acceptOnCR: false


--- The full stack ---
UndefinedObject(Object)>>doesNotUnderstand: #<
EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
LiteralNode>>sizeCodeForValue:
[] in MessageNode>>sizeCodeForValue:
Array(SequenceableCollection)>>collect:
MessageNode>>sizeCodeForValue:
[] in MessageNode>>sizeCodeForValue:
OrderedCollection>>collect:
MessageNode>>sizeCodeForValue:
MessageNode(ParseNode)>>sizeCodeForEffect:
MessageNode>>sizeCodeForEffect:
BlockNode>>sizeCodeExceptLast:
BlockNode>>sizeCodeForEvaluatedValue:
BytecodeAgnosticMethodNode>>generate:
CompiledMethodWithNode class>>generateMethodFromNode:trailer:
MorphicReplayDemoTest class(Behavior)>>compile:classified:notifying:trailer:ifFail:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:
MorphicReplayDemoTest class(ClassDescription)>>compile:classified:notifying:
MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
MorphicReplayDemoTest class(Behavior)>>compile:
ByteString>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
BlockClosure>>on:do:
TextMorphEditor(ParagraphEditor)>>evaluateSelection
TextMorphEditor(ParagraphEditor)>>doIt
[] in TextMorphEditor(ParagraphEditor)>>doIt:
TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
TextMorphEditor(ParagraphEditor)>>doIt:
TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
TextMorphEditor>>dispatchOnKeyEvent:with:
TextMorphEditor(ParagraphEditor)>>keystroke:
TextMorphEditor>>keystroke:
[] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView(TextMorph)>>handleInteraction:
TextMorphForEditView>>handleInteraction:
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - -
[] in TextMorphForEditView(TextMorph)>>keyStroke:
ECToolSet class>>codeCompletionAround:textMorph:keyStroke:
DEVToolSet class>>codeCompletionAround:textMorph:keyStroke:
ToolSet class>>codeCompletionAround:textMorph:keyStroke:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear:
[] in PasteUpMorph>>becomeActiveDuring:
BlockClosure>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess
[] in BlockClosure>>newProcess
-----------------------------------------------------------


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project



--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
Gravitation is not responsible for people falling in love. - Albert Einstein

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Encoder-notify.st (532 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Long method can not be compiled using #compile: aString

Stéphane Ducasse
tx

http://code.google.com/p/pharo/issues/detail?id=1664

Stef

On Dec 23, 2009, at 7:11 PM, Eliot Miranda wrote:

> This results in an MNU instead of a warning about too many literals because Encoder>>notify: does not report notifications if there is no requestor (if compilation is non-interactive).  A fix would be to integrate with Colin's compiler error changes, e.g. by having Encoder hold onto its parser and defer to Parser>>notify:.  In the interim an adequate fix is
>
> !Encoder methodsFor: 'error handling' stamp: 'eem 12/22/2009 11:57'!
> notify: string
> "Put a separate notifier on top of the requestor's window"
> | req |
> requestor == nil
> ifTrue:
> [super notify: string]
> ifFalse:
> [req := requestor.
> self release.
> req notify: string].
> ^false! !
>
> With this fix a notifier opens stating:
> "More than 256 literals referenced.
>  You must split or otherwise simplify this method.
>  The 257th literal is: 397
>
>  Select Proceed to continue, or close this window to cancel the operation."
>
> Find file-in attached.
>
>
> 2009/12/21 Bart Gauquie <[hidden email]>
> Hi,  
>
> First load the latest http://www.squeaksource.com/MorphicsRecordNPlay package.
>
> Then for instance following fails if I evaluate it in a workspace:
>
> MorphicReplayDemoTest compile:
> 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 1037@504 to: 979@482.
> self addMMEFrom: 979@482 to: 905@464.
> self addMMEFrom: 905@464 to: 823@462.
> self addMMEFrom: 823@462 to: 745@482.
> self addMMEFrom: 745@482 to: 685@520.
> self addMMEFrom: 685@520 to: 651@559.
>
> self addMMEFrom: 651@559 to: 643@579.
> self addMMEFrom: 643@579 to: 653@579.
> self addMMEFrom: 653@579 to: 675@564.
> self addMMEFrom: 675@564 to: 810@452.
> self addMMEFrom: 810@452 to: 923@353.
> self addMMEFrom: 923@353 to: 1005@287.
> self addMMEFrom: 1005@287 to: 1052@257.
> self addMMEFrom: 1052@257 to: 1061@252.
> self addMMEFrom: 1061@252 to: 1059@259.
> self addMMEFrom: 1059@259 to: 998@314.
> self addMMEFrom: 998@314 to: 898@414.
> self addMMEFrom: 898@414 to: 827@502.
> self addMMEFrom: 827@502 to: 789@570.
> self addMMEFrom: 789@570 to: 792@610.
> self addMMEFrom: 792@610 to: 839@630.
> self addMMEFrom: 839@630 to: 929@620.
> self addMMEFrom: 929@620 to: 1039@579.
> self addMMEFrom: 1039@579 to: 1086@549.
> self addMMEFrom: 1086@549 to: 1158@447.
> self addMMEFrom: 1158@447 to: 1147@379.
> self addMMEFrom: 1147@379 to: 1066@377.
> self addMMEFrom: 1066@377 to: 930@416.
> self addMMEFrom: 930@416 to: 864@446.
> self addMMEFrom: 864@446 to: 734@530.
> self addMMEFrom: 734@530 to: 714@548.
> self addMMEFrom: 714@548 to: 734@546.
> self addMMEFrom: 734@546 to: 815@515.
> self addMMEFrom: 815@515 to: 875@491.
> self addMMEFrom: 875@491 to: 1065@407.
> self addMMEFrom: 1065@407 to: 1128@361.
> self addMMEFrom: 1128@361 to: 1142@343.
> self addMMEFrom: 1142@343 to: 1112@340.
> self addMMEFrom: 1112@340 to: 1064@349.
> self addMMEFrom: 1064@349 to: 864@416.
> self addMMEFrom: 864@416 to: 757@471.
> self addMMEFrom: 757@471 to: 705@511.
> self addMMEFrom: 705@511 to: 701@524.
> self addMMEFrom: 701@524 to: 743@528.
> self addMMEFrom: 743@528 to: 845@509.
> self addMMEFrom: 845@509 to: 914@493.
> self addMMEFrom: 914@493 to: 1101@446.
> self addMMEFrom: 1101@446 to: 1154@427.
> self addMMEFrom: 1154@427 to: 1163@423.
> self addMMEFrom: 1163@423 to: 1156@422.
> self addMMEFrom: 1156@422 to: 1129@424.
> self addMMEFrom: 1129@424 to: 923@449.
> self addMMEFrom: 923@449 to: 785@479.
> self addMMEFrom: 785@479 to: 689@503.
> self addMMEFrom: 689@503 to: 651@512.
> self addMMEFrom: 651@512 to: 650@512.
> self addMMEFrom: 650@512 to: 672@508.
> self addMMEFrom: 672@508 to: 773@492.
> self addMMEFrom: 773@492 to: 916@486.
> self addMMEFrom: 916@486 to: 1066@494.
> self addMMEFrom: 1066@494 to: 1175@508.
> self addMMEFrom: 1175@508 to: 1229@514.
> self addMMEFrom: 1229@514 to: 1232@514.
> self addMMEFrom: 1232@514 to: 1142@492.
> self addMMEFrom: 1142@492 to: 986@483.
> self addMMEFrom: 986@483 to: 810@498.
> self addMMEFrom: 810@498 to: 678@519.
> self addMMEFrom: 678@519 to: 637@523.
> self addMMEFrom: 637@523 to: 606@502.
> self addMMEFrom: 606@502 to: 659@442.
> self addMMEFrom: 659@442 to: 769@365.
> self addMMEFrom: 769@365 to: 911@316.
> self addMMEFrom: 911@316 to: 1052@318.
> self addMMEFrom: 1052@318 to: 1129@360.
> self addMMEFrom: 1129@360 to: 1153@403.
> self addMMEFrom: 1153@403 to: 1127@443.
> self addMMEFrom: 1127@443 to: 1015@491.
> self addMMEFrom: 1015@491 to: 850@536.
> self addMMEFrom: 850@536 to: 697@571.
> self addMMEFrom: 697@571 to: 642@578.
> self addMMEFrom: 642@578 to: 571@545.
> self addMMEFrom: 571@545 to: 604@485.
> self addMMEFrom: 604@485 to: 701@419.
> self addMMEFrom: 701@419 to: 843@383.
> self addMMEFrom: 843@383 to: 919@383.
> self addMMEFrom: 919@383 to: 1095@425.
> self addMMEFrom: 1095@425 to: 1126@443.
> self addMMEFrom: 1126@443 to: 1102@449.
> self addMMEFrom: 1102@449 to: 984@468.
> self addMMEFrom: 984@468 to: 829@509.
> self addMMEFrom: 829@509 to: 703@547.
> self addMMEFrom: 703@547 to: 637@555.
> self addMMEFrom: 637@555 to: 633@531.
> self addMMEFrom: 633@531 to: 694@468.
> self addMMEFrom: 694@468 to: 809@407.
> self addMMEFrom: 809@407 to: 946@380.
> self addMMEFrom: 946@380 to: 1011@378.
> self addMMEFrom: 1011@378 to: 1119@393.
> self addMMEFrom: 1119@393 to: 1110@393.
> self addMMEFrom: 1110@393 to: 1010@388.
> self addMMEFrom: 1010@388 to: 859@402.
> self addMMEFrom: 859@402 to: 727@433.
> self addMMEFrom: 727@433 to: 665@454.
> self addMMEFrom: 665@454 to: 663@461.
> self addMMEFrom: 663@461 to: 683@469.
> self addMMEFrom: 683@469 to: 837@492.
> self addMMEFrom: 837@492 to: 989@495.
> self addMMEFrom: 989@495 to: 1103@476.
> self addMMEFrom: 1103@476 to: 1153@433.
> self addMMEFrom: 1153@433 to: 1163@404.
> self addMMEFrom: 1163@404 to: 1147@307.
> self addMMEFrom: 1147@307 to: 1086@294.
> self addMMEFrom: 1086@294 to: 995@324.
> self addMMEFrom: 995@324 to: 935@357.
> self addMMEFrom: 935@357 to: 922@366.
> self addMMEFrom: 922@366 to: 925@370.
> self addMMEFrom: 925@370 to: 941@379.
> self addMMEFrom: 941@379 to: 974@389.
> self addMMEFrom: 974@389 to: 1010@399.
> self addMMEFrom: 1010@399 to: 1036@408.
> self addMMEFrom: 1036@408 to: 1052@414.
> self addMMEFrom: 1052@414 to: 1056@416.
> self addMMEFrom: 1056@416 to: 1061@418.
> self addMMEFrom: 1061@418 to: 1068@419.
> self addMMEFrom: 1068@419 to: 1078@418.
> self addMMEFrom: 1078@418 to: 1086@414.
> self addMMEFrom: 1086@414 to: 1089@411.
> self addMMEFrom: 1089@411 to: 1095@404.
> self addMMEFrom: 1095@404 to: 1097@404.
> self addMMEFrom: 1097@404 to: 1099@406.
> self addMMEFrom: 1099@406 to: 1100@407.
> self addMMEFrom: 1100@407 to: 1101@408.
> self addMMEFrom: 1101@408 to: 1101@409.
> self addMMEFrom: 1101@409 to: 1101@410.
> self addMMEFrom: 1101@410 to: 1102@411.
> self addMMEFrom: 1102@411 to: 1104@412.
> self addMMEFrom: 1104@412 to: 1106@411.
> self addMMEFrom: 1106@411 to: 1110@409.
> self addMMEFrom: 1110@409 to: 1112@408.
> self addMMEFrom: 1112@408 to: 1114@407.
> self addMMEFrom: 1114@407 to: 1115@408.
> self addMMEFrom: 1115@408 to: 1115@408.
> self addMMEFrom: 1115@408 to: 1115@407.
> MouseButtonEvent new.
> MouseButtonEvent new.
> self addMMEFrom: 1131@401 to: 1129@403.
> self addMMEFrom: 1129@403 to: 1121@408.
> self addMMEFrom: 1121@408 to: 1106@416.
> self addMMEFrom: 1106@416 to: 1084@426.
> self addMMEFrom: 1084@426 to: 1051@443.
> self addMMEFrom: 1051@443 to: 1019@470.
> self addMMEFrom: 1019@470 to: 995@504.
> self addMMEFrom: 995@504 to: 981@546.
> self addMMEFrom: 981@546 to: 980@592.
> self addMMEFrom: 980@592 to: 990@634.
> self addMMEFrom: 990@634 to: 1012@665.
> self addMMEFrom: 1012@665 to: 1043@680.
> self addMMEFrom: 1043@680 to: 1076@677.
> self addMMEFrom: 1076@677 to: 1132@658.
> self addMMEFrom: 1132@658 to: 1189@626.
> self addMMEFrom: 1189@626 to: 1205@606.
> self addMMEFrom: 1205@606 to: 1222@543.
> self addMMEFrom: 1222@543 to: 1219@504.
> self addMMEFrom: 1219@504 to: 1207@464.
> self addMMEFrom: 1207@464 to: 1190@425.
> self addMMEFrom: 1190@425 to: 1180@409.
> self addMMEFrom: 1180@409 to: 1140@387.
> self addMMEFrom: 1140@387 to: 1092@397.
> self addMMEFrom: 1092@397 to: 1044@424.
> self addMMEFrom: 1044@424 to: 1004@464.
> self addMMEFrom: 1004@464 to: 977@513.
> self addMMEFrom: 977@513 to: 965@565.
> self addMMEFrom: 965@565 to: 965@614.
> self addMMEFrom: 965@614 to: 977@656.
> self addMMEFrom: 977@656 to: 1001@689.
> self addMMEFrom: 1001@689 to: 1035@709.
> self addMMEFrom: 1035@709 to: 1067@714.
> self addMMEFrom: 1067@714 to: 1094@710.
> self addMMEFrom: 1094@710 to: 1219@673.
> self addMMEFrom: 1219@673 to: 1254@635.
> self addMMEFrom: 1254@635 to: 1269@594.
> self addMMEFrom: 1269@594 to: 1277@552.
> self addMMEFrom: 1277@552 to: 1277@530.
> self addMMEFrom: 1277@530 to: 1251@459.
> self addMMEFrom: 1251@459 to: 1215@418.
> self addMMEFrom: 1215@418 to: 1180@389.
> self addMMEFrom: 1180@389 to: 1143@377.
> self addMMEFrom: 1143@377 to: 1092@379.
> self addMMEFrom: 1092@379 to: 1041@397.
> self addMMEFrom: 1041@397 to: 1019@410.
> self addMMEFrom: 1019@410 to: 972@460.
> self addMMEFrom: 972@460 to: 955@499.
> self addMMEFrom: 955@499 to: 951@541.
> self addMMEFrom: 951@541 to: 954@580.
> self addMMEFrom: 954@580 to: 960@597.
> self addMMEFrom: 960@597 to: 991@639.
> self addMMEFrom: 991@639 to: 1027@657.
> self addMMEFrom: 1027@657 to: 1066@666.
> self addMMEFrom: 1066@666 to: 1122@665.
> self addMMEFrom: 1122@665 to: 1199@651.
> self addMMEFrom: 1199@651 to: 1245@625.
> self addMMEFrom: 1245@625 to: 1270@596.
> self addMMEFrom: 1270@596 to: 1284@565.
> self addMMEFrom: 1284@565 to: 1287@528.
> self addMMEFrom: 1287@528 to: 1275@486.
> self addMMEFrom: 1275@486 to: 1242@445.
> self addMMEFrom: 1242@445 to: 1204@412.
> self addMMEFrom: 1204@412 to: 1171@390.
> self addMMEFrom: 1171@390 to: 1126@383.
> self addMMEFrom: 1126@383 to: 1083@394.
> self addMMEFrom: 1083@394 to: 1040@420.
> self addMMEFrom: 1040@420 to: 1025@438.
> self addMMEFrom: 1025@438 to: 996@506.
> self addMMEFrom: 996@506 to: 992@555.
> self addMMEFrom: 992@555 to: 999@596.
> self addMMEFrom: 999@596 to: 1015@629.
> self addMMEFrom: 1015@629 to: 1027@641.
> self addMMEFrom: 1027@641 to: 1068@658.
> self addMMEFrom: 1068@658 to: 1115@655.
> self addMMEFrom: 1115@655 to: 1184@640.
> self addMMEFrom: 1184@640 to: 1234@616.
> self addMMEFrom: 1234@616 to: 1266@589.
> self addMMEFrom: 1266@589 to: 1290@555.
> self addMMEFrom: 1290@555 to: 1301@518.
> self addMMEFrom: 1301@518 to: 1296@474.
> self addMMEFrom: 1296@474 to: 1267@430.
> self addMMEFrom: 1267@430 to: 1223@392.
> self addMMEFrom: 1223@392 to: 1187@370.
> self addMMEFrom: 1187@370 to: 1172@366.
> self addMMEFrom: 1172@366 to: 1115@375.
> self addMMEFrom: 1115@375 to: 1076@397.
> self addMMEFrom: 1076@397 to: 1046@429.
> self addMMEFrom: 1046@429 to: 1027@468.
> self addMMEFrom: 1027@468 to: 1022@489.
> self addMMEFrom: 1022@489 to: 1023@545.
> self addMMEFrom: 1023@545 to: 1033@567.
> self addMMEFrom: 1033@567 to: 1061@590.
> self addMMEFrom: 1061@590 to: 1104@603.
> self addMMEFrom: 1104@603 to: 1165@605.
> self addMMEFrom: 1165@605 to: 1220@593.
> self addMMEFrom: 1220@593 to: 1258@571.
> self addMMEFrom: 1258@571 to: 1284@543.
> self addMMEFrom: 1284@543 to: 1298@509.
> self addMMEFrom: 1298@509 to: 1299@466.
> self addMMEFrom: 1299@466 to: 1276@414.
> self addMMEFrom: 1276@414 to: 1255@390.
> self addMMEFrom: 1255@390 to: 1189@340.
> self addMMEFrom: 1189@340 to: 1148@334.
> self addMMEFrom: 1148@334 to: 1094@346.
> self addMMEFrom: 1094@346 to: 1051@373.
> self addMMEFrom: 1051@373 to: 1021@412.
> self addMMEFrom: 1021@412 to: 1006@457.
> self addMMEFrom: 1006@457 to: 1002@506.
> self addMMEFrom: 1002@506 to: 1006@557.
> self addMMEFrom: 1006@557 to: 1012@581.
> self addMMEFrom: 1012@581 to: 1041@637.
> self addMMEFrom: 1041@637 to: 1070@657.
> self addMMEFrom: 1070@657 to: 1127@660.
> self addMMEFrom: 1127@660 to: 1209@644.
> self addMMEFrom: 1209@644 to: 1234@630.
> self addMMEFrom: 1234@630 to: 1284@569.
> self addMMEFrom: 1284@569 to: 1302@521.
> self addMMEFrom: 1302@521 to: 1304@466.
> self addMMEFrom: 1304@466 to: 1286@410.
> self addMMEFrom: 1286@410 to: 1247@369.
> self addMMEFrom: 1247@369 to: 1208@347.
> self addMMEFrom: 1208@347 to: 1196@342.
> self addMMEFrom: 1196@342 to: 1170@346.
> self addMMEFrom: 1170@346 to: 1151@356.
> self addMMEFrom: 1151@356 to: 1137@363.
> self addMMEFrom: 1137@363 to: 1133@366.
> self addMMEFrom: 1133@366 to: 1133@366.
> self addMMEFrom: 1133@366 to: 1135@372.
> self addMMEFrom: 1135@372 to: 1133@381.
> self addMMEFrom: 1133@381 to: 1128@393.
> self addMMEFrom: 1128@393 to: 1126@399.
> self addMMEFrom: 1126@399 to: 1125@401.
> self addMMEFrom: 1125@401 to: 1125@401.
> self addMMEFrom: 1125@401 to: 1125@400.
> self addMMEFrom: 1125@400 to: 1124@401.
> self addMMEFrom: 1124@401 to: 1124@403.
> self addMMEFrom: 1124@403 to: 1124@404.
> self addMMEFrom: 1124@404 to: 1124@405.
> self addMMEFrom: 1124@405 to: 1124@404.
> MouseButtonEvent new.
> MouseButtonEvent new.
> '
>
> These are autogenerated contents I want to export as a test case. The strange thing is that, if I manually create the testMethod using the system browser, and paste the content in it; it works fine.
>
> Kind Regards,
>
> Bart
>
> 2009/12/21 Eliot Miranda <[hidden email]>
>
> Hi Bart,
>
>     I still want to take a look at this specific case because the compiler should produce a proper error message, not an internal error.  So could you please package it up as a reproducible case, or email me the full string that fails?
>
> TIA
>
>
> 2009/12/20 Bart Gauquie <[hidden email]>
> Dear all,
>
> I'm developing code which generates a method content, compiles it and adds it to an existing class.
> I compile the message using #compile: message:
> for instance:
>
> MorphicReplayDemoTest compile: '
> testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 651@559 to: 643@579.
> '.
>
> This works fine. However if the contents of the method is too long; for instance:
> if the self addMMEFrom: 1054@512 to: 1037@504. is repeated around 250 times; I get following error (see stack below)
>
> The strange thing is that if I manually add that method using the editor and paste it, it works just fine. I even tested up to 5000 lines of code; its slow, but its working.
>
> Any ideas how to solve this?
>
> Thanks,
>
> Bart
>
> I'm using Pharo 1.0 rc update: 10502; using Ubuntu 9.10, using vm pharo-vm-0.15.2f-linux.
>
> THERE_BE_DRAGONS_HERE
> MessageNotUnderstood: receiver of "<" is nil
> 20 December 2009 8:17:14 pm
>
> VM: unix - i686 - linux-gnu - Pharo0.1 of 16 May 2008 [latest update: #10074]
> Image: PharoCore1.0rc1 [Latest update: #10502]
>
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
> Working Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image
> Trusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image/secure
> Untrusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground Image/My Squeak
>
> UndefinedObject(Object)>>doesNotUnderstand: #<
> Receiver: nil
> Arguments and temporary variables:
> aMessage: < 0
> exception: MessageNotUnderstood: receiver of "<" is nil
> resumeValue: nil
> Receiver's instance variables:
> nil
>
> EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
> Receiver: {an EncoderForV3PlusClosures}
> Arguments and temporary variables:
> literalIndex: nil
> Receiver's instance variables:
> comment: nil
> pc: nil
> scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
> nTemps: 0
> supered: false
> requestor: nil
> class: MorphicReplayDemoTest
> selector: #testMethod
> literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
> litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
> litSet: a LiteralDictionary(size 402)
> sourceRanges: a Dictionary(size 853)
> globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
> addedSelectorAndMethodClassLiterals: false
> stream: {an EncoderForV3PlusClosures}
> position: 0
> rootNode: testMethod
> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEF...etc...
> blockExtentsToLocals: nil
>
> EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
> Receiver: {an EncoderForV3PlusClosures}
> Arguments and temporary variables:
> genSelector: #genPushLiteral:
> args: #(nil)
> Receiver's instance variables:
> comment: nil
> pc: nil
> scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
> nTemps: 0
> supered: false
> requestor: nil
> class: MorphicReplayDemoTest
> selector: #testMethod
> literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
> litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
> litSet: a LiteralDictionary(size 402)
> sourceRanges: a Dictionary(size 853)
> globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
> addedSelectorAndMethodClassLiterals: false
> stream: {an EncoderForV3PlusClosures}
> position: 0
> rootNode: testMethod
> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEF...etc...
> blockExtentsToLocals: nil
>
> EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
> Receiver: {an EncoderForV3PlusClosures}
> Arguments and temporary variables:
> literalIndex: nil
> Receiver's instance variables:
> comment: nil
> pc: nil
> scopeTable: a Dictionary('false'->{false} 'nil'->{nil} 'recording'->{recording}...etc...
> nTemps: 0
> supered: false
> requestor: nil
> class: MorphicReplayDemoTest
> selector: #testMethod
> literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979. 482. ...etc...
> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//} #<->{<} #...etc...
> litIndSet: a Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
> litSet: a LiteralDictionary(size 402)
> sourceRanges: a Dictionary(size 853)
> globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to: 5778). ...etc...
> addedSelectorAndMethodClassLiterals: false
> stream: {an EncoderForV3PlusClosures}
> position: 0
> rootNode: testMethod
> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEF...etc...
> blockExtentsToLocals: nil
>
> LiteralNode>>sizeCodeForValue:
> Receiver: {397}
> Arguments and temporary variables:
> encoder: {an EncoderForV3PlusClosures}
> Receiver's instance variables:
> comment: nil
> pc: nil
> key: 397
> code: -3
> index: nil
>
> [] in MessageNode>>sizeCodeForValue:
> Receiver: {1092 @ 397}
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> comment: nil
> pc: nil
> receiver: {1092}
> selector: {@}
> precedence: 2
> special: 0
> arguments: #({397})
> sizes: #(nil)
> equalNode: nil
> caseErrorNode: nil
>
> Array(SequenceableCollection)>>collect:
> Receiver: #({397})
> Arguments and temporary variables:
> aBlock: [closure] in MessageNode>>sizeCodeForValue:
> newCollection: #(nil)
> index: 1
> indexLimiT: 1
> Receiver's instance variables:
> #({397})
>
> MessageNode>>sizeCodeForValue:
> Receiver: {1092 @ 397}
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> comment: nil
> pc: nil
> receiver: {1092}
> selector: {@}
> precedence: 2
> special: 0
> arguments: #({397})
> sizes: #(nil)
> equalNode: nil
> caseErrorNode: nil
>
> [] in MessageNode>>sizeCodeForValue:
> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> comment: nil
> pc: nil
> receiver: {self}
> selector: {addMMEFrom:to:}
> precedence: 3
> special: 0
> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
> sizes: #(nil nil)
> equalNode: nil
> caseErrorNode: nil
>
> OrderedCollection>>collect:
> Receiver: an OrderedCollection({1140 @ 387} {1092 @ 397})
> Arguments and temporary variables:
> aBlock: [closure] in MessageNode>>sizeCodeForValue:
> newCollection: an OrderedCollection(7)
> index: 4
> Receiver's instance variables:
> array: an Array(nil nil {1140 @ 387} {1092 @ 397} nil nil nil nil nil nil)
> firstIndex: 3
> lastIndex: 4
>
> MessageNode>>sizeCodeForValue:
> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> comment: nil
> pc: nil
> receiver: {self}
> selector: {addMMEFrom:to:}
> precedence: 3
> special: 0
> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
> sizes: #(nil nil)
> equalNode: nil
> caseErrorNode: nil
>
> MessageNode(ParseNode)>>sizeCodeForEffect:
> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
> Arguments and temporary variables:
> encoder: {an EncoderForV3PlusClosures}
> Receiver's instance variables:
> comment: nil
> pc: nil
> receiver: {self}
> selector: {addMMEFrom:to:}
> precedence: 3
> special: 0
> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
> sizes: #(nil nil)
> equalNode: nil
> caseErrorNode: nil
>
> MessageNode>>sizeCodeForEffect:
> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
> Arguments and temporary variables:
> encoder: {an EncoderForV3PlusClosures}
> Receiver's instance variables:
> comment: nil
> pc: nil
> receiver: {self}
> selector: {addMMEFrom:to:}
> precedence: 3
> special: 0
> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
> sizes: #(nil nil)
> equalNode: nil
> caseErrorNode: nil
>
> BlockNode>>sizeCodeExceptLast:
> Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEFrom: 1037 @ 504 to: 979 @ 482.
> ...etc...
> Arguments and temporary variables:
> encoder: {an EncoderForV3PlusClosures}
> codeSize: 2564
> i: 169
> statement: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
> iLimiT: 287
> Receiver's instance variables:
> comment: nil
> pc: nil
> arguments: #()
> statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @ 504} {...etc...
> returns: true
> nArgsNode: nil
> size: nil
> remoteCopyNode: nil
> temporaries: an OrderedCollection()
> optimized: false
> actualScopeIfOptimized: nil
> blockExtent: (0 to: 2)
> remoteTempNode: nil
> copiedValues: nil
> closureCreationNode: nil
> startOfLastStatement: 11519
>
> BlockNode>>sizeCodeForEvaluatedValue:
> Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEFrom: 1037 @ 504 to: 979 @ 482.
> ...etc...
> Arguments and temporary variables:
> encoder: {an EncoderForV3PlusClosures}
> Receiver's instance variables:
> comment: nil
> pc: nil
> arguments: #()
> statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @ 504} {...etc...
> returns: true
> nArgsNode: nil
> size: nil
> remoteCopyNode: nil
> temporaries: an OrderedCollection()
> optimized: false
> actualScopeIfOptimized: nil
> blockExtent: (0 to: 2)
> remoteTempNode: nil
> copiedValues: nil
> closureCreationNode: nil
> startOfLastStatement: 11519
>
> BytecodeAgnosticMethodNode>>generate:
> Receiver: testMethod
> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEFrom: 1037 @ 504 to: 9...etc...
> Arguments and temporary variables:
> trailer: #(0 0 0 0)
> primErrNode: nil
> blkSize: nil
> nLits: nil
> literals: nil
> stack: nil
> method: nil
> locals: nil
> lit: nil
> Receiver's instance variables:
> comment: nil
> pc: nil
> selectorOrFalse: #testMethod
> precedence: 1
> arguments: #()
> block: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEFrom: 1037 @ 5...etc...
> primitive: 0
> encoder: {an EncoderForV3PlusClosures}
> temporaries: #()
> properties: an AdditionalMethodState
> sourceText: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFr...etc...
> locationCounter: 3
> localsPool: an IdentitySet()
>
> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
> Receiver: CompiledMethodWithNode
> Arguments and temporary variables:
> aMethodNode: testMethod
> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addM...etc...
> bytes: #(0 0 0 0)
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary(#method->a CompiledMethod(650: CompiledMethodWit...etc...
> format: 134
> instanceVariables: #('node' 'method')
> organization: ('accessing' method node selector)
> ('private' method: node:)
>
> subclasses: nil
> name: #CompiledMethodWithNode
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'Compiler-Support'
> traitComposition: nil
> localSelectors: nil
>
> MorphicReplayDemoTest class(Behavior)>>compile:classified:notifying:trailer:ifFail:
> Receiver: MorphicReplayDemoTest
> Arguments and temporary variables:
> code: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> category: #'as yet unclassified'
> requestor: nil
> bytes: #(0 0 0 0)
> failBlock: [closure] in MorphicReplayDemoTest class(ClassDescription)>>compile:...etc...
> methodNode: testMethod
> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMM...etc...
> Receiver's instance variables:
> superclass: AbstractReplayTestCase
> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
> format: 134
> instanceVariables: nil
> organization: ('tests' testMethod)
>
> subclasses: nil
> name: #MorphicReplayDemoTest
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'MorphicsRecordNPlay-Model'
> traitComposition: nil
> localSelectors: nil
> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...
>
> MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
> Receiver: MorphicReplayDemoTest
> Arguments and temporary variables:
> text: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> category: #'as yet unclassified'
> changeStamp: 'BartGauquie 12/20/2009 20:17'
> requestor: nil
> logSource: true
> methodAndNode: nil
> Receiver's instance variables:
> superclass: AbstractReplayTestCase
> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
> format: 134
> instanceVariables: nil
> organization: ('tests' testMethod)
>
> subclasses: nil
> name: #MorphicReplayDemoTest
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'MorphicsRecordNPlay-Model'
> traitComposition: nil
> localSelectors: nil
> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...
>
> MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:
> Receiver: MorphicReplayDemoTest
> Arguments and temporary variables:
> text: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> category: #'as yet unclassified'
> changeStamp: 'BartGauquie 12/20/2009 20:17'
> requestor: nil
> Receiver's instance variables:
> superclass: AbstractReplayTestCase
> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
> format: 134
> instanceVariables: nil
> organization: ('tests' testMethod)
>
> subclasses: nil
> name: #MorphicReplayDemoTest
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'MorphicsRecordNPlay-Model'
> traitComposition: nil
> localSelectors: nil
> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...
>
> MorphicReplayDemoTest class(ClassDescription)>>compile:classified:notifying:
> Receiver: MorphicReplayDemoTest
> Arguments and temporary variables:
> text: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> category: #'as yet unclassified'
> requestor: nil
> stamp: 'BartGauquie 12/20/2009 20:17'
> Receiver's instance variables:
> superclass: AbstractReplayTestCase
> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
> format: 134
> instanceVariables: nil
> organization: ('tests' testMethod)
>
> subclasses: nil
> name: #MorphicReplayDemoTest
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'MorphicsRecordNPlay-Model'
> traitComposition: nil
> localSelectors: nil
> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...
>
> MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
> Receiver: MorphicReplayDemoTest
> Arguments and temporary variables:
> code: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> requestor: nil
> Receiver's instance variables:
> superclass: AbstractReplayTestCase
> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
> format: 134
> instanceVariables: nil
> organization: ('tests' testMethod)
>
> subclasses: nil
> name: #MorphicReplayDemoTest
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'MorphicsRecordNPlay-Model'
> traitComposition: nil
> localSelectors: nil
> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...
>
> MorphicReplayDemoTest class(Behavior)>>compile:
> Receiver: MorphicReplayDemoTest
> Arguments and temporary variables:
> code: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> Receiver's instance variables:
> superclass: AbstractReplayTestCase
> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191: MorphicRepla...etc...
> format: 134
> instanceVariables: nil
> organization: ('tests' testMethod)
>
> subclasses: nil
> name: #MorphicReplayDemoTest
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'MorphicsRecordNPlay-Model'
> traitComposition: nil
> localSelectors: nil
> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a Set(#testM...etc...
>
> ByteString>>DoIt
> Receiver: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 1037@504 to: 979@48...etc...
> Arguments and temporary variables:
>
> Receiver's instance variables:
> 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 1037@504 to: 979@48...etc...
>
> Compiler>>evaluate:in:to:notifying:ifFail:logged:
> Receiver: a Compiler
> Arguments and temporary variables:
> textOrStream: a ReadWriteStream 'MorphicReplayDemoTest
> compile: self.'
> aContext: nil
> receiver: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom...etc...
> aRequestor: a TextMorphEditor
> failBlock: [closure] in [] in TextMorphEditor(ParagraphEditor)>>evaluateSelecti...etc...
> logFlag: true
> methodNode: DoIt
> ^ MorphicReplayDemoTest compile: self
> method: a CompiledMethod(2378: ByteString>>DoIt)
> value: nil
> toLog: nil
> itsSelection: nil
> itsSelectionString: nil
> Receiver's instance variables:
> sourceStream: a ReadWriteStream 'MorphicReplayDemoTest
> compile: self.'
> requestor: a TextMorphEditor
> class: ByteString
> category: nil
> context: nil
> parser: a Parser
>
> [] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> rcvr: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> ctxt: nil
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> BlockClosure>>on:do:
> Receiver: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
> Arguments and temporary variables:
> exception: OutOfScopeNotification
> handlerAction: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection...etc...
> handlerActive: true
> Receiver's instance variables:
> outerContext: TextMorphEditor(ParagraphEditor)>>evaluateSelection
> startpc: 116
> numArgs: 0
>
> TextMorphEditor(ParagraphEditor)>>evaluateSelection
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> result: nil
> rcvr: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> ctxt: nil
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor(ParagraphEditor)>>doIt
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
>
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> [] in TextMorphEditor(ParagraphEditor)>>doIt:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
>
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> aBlock: [closure] in TextMorphEditor(ParagraphEditor)>>doIt:
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor(ParagraphEditor)>>doIt:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> characterStream: a WriteStream ''
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> keyEvent: [keystroke '<Cmd-d>']
> typeAheadStream: a WriteStream ''
> honorCommandKeys: true
> keyValue: 100
> keyChar: $d
> char: $d
> action: #doIt:
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor>>dispatchOnKeyEvent:with:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> keyEvent: [keystroke '<Cmd-d>']
> typeAheadStream: a WriteStream ''
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor(ParagraphEditor)>>keystroke:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> keyEvent: [keystroke '<Cmd-d>']
> typeAhead: a WriteStream ''
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor>>keystroke:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> keyEvent: [keystroke '<Cmd-d>']
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner: 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0 cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> [] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
> Receiver: a TextMorphForEditView(3730)
> Arguments and temporary variables:
> evt: [keystroke '<Cmd-d>']
> Receiver's instance variables:
> bounds: 0@0 corner: 358@34
> owner: a TransformMorph(942)
> submorphs: #()
> fullBounds: 0@0 corner: 358@34
> color: Color black
> extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
> borderWidth: 0
> borderColor: Color black
> textStyle: a TextStyle Bitmap DejaVu Sans 9
> text: a Text for 'MorphicReplayDemoTest
> compile: self.'
> wrapFlag: true
> paragraph: a MultiNewParagraph
> editor: a TextMorphEditor
> container: nil
> predecessor: nil
> successor: nil
> backgroundColor: nil
> margins: nil
> editHistory: a TextMorphCommandHistory
> editView: a PluggableTextMorphPlus(2866)
> acceptOnCR: false
>
> TextMorphForEditView(TextMorph)>>handleInteraction:
> Receiver: a TextMorphForEditView(3730)
> Arguments and temporary variables:
> interactionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc...
> oldEditor: a TextMorphEditor
> oldParagraph: a MultiNewParagraph
> oldText: a Text for 'MorphicReplayDemoTest
> compile: self.'
> Receiver's instance variables:
> bounds: 0@0 corner: 358@34
> owner: a TransformMorph(942)
> submorphs: #()
> fullBounds: 0@0 corner: 358@34
> color: Color black
> extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
> borderWidth: 0
> borderColor: Color black
> textStyle: a TextStyle Bitmap DejaVu Sans 9
> text: a Text for 'MorphicReplayDemoTest
> compile: self.'
> wrapFlag: true
> paragraph: a MultiNewParagraph
> editor: a TextMorphEditor
> container: nil
> predecessor: nil
> successor: nil
> backgroundColor: nil
> margins: nil
> editHistory: a TextMorphCommandHistory
> editView: a PluggableTextMorphPlus(2866)
> acceptOnCR: false
>
> TextMorphForEditView>>handleInteraction:
> Receiver: a TextMorphForEditView(3730)
> Arguments and temporary variables:
> interActionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc...
> Receiver's instance variables:
> bounds: 0@0 corner: 358@34
> owner: a TransformMorph(942)
> submorphs: #()
> fullBounds: 0@0 corner: 358@34
> color: Color black
> extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
> borderWidth: 0
> borderColor: Color black
> textStyle: a TextStyle Bitmap DejaVu Sans 9
> text: a Text for 'MorphicReplayDemoTest
> compile: self.'
> wrapFlag: true
> paragraph: a MultiNewParagraph
> editor: a TextMorphEditor
> container: nil
> predecessor: nil
> successor: nil
> backgroundColor: nil
> margins: nil
> editHistory: a TextMorphCommandHistory
> editView: a PluggableTextMorphPlus(2866)
> acceptOnCR: false
>
>
> --- The full stack ---
> UndefinedObject(Object)>>doesNotUnderstand: #<
> EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
> EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
> EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
> LiteralNode>>sizeCodeForValue:
> [] in MessageNode>>sizeCodeForValue:
> Array(SequenceableCollection)>>collect:
> MessageNode>>sizeCodeForValue:
> [] in MessageNode>>sizeCodeForValue:
> OrderedCollection>>collect:
> MessageNode>>sizeCodeForValue:
> MessageNode(ParseNode)>>sizeCodeForEffect:
> MessageNode>>sizeCodeForEffect:
> BlockNode>>sizeCodeExceptLast:
> BlockNode>>sizeCodeForEvaluatedValue:
> BytecodeAgnosticMethodNode>>generate:
> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
> MorphicReplayDemoTest class(Behavior)>>compile:classified:notifying:trailer:ifFail:
> MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
> MorphicReplayDemoTest class(ClassDescription)>>compile:classified:withStamp:notifying:
> MorphicReplayDemoTest class(ClassDescription)>>compile:classified:notifying:
> MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
> MorphicReplayDemoTest class(Behavior)>>compile:
> ByteString>>DoIt
> Compiler>>evaluate:in:to:notifying:ifFail:logged:
> [] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
> BlockClosure>>on:do:
> TextMorphEditor(ParagraphEditor)>>evaluateSelection
> TextMorphEditor(ParagraphEditor)>>doIt
> [] in TextMorphEditor(ParagraphEditor)>>doIt:
> TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
> TextMorphEditor(ParagraphEditor)>>doIt:
> TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
> TextMorphEditor>>dispatchOnKeyEvent:with:
> TextMorphEditor(ParagraphEditor)>>keystroke:
> TextMorphEditor>>keystroke:
> [] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
> TextMorphForEditView(TextMorph)>>handleInteraction:
> TextMorphForEditView>>handleInteraction:
> - - - - - - - - - - - - - - -
> - - - - - - - - - - - - - - - - - -
> [] in TextMorphForEditView(TextMorph)>>keyStroke:
> ECToolSet class>>codeCompletionAround:textMorph:keyStroke:
> DEVToolSet class>>codeCompletionAround:textMorph:keyStroke:
> ToolSet class>>codeCompletionAround:textMorph:keyStroke:
> TextMorphForEditView(TextMorph)>>keyStroke:
> TextMorphForEditView>>keyStroke:
> TextMorphForEditView(TextMorph)>>handleKeystroke:
> KeyboardEvent>>sentTo:
> TextMorphForEditView(Morph)>>handleEvent:
> TextMorphForEditView(Morph)>>handleFocusEvent:
> [] in HandMorph>>sendFocusEvent:to:clear:
> [] in PasteUpMorph>>becomeActiveDuring:
> BlockClosure>>on:do:
> PasteUpMorph>>becomeActiveDuring:
> HandMorph>>sendFocusEvent:to:clear:
> HandMorph>>sendEvent:focus:clear:
> HandMorph>>sendKeyboardEvent:
> HandMorph>>handleEvent:
> HandMorph>>processEvents
> [] in WorldState>>doOneCycleNowFor:
> Array(SequenceableCollection)>>do:
> WorldState>>handsDo:
> WorldState>>doOneCycleNowFor:
> WorldState>>doOneCycleFor:
> PasteUpMorph>>doOneCycle
> [] in Project class>>spawnNewProcess
> [] in BlockClosure>>newProcess
> -----------------------------------------------------------
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
>
> --
> imagination is more important than knowledge - Albert Einstein
> Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
> Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
> The true sign of intelligence is not knowledge but imagination. - Albert Einstein
> Gravitation is not responsible for people falling in love. - Albert Einstein
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> <Encoder-notify.st>_______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project