12020-04-22 Yusuke Suzuki <ysuzuki@apple.com>
2
3 [JSC] branchIfBigInt32 can use BigInt32Mask and remove branchIfNumber filter
4 https://bugs.webkit.org/show_bug.cgi?id=210870
5
6 Reviewed by NOBODY (OOPS!).
7
8 By using BigInt32Mask, we can detect BigInt32 without filtering Numbers. In this patch,
9
10 1. Remove branchIfBigInt32KnownNotNumber and branchIfNotBigInt32KnownNotNumber. And always use branchBigInt32 and branchNotBigInt32 instead.
11 2. Remove branchIfNumber type filtering in DFG.
12 3. Use BigInt32Mask based scheme in FTL.
13 4. Add and64(TrustedImm64, RegisterID) implementations in MacroAssembler.
14
15 * assembler/MacroAssemblerARM64.h:
16 (JSC::MacroAssemblerARM64::and64):
17 * assembler/MacroAssemblerX86_64.h:
18 (JSC::MacroAssemblerX86_64::and64):
19 * bytecode/ArithProfile.cpp:
20 (JSC::ArithProfile<BitfieldType>::emitObserveResult):
21 * dfg/DFGSpeculativeJIT64.cpp:
22 (JSC::DFG::SpeculativeJIT::fillSpeculateBigInt32):
23 * ftl/FTLLowerDFGToB3.cpp:
24 (JSC::FTL::DFG::LowerDFGToB3::compileToNumeric):
25 (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
26 (JSC::FTL::DFG::LowerDFGToB3::compileIsBigInt):
27 (JSC::FTL::DFG::LowerDFGToB3::boolify):
28 (JSC::FTL::DFG::LowerDFGToB3::buildTypeOf):
29 (JSC::FTL::DFG::LowerDFGToB3::lowBigInt32):
30 (JSC::FTL::DFG::LowerDFGToB3::isBigInt32):
31 (JSC::FTL::DFG::LowerDFGToB3::isNotBigInt32):
32 (JSC::FTL::DFG::LowerDFGToB3::isNotAnyBigInt):
33 (JSC::FTL::DFG::LowerDFGToB3::speculateBigInt32):
34 (JSC::FTL::DFG::LowerDFGToB3::speculateAnyBigInt):
35 (JSC::FTL::DFG::LowerDFGToB3::isBigInt32KnownNotCell): Deleted.
36 (JSC::FTL::DFG::LowerDFGToB3::isBigInt32KnownNotNumber): Deleted.
37 (JSC::FTL::DFG::LowerDFGToB3::isNotBigInt32KnownNotNumber): Deleted.
38 (JSC::FTL::DFG::LowerDFGToB3::isNotAnyBigIntKnownNotNumber): Deleted.
39 * jit/AssemblyHelpers.cpp:
40 (JSC::AssemblyHelpers::emitConvertValueToBoolean):
41 (JSC::AssemblyHelpers::branchIfValue):
42 * jit/AssemblyHelpers.h:
43 (JSC::AssemblyHelpers::branchIfBigInt32):
44 (JSC::AssemblyHelpers::branchIfNotBigInt32):
45 (JSC::AssemblyHelpers::emitTypeOf):
46 (JSC::AssemblyHelpers::branchIfBigInt32KnownNotNumber): Deleted.
47 (JSC::AssemblyHelpers::branchIfNotBigInt32KnownNotNumber): Deleted.
48