RFR(S): JDK-8181503 "Can't compile hotspot with c++11"
Kim Barrett
kim.barrett at oracle.com
Wed Jan 31 16:58:36 UTC 2018
> On Jan 31, 2018, at 11:20 AM, coleen.phillimore at oracle.com wrote:
>
> On 1/31/18 9:40 AM, Thomas Stüfe wrote:
>> enum ErrorType {
>> // internal_error are errors which are not crashes - have no
>> // associated signal number or exception id.
>> internal_error = 0xffffffffe0000000ULL,
>> oom_error = 0xffffffffe0000001ULL,
>> };
>>
>> So, we extended them to 64bit and made the corresponding _id field 64bit unsigned. I think the reason was that we had clashes with third party DLLs using these SEH codes. So I just extended them to 64bit to avoid clashes with any possible Windows SEH codes.
>>
>> But I do not particularly like this approach now. A cleaner fix would be to separate signal number resp. SEH code from our own error id like this:
>>
>> enum ErrorType {
>> // Crash. See _signo for signal number / SEH code.
>> crash = 1,
>> // internal_error are errors which are not crashes - have no
>> // associated signal number or exception id.
>> internal_error = 2
>> oom_error = 3
>> ...
>> };
>>
>> and have a second member like _signo to hold the signal number on Linux, SEH code on Windows. Ideally that one should be unsigned 32bit to hold both worlds (int signals and DWORD SEH codes).
>>
>> That way we do not have to think about intersecting value ranges of _id. What do you think?
>
> Yes, I agree this would be a lot better and save so much confusion. I'm going to cut/paste your mail into an RFE.
I agree that something like that would be better, and that the current proposal is good enough for now,
and pursuing the direction described above should be a separate RFE.
More information about the hotspot-runtime-dev
mailing list