help-smalltalk
[Top][All Lists]
Advanced

[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?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]