[M3devel] [M3commit] CVS Update: cm3

Mika Nystrom mika at async.async.caltech.edu
Sun May 9 01:43:09 CEST 2010


I've been following the discussion at a distance and am trying to understand
what problem is being guarded against?

The possibility that users change the signal mask?  Signal mask is not
part of Modula-3.  I think a programmer who messes with the signal mask
shouldn't expect Modula-3 to restore it for him when it switches threads,
processes exceptions, etc.

If you want to provide hooks for it that would be nice but I think it's
strictly optional.

"Correctness" should (as always) mean correctness w.r.t. the Green Book,
which makes no mention at all of signals... It does mention FloatMode
however (page 75).

    Mika

Tony Hosking writes:
>
>--Apple-Mail-78-848772270
>Content-Transfer-Encoding: quoted-printable
>Content-Type: text/plain;
>	charset=us-ascii
>
>I think we can argue that a programmer should program around this using =
>TRY...FINALLY (i.e., even if they used FloatMode).
>
>So, I think we are safe with jmpbuf instead of sigjmpbuf.
>
>Antony Hosking | Associate Professor | Computer Science | Purdue =
>University
>305 N. University Street | West Lafayette | IN 47907 | USA
>Office +1 765 494 6001 | Mobile +1 765 427 5484
>
>
>
>
>On 8 May 2010, at 18:56, Jay K wrote:
>
>>=20
>> Is "proper" saving/restoring as much as we can think of, or is it =
>fast, or is it matching Ada and C++, or .. ?
>> Ada and C++ (gnat and g++) have often/historically used =
>setjmp/longjmp.
>>   configure -enable-sjlj-exceptions
>> It might be interesting to see if they try to avoid the signal mask =
>versions when they use setjmp/longjmp.
>> Lately they use table-based unwinding on platforms that they can -- =
>which is to say, I *really* doubt
>> they save/restore the signal mask, but they might.
>>=20
>>=20
>>  - Jay
>>=20
>> ----------------------------------------
>>> Subject: Re: [M3commit] CVS Update: cm3
>>> From: hosking at cs.purdue.edu
>>> Date: Sat, 8 May 2010 18:51:18 -0400
>>> CC: jkrell at elego.de; m3commit at elegosoft.com
>>> To: jay.krell at cornell.edu
>>>=20
>>>=20
>>>=20
>>> On 8 May 2010, at 18:38, Jay K wrote:
>>>=20
>>>> Or, understood, you really think we might throw around a signal mask =
>change?
>>>=20
>>> It's possible.
>>>=20
>>>> Realize also that sigsetjmp or setjmp, whichever we use, is called =
>incredibly often, and sigsetjmp is likely
>>>> much much slower. Also notice..this I'll have to check...have we =
>ever called sigsetjmp?
>>>> Well, no, I doubt it. But maybe setjmp vs. _setjmp.
>>>> Again though, this can be significantly slow.
>>>>=20
>>>>=20
>>>> Ultimately as well...see..I started this email without a firm =
>opinion, but now I'm "firming" toward the change I made.
>>>> Consider C++ exceptions. Consider libunwind. Consider the SPARC =
>stack walker (which I have to look at).
>>>> Do they save/restore signal masks? I doubt it. Maybe. We can look =
>into it. But I doubt it.
>>>=20
>>> We should confirm.
>>>=20
>>>> Raising an exception can indeed by slow. But entering a function =
>with finally (or destructors) should not be overly so.
>>>=20
>>> Ultimately, we should use proper stack unwinding wherever possible.
>>>=20
>>>>=20
>>>>=20
>>>> - Jay
>>>>=20
>>>> ----------------------------------------
>>>>> From: hosking at cs.purdue.edu
>>>>> Date: Sat, 8 May 2010 18:28:36 -0400
>>>>> To: jkrell at elego.de
>>>>> CC: m3commit at elegosoft.com
>>>>> Subject: Re: [M3commit] CVS Update: cm3
>>>>>=20
>>>>> Ah, now I remember. sigjmpbuf is important for unwinding on =
>exception to make sure that if we unwind through a frame where the =
>programmer changed the signal mask that we also restore the signal mask =
>of the caller. I think you also probably break things like FloatMode by =
>not restoring the signal mask properly.
>>>>>=20
>>>>> On 9 May 2010, at 00:09, Jay Krell wrote:
>>>>>=20
>>>>>> CVSROOT: /usr/cvs
>>>>>> Changes by: jkrell at birch. 10/05/09 00:09:58
>>>>>>=20
>>>>>> Modified files:
>>>>>> cm3/m3-sys/m3middle/src/: Target.i3 Target.m3
>>>>>>=20
>>>>>> Log message:
>>>>>> add SPARC32_SOLARIS
>>>>>>=20
>>>>>> correct jmpbuf sizes for I386_SOLARIS, AMD64_SOLARIS
>>>>>> notice again that jmpbuf is much much smaller than sigjmpbuf,
>>>>>> and this is jmpbuf; specifically:
>>>>>> I386_SOLARIS jmpbuf 40 bytes with 4 align
>>>>>> AMD64_SOLARIS jmpbuf 64 bytes with 8 align
>>>>>> I386_SOLARIS sigjmpbuf 512 bytes with 4 align
>>>>>> AMD64_SOLARIS sigjmpbuf 1024 bytes with 8 align
>>>>>>=20
>>>>>> remove some level of heap allocation of calling conventions
>>>>>>=20
>>>>>> accept all calling conventions for all targets
>>>>>> Only NT386 has calling conventions, and it *highly* likely
>>>>>> the only target ever to have them, therefore the mechanism
>>>>>> does not need to be further generalized. (MIPS32 has two
>>>>>> ABIs, but those will probably be two targets)
>>>>>> This might let us save some unnecessary forking of *.i3 files.
>>>>>> The initialization here can be further streamlined.
>>>>>>=20
>>>>>> shrink SOLgnu/SOLsun from sigjmpbuf to jmpbuf
>>>>>> I'm not sure we use this though since we have a stack walker.
>>>>>> fix SPARC64_SOLARIS too to be smaller
>>>>>>=20
>>>>>> SPARC32_SOLARIS
>>>>>> jmpbuf size: 48
>>>>>> sigjmpbuf size: 76
>>>>>> alignment: 4 4
>>>>>>=20
>>>>>> SPARC64_SOLARIS
>>>>>> jmpbuf size: 96
>>>>>> sigjmpbuf size: 152
>>>>>> alignment: 8 8
>>>>>=20
>>>>=20
>>>=20
>> 		 	   		 =20
>
>
>--Apple-Mail-78-848772270
>Content-Transfer-Encoding: quoted-printable
>Content-Type: text/html;
>	charset=us-ascii
>
><html><head></head><body style=3D"word-wrap: break-word; =
>-webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I =
>think we can argue that a programmer should program around this using =
>TRY...FINALLY (i.e., even if they used =
>FloatMode).<div><br></div><div>So, I think we are safe with jmpbuf =
>instead of sigjmpbuf.<br><div><br><div>
><span class=3D"Apple-style-span" style=3D"border-collapse: separate; =
>color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; =
>font-style: normal; font-variant: normal; font-weight: normal; =
>letter-spacing: normal; line-height: normal; orphans: 2; text-align: =
>auto; text-indent: 0px; text-transform: none; white-space: normal; =
>widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; =
>-webkit-border-vertical-spacing: 0px; =
>-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: =
>auto; -webkit-text-stroke-width: 0; "><span class=3D"Apple-style-span" =
>style=3D"border-collapse: separate; -webkit-border-horizontal-spacing: =
>0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); =
>font-family: Helvetica; font-size: 12px; font-style: normal; =
>font-variant: normal; font-weight: normal; letter-spacing: normal; =
>line-height: normal; -webkit-text-decorations-in-effect: none; =
>text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; =
>orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div =
>style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
>-webkit-line-break: after-white-space; "><span class=3D"Apple-style-span" =
>style=3D"border-collapse: separate; -webkit-border-horizontal-spacing: =
>0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); =
>font-family: Helvetica; font-size: 12px; font-style: normal; =
>font-variant: normal; font-weight: normal; letter-spacing: normal; =
>line-height: normal; -webkit-text-decorations-in-effect: none; =
>text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; =
>orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span =
>class=3D"Apple-style-span" style=3D"border-collapse: separate; =
>-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: =
>0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; =
>font-style: normal; font-variant: normal; font-weight: normal; =
>letter-spacing: normal; line-height: normal; =
>-webkit-text-decorations-in-effect: none; text-indent: 0px; =
>-webkit-text-size-adjust: auto; text-transform: none; orphans: 2; =
>white-space: normal; widows: 2; word-spacing: 0px; "><span =
>class=3D"Apple-style-span" style=3D"border-collapse: separate; =
>-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: =
>0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; =
>font-style: normal; font-variant: normal; font-weight: normal; =
>letter-spacing: normal; line-height: normal; =
>-webkit-text-decorations-in-effect: none; text-indent: 0px; =
>-webkit-text-size-adjust: auto; text-transform: none; orphans: 2; =
>white-space: normal; widows: 2; word-spacing: 0px; "><span =
>class=3D"Apple-style-span" style=3D"border-collapse: separate; =
>-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: =
>0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; =
>font-style: normal; font-variant: normal; font-weight: normal; =
>letter-spacing: normal; line-height: normal; =
>-webkit-text-decorations-in-effect: none; text-indent: 0px; =
>-webkit-text-size-adjust: auto; text-transform: none; orphans: 2; =
>white-space: normal; widows: 2; word-spacing: 0px; "><span =
>class=3D"Apple-style-span" style=3D"border-collapse: separate; =
>-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: =
>0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; =
>font-style: normal; font-variant: normal; font-weight: normal; =
>letter-spacing: normal; line-height: normal; =
>-webkit-text-decorations-in-effect: none; text-indent: 0px; =
>-webkit-text-size-adjust: auto; text-transform: none; orphans: 2; =
>white-space: normal; widows: 2; word-spacing: 0px; "><span =
>class=3D"Apple-style-span" style=3D"border-collapse: separate; =
>-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: =
>0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; =
>font-style: normal; font-variant: normal; font-weight: normal; =
>letter-spacing: normal; line-height: normal; =
>-webkit-text-decorations-in-effect: none; text-indent: 0px; =
>-webkit-text-size-adjust: auto; text-transform: none; orphans: 2; =
>white-space: normal; widows: 2; word-spacing: 0px; "><span =
>class=3D"Apple-style-span" style=3D"border-collapse: separate; =
>-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: =
>0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; =
>font-style: normal; font-variant: normal; font-weight: normal; =
>letter-spacing: normal; line-height: normal; =
>-webkit-text-decorations-in-effect: none; text-indent: 0px; =
>-webkit-text-size-adjust: auto; text-transform: none; orphans: 2; =
>white-space: normal; widows: 2; word-spacing: 0px; "><span =
>class=3D"Apple-style-span" style=3D"border-collapse: separate; =
>-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: =
>0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; =
>font-style: normal; font-variant: normal; font-weight: normal; =
>letter-spacing: normal; line-height: normal; =
>-webkit-text-decorations-in-effect: none; text-indent: 0px; =
>-webkit-text-size-adjust: auto; text-transform: none; orphans: 2; =
>white-space: normal; widows: 2; word-spacing: 0px; "><div><font =
>class=3D"Apple-style-span" color=3D"#0000FF"><font =
>class=3D"Apple-style-span" face=3D"Gill Sans"><span =
>class=3D"Apple-style-span" style=3D"color: rgb(0, 0, 255); font-family: =
>'Gill Sans'; "><span class=3D"Apple-style-span" style=3D"color: rgb(0, =
>0, 255); font-family: 'Gill Sans'; ">Antony =
>Hosking</span></span></font></font><font class=3D"Apple-style-span" =
>face=3D"Gill Sans"><span class=3D"Apple-style-span" style=3D"font-family: =
>'Gill Sans'; "><span class=3D"Apple-style-span" style=3D"font-family: =
>'Gill Sans'; "><span class=3D"Apple-converted-space"> </span>|<span =
>class=3D"Apple-converted-space"> </span></span></span><span =
>class=3D"Apple-style-span" style=3D"font-family: 'Gill Sans'; "><span =
>class=3D"Apple-style-span" style=3D"font-family: 'Gill Sans'; =
>">Associate Professor</span></span><span class=3D"Apple-style-span" =
>style=3D"font-family: 'Gill Sans'; "><span class=3D"Apple-style-span" =
>style=3D"font-family: 'Gill Sans'; "> | Computer Science | Purdue =
>University</span></span></font></div><div><font class=3D"Apple-style-span"=
> face=3D"GillSans-Light"><span class=3D"Apple-style-span" =
>style=3D"font-family: GillSans-Light; ">305 N. University Street | West =
>Lafayette | IN 47907 | USA</span></font></div><div><font =
>class=3D"Apple-style-span" color=3D"#0000FF" face=3D"Gill Sans"><span =
>class=3D"Apple-style-span" style=3D"color: rgb(0, 0, 255); font-family: =
>'Gill Sans'; "><span class=3D"Apple-style-span" style=3D"color: rgb(0, =
>0, 255); font-family: 'Gill Sans'; ">Office</span></span></font><font =
>class=3D"Apple-style-span" face=3D"GillSans-Light"><span =
>class=3D"Apple-style-span" style=3D"font-family: GillSans-Light; "><span =
>class=3D"Apple-style-span" style=3D"font-family: GillSans-Light; =
>"> +1 765 494 6001 |<span =
>class=3D"Apple-converted-space"> </span></span></span></font><font =
>class=3D"Apple-style-span" color=3D"#0000FF" face=3D"Gill Sans"><span =
>class=3D"Apple-style-span" style=3D"color: rgb(0, 0, 255); font-family: =
>'Gill Sans'; "><span class=3D"Apple-style-span" style=3D"color: rgb(0, =
>0, 255); font-family: 'Gill Sans'; ">Mobile</span></span></font><font =
>class=3D"Apple-style-span" face=3D"GillSans-Light"><span =
>class=3D"Apple-style-span" style=3D"font-family: GillSans-Light; "><span =
>class=3D"Apple-style-span" style=3D"font-family: GillSans-Light; "><span =
>class=3D"Apple-converted-space"> </span>+1 765 427 =
>5484</span></span></font></div><div><font class=3D"Apple-style-span" =
>face=3D"GillSans-Light"><br =
>class=3D"khtml-block-placeholder"></font></div></span></span></span></span=
>></span></span></span><br =
>class=3D"Apple-interchange-newline"></span></div></span></span><br =
>class=3D"Apple-interchange-newline">
></div>
><br><div><div>On 8 May 2010, at 18:56, Jay K wrote:</div><br =
>class=3D"Apple-interchange-newline"><blockquote type=3D"cite"><div><br>Is =
>"proper" saving/restoring as much as we can think of, or is it fast, or =
>is it matching Ada and C++, or .. ?<br>Ada and C++ (gnat and g++) have =
>often/historically used setjmp/longjmp.<br>  configure =
>-enable-sjlj-exceptions<br>It might be interesting to see if they try to =
>avoid the signal mask versions when they use setjmp/longjmp.<br>Lately =
>they use table-based unwinding on platforms that they can -- which is to =
>say, I *really* doubt<br>they save/restore the signal mask, but they =
>might.<br><br><br> - =
>Jay<br><br>----------------------------------------<br><blockquote =
>type=3D"cite">Subject: Re: [M3commit] CVS Update: =
>cm3<br></blockquote><blockquote type=3D"cite">From: <a =
>href=3D"mailto:hosking at cs.purdue.edu">hosking at cs.purdue.edu</a><br></block=
>quote><blockquote type=3D"cite">Date: Sat, 8 May 2010 18:51:18 =
>-0400<br></blockquote><blockquote type=3D"cite">CC: <a =
>href=3D"mailto:jkrell at elego.de">jkrell at elego.de</a>; <a =
>href=3D"mailto:m3commit at elegosoft.com">m3commit at elegosoft.com</a><br></blo=
>ckquote><blockquote type=3D"cite">To: <a =
>href=3D"mailto:jay.krell at cornell.edu">jay.krell at cornell.edu</a><br></block=
>quote><blockquote type=3D"cite"><br></blockquote><blockquote =
>type=3D"cite"><br></blockquote><blockquote =
>type=3D"cite"><br></blockquote><blockquote type=3D"cite">On 8 May 2010, =
>at 18:38, Jay K wrote:<br></blockquote><blockquote =
>type=3D"cite"><br></blockquote><blockquote type=3D"cite"><blockquote =
>type=3D"cite">Or, understood, you really think we might throw around a =
>signal mask change?<br></blockquote></blockquote><blockquote =
>type=3D"cite"><br></blockquote><blockquote type=3D"cite">It's =
>possible.<br></blockquote><blockquote =
>type=3D"cite"><br></blockquote><blockquote type=3D"cite"><blockquote =
>type=3D"cite">Realize also that sigsetjmp or setjmp, whichever we use, =
>is called incredibly often, and sigsetjmp is =
>likely<br></blockquote></blockquote><blockquote type=3D"cite"><blockquote =
>type=3D"cite">much much slower. Also notice..this I'll have to =
>check...have we ever called =
>sigsetjmp?<br></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite">Well, no, I doubt it. But maybe =
>setjmp vs. _setjmp.<br></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite">Again though, this can be =
>significantly slow.<br></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite">Ultimately as well...see..I =
>started this email without a firm opinion, but now I'm "firming" toward =
>the change I made.<br></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite">Consider C++ exceptions. =
>Consider libunwind. Consider the SPARC stack walker (which I have to =
>look at).<br></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite">Do they save/restore signal =
>masks? I doubt it. Maybe. We can look into it. But I doubt =
>it.<br></blockquote></blockquote><blockquote =
>type=3D"cite"><br></blockquote><blockquote type=3D"cite">We should =
>confirm.<br></blockquote><blockquote =
>type=3D"cite"><br></blockquote><blockquote type=3D"cite"><blockquote =
>type=3D"cite">Raising an exception can indeed by slow. But entering a =
>function with finally (or destructors) should not be overly =
>so.<br></blockquote></blockquote><blockquote =
>type=3D"cite"><br></blockquote><blockquote type=3D"cite">Ultimately, we =
>should use proper stack unwinding wherever =
>possible.<br></blockquote><blockquote =
>type=3D"cite"><br></blockquote><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite">- =
>Jay<br></blockquote></blockquote><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite">----------------------------------------<br></blockquote></b=
>lockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite">From: <a =
>href=3D"mailto:hosking at cs.purdue.edu">hosking at cs.purdue.edu</a><br></block=
>quote></blockquote></blockquote><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">Date: Sat, 8 May 2010 18:28:36 =
>-0400<br></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite">To: <a =
>href=3D"mailto:jkrell at elego.de">jkrell at elego.de</a><br></blockquote></bloc=
>kquote></blockquote><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">CC: <a =
>href=3D"mailto:m3commit at elegosoft.com">m3commit at elegosoft.com</a><br></blo=
>ckquote></blockquote></blockquote><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">Subject: Re: [M3commit] CVS =
>Update: cm3<br></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite">Ah, =
>now I remember. sigjmpbuf is important for unwinding on exception to =
>make sure that if we unwind through a frame where the programmer changed =
>the signal mask that we also restore the signal mask of the caller. I =
>think you also probably break things like FloatMode by not restoring the =
>signal mask =
>properly.<br></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite">On 9 =
>May 2010, at 00:09, Jay Krell =
>wrote:<br></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">CVSROOT: =
>/usr/cvs<br></blockquote></blockquote></blockquote></blockquote><blockquot=
>e type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">Changes by: jkrell at birch. =
>10/05/09 =
>00:09:58<br></blockquote></blockquote></blockquote></blockquote><blockquot=
>e type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote></blockquote></blockquote><blo=
>ckquote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">Modified =
>files:<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">cm3/m3-sys/m3middle/src/: =
>Target.i3 =
>Target.m3<br></blockquote></blockquote></blockquote></blockquote><blockquo=
>te type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote></blockquote></blockquote><blo=
>ckquote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">Log =
>message:<br></blockquote></blockquote></blockquote></blockquote><blockquot=
>e type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">add =
>SPARC32_SOLARIS<br></blockquote></blockquote></blockquote></blockquote><bl=
>ockquote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote></blockquote></blockquote><blo=
>ckquote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">correct jmpbuf sizes for =
>I386_SOLARIS, =
>AMD64_SOLARIS<br></blockquote></blockquote></blockquote></blockquote><bloc=
>kquote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">notice again that jmpbuf is much =
>much smaller than =
>sigjmpbuf,<br></blockquote></blockquote></blockquote></blockquote><blockqu=
>ote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">and this is jmpbuf; =
>specifically:<br></blockquote></blockquote></blockquote></blockquote><bloc=
>kquote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">I386_SOLARIS jmpbuf 40 bytes =
>with 4 =
>align<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">AMD64_SOLARIS jmpbuf 64 bytes =
>with 8 =
>align<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">I386_SOLARIS sigjmpbuf 512 bytes =
>with 4 =
>align<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">AMD64_SOLARIS sigjmpbuf 1024 =
>bytes with 8 =
>align<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote></blockquote></blockquote><blo=
>ckquote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">remove some level of heap =
>allocation of calling =
>conventions<br></blockquote></blockquote></blockquote></blockquote><blockq=
>uote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote></blockquote></blockquote><blo=
>ckquote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">accept all calling conventions =
>for all =
>targets<br></blockquote></blockquote></blockquote></blockquote><blockquote=
> type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">Only NT386 has calling =
>conventions, and it *highly* =
>likely<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">the only target ever to have =
>them, therefore the =
>mechanism<br></blockquote></blockquote></blockquote></blockquote><blockquo=
>te type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">does not need to be further =
>generalized. (MIPS32 has =
>two<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">ABIs, but those will probably be =
>two =
>targets)<br></blockquote></blockquote></blockquote></blockquote><blockquot=
>e type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">This might let us save some =
>unnecessary forking of *.i3 =
>files.<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">The initialization here can be =
>further =
>streamlined.<br></blockquote></blockquote></blockquote></blockquote><block=
>quote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote></blockquote></blockquote><blo=
>ckquote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">shrink SOLgnu/SOLsun from =
>sigjmpbuf to =
>jmpbuf<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">I'm not sure we use this though =
>since we have a stack =
>walker.<br></blockquote></blockquote></blockquote></blockquote><blockquote=
> type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">fix SPARC64_SOLARIS too to be =
>smaller<br></blockquote></blockquote></blockquote></blockquote><blockquote=
> type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote></blockquote></blockquote><blo=
>ckquote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite">SPARC32_SOLARIS<br></blockquote></blockquote></blockquote></=
>blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote=
> type=3D"cite"><blockquote type=3D"cite">jmpbuf size: =
>48<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">sigjmpbuf size: =
>76<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">alignment: 4 =
>4<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote></blockquote></blockquote><blo=
>ckquote type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite">SPARC64_SOLARIS<br></blockquote></blockquote></blockquote></=
>blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote=
> type=3D"cite"><blockquote type=3D"cite">jmpbuf size: =
>96<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">sigjmpbuf size: =
>152<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><blockquote type=3D"cite">alignment: 8 =
>8<br></blockquote></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote></blockquote><blockquote =
>type=3D"cite"><blockquote =
>type=3D"cite"><br></blockquote></blockquote><blockquote =
>type=3D"cite"><br></blockquote> <span class=3D"Apple-tab-span" =
>style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
>style=3D"white-space:pre">	</span> <span class=3D"Apple-tab-span" =
>style=3D"white-space:pre">	</span>   <span =
>class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
>class=3D"Apple-tab-span" style=3D"white-space:pre">	</span> =
> <br></div></blockquote></div><br></div></div></body></html>=
>
>--Apple-Mail-78-848772270--



More information about the M3devel mailing list