[webkit-reviews] review denied: [Bug 95418] Build warning : -Wsign-compare on DFGByteCodeParser.cpp. : [Attachment 161393] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Aug 29 22:47:46 PDT 2012
Filip Pizlo <fpizlo at apple.com> has denied review:
Bug 95418: Build warning : -Wsign-compare on DFGByteCodeParser.cpp.
https://bugs.webkit.org/show_bug.cgi?id=95418
Attachment 161393: Patch
https://bugs.webkit.org/attachment.cgi?id=161393&action=review
------- Additional Comments from Filip Pizlo <fpizlo at apple.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=161393&action=review
I think what you're hitting here is that different compilers have different
opinions about what the sign of arithmetic on a part signed, part unsigned
expression is. On our build system, the current setup works - these
comparisons are all signed versus signed. If your build system disagrees
(which it apparently is doing), you should insert casts into the arithmetic
(inlineCallFrame->stackOffset + CallFrame::thisArgumentOffset(), and
inlineCallFrame->stackOffset - RegisterFile::CallFrameHeaderSize -
inlineCallFrame->arguments.size()) to ensure that it stays signed all the way
through.
And please don't change operand variables to unsigned. Operands are always
signed, since negative operand values carry special meaning.
> Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:362
> - ArgumentPosition* findArgumentPositionForLocal(int operand)
> + ArgumentPosition* findArgumentPositionForLocal(unsigned operand)
This is wrong. Operands are always signed integers.
> Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:370
> - if (operand == inlineCallFrame->stackOffset +
CallFrame::thisArgumentOffset())
> + if (static_cast<int>(operand) == inlineCallFrame->stackOffset +
CallFrame::thisArgumentOffset())
Change the right hand side of this to static_cast<int>(inlineCallFrame->...)
> Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:372
> - if (static_cast<unsigned>(operand) <
inlineCallFrame->stackOffset - RegisterFile::CallFrameHeaderSize -
inlineCallFrame->arguments.size())
> + if (operand < inlineCallFrame->stackOffset -
RegisterFile::CallFrameHeaderSize - inlineCallFrame->arguments.size())
Same as above. Change the right hand side to a cast to int.
> Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:374
> - int argument = operandToArgument(operand -
inlineCallFrame->stackOffset);
> + int argument = operandToArgument(static_cast<int>(operand) -
inlineCallFrame->stackOffset);
Remove this.
More information about the webkit-reviews
mailing list