RESOLVED FIXED Bug 179912
[DFG] Add NormalizeMapKey DFG IR
https://bugs.webkit.org/show_bug.cgi?id=179912
Summary [DFG] Add NormalizeMapKey DFG IR
Yusuke Suzuki
Reported 2017-11-21 02:34:36 PST
...
Attachments
Patch (34.18 KB, patch)
2017-11-21 08:06 PST, Yusuke Suzuki
no flags
Patch (34.19 KB, patch)
2017-11-21 09:23 PST, Yusuke Suzuki
saam: review+
Yusuke Suzuki
Comment 1 2017-11-21 08:06:09 PST
EWS Watchlist
Comment 2 2017-11-21 08:51:22 PST
Comment on attachment 327410 [details] Patch Attachment 327410 [details] did not pass jsc-ews (mac): Output: http://webkit-queues.webkit.org/results/5321124 New failing tests: stress/proxy-own-keys.js.dfg-eager-no-cjit-validate stress/proxy-own-keys.js.ftl-eager-no-cjit stress/proxy-own-keys.js.ftl-eager
Yusuke Suzuki
Comment 3 2017-11-21 09:23:27 PST
Saam Barati
Comment 4 2017-11-26 17:20:16 PST
Comment on attachment 327417 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=327417&action=review r=me > Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1115 > + forNode(node).makeHeapTop(); Is it worth doing constant folding here based on child1's type? > Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5195 > + // Give key and bucket's key are already normalized. So if 64-bit compare fails and one is not a cell, they're definitely not equal. "Give key and bucket's key" => "The input key and bucket's key" > Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8585 > + m_out.appendTo(passThroughCase, continuation); > + ValueFromBlock fastResult = m_out.anchor(key); > + m_out.jump(continuation); This doesn't need to be a block. You can make the upsilon at the top, and make everything that jumps to "passThroughCase" jump to continuation.
Yusuke Suzuki
Comment 5 2017-11-26 17:31:24 PST
Comment on attachment 327417 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=327417&action=review Thank you for your review! >> Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1115 >> + forNode(node).makeHeapTop(); > > Is it worth doing constant folding here based on child1's type? Sounds nice. I think large part of NormalizeMapKey will be converted to Identity in fixup phase. But mixed typed case is not handled well in fixup phase. Introducing constant foldoing here could increase the coverage. >> Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5195 >> + // Give key and bucket's key are already normalized. So if 64-bit compare fails and one is not a cell, they're definitely not equal. > > "Give key and bucket's key" => "The input key and bucket's key" Thanks, fixed. >> Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8585 >> + m_out.jump(continuation); > > This doesn't need to be a block. You can make the upsilon at the top, and make everything that jumps to "passThroughCase" jump to continuation. Sounds nice. Fixed.
Yusuke Suzuki
Comment 6 2017-11-26 23:51:22 PST
Radar WebKit Bug Importer
Comment 7 2017-11-26 23:52:29 PST
Note You need to log in before you can comment on or make changes to this bug.