Index: vm/port/src/encoder/ia32_em64t/encoder.h =================================================================== --- vm/port/src/encoder/ia32_em64t/encoder.h (revision 510886) +++ vm/port/src/encoder/ia32_em64t/encoder.h (working copy) @@ -288,11 +288,8 @@ R_Opnd(Reg_No r): RM_Opnd(Reg), _reg_no(r) {} Reg_No reg_no() const { return _reg_no; } -// TODO: couldn't compile with "private:" under windows/em64t -#if !defined(_EM64T_) || !defined(_WIN64) private: // disallow copying -#endif R_Opnd(const R_Opnd &): RM_Opnd(Reg) { assert(false); } }; Index: vm/port/src/lil/em64t/pim/lil_code_generator_em64t.cpp =================================================================== --- vm/port/src/lil/em64t/pim/lil_code_generator_em64t.cpp (revision 510886) +++ vm/port/src/lil/em64t/pim/lil_code_generator_em64t.cpp (working copy) @@ -803,7 +803,8 @@ assert(src->kind == LLK_Gr || src->kind == LLK_GStk); const Tmp_GR_Opnd tmp_reg(context, ic); - const R_Opnd & dest_reg = (dest->kind == LLK_Gr ? get_r_opnd(dest) : tmp_reg); + const R_Opnd & dest_reg = + (dest->kind == LLK_Gr ? get_r_opnd(dest) : (const R_Opnd &)tmp_reg); switch (o) { case LO_Neg: Index: vm/port/src/lil/em64t/pim/m2n_em64t.cpp =================================================================== --- vm/port/src/lil/em64t/pim/m2n_em64t.cpp (revision 510886) +++ vm/port/src/lil/em64t/pim/m2n_em64t.cpp (working copy) @@ -237,12 +237,7 @@ size_64); } #else //!PLATFORM_POSIX - -// TODO: couldn't compile under windows/em64t with the line below -#if !defined(_EM64T_) || !defined(_WIN64) - buf = prefix(buf, fs_prefix); -#endif - + buf = prefix(buf, prefix_fs); buf = mov(buf, *reg, M_Opnd(0x14), size_64); #endif //!PLATFORM_POSIX return buf; Index: vm/vmcore/src/util/em64t/base/compile_em64t.cpp =================================================================== --- vm/vmcore/src/util/em64t/base/compile_em64t.cpp (revision 510886) +++ vm/vmcore/src/util/em64t/base/compile_em64t.cpp (working copy) @@ -290,16 +290,15 @@ /* BEGIN SUPPORT FOR STUB OVERRIDE CODE SEQUENCES */ - -#if defined(_EM64T_) && defined(_WIN64) -// TODO: couldn't compile "as is" under windows/em64t +// FIXME: as we now do not have native overrides on em64t +// we declare this array as having 1 element to make it compilable +// by Microsoft Visual C++ compilers and have 1 subtracted from +// sizeof_stub_override_entries to keep it of zero length. +// Once we have some NSO implemented on em64t that -1 should be removed. static Stub_Override_Entry _stub_override_entries_base[1]; -#else -static Stub_Override_Entry _stub_override_entries_base[] = {}; -#endif Stub_Override_Entry * stub_override_entries = &(_stub_override_entries_base[0]); -int sizeof_stub_override_entries = sizeof(_stub_override_entries_base) / sizeof(_stub_override_entries_base[0]); +int sizeof_stub_override_entries = sizeof(_stub_override_entries_base) / sizeof(_stub_override_entries_base[0]) - 1; // <<< Remove -1 if NSO implemented; /* END SUPPORT FOR STUB OVERRIDE CODE SEQUENCES */