Hi Denis, �(Hi Michaels, this may be related yo your issue)...


Denis, this is nothing to do with blocks having homes. �It's somewhere in the simulation of RemoteString>>text (used in CompiledMethod>>getSourceFromFile), specifically when UTF8TestDecoders egt involved. �Try the following and you'll see the -261 doesNotUnderstand: which is the symptom of the broken simulation. �Don't know exactly where simulation breaks down (but I suspect primitive invocation). �Anyway this may get you started digging deeper.

| m |
m := ClassWithBlockDecompilation >> #methodWithDecompilation.
ContextPart trace: [ �m getSourceFromFile ] "fails"

| m |
m := ClassWithBlockDecompilation >> #methodWithDecompilation.
m getSourceFromFile "succeeds"


To dig deeper you may want to open up ContextPart class>>trace:on: in a workspace and put in some break-points, e.g. the following halts at the first doesNotUnderstand:. �Work your way back from there to find out where the -261 is coming form (I'm using Squeak 4.1, YMMV).

| aStream m aBlock prev |
(aStream := Transcript) clear.
m := ClassWithBlockDecompilation >> #methodWithDecompilation.
aBlock := [m getSourceFromFile].
prev := aBlock.
^thisContext sender
runSimulated: aBlock
contextAtEachStep:
[:current |
current selector = #doesNotUnderstand: ifTrue: [self halt].
Sensor anyButtonPressed ifTrue: [^ nil].
current == prev
ifFalse:
[prev sender ifNil:
[aStream space; nextPut: $^.
ContextPart carefullyPrint: current top on: aStream].
aStream cr.
(current depthBelow: aBlock) timesRepeat: [aStream space].
ContextPart carefullyPrint: current receiver on: aStream.
aStream space; nextPutAll: current selector; flush.
prev := current]


HTH
Eliot

2010/5/22 Denis Kudriashov <dionisiydk@gmail.com>
Block decompilation not work at situation during code simulation. Maybe its just problem in debugger "Through button" action implementation.
This happen because block home in that situation not exists.

I attach class ClassWithBlockDecompilation which help reproduce that manually. See class side method #debug

_______________________________________________
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project