[webkit-reviews] review granted: [Bug 214737] for..of intrinsics implementation for 32bits : [Attachment 405291] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Jul 28 14:58:11 PDT 2020


Yusuke Suzuki <ysuzuki at apple.com> has granted Paulo Matos <pmatos at igalia.com>'s
request for review:
Bug 214737: for..of intrinsics implementation for 32bits
https://bugs.webkit.org/show_bug.cgi?id=214737

Attachment 405291: Patch

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




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

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

r=me with comments

> Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:714
> +    void store8(RegisterID src, const ArmAddress address)

We do not need to have `const`.

> Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:908
> +    void store8(RegisterID src, const Address address)

Ditto.

> Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:913
> +    void store8(RegisterID src, const BaseIndex address)

Ditto.

> Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:938
> +    void store8(const RegisterID src, const RegisterID addrreg)

Ditto.

> Source/JavaScriptCore/dfg/DFGOSRExit.cpp:633
> +		       case Constant:
> +			   sideState->tmps[i] = recovery.constant();
> +			   break;

This is the same implementation. Put it outside of ifdef.

> Source/JavaScriptCore/dfg/DFGOSRExit.cpp:639
> +		       case UnboxedInt32InGPR:
> +		       case Int32DisplacedInJSStack: {
> +			   sideState->tmps[i] =
jsNumber(static_cast<int32_t>(tmpScratch[i + tmpOffset]));
> +			   break;
> +		       }

Ditto.

> Source/JavaScriptCore/dfg/DFGOSRExit.cpp:644
> +		       case InPair:
> +		       case DisplacedInJSStack: {
>			   sideState->tmps[i] =
reinterpret_cast<JSValue*>(tmpScratch)[i + tmpOffset];
> -#else
> +			   break;

Ditto.

> Source/JavaScriptCore/dfg/DFGOSRExit.cpp:652
> +		       case CellDisplacedInJSStack:
> +		       case UnboxedCellInGPR: {
>			   EncodedValueDescriptor* valueDescriptor =
bitwise_cast<EncodedValueDescriptor*>(tmpScratch + i + tmpOffset);
>			   sideState->tmps[i] = JSValue(JSValue::CellTag,
valueDescriptor->asBits.payload);
> -#endif
>			   break;
>		       }

Ditto.

> Source/JavaScriptCore/dfg/DFGOSRExit.cpp:654
> +		       case BooleanDisplacedInJSStack:

Why?

> Source/JavaScriptCore/jit/JITCall32_64.cpp:392
> +    VirtualRegister vr = destinationFor(bytecode,
m_bytecodeIndex.checkpoint()).virtualRegister();

Remove it.

> Source/JavaScriptCore/jit/JITCall32_64.cpp:398
> +    emitJumpSlowCaseIfNotJSCell(vr, regT1);

Let's use `emitJumpSlowCaseIfNotJSCell(regT1)`.

> Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:2773
> +    bieq t1, UndefinedTag, .iteratorNextGeneric
> +    btinz t0, .iteratorNextGeneric

I think this is not correct. We should have JSEmpty check here.


More information about the webkit-reviews mailing list