[DFG] Remove duplicate 32bit code more
Created attachment 336990 [details] Patch
Attachment 336990 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGCompareSlowPathGenerator.h:43: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGCompareSlowPathGenerator.h:44: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] Total errors found: 2 in 12 files If any of these errors are false positives, please file a bug against check-webkit-style.
Created attachment 336993 [details] Patch
Attachment 336993 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGCompareSlowPathGenerator.h:43: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGCompareSlowPathGenerator.h:44: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] Total errors found: 2 in 12 files If any of these errors are false positives, please file a bug against check-webkit-style.
Created attachment 336998 [details] Patch
Attachment 336998 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGCompareSlowPathGenerator.h:43: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGCompareSlowPathGenerator.h:44: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] Total errors found: 2 in 12 files If any of these errors are false positives, please file a bug against check-webkit-style.
Ping?
Comment on attachment 336998 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=336998&action=review > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:12920 > + unblessedBooleanResult(resultGPR, node, UseChildrenCalledExplicitly); This is not equivalent to the original. From my reading of the code, this merely performs a bool to JSBoolean conversion. The original code which calls jsValueResult() (see DFGSpeculativeJIT.h:855-867) which adds JIT asserts, do some tracking for register spilling, and capture GenerationInfo. There appear to be a lot of work which are missing here. > Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:438 > + JITCompiler::Jump twoCellsCase = m_jit.branchTest64(JITCompiler::Zero, resultGPR, GPRInfo::tagMaskRegister); I don't see how this can work for 32-bit targets. The tagMaskRegister only exits for x86_64 and ARM64. What am I missing?
(In reply to Mark Lam from comment #8) > Comment on attachment 336998 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=336998&action=review > > > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:12920 > > + unblessedBooleanResult(resultGPR, node, UseChildrenCalledExplicitly); > > This is not equivalent to the original. From my reading of the code, this > merely performs a bool to JSBoolean conversion. The original code which > calls jsValueResult() (see DFGSpeculativeJIT.h:855-867) which adds JIT > asserts, do some tracking for register spilling, and capture GenerationInfo. > There appear to be a lot of work which are missing here. I misread the code. I thought unblessedBooleanResult() only did blessBoolean() part for 64-bit, and not the blessedBooleanResult() part. It actually does both. > > Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:438 > > + JITCompiler::Jump twoCellsCase = m_jit.branchTest64(JITCompiler::Zero, resultGPR, GPRInfo::tagMaskRegister); > > I don't see how this can work for 32-bit targets. The tagMaskRegister only > exits for x86_64 and ARM64. What am I missing? I misread this part too. I thought that there's only one consolidated version of nonSpeculativeNonPeepholeStrictEq(). That's not the case: this is just the 64-bit version. Hence, there's no issue here. Sorry for the noise.
Comment on attachment 336998 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=336998&action=review r=me. Thanks for the hard work. This is a big patch. > Source/JavaScriptCore/jit/RegisterSet.h:210 > + void setAny(JSValueRegs reg) { set(reg); } nit: lets call the argument "regs" instead of "reg". I think this is the convention used everywhere else.
Comment on attachment 336998 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=336998&action=review Thank you for your review! >> Source/JavaScriptCore/jit/RegisterSet.h:210 >> + void setAny(JSValueRegs reg) { set(reg); } > > nit: lets call the argument "regs" instead of "reg". I think this is the convention used everywhere else. Fixed!
Committed r230517: <https://trac.webkit.org/changeset/230517>
<rdar://problem/39340504>
Committed r230520: <https://trac.webkit.org/changeset/230520>