[M3devel] question re LONGINT
Jay K
jay.krell at cornell.edu
Mon Mar 14 23:33:43 CET 2011
- That error is likely from the frontend and will likely occur for any target. Tony's reply implies this as well.
- LONGINT is believed to fully work on NT386. But more testing is welcome.
- (atomics ditto -- believed to work, testing welcome -- and we should probably use them some, e.g. in MUTEX initialization)
- I would be curious to see if threadtest only fails on 64bit Windows. I haven't tried 32bit yet but I will soon.
- I was thinking more about this WOW64 GetThreadContext problem and ways to mitigate it, other than cooperative suspend.
I had already suggested and started to implement scanning the entire stack -- i.e. not depending on an ability to get ESP from a suspended thread.
Like how FreeBSD and OpenBSD work, albeit it is a significant deoptimization.
Regarding the rest of the context, perhaps it is a reasonable assumption for now to declare that it doesn't matter? e.g. to know/assume
that m3back never leaves a value only in registers, that anything in a register will also be on the stack? And to disable optimization on the
hypothetical MINGW platforms. ?
But still to confirm if there are no problems on 32bit, and to mull over implementing cooperative suspend..in the little time available...
(Oh, and also, I wonder if SuspendThread can suspend a thread while in the kernel, probably, and if GetThreadContext returns
the kernel context in that case; should be easy to determine via some experimentation -- which would imply a problem on 32bit Windows also.)
- Jay
From: hosking at cs.purdue.edu
Date: Mon, 14 Mar 2011 17:21:01 -0400
To: rcolebur at SCIRES.COM
CC: m3devel at elegosoft.com
Subject: Re: [M3devel] question re LONGINT
This is a known problem which I am still to fix. I know what the issue is...
You can probably make do by reading counts[i] to a variable, incrementing, and assigning.
On Mar 14, 2011, at 5:14 PM, Coleburn, Randy wrote:
I was making some local mods to Mika’s threadtest program to help me debug things a bit more on Windows.
I am trying to do:
INC(counts[i]);
Where counts is REF ARRAY OF LONGINT
The compiler is complaining:
"..\src\Main.m3", line 189: ** INTERNAL CG ERROR *** unable to find integer type? type=Int.64 s/o/a=64/0/32
I’m not sure what the status of LONGINT is on Windows. If it is not fully implemented, let me know and I’ll switch to REF ARRAY OF INTEGER, but I really need LONGINT.
Regards,
Randy Coleburn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20110314/38fe3b7e/attachment-0002.html>
More information about the M3devel
mailing list