On Mon, Dec 23, 2013 at 07:01:16PM +0100, Holger Hans Peter Freyther wrote:
> st> a := 0. p := [a := 3] newProcess
>
> The code does not get across Dictionary>>findIndex: (Dictionary.st:588).
translate_method()
...
if (!lbl_define (*this_label))
{
define_ip_map_entry (bp - bc);
emit_interrupt_check (JIT_NOREG, bp - bc);
}
Dictionary>>#findIndex:
[((element := self primAt: index) isNil or: [element key = anObject])
ifTrue: [^index].
index == size ifTrue: [index := 1] ifFalse: [index := index + 1]]
repeat
so it does appear to loop over this statement. index and sp never increase:
An instance of MethodContext
parent: Dictionary(HashedCollection)>>findIndexOrNil: (HashedColl.st:359)
nativeIP: 0
ip: 22
sp: 3
receiver: Dictionary (
#p->Process(nil at userSchedulingPriority, ready to run)
#a->nil
)
method: Dictionary>>findIndex:
flags: 0
args:
anObject -> #a
temps:
index -> 11
size -> 16
element -> #a->3
optimized temps:
stack:
So I think we might need to export the SP when moving out?
_______________________________________________
help-smalltalk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-smalltalk