[Webkit-unassigned] [Bug 128115] [Win] LLINT is not working.
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Feb 13 12:40:01 PST 2014
https://bugs.webkit.org/show_bug.cgi?id=128115
--- Comment #42 from Michael Saboff <msaboff at apple.com> 2014-02-13 12:37:14 PST ---
(In reply to comment #41)
> It seems Win 32-bit has 4 byte stack alignment, as I've seen both 4, 8, and C as the last nibble in esp when entering the callToJavaScript function.
> I guess this means we cannot use fixed offsets of the stack pointer to find the function arguments on the stack.
> I've tried aligning the stack to 16 byte as suggested.
> I also stored the value (esp & 0xf) in a temp register, and used that to compute the offset of the function arguments.
>
> This is the prologue code I've tried:
>
> ...
> pushCalleeSaves
> if X86
> subp 12, sp
> elsif X86_WIN
> subp 16, sp
> move sp, t4
> move t4, t0
> move t4, t2
> andp 0xf, t2
> andp 0xfffffff0, t0
> move t0, sp
> storep t4, [sp]
> elsif ARM or ARMv7 or ARMv7_TRADITIONAL
> ...
>
> Code to get function arguments from stack:
>
> if X86
> loadp 36[sp], vm
> loadp 32[sp], entry
> elsif X86_WIN
> loadp 40[sp,temp3], vm
> loadp 36[sp,temp3], entry
> else
> move cfr, previousCFR
> end
>
> ...
>
> if X86
> loadp 28[sp], previousPC
> loadp 24[sp], previousCFR
> elsif X86_WIN
> loadp 32[sp,temp3], previousPC
> loadp 28[sp,temp3], previousCFR
> end
> storep previousPC, ReturnPC[cfr]
> storep previousCFR, CallerFrame[cfr]
>
> if X86
> loadp 40[sp], protoCallFrame
> elsif X86_WIN
> loadp 44[sp,temp3], protoCallFrame
> end
>
> This works fine in both debug and release, no more asserts, and I can see that the value of the parameters picked off the stack are correct.
>
> Is this an OK way to do it?
Looks fine to me.
(nit) Add a space after the ',' and before the "temp3" on the argument access instructions.
--
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