[M3commit] CVS Update: cm3

Jay K jay.krell at cornell.edu
Mon Nov 23 01:29:52 CET 2009


Maybe:

 

RunThread:

if stack_grows_down

  stackbase = ADR(self)

else

 stackbase = ADR(self) + BYTESIZE(self)

 

Do we know the backend won't introduce local temporaries on the stack that contain traced pointers?

Or, like, if there are traced temporaries in registers..they could be spilled to the stack..and not within the bounds

described the above?

 

 - Jay
 


From: jay.krell at cornell.edu
To: hosking at cs.purdue.edu
Date: Mon, 23 Nov 2009 00:19:36 +0000
CC: m3commit at elegosoft.com
Subject: Re: [M3commit] CVS Update: cm3



You think I should just leave Win32 using the same method?
No point scanning past that?
 
I think, as I was saying the other day, there is a slight danger in the current code.
Imagine an aggressive optimizer inlines RunThread into ThreadBase.
I think when I manually inlined it I caused just such breakage.
 
We need <*NOINLINE*>?
 
 - Jay
 


Subject: Re: [M3commit] CVS Update: cm3
From: hosking at cs.purdue.edu
Date: Sun, 22 Nov 2009 18:52:31 -0500
CC: jkrell at elego.de; m3commit at elegosoft.com
To: jay.krell at cornell.edu




It is precise re traced refs.  That's the lowest frame that can hold a traced reference.


On 22 Nov 2009, at 16:53, Jay K wrote:

The end of the stack isn't precise:
 
C:\dev2\cm3.release_branch_cm3_5_8\m3-libs\m3core\src\thread\POSIX\ThreadPosix.m3(1058):    self.stackbase := ADR(xx);
 
"stack" here:
 
void
ProcessContext(Context *c, void *stack,
        void (*p) (void *start, void *stop))
{
  if (stack < c->uc.uc_stack.ss_sp)
    p(stack, c->uc.uc_stack.ss_sp);
  else
    p(c->uc.uc_stack.ss_sp, stack);
#ifdef __APPLE__
  p(&(c->uc.uc_mcontext[0]), &(c->uc.uc_mcontext[1]));
#else
  p(&c[0], &c[1]);
#endif
}

 - Jay

 
> From: hosking at cs.purdue.edu
> Date: Sun, 22 Nov 2009 13:41:26 -0500
> To: jkrell at elego.de
> CC: m3commit at elegosoft.com
> Subject: Re: [M3commit] CVS Update: cm3
> 
> > Note that ThreadPosix.m3 could also implement such precise stackbase.
> 
> ThreadPosix *does* implement a precise stack base. It's obtained from the ucontext set in the thread switch routine (swapcontext).
> 
> > ThreadPThread.m3 probably often could, like with the functions on OpenBSD (broken) and FreeBSD, etc.
> 

 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3commit/attachments/20091123/c720c4ff/attachment-0002.html>


More information about the M3commit mailing list