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