Bug 228146 - speculateNeitherDoubleNorStringNorHeapBigInt should only have a single JSType branch
Summary: speculateNeitherDoubleNorStringNorHeapBigInt should only have a single JSType...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Keith Miller
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2021-07-21 07:19 PDT by Keith Miller
Modified: 2021-07-21 10:50 PDT (History)
7 users (show)

See Also:


Attachments
Patch (3.63 KB, patch)
2021-07-21 07:20 PDT, Keith Miller
no flags Details | Formatted Diff | Diff
Patch for landing (3.79 KB, patch)
2021-07-21 10:21 PDT, Keith Miller
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Keith Miller 2021-07-21 07:19:01 PDT
speculateNeitherDoubleNorStringNorHeapBigInt should only have a single JSType branch
Comment 1 Keith Miller 2021-07-21 07:20:31 PDT
Created attachment 433934 [details]
Patch
Comment 2 Keith Miller 2021-07-21 08:47:46 PDT
Comment on attachment 433934 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=433934&action=review

> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:11792
> +    DFG_TYPE_CHECK(regs, edge, ~(SpecString | SpecHeapBigInt), m_jit.branchIfType(regs.payloadGPR(), JSTypeRange { StringType, HeapBigIntType }));

It seems like this should be SpecAnyString but maybe I was missing something?
Comment 3 Keith Miller 2021-07-21 10:09:38 PDT
Comment on attachment 433934 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=433934&action=review

>> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:11792
>> +    DFG_TYPE_CHECK(regs, edge, ~(SpecString | SpecHeapBigInt), m_jit.branchIfType(regs.payloadGPR(), JSTypeRange { StringType, HeapBigIntType }));
> 
> It seems like this should be SpecAnyString but maybe I was missing something?

Nvm, I confused myself, I was thinking that SpecString independent from SpecStringIdent and SpecStringVar...
Comment 4 Robin Morisset 2021-07-21 10:14:01 PDT
Comment on attachment 433934 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=433934&action=review

r=me

> Source/JavaScriptCore/ChangeLog:7
> +

Maybe add some small comment here explaining your trick for people scanning through the Changelog.

>> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:11792
>> +    DFG_TYPE_CHECK(regs, edge, ~(SpecString | SpecHeapBigInt), m_jit.branchIfType(regs.payloadGPR(), JSTypeRange { StringType, HeapBigIntType }));
> 
> It seems like this should be SpecAnyString but maybe I was missing something?

SpecAnyString does not exist, SpecString = SpecStringIdent | SpecStringVar is the union type.

> Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:-19012
> -        return m_out.equal(

I think I would have kept this version of isType intact, and called it from the JSTypeRange version when range.last == range.first, but I'm ok with your approach even if I find it less intuitive.
Comment 5 Keith Miller 2021-07-21 10:17:18 PDT
Comment on attachment 433934 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=433934&action=review

>> Source/JavaScriptCore/ChangeLog:7
>> +
> 
> Maybe add some small comment here explaining your trick for people scanning through the Changelog.

Sure.

>> Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:-19012
>> -        return m_out.equal(
> 
> I think I would have kept this version of isType intact, and called it from the JSTypeRange version when range.last == range.first, but I'm ok with your approach even if I find it less intuitive.

I just followed how the AssemblyHelpers version did it for consistency. I don't have strong feelings either way though.
Comment 6 Keith Miller 2021-07-21 10:21:11 PDT
Created attachment 433942 [details]
Patch for landing
Comment 7 EWS 2021-07-21 10:49:03 PDT
Committed r280149 (239846@main): <https://commits.webkit.org/239846@main>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433942 [details].
Comment 8 Radar WebKit Bug Importer 2021-07-21 10:50:17 PDT
<rdar://problem/80906151>