[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-smalltalk] [PATCH 2/2] jit: Resume the method _after_ the inte
From: |
Holger Hans Peter Freyther |
Subject: |
Re: [Help-smalltalk] [PATCH 2/2] jit: Resume the method _after_ the interrupt check |
Date: |
Mon, 23 Dec 2013 22:32:41 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
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?