[Pharo-project] [squeak-dev] CompiledMethod>>#hash broken on CogVM r2559, Win7, Squeak 4.3

Eliot Miranda eliot.miranda at gmail.com
Mon Jul 23 16:44:51 EDT 2012


On Mon, Jul 23, 2012 at 1:35 PM, Mariano Martinez Peck <
marianopeck at gmail.com> wrote:

>
>
> On Mon, Jul 23, 2012 at 10:22 PM, Eliot Miranda <eliot.miranda at gmail.com>wrote:
>
>>
>>
>> On Mon, Jul 23, 2012 at 1:02 PM, Mariano Martinez Peck <
>> marianopeck at gmail.com> wrote:
>>
>>>
>>>
>>> On Mon, Jul 23, 2012 at 9:43 PM, Mariano Martinez Peck <
>>> marianopeck at gmail.com> wrote:
>>>
>>>>
>>>>
>>>> On Mon, Jul 23, 2012 at 8:38 PM, Eliot Miranda <eliot.miranda at gmail.com
>>>> > wrote:
>>>>
>>>>>
>>>>>
>>>>> On Mon, Jul 23, 2012 at 11:34 AM, Mariano Martinez Peck <
>>>>> marianopeck at gmail.com> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Jul 23, 2012 at 8:08 PM, Eliot Miranda <
>>>>>> eliot.miranda at gmail.com> wrote:
>>>>>>
>>>>>>> Hi Marcel,
>>>>>>>
>>>>>>>     that's because the old hash method is broken.  The Cog VM
>>>>>>> finally adds a correct bounds check that prevents byte access to the
>>>>>>> non-byte parts (literals) of a CompiledMethod.  Accessing the literals of a
>>>>>>> method via byte access gives access to the addresses of objects.  This is
>>>>>>> broken since the GC is a moving garbage collector and so addresses can
>>>>>>> change.  Hence a hash derived from such bytes is not stable.  See
>>>>>>> Kernel-eem.692 which provides the attached hash method.
>>>>>>>
>>>>>>>
>>>>>> Hi Eliot. I remember seeing this discussion in the Pharo mailing list
>>>>>> also. So...I guess we should commit that also in Pharo, right?
>>>>>>
>>>>>
>>>>> Yes.  Also the bug fixes in Kernel-eem.700 & Kernel-eem.703.
>>>>>
>>>>>
>>>>
>>>> Regarding Kernel-eem.700, I don't really understand much the code, so I
>>>> will trust you. Now, regarding Kernel-eem.703 it seems it was already fixed
>>>> in Pharo. You added the
>>>>
>>>> CompiledMethod >> postCopy
>>>> | penultimateLiteral |
>>>> (penultimateLiteral := self penultimateLiteral) isMethodProperties
>>>> ifTrue:
>>>>  [self penultimateLiteral: (penultimateLiteral copy
>>>> setMethod: self;
>>>>  yourself).
>>>>  self pragmas do:
>>>> [:p| p setMethod: self]]
>>>>
>>>>
>>> btw, aren't the those two lines wrong?
>>> shouldn't they be:
>>>
>>> *copy* pragmas do:
>>> [:p| p setMethod: *copy*]].
>>>
>>> ?
>>>
>>
>> No.  postCopy is sent to the copy.
>>
>> Object>>copy
>> "Answer another instance just like the receiver. Subclasses typically
>> override postCopy; they typically do not override shallowCopy."
>>
>> ^self shallowCopy postCopy
>>
>>
>
> Sorry, I wanted to mean in copyWithTrailerBytes: trailer
>
>
> copyWithTrailerBytes: trailer
> "Testing:
> (CompiledMethod compiledMethodAt: #copyWithTrailerBytes:)
>  tempNamesPut: 'copy end '
> "
> | copy end start penultimateLiteral |
>  start := self initialPC.
> end := self endPC.
> copy := trailer createMethod: end - start + 1 class: self class header:
> self header.
>  1 to: self numLiterals do: [:i | copy literalAt: i put: (self literalAt:
> i)].
> (penultimateLiteral := self penultimateLiteral) isMethodProperties ifTrue:
> [
>  copy penultimateLiteral: (penultimateLiteral copy
> setMethod: copy;
>  yourself).
> * self pragmas do:*
> * [:p| p setMethod: self]*
>  ].
> start to: end do: [:i | copy at: i put: (self at: i)].
>  ^copy
>

It looks ot me like redunant code that worked around an earlier bug.  I've
removed it.  I've written some tests which I'll commit soon.

>
>
>
>>
>>
>>>
>>>
>>>
>>>> But we already have:
>>>>
>>>> CompiledMethod >> postCopy
>>>>
>>>> 1 to: self literals size do: [:index |
>>>>  | literal |
>>>> literal := self literalAt: index.
>>>>
>>>> literal class == AdditionalMethodState ifTrue: [
>>>>  literal := literal copy.
>>>> self literalAt: index put: literal.
>>>> self fixAdditionalMethodStateMethodReference: literal]].
>>>>  So....I don't really understand why we iterate over all literals if
>>>> we just fix the pragmas...so I think your part of the "(penultimateLiteral
>>>> := self penultimateLiteral) isMethodProperties ifTrue:"  is better.
>>>>
>>>> Now, you only do #setMethod for the pragma, but our code:
>>>>
>>>> fixAdditionalMethodStateMethodReference: anAdditionalMethodState
>>>>
>>>> anAdditionalMethodState method: self.
>>>>  anAdditionalMethodState pragmas do: [:each | each instVarAt: 1 put:
>>>> self].
>>>>
>>>>
>>>> And again, I don't know why we se instVarAt: 1 put:   rather than
>>>> #setMethod:
>>>>
>>>> So, all in all, I think your code looks better. Am I missing something?
>>>>
>>>> Thanks!
>>>>
>>>>
>>>>
>>>>>>
>>>>>>>
>>>>>>> On Sun, Jul 22, 2012 at 7:10 AM, Marcel Taeumel <
>>>>>>> marcel.taeumel at student.hpi.uni-potsdam.de> wrote:
>>>>>>>
>>>>>>>> Hi!
>>>>>>>>
>>>>>>>> It is not possible to compute the hash value of a CompiledMethod
>>>>>>>> instance
>>>>>>>> with the CogVM r2559 on a Windows 7 machine using a Squeak 4.3
>>>>>>>> image.
>>>>>>>>
>>>>>>>> Should it be possible despite of all enhancements in the Cog VM?
>>>>>>>>
>>>>>>>> Best,
>>>>>>>> Marcel
>>>>>>>>
>>>>>>>> 22 July 2012 4:06:54.988 pm
>>>>>>>>
>>>>>>>> VM: Win32 - Smalltalk
>>>>>>>> Image: Squeak4.3 [latest update: #11860]
>>>>>>>>
>>>>>>>> SecurityManager state:
>>>>>>>> Restricted: false
>>>>>>>> FileAccess: true
>>>>>>>> SocketAccess: true
>>>>>>>> Working Dir C:\Tools\vivide_dev
>>>>>>>> Trusted Dir C:\Tools\vivide_dev\Marcel
>>>>>>>> Untrusted Dir C:\Users\Marcel\Documents\My Squeak
>>>>>>>>
>>>>>>>> CompiledMethod(Object)>>error:
>>>>>>>>         Receiver: (Morph>>#drawOn: "a CompiledMethod(337)")
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>                 aString:        'subscript is out of bounds: 1'
>>>>>>>>         Receiver's instance variables:
>>>>>>>> (Morph>>#drawOn: "a CompiledMethod(337)")
>>>>>>>>
>>>>>>>> CompiledMethod(Object)>>errorSubscriptBounds:
>>>>>>>>         Receiver: (Morph>>#drawOn: "a CompiledMethod(337)")
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>                 index:  1
>>>>>>>>         Receiver's instance variables:
>>>>>>>> (Morph>>#drawOn: "a CompiledMethod(337)")
>>>>>>>>
>>>>>>>> CompiledMethod(Object)>>basicAt:
>>>>>>>>         Receiver: (Morph>>#drawOn: "a CompiledMethod(337)")
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>                 index:  1
>>>>>>>>         Receiver's instance variables:
>>>>>>>> (Morph>>#drawOn: "a CompiledMethod(337)")
>>>>>>>>
>>>>>>>> CompiledMethod class(ByteArray class)>>hashBytes:startingWith:
>>>>>>>>         Receiver: CompiledMethod
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>                 aByteArray:     (Morph>>#drawOn: "a
>>>>>>>> CompiledMethod(337)")
>>>>>>>>                 speciesHash:    244619647
>>>>>>>>                 byteArraySize:  43
>>>>>>>>                 hash:   244619647
>>>>>>>>                 low:    nil
>>>>>>>>                 pos:    1
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 superclass:     ByteArray
>>>>>>>>                 methodDict:     a MethodDictionary(size 190)
>>>>>>>>                 format:         3586
>>>>>>>>                 instanceVariables:      nil
>>>>>>>>                 organization:   ('accessing' clearFlag
>>>>>>>> defaultSelector dragLabel endPC flag
>>>>>>>> flush...etc...
>>>>>>>>                 subclasses:     nil
>>>>>>>>                 name:   #CompiledMethod
>>>>>>>>                 classPool:      a Dictionary(#LargeFrame->56
>>>>>>>> #SmallFrame->16 )
>>>>>>>>                 sharedPools:    nil
>>>>>>>>                 environment:    Smalltalk globals "a
>>>>>>>> SystemDictionary with lots of globals"
>>>>>>>>                 category:       #'Kernel-Methods'
>>>>>>>>
>>>>>>>> CompiledMethod(ByteArray)>>hash
>>>>>>>>         Receiver: (Morph>>#drawOn: "a CompiledMethod(337)")
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>
>>>>>>>>         Receiver's instance variables:
>>>>>>>> (Morph>>#drawOn: "a CompiledMethod(337)")
>>>>>>>>
>>>>>>>> UndefinedObject>>DoIt
>>>>>>>>         Receiver: nil
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>
>>>>>>>>         Receiver's instance variables:
>>>>>>>> nil
>>>>>>>>
>>>>>>>> Compiler>>evaluate:in:to:notifying:ifFail:logged:
>>>>>>>>         Receiver: a Compiler
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>                 textOrStream:   a ReadWriteStream
>>>>>>>> '(Morph>>#drawOn:) hash'
>>>>>>>>                 aContext:       nil
>>>>>>>>                 receiver:       nil
>>>>>>>>                 aRequestor:     a SmalltalkEditor
>>>>>>>>                 failBlock:      [closure] in [] in
>>>>>>>> SmalltalkEditor(TextEditor)>>evaluateSelectionAnd...etc...
>>>>>>>>                 logFlag:        true
>>>>>>>>                 methodNode:     DoIt
>>>>>>>>         ^ (Morph >> #drawOn:) hash
>>>>>>>>                 method:         (UndefinedObject>>#DoIt "a
>>>>>>>> CompiledMethod(1506)")
>>>>>>>>                 value:  nil
>>>>>>>>                 toLog:  nil
>>>>>>>>                 itsSelection:   nil
>>>>>>>>                 itsSelectionString:     nil
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 sourceStream:   a ReadWriteStream
>>>>>>>> '(Morph>>#drawOn:) hash'
>>>>>>>>                 requestor:      a SmalltalkEditor
>>>>>>>>                 class:  UndefinedObject
>>>>>>>>                 category:       nil
>>>>>>>>                 context:        nil
>>>>>>>>                 parser:         a Parser
>>>>>>>>
>>>>>>>> [] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:
>>>>>>>>         Receiver: a SmalltalkEditor
>>>>>>>>         Arguments and temporary variables:
>>>>>>>> <<error during printing>
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 morph:  a TextMorphForEditView(2114)
>>>>>>>>                 selectionShowing:       false
>>>>>>>>                 model:  a Workspace
>>>>>>>>                 paragraph:      a MultiNewParagraph
>>>>>>>>                 markBlock:      a CharacterBlock with index 1 and
>>>>>>>> character $( and rectangle
>>>>>>>> 0 at 0 cor...etc...
>>>>>>>>                 pointBlock:     a CharacterBlock with index 23 and
>>>>>>>> rectangle 154 at 0 corner:
>>>>>>>> 154 at 17
>>>>>>>>  ...etc...
>>>>>>>>                 beginTypeInIndex:       nil
>>>>>>>>                 emphasisHere:   {a TextFontChange font: 1}
>>>>>>>>                 lastParenLocation:      nil
>>>>>>>>                 otherInterval:  (1 to: 22)
>>>>>>>>                 oldInterval:    (1 to: 22)
>>>>>>>>                 typeAhead:      a WriteStream ''
>>>>>>>>                 styler:         nil
>>>>>>>>
>>>>>>>> BlockClosure>>on:do:
>>>>>>>>         Receiver: [closure] in
>>>>>>>> SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>                 exception:      OutOfScopeNotification
>>>>>>>>                 handlerAction:  [closure] in
>>>>>>>> SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo...etc...
>>>>>>>>                 handlerActive:  true
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 outerContext:
>>>>>>>> SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:
>>>>>>>>                 startpc:        97
>>>>>>>>                 numArgs:        0
>>>>>>>>
>>>>>>>> SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:
>>>>>>>>         Receiver: a SmalltalkEditor
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>                 aBlock:         [closure] in
>>>>>>>> SmalltalkEditor(TextEditor)>>evaluateSelection
>>>>>>>>                 result:         nil
>>>>>>>>                 rcvr:   nil
>>>>>>>>                 ctxt:   nil
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 morph:  a TextMorphForEditView(2114)
>>>>>>>>                 selectionShowing:       false
>>>>>>>>                 model:  a Workspace
>>>>>>>>                 paragraph:      a MultiNewParagraph
>>>>>>>>                 markBlock:      a CharacterBlock with index 1 and
>>>>>>>> character $( and rectangle
>>>>>>>> 0 at 0 cor...etc...
>>>>>>>>                 pointBlock:     a CharacterBlock with index 23 and
>>>>>>>> rectangle 154 at 0 corner:
>>>>>>>> 154 at 17
>>>>>>>>  ...etc...
>>>>>>>>                 beginTypeInIndex:       nil
>>>>>>>>                 emphasisHere:   {a TextFontChange font: 1}
>>>>>>>>                 lastParenLocation:      nil
>>>>>>>>                 otherInterval:  (1 to: 22)
>>>>>>>>                 oldInterval:    (1 to: 22)
>>>>>>>>                 typeAhead:      a WriteStream ''
>>>>>>>>                 styler:         nil
>>>>>>>>
>>>>>>>> SmalltalkEditor(TextEditor)>>evaluateSelection
>>>>>>>>         Receiver: a SmalltalkEditor
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 morph:  a TextMorphForEditView(2114)
>>>>>>>>                 selectionShowing:       false
>>>>>>>>                 model:  a Workspace
>>>>>>>>                 paragraph:      a MultiNewParagraph
>>>>>>>>                 markBlock:      a CharacterBlock with index 1 and
>>>>>>>> character $( and rectangle
>>>>>>>> 0 at 0 cor...etc...
>>>>>>>>                 pointBlock:     a CharacterBlock with index 23 and
>>>>>>>> rectangle 154 at 0 corner:
>>>>>>>> 154 at 17
>>>>>>>>  ...etc...
>>>>>>>>                 beginTypeInIndex:       nil
>>>>>>>>                 emphasisHere:   {a TextFontChange font: 1}
>>>>>>>>                 lastParenLocation:      nil
>>>>>>>>                 otherInterval:  (1 to: 22)
>>>>>>>>                 oldInterval:    (1 to: 22)
>>>>>>>>                 typeAhead:      a WriteStream ''
>>>>>>>>                 styler:         nil
>>>>>>>>
>>>>>>>> SmalltalkEditor(TextEditor)>>doIt
>>>>>>>>         Receiver: a SmalltalkEditor
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 morph:  a TextMorphForEditView(2114)
>>>>>>>>                 selectionShowing:       false
>>>>>>>>                 model:  a Workspace
>>>>>>>>                 paragraph:      a MultiNewParagraph
>>>>>>>>                 markBlock:      a CharacterBlock with index 1 and
>>>>>>>> character $( and rectangle
>>>>>>>> 0 at 0 cor...etc...
>>>>>>>>                 pointBlock:     a CharacterBlock with index 23 and
>>>>>>>> rectangle 154 at 0 corner:
>>>>>>>> 154 at 17
>>>>>>>>  ...etc...
>>>>>>>>                 beginTypeInIndex:       nil
>>>>>>>>                 emphasisHere:   {a TextFontChange font: 1}
>>>>>>>>                 lastParenLocation:      nil
>>>>>>>>                 otherInterval:  (1 to: 22)
>>>>>>>>                 oldInterval:    (1 to: 22)
>>>>>>>>                 typeAhead:      a WriteStream ''
>>>>>>>>                 styler:         nil
>>>>>>>>
>>>>>>>> SmalltalkEditor(TextEditor)>>doIt:
>>>>>>>>         Receiver: a SmalltalkEditor
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>                 aKeyboardEvent:         [keystroke '<Cmd-d>']
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 morph:  a TextMorphForEditView(2114)
>>>>>>>>                 selectionShowing:       false
>>>>>>>>                 model:  a Workspace
>>>>>>>>                 paragraph:      a MultiNewParagraph
>>>>>>>>                 markBlock:      a CharacterBlock with index 1 and
>>>>>>>> character $( and rectangle
>>>>>>>> 0 at 0 cor...etc...
>>>>>>>>                 pointBlock:     a CharacterBlock with index 23 and
>>>>>>>> rectangle 154 at 0 corner:
>>>>>>>> 154 at 17
>>>>>>>>  ...etc...
>>>>>>>>                 beginTypeInIndex:       nil
>>>>>>>>                 emphasisHere:   {a TextFontChange font: 1}
>>>>>>>>                 lastParenLocation:      nil
>>>>>>>>                 otherInterval:  (1 to: 22)
>>>>>>>>                 oldInterval:    (1 to: 22)
>>>>>>>>                 typeAhead:      a WriteStream ''
>>>>>>>>                 styler:         nil
>>>>>>>>
>>>>>>>> SmalltalkEditor(TextEditor)>>dispatchOnKeyboardEvent:
>>>>>>>>         Receiver: a SmalltalkEditor
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>                 aKeyboardEvent:         [keystroke '<Cmd-d>']
>>>>>>>>                 honorCommandKeys:       true
>>>>>>>>                 openers:        nil
>>>>>>>>                 closers:        nil
>>>>>>>>                 result:         nil
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 morph:  a TextMorphForEditView(2114)
>>>>>>>>                 selectionShowing:       false
>>>>>>>>                 model:  a Workspace
>>>>>>>>                 paragraph:      a MultiNewParagraph
>>>>>>>>                 markBlock:      a CharacterBlock with index 1 and
>>>>>>>> character $( and rectangle
>>>>>>>> 0 at 0 cor...etc...
>>>>>>>>                 pointBlock:     a CharacterBlock with index 23 and
>>>>>>>> rectangle 154 at 0 corner:
>>>>>>>> 154 at 17
>>>>>>>>  ...etc...
>>>>>>>>                 beginTypeInIndex:       nil
>>>>>>>>                 emphasisHere:   {a TextFontChange font: 1}
>>>>>>>>                 lastParenLocation:      nil
>>>>>>>>                 otherInterval:  (1 to: 22)
>>>>>>>>                 oldInterval:    (1 to: 22)
>>>>>>>>                 typeAhead:      a WriteStream ''
>>>>>>>>                 styler:         nil
>>>>>>>>
>>>>>>>> SmalltalkEditor(TextEditor)>>keyStroke:
>>>>>>>>         Receiver: a SmalltalkEditor
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>                 anEvent:        [keystroke '<Cmd-d>']
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 morph:  a TextMorphForEditView(2114)
>>>>>>>>                 selectionShowing:       false
>>>>>>>>                 model:  a Workspace
>>>>>>>>                 paragraph:      a MultiNewParagraph
>>>>>>>>                 markBlock:      a CharacterBlock with index 1 and
>>>>>>>> character $( and rectangle
>>>>>>>> 0 at 0 cor...etc...
>>>>>>>>                 pointBlock:     a CharacterBlock with index 23 and
>>>>>>>> rectangle 154 at 0 corner:
>>>>>>>> 154 at 17
>>>>>>>>  ...etc...
>>>>>>>>                 beginTypeInIndex:       nil
>>>>>>>>                 emphasisHere:   {a TextFontChange font: 1}
>>>>>>>>                 lastParenLocation:      nil
>>>>>>>>                 otherInterval:  (1 to: 22)
>>>>>>>>                 oldInterval:    (1 to: 22)
>>>>>>>>                 typeAhead:      a WriteStream ''
>>>>>>>>                 styler:         nil
>>>>>>>>
>>>>>>>> [] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
>>>>>>>>         Receiver: a TextMorphForEditView(2114)
>>>>>>>>         Arguments and temporary variables:
>>>>>>>> <<error during printing>
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 bounds:         0 at 0 corner: 416 at 19
>>>>>>>>                 owner:  a TransformMorph(1978)
>>>>>>>>                 submorphs:      #()
>>>>>>>>                 fullBounds:     0 at 0 corner: 416 at 19
>>>>>>>>                 color:  Color black
>>>>>>>>                 extension:      a MorphExtension (2184) [other:
>>>>>>>>  (signalConnections -> a
>>>>>>>> Dictionary(...etc...
>>>>>>>>                 borderWidth:    0
>>>>>>>>                 borderColor:    Color black
>>>>>>>>                 textStyle:      a TextStyle Bitmap Envy Code R 10
>>>>>>>> regular
>>>>>>>>                 text:   a Text for '(Morph>>#drawOn:) hash'
>>>>>>>>                 wrapFlag:       true
>>>>>>>>                 paragraph:      a MultiNewParagraph
>>>>>>>>                 editor:         a SmalltalkEditor
>>>>>>>>                 container:      nil
>>>>>>>>                 predecessor:    nil
>>>>>>>>                 successor:      nil
>>>>>>>>                 backgroundColor:        nil
>>>>>>>>                 margins:        nil
>>>>>>>>                 editHistory:    nil
>>>>>>>>                 editView:       a PluggableTextMorphPlus(3348)
>>>>>>>>                 acceptOnCR:     false
>>>>>>>>
>>>>>>>> TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent:
>>>>>>>>         Receiver: a TextMorphForEditView(2114)
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>                 interactionBlock:       [closure] in [] in
>>>>>>>> TextMorphForEditView(TextMorph)>>keyStroke...etc...
>>>>>>>>                 evt:    [keystroke '<Cmd-d>']
>>>>>>>>                 oldEditor:      a SmalltalkEditor
>>>>>>>>                 oldParagraph:   a MultiNewParagraph
>>>>>>>>                 oldText:        a Text for '(Morph>>#drawOn:) hash'
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 bounds:         0 at 0 corner: 416 at 19
>>>>>>>>                 owner:  a TransformMorph(1978)
>>>>>>>>                 submorphs:      #()
>>>>>>>>                 fullBounds:     0 at 0 corner: 416 at 19
>>>>>>>>                 color:  Color black
>>>>>>>>                 extension:      a MorphExtension (2184) [other:
>>>>>>>>  (signalConnections -> a
>>>>>>>> Dictionary(...etc...
>>>>>>>>                 borderWidth:    0
>>>>>>>>                 borderColor:    Color black
>>>>>>>>                 textStyle:      a TextStyle Bitmap Envy Code R 10
>>>>>>>> regular
>>>>>>>>                 text:   a Text for '(Morph>>#drawOn:) hash'
>>>>>>>>                 wrapFlag:       true
>>>>>>>>                 paragraph:      a MultiNewParagraph
>>>>>>>>                 editor:         a SmalltalkEditor
>>>>>>>>                 container:      nil
>>>>>>>>                 predecessor:    nil
>>>>>>>>                 successor:      nil
>>>>>>>>                 backgroundColor:        nil
>>>>>>>>                 margins:        nil
>>>>>>>>                 editHistory:    nil
>>>>>>>>                 editView:       a PluggableTextMorphPlus(3348)
>>>>>>>>                 acceptOnCR:     false
>>>>>>>>
>>>>>>>> TextMorphForEditView>>handleInteraction:fromEvent:
>>>>>>>>         Receiver: a TextMorphForEditView(2114)
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>                 interActionBlock:       [closure] in [] in
>>>>>>>> TextMorphForEditView(TextMorph)>>keyStroke...etc...
>>>>>>>>                 evt:    [keystroke '<Cmd-d>']
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 bounds:         0 at 0 corner: 416 at 19
>>>>>>>>                 owner:  a TransformMorph(1978)
>>>>>>>>                 submorphs:      #()
>>>>>>>>                 fullBounds:     0 at 0 corner: 416 at 19
>>>>>>>>                 color:  Color black
>>>>>>>>                 extension:      a MorphExtension (2184) [other:
>>>>>>>>  (signalConnections -> a
>>>>>>>> Dictionary(...etc...
>>>>>>>>                 borderWidth:    0
>>>>>>>>                 borderColor:    Color black
>>>>>>>>                 textStyle:      a TextStyle Bitmap Envy Code R 10
>>>>>>>> regular
>>>>>>>>                 text:   a Text for '(Morph>>#drawOn:) hash'
>>>>>>>>                 wrapFlag:       true
>>>>>>>>                 paragraph:      a MultiNewParagraph
>>>>>>>>                 editor:         a SmalltalkEditor
>>>>>>>>                 container:      nil
>>>>>>>>                 predecessor:    nil
>>>>>>>>                 successor:      nil
>>>>>>>>                 backgroundColor:        nil
>>>>>>>>                 margins:        nil
>>>>>>>>                 editHistory:    nil
>>>>>>>>                 editView:       a PluggableTextMorphPlus(3348)
>>>>>>>>                 acceptOnCR:     false
>>>>>>>>
>>>>>>>> [] in TextMorphForEditView(TextMorph)>>keyStroke:
>>>>>>>>         Receiver: a TextMorphForEditView(2114)
>>>>>>>>         Arguments and temporary variables:
>>>>>>>>                 evt:    [keystroke '<Cmd-d>']
>>>>>>>>                 action:         nil
>>>>>>>>         Receiver's instance variables:
>>>>>>>>                 bounds:         0 at 0 corner: 416 at 19
>>>>>>>>                 owner:  a TransformMorph(1978)
>>>>>>>>                 submorphs:      #()
>>>>>>>>                 fullBounds:     0 at 0 corner: 416 at 19
>>>>>>>>                 color:  Color black
>>>>>>>>                 extension:      a MorphExtension (2184) [other:
>>>>>>>>  (signalConnections -> a
>>>>>>>> Dictionary(...etc...
>>>>>>>>                 borderWidth:    0
>>>>>>>>                 borderColor:    Color black
>>>>>>>>                 textStyle:      a TextStyle Bitmap Envy Code R 10
>>>>>>>> regular
>>>>>>>>                 text:   a Text for '(Morph>>#drawOn:) hash'
>>>>>>>>                 wrapFlag:       true
>>>>>>>>                 paragraph:      a MultiNewParagraph
>>>>>>>>                 editor:         a SmalltalkEditor
>>>>>>>>                 container:      nil
>>>>>>>>                 predecessor:    nil
>>>>>>>>                 successor:      nil
>>>>>>>>                 backgroundColor:        nil
>>>>>>>>                 margins:        nil
>>>>>>>>                 editHistory:    nil
>>>>>>>>                 editView:       a PluggableTextMorphPlus(3348)
>>>>>>>>                 acceptOnCR:     false
>>>>>>>>
>>>>>>>>
>>>>>>>> --- The full stack ---
>>>>>>>> CompiledMethod(Object)>>error:
>>>>>>>> CompiledMethod(Object)>>errorSubscriptBounds:
>>>>>>>> CompiledMethod(Object)>>basicAt:
>>>>>>>> CompiledMethod class(ByteArray class)>>hashBytes:startingWith:
>>>>>>>> CompiledMethod(ByteArray)>>hash
>>>>>>>> UndefinedObject>>DoIt
>>>>>>>> Compiler>>evaluate:in:to:notifying:ifFail:logged:
>>>>>>>> [] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:
>>>>>>>> BlockClosure>>on:do:
>>>>>>>> SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:
>>>>>>>> SmalltalkEditor(TextEditor)>>evaluateSelection
>>>>>>>> SmalltalkEditor(TextEditor)>>doIt
>>>>>>>> SmalltalkEditor(TextEditor)>>doIt:
>>>>>>>> SmalltalkEditor(TextEditor)>>dispatchOnKeyboardEvent:
>>>>>>>> SmalltalkEditor(TextEditor)>>keyStroke:
>>>>>>>> [] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
>>>>>>>> TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent:
>>>>>>>> TextMorphForEditView>>handleInteraction:fromEvent:
>>>>>>>> [] in TextMorphForEditView(TextMorph)>>keyStroke:
>>>>>>>>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>>>>>>>> ECToolSet 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:
>>>>>>>> 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
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> View this message in context:
>>>>>>>> http://forum.world.st/CompiledMethod-hash-broken-on-CogVM-r2559-Win7-Squeak-4-3-tp4641061.html
>>>>>>>> Sent from the Squeak - Dev mailing list archive at Nabble.com.
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> best,
>>>>>>> Eliot
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Mariano
>>>>>> http://marianopeck.wordpress.com
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> best,
>>>>> Eliot
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Mariano
>>>> http://marianopeck.wordpress.com
>>>>
>>>>
>>>
>>>
>>> --
>>> Mariano
>>> http://marianopeck.wordpress.com
>>>
>>>
>>
>>
>> --
>> best,
>> Eliot
>>
>>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
>


-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20120723/9c2a934a/attachment-0001.html>


More information about the Pharo-dev mailing list