I don't see anything obviously wrong here, but I also have no way of testing it, since we can't compile methods without loading the class library dll's.
+#elif __x86_64__ /* !defined(__i386__) */
Later in the patch it says defined(__x86_64__). I have no idea whether this distinction matters.