WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
234399
[JSC][32bit] Fix undefined behavior causing miscompilation with clang 13 on ARM
https://bugs.webkit.org/show_bug.cgi?id=234399
Summary
[JSC][32bit] Fix undefined behavior causing miscompilation with clang 13 on ARM
Mikhail R. Gadelha
Reported
2021-12-16 10:27:50 PST
[JSC][32bit] Fix undefined behavior causing misscompilation with clang 13 on ARM
Attachments
Patch
(2.31 KB, patch)
2021-12-16 10:35 PST
,
Mikhail R. Gadelha
no flags
Details
Formatted Diff
Diff
Patch
(2.31 KB, patch)
2021-12-16 10:37 PST
,
Mikhail R. Gadelha
no flags
Details
Formatted Diff
Diff
Patch
(2.31 KB, patch)
2021-12-16 10:48 PST
,
Mikhail R. Gadelha
no flags
Details
Formatted Diff
Diff
Patch
(2.12 KB, patch)
2021-12-17 05:51 PST
,
Mikhail R. Gadelha
no flags
Details
Formatted Diff
Diff
Show Obsolete
(3)
View All
Add attachment
proposed patch, testcase, etc.
Mikhail R. Gadelha
Comment 1
2021-12-16 10:35:20 PST
Created
attachment 447369
[details]
Patch
Mikhail R. Gadelha
Comment 2
2021-12-16 10:37:50 PST
Created
attachment 447370
[details]
Patch
Mikhail R. Gadelha
Comment 3
2021-12-16 10:48:17 PST
Created
attachment 447373
[details]
Patch
Yusuke Suzuki
Comment 4
2021-12-16 13:34:03 PST
Comment on
attachment 447373
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=447373&action=review
> Source/JavaScriptCore/runtime/MathCommon.h:224 > { > - // Note: Strictly speaking this is an undefined behavior. > - return static_cast<int32_t>(value) == value; > + return canBeInt32(value) && !(!value && std::signbit(value)); // false for -0.0 > }
This needs to be super fast. I think we should inline canBeInt32's code here, and use !asInt32 instead of !value.
Mikhail R. Gadelha
Comment 5
2021-12-17 05:51:29 PST
Created
attachment 447451
[details]
Patch
Yusuke Suzuki
Comment 6
2021-12-18 21:54:03 PST
Comment on
attachment 447451
[details]
Patch r=me
EWS
Comment 7
2021-12-18 22:31:50 PST
Committed
r287235
(
245395@main
): <
https://commits.webkit.org/245395@main
> All reviewed patches have been landed. Closing bug and clearing flags on
attachment 447451
[details]
.
Radar WebKit Bug Importer
Comment 8
2021-12-18 22:32:19 PST
<
rdar://problem/86678800
>
Darin Adler
Comment 9
2021-12-19 15:50:23 PST
I prefer std::isfinite for checks like this.
Darin Adler
Comment 10
2021-12-19 15:51:02 PST
(In reply to Darin Adler from
comment #9
)
> I prefer std::isfinite for checks like this.
Unless it is slower than calling both std::isnan and std::isinf. And if it is, then they should really fix that!
Mikhail R. Gadelha
Comment 11
2021-12-20 06:25:17 PST
(In reply to Darin Adler from
comment #10
)
> (In reply to Darin Adler from
comment #9
) > > I prefer std::isfinite for checks like this. > > Unless it is slower than calling both std::isnan and std::isinf. And if it > is, then they should really fix that!
Humm, I think it's a good idea to benchmark that, we can even compare the two approaches against using fpclassify.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug