RESOLVED FIXED 124087
Get rid of the bizarre Darwin/x86-only MacroAssembler::shouldBlindForSpecificArch(uintptr_t) overload
https://bugs.webkit.org/show_bug.cgi?id=124087
Summary Get rid of the bizarre Darwin/x86-only MacroAssembler::shouldBlindForSpecific...
Filip Pizlo
Reported 2013-11-08 16:57:19 PST
Patch forthcoming.
Attachments
the patch (2.55 KB, patch)
2013-11-08 16:57 PST, Filip Pizlo
msaboff: review+
Filip Pizlo
Comment 1 2013-11-08 16:57:53 PST
Created attachment 216464 [details] the patch
Filip Pizlo
Comment 2 2013-11-08 17:27:51 PST
Darin Adler
Comment 3 2013-11-08 17:36:58 PST
Comment on attachment 216464 [details] the patch View in context: https://bugs.webkit.org/attachment.cgi?id=216464&action=review > Source/JavaScriptCore/assembler/MacroAssembler.h:992 > + if (sizeof(void*) == 4) > + return shouldBlindForSpecificArch(static_cast<uint32_t>(value)); > + return shouldBlindForSpecificArch(static_cast<uint64_t>(value)); Why doesn’t this work? return shouldBlindForSpecificArch(value); I’d expect that overloading would take care of the rest. No need for the if statement.
Filip Pizlo
Comment 4 2013-11-08 17:41:29 PST
Comment on attachment 216464 [details] the patch View in context: https://bugs.webkit.org/attachment.cgi?id=216464&action=review >> Source/JavaScriptCore/assembler/MacroAssembler.h:992 >> + return shouldBlindForSpecificArch(static_cast<uint64_t>(value)); > > Why doesn’t this work? > > return shouldBlindForSpecificArch(value); > > I’d expect that overloading would take care of the rest. No need for the if statement. On some compilers (including a version of clang in one of the toolchains that we build on), uint32_t, uint64_t and uintptr_t are different types. Hence passing uintptr_t causes a compile error; the compiler claims that the call overload is ambiguous. This patch fixes that compile error. It also removes a Darwin-only, and x86-only hack to avoid this ambiguity. See the code I remove in MacroAssemblerX86Common.
Note You need to log in before you can comment on or make changes to this bug.