[webkit-reviews] review denied: [Bug 220322] BooleanConstructor should be inlined in DFG / FTL : [Attachment 416996] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Jan 6 01:25:08 PST 2021


Yusuke Suzuki <ysuzuki at apple.com> has denied Alexey Shvayka
<shvaikalesh at gmail.com>'s request for review:
Bug 220322: BooleanConstructor should be inlined in DFG / FTL
https://bugs.webkit.org/show_bug.cgi?id=220322

Attachment 416996: Patch

https://bugs.webkit.org/attachment.cgi?id=416996&action=review




--- Comment #6 from Yusuke Suzuki <ysuzuki at apple.com> ---
Comment on attachment 416996
  --> https://bugs.webkit.org/attachment.cgi?id=416996
Patch

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

Looks good. But putting r- since I found several bugs.

> Source/JavaScriptCore/ChangeLog:20
> +	   * dfg/DFGAbstractInterpreterInlines.h:

Yeah, please add notes about masquerade as undefined thing in ChangeLog, and
please add tests for that :)
That's awesome.

> Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:1538
>	   GPRTemporary result(this, Reuse, value);
> -	   m_jit.xor32(TrustedImm32(1), value.gpr(), result.gpr());
> +	   if (invert)
> +	       m_jit.xor32(TrustedImm32(1), value.gpr(), result.gpr());
>	   booleanResult(result.gpr(), node);

Reuse is "Reuse if it is possible" If node->child1's use count is not zero at
this point, GPRTemporary allocates a new register.
So, if you do not move value to result, result can contain a garbage.

> Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1905
>	       GPRTemporary result(this, Reuse, value);

While this is old code, I wonder if SpeculateBooleanOperand is correct here.
Can you check what format is generated from SpeculateBooleanOperand? JSValue?
Or 0/1?
Maybe, in 64bit, we never use DataFormatBoolean in DFG?

> Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1924
> +	   if (invert)
> +	       m_jit.xor64(TrustedImm32(JSValue::ValueTrue), result.gpr());

Is it correct? If `invert` is false, is result the JSValue format? I think
result is 0/1 at this point, and it is not JSBoolean.


More information about the webkit-reviews mailing list