[Webkit-unassigned] [Bug 123615] [Win] Enable DFG JIT.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Jul 10 14:23:12 PDT 2014


https://bugs.webkit.org/show_bug.cgi?id=123615


Mark Lam <mark.lam at apple.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #234647|review?                     |review-
               Flag|                            |




--- Comment #39 from Mark Lam <mark.lam at apple.com>  2014-07-10 14:23:24 PST ---
(From update of attachment 234647)
View in context: https://bugs.webkit.org/attachment.cgi?id=234647&action=review

I'd suggested some renames of function names so that they are a little more consistent with each other, and reads more naturally.  Please also look into the storing of the CallerFrame pinter issue in callWithSlowPathReturnType.

> Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:155
> +    Call callSlowPathReturnType()

Let's rename "callSlowPathReturnType" to "callWithSlowPathReturnType".

>> Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:163
>> +        // Note: this implementation supports up to 3 parameters.
> 
> I think this comment needs to be removed.

I disagree.  I think this comment is needed.  I would prefer an assertion on the number of parameters instead, but I don't think there's a way to assert this right now given that the parameters are set up by a different function (i.e. setupArgumentsWithExecStateForCallWithSlowPathReturnType).

> Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:183
> +        // We also need to allocate the shadow space on the stack for the 4 parameter registers.
> +        // In addition, we need to allocate 16 bytes for the return value.
> +        sub64(TrustedImm32(6 * sizeof(int64_t)), X86Registers::esp);
> +
> +        // The first parameter register should contain a pointer to the stack allocated space for the return value.
> +        move(X86Registers::esp, X86Registers::ecx);
> +        add64(TrustedImm32(4 * sizeof(int64_t)), X86Registers::ecx);
> +
> +        DataLabelPtr label = moveWithPatch(TrustedImmPtr(0), scratchRegister);
> +        Call result = Call(m_assembler.call(scratchRegister), Call::Linkable);
> +
> +        add64(TrustedImm32(6 * sizeof(int64_t)), X86Registers::esp);
> +
> +        // Copy the return value into rax and rdx.
> +        load64(Address(X86Registers::eax, sizeof(int64_t)), X86Registers::edx);
> +        load64(Address(X86Registers::eax), X86Registers::eax);
> +
> +        ASSERT_UNUSED(label, differenceBetween(label, result) == REPTACH_OFFSET_CALL_R11);
> +        return result;

This code looks stale compared to call() below.  Specifically, I don't see you storing the ebp (CallerFrame*) on the stack, and adjusting the stack accordingly for that.  Is that not needed here?

> Source/JavaScriptCore/jit/CCallHelpers.h:802
> +        // On Windows, an argument maps to the same register (based on its position), even when there are floating point arguments.

I suggest rephrasing this comment slightly as "On Windows, arguments map to designated registers based on the argument positions, even when there are interlaced scalar and floating point arguments."

> Source/JavaScriptCore/jit/CCallHelpers.h:816
> +        // On Windows, an argument maps to the same register (based on its position), even when there are floating point arguments.

Ditto with comment.  I suggest using the rephrased comment above.

> Source/JavaScriptCore/jit/CCallHelpers.h:817
> +        // See http://msdn.microsoft.com/en-us/library/7572ztz4.aspx

This document at this url talks about "Return Values".  I think you meant to us this url instead; http://msdn.microsoft.com/en-us/library/zthk2dkh.aspx

> Source/JavaScriptCore/jit/CCallHelpers.h:1078
> +    ALWAYS_INLINE void setupArgumentsSlowPathReturnTypeCallWithExecState(TrustedImm32 arg1)

Please rename "setupArgumentsSlowPathReturnTypeCallWithExecState" to "setupArgumentsWithExecStateForCallWithSlowPathReturnType".

> Source/JavaScriptCore/jit/JIT.h:268
> +        Call appendSlowPathReturnTypeCall(const FunctionPtr& function)

Please rename "appendSlowPathReturnTypeCall" to "appendCallWithSlowPathReturnType".

> Source/JavaScriptCore/jit/JIT.h:270
> +            Call functionCall = callSlowPathReturnType();

Please rename "callSlowPathReturnType" to "callWithSlowPathReturnType".

> Source/JavaScriptCore/jit/JIT.h:661
> +        MacroAssembler::Call appendSlowPathReturnTypeCallWithExceptionCheck(const FunctionPtr&);

Please rename "appendSlowPathReturnTypeCallWithExceptionCheck" to "appendCallWithExceptionCheckAndSlowPathReturnType".

> Source/JavaScriptCore/jit/JITInlines.h:122
> +ALWAYS_INLINE MacroAssembler::Call JIT::appendSlowPathReturnTypeCallWithExceptionCheck(const FunctionPtr& function)

Please rename "appendSlowPathReturnTypeCallWithExceptionCheck" to "appendCallWithExceptionCheckAndSlowPathReturnType".

> Source/JavaScriptCore/jit/JITInlines.h:125
> +    MacroAssembler::Call call = appendSlowPathReturnTypeCall(function);

Please rename "appendSlowPathReturnTypeCall" to "appendCallWithSlowPathReturnType".

> Source/JavaScriptCore/jit/JITInlines.h:250
> +    setupArgumentsSlowPathReturnTypeCallWithExecState(TrustedImm32(op));
> +    return appendSlowPathReturnTypeCallWithExceptionCheck(operation);

Please rename "setupArgumentsSlowPathReturnTypeCallWithExecState" to "setupArgumentsWithExecStateForCallWithSlowPathReturnType", and "appendSlowPathReturnTypeCallWithExceptionCheck" to "appendCallWithExceptionCheckAndSlowPathReturnType".

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list