finish support of 64-bit XULRunner on win32
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/carbon/org/eclipse/swt/browser/MozillaDelegate.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/carbon/org/eclipse/swt/browser/MozillaDelegate.java
index 6fd3531..c800635 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/carbon/org/eclipse/swt/browser/MozillaDelegate.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/carbon/org/eclipse/swt/browser/MozillaDelegate.java
@@ -50,8 +50,8 @@
 	return "libxpcom.dylib"; //$NON-NLS-1$
 }
 
-static String getJSLibraryName () {
-	return "libxpcom.dylib"; //$NON-NLS-1$
+static String[] getJSLibraryNames () {
+	return new String[] {"libxpcom.dylib"}; //$NON-NLS-1$
 }
 
 static String getJSLibraryName_Pre4 () {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java
index f699239..64baf3e 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java
@@ -47,8 +47,8 @@
 	return baseDir + "/Library/Caches/eclipse"; //$NON-NLS-1$
 }
 
-static String getJSLibraryName () {
-	return "libxpcom.dylib"; //$NON-NLS-1$
+static String[] getJSLibraryNames () {
+	return new String[] {"libxpcom.dylib"}; //$NON-NLS-1$
 }
 
 static String getJSLibraryName_Pre4 () {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext-2.h b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext.h
similarity index 100%
rename from bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext-2.h
rename to bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptContext.h
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptGlobalObject-2.h b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptGlobalObject.h
similarity index 100%
rename from bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptGlobalObject-2.h
rename to bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/nsIScriptGlobalObject.h
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.cpp b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.cpp
index 580fb4b..026e178 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.cpp
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.cpp
@@ -67,6 +67,31 @@
 }
 #endif
 
+#if (!defined(NO__1Call__IIIIII) && !defined(JNI64)) || (!defined(NO__1Call__JJJJJI) && defined(JNI64))
+#ifndef JNI64
+extern "C" JNIEXPORT jint JNICALL XPCOM_NATIVE(_1Call__IIIIII)(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jintLong arg3, jintLong arg4, jint arg5);
+JNIEXPORT jint JNICALL XPCOM_NATIVE(_1Call__IIIIII)(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jintLong arg3, jintLong arg4, jint arg5)
+#else
+extern "C" JNIEXPORT jint JNICALL XPCOM_NATIVE(_1Call__JJJJJI)(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jintLong arg3, jintLong arg4, jint arg5);
+JNIEXPORT jint JNICALL XPCOM_NATIVE(_1Call__JJJJJI)(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jintLong arg3, jintLong arg4, jint arg5)
+#endif
+{
+	jint rc = 0;
+#ifndef JNI64
+	XPCOM_NATIVE_ENTER(env, that, _1Call__IIIIII_FUNC);
+#else
+	XPCOM_NATIVE_ENTER(env, that, _1Call__JJJJJI_FUNC);
+#endif
+	rc = (jint)((SWT_XREInitEmbedding)arg0)((nsILocalFile *)arg1, (nsILocalFile *)arg2, (nsIDirectoryServiceProvider *)arg3, (nsStaticModuleInfo const *)arg4, arg5);
+#ifndef JNI64
+	XPCOM_NATIVE_EXIT(env, that, _1Call__IIIIII_FUNC);
+#else
+	XPCOM_NATIVE_EXIT(env, that, _1Call__JJJJJI_FUNC);
+#endif
+	return rc;
+}
+#endif
+
 #if (!defined(NO__1Call__III_3BII_3I) && !defined(JNI64)) || (!defined(NO__1Call__JJJ_3BII_3I) && defined(JNI64))
 #ifndef JNI64
 extern "C" JNIEXPORT jintLong JNICALL XPCOM_NATIVE(_1Call__III_3BII_3I)(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2, jbyteArray arg3, jint arg4, jint arg5, jintArray arg6);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.h b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.h
index c41e064..c6ee93e 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom.h
@@ -31,6 +31,9 @@
 #define XPCOM_LOAD_FUNCTION LOAD_FUNCTION
 
 #ifdef _WIN32
+#if !(defined(__i386__) || defined(_M_IX86) || defined(_X86_))
+#define NO__1Call__JJJJJI	/* exclude on 64-bit win32 due to use of XULRunner 10 SDK */
+#endif
 #define STDMETHODCALLTYPE __stdcall
 #define NO__1NS_1InitXPCOM2
 #else /* _WIN32 */
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_custom.cpp b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_custom.cpp
index 09c20b4..9aec091 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_custom.cpp
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_custom.cpp
@@ -246,7 +246,7 @@
 #ifndef NO_CALLBACK_1JSNative
 extern "C" JNIEXPORT jintLong JNICALL XPCOM_NATIVE(CALLBACK_1JSNative)(JNIEnv *env, jclass that, jintLong arg0);
 static jintLong CALLBACK_1JSNative;
-static jint proc_CALLBACK_1JSNative(jintLong arg0, jint arg1, jintLong arg2) {
+static jintLong proc_CALLBACK_1JSNative(jintLong arg0, jint arg1, jintLong arg2) {
 	return ((jintLong (CALLING_CONVENTION*)(jintLong, jintLong, jintLong))CALLBACK_1JSNative)(arg0, arg1, arg2);
 }
 static jintLong CALLBACK_JSNative(jintLong func) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.cpp b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.cpp
index f1e52b4..c51c168 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.cpp
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.cpp
@@ -27,6 +27,11 @@
 	"_1Call__JJJJ",
 #endif
 #ifndef JNI64
+	"_1Call__IIIIII",
+#else
+	"_1Call__JJJJJI",
+#endif
+#ifndef JNI64
 	"_1Call__III_3BII_3I",
 #else
 	"_1Call__JJJ_3BII_3I",
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.h b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.h
index afa3bb9..ff1e3a0 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcom_stats.h
@@ -37,6 +37,11 @@
 	_1Call__JJJJ_FUNC,
 #endif
 #ifndef JNI64
+	_1Call__IIIIII_FUNC,
+#else
+	_1Call__JJJJJI_FUNC,
+#endif
+#ifndef JNI64
 	_1Call__III_3BII_3I_FUNC,
 #else
 	_1Call__JJJ_3BII_3I_FUNC,
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java
index 7002315..41f621e 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java
@@ -1500,12 +1500,18 @@
 
 static byte[] getJSLibPathBytes () {
 	if (jsLibPathBytes == null) {
-		String jsLibraryName = IsPre_4 ? MozillaDelegate.getJSLibraryName_Pre4 () : MozillaDelegate.getJSLibraryName ();
-		String mozillaPath = getMozillaPath () + jsLibraryName + '\0';
-		try {
-			jsLibPathBytes = mozillaPath.getBytes ("UTF-8"); //$NON-NLS-1$
-		} catch (UnsupportedEncodingException e) {
-			jsLibPathBytes = mozillaPath.getBytes ();
+		String[] names = IsPre_4 ? new String[] {MozillaDelegate.getJSLibraryName_Pre4 ()} : MozillaDelegate.getJSLibraryNames ();
+		for (int i = 0; i < names.length; i++) {
+			File file = new File (getMozillaPath (), names[i]);
+			if (file.exists ()) {
+				String pathString = file.getAbsolutePath () + '\0';
+				try {
+					jsLibPathBytes = pathString.getBytes ("UTF-8"); //$NON-NLS-1$
+				} catch (UnsupportedEncodingException e) {
+					jsLibPathBytes = pathString.getBytes ();
+				}
+				break;
+			}
 		}
 	}
 	return jsLibPathBytes;
@@ -2036,7 +2042,7 @@
 			error (XPCOM.NS_ERROR_NULL_POINTER);
 		}
 		if (IsPre_4) {
-//			rc = XPCOM.Call (functionPtr, localFile.getAddress (), localFile.getAddress (), LocationProvider.getAddress (), 0, 0);
+			rc = XPCOM.Call (functionPtr, localFile.getAddress (), localFile.getAddress (), LocationProvider.getAddress (), 0, 0);
 		} else {
 			rc = XPCOM.Call (functionPtr, localFile.getAddress (), localFile.getAddress (), LocationProvider.getAddress ());
 		}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOM.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOM.java
index e513e3a..b5c7f27 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOM.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOM.java
@@ -607,15 +607,15 @@
  * @param aAppDirProvider cast=(nsIDirectoryServiceProvider *)
  * @param aStaticComponents cast=(nsStaticModuleInfo const *)
  */
-//public static final native int _Call(long /*int*/ ptr, long /*int*/ aLibXULDirectory, long /*int*/ aAppDirectory, long /*int*/ aAppDirProvider, long /*int*/ aStaticComponents, int aStaticComponentsCount);
-//public static final int Call(long /*int*/ ptr, long /*int*/ aLibXULDirectory, long /*int*/ aAppDirectory, long /*int*/ aAppDirProvider, long /*int*/ aStaticComponents, int aStaticComponentsCount) {
-//	lock.lock();
-//	try {
-//		return _Call(ptr, aLibXULDirectory, aAppDirectory, aAppDirProvider, aStaticComponents, aStaticComponentsCount);
-//	} finally {
-//		lock.unlock();
-//	}
-//}
+public static final native int _Call(long /*int*/ ptr, long /*int*/ aLibXULDirectory, long /*int*/ aAppDirectory, long /*int*/ aAppDirProvider, long /*int*/ aStaticComponents, int aStaticComponentsCount);
+public static final int Call(long /*int*/ ptr, long /*int*/ aLibXULDirectory, long /*int*/ aAppDirectory, long /*int*/ aAppDirProvider, long /*int*/ aStaticComponents, int aStaticComponentsCount) {
+	lock.lock();
+	try {
+		return _Call(ptr, aLibXULDirectory, aAppDirectory, aAppDirProvider, aStaticComponents, aStaticComponentsCount);
+	} finally {
+		lock.unlock();
+	}
+}
 
 /**
  * @param ptr cast=(SWT_XREInitEmbedding2)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java
index a8e70e1..4c13d73 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java
@@ -75,8 +75,8 @@
 	return getProfilePath ();
 }
 
-static String getJSLibraryName () {
-	return "libxul.so"; //$NON-NLS-1$
+static String[] getJSLibraryNames () {
+	return new String[] {"libxul.so"}; //$NON-NLS-1$
 }
 
 static String getJSLibraryName_Pre4() {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java
index 7089b38..4188e40 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java
@@ -86,8 +86,8 @@
 	return "libxpcom.so"; //$NON-NLS-1$
 }
 
-static String getJSLibraryName () {
-	return "libmozjs.so"; //$NON-NLS-1$
+static String[] getJSLibraryNames () {
+	return new String[] {"libmozjs.so"}; //$NON-NLS-1$
 }
 
 static String getJSLibraryName_Pre4() {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/win32/org/eclipse/swt/browser/MozillaDelegate.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/win32/org/eclipse/swt/browser/MozillaDelegate.java
index 7df2de4..a9d7bbb 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/win32/org/eclipse/swt/browser/MozillaDelegate.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/win32/org/eclipse/swt/browser/MozillaDelegate.java
@@ -14,7 +14,7 @@
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.browser.Browser;
-import org.eclipse.swt.internal.Callback;
+import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.mozilla.*;
 import org.eclipse.swt.internal.win32.*;
 import org.eclipse.swt.widgets.*;
@@ -44,8 +44,8 @@
 	return getProfilePath ();
 }
 
-static String getJSLibraryName () {
-	return "mozjs.dll"; //$NON-NLS-1$
+static String[] getJSLibraryNames () {
+	return new String[] {"mozjs.dll", "xul.dll"}; //$NON-NLS-1$ //$NON-NLS-2$
 }
 
 static String getJSLibraryName_Pre4 () {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat
index f7b2368..a5bc068 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat
@@ -14,7 +14,7 @@
 IF EXIST C:\BUILD\swt-builddir set SWT_BUILDDIR=C:\BUILD\swt-builddir
 IF x.%SWT_BUILDDIR%==x. set SWT_BUILDDIR=S:\swt-builddir
 echo SWT build dir: %SWT_BUILDDIR%
-IF x.%MSSDK%==x. set MSSDK="%SWT_BUILDDIR%\MSSDKs\Microsoft SDK 6.0 Vista"
+IF x.%MSSDK%==x. set MSSDK="%SWT_BUILDDIR%\MSSDKs\Windows Server 2003 SP1 SDK"
 
 IF x.%1==x.x86 GOTO X86
 IF x.%1==x.x86_64 GOTO X86_64
@@ -40,11 +40,19 @@
 
 :X86_64
 
-call %MSSDK%\setenv /X64 /RETAIL
 IF "x.%OUTPUT_DIR%"=="x." set OUTPUT_DIR=..\..\..\org.eclipse.swt.win32.win32.x86_64
 IF x.%JAVA_HOME%==x. set JAVA_HOME=%SWT_BUILDDIR%\ibm-sdk50-x86_64
-IF x.%XULRUNNER_SDK%==x. set XULRUNNER_SDK=C:\xulrunner-10-64\xulrunner-sdk
 set CFLAGS=-DJNI64
+IF x.%BUILD_XULRUNNER%==x.true GOTO XULRUNNER64
+call %MSSDK%\setenv /X64 /RETAIL
+shift
+GOTO MAKE
+
+:XULRUNNER64
+set MSSDK="%SWT_BUILDDIR%\MSSDKs\Windows 7 SDK v7.1"
+call %MSSDK%\bin\setenv /x64 /Release
+IF x.%XULRUNNER_SDK%==x. set XULRUNNER_SDK=%SWT_BUILDDIR%\gecko10-sdk-x86_64
+set MOZILLACFLAGS=-DJNI64
 shift
 GOTO MAKE
 
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/make_win32.mak b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/make_win32.mak
index 39d5489..989f398 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/make_win32.mak
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/make_win32.mak
@@ -54,17 +54,18 @@
 
 XULRUNNER_PREFIX = swt-xulrunner
 XULRUNNER_LIB = $(XULRUNNER_PREFIX)-$(WS_PREFIX)-$(SWT_VERSION).dll
-XULRUNNER_LIBS = Advapi32.lib $(XULRUNNER_SDK)\sdk\lib\xpcomglue.lib
+XULRUNNER_LIBS = Advapi32.lib $(XULRUNNER_SDK)\lib\xpcomglue.lib
 XULRUNNER_OBJS = xpcom.obj xpcom_custom.obj xpcom_structs.obj xpcom_stats.obj
+XPCOMINIT_OBJS = xpcominit.obj xpcominit_structs.obj xpcominit_stats.obj
 
 MOZILLACFLAGS = -c \
 	-O1 \
-	-DJNI64 \
+	$(MOZILLACFLAGS) \
 	-DSWT_VERSION=$(SWT_VERSION) \
 	$(NATIVE_STATS) \
+	-MD \
 	-DMOZILLA_STRICT_API=1 \
 	-W3 \
-	-MD \
 	-I. \
 	-I"$(JAVA_HOME)/include" \
 	-I"$(JAVA_HOME)/include/win32" \
@@ -85,7 +86,7 @@
 	/I"$(JAVA_HOME)\include" /I"$(JAVA_HOME)\include\win32" /I.
 RCFLAGS = $(rcflags) $(rcvars) $(RCFLAGS) -DSWT_FILE_VERSION=\"$(maj_ver).$(min_ver)\" -DSWT_COMMA_VERSION=$(comma_ver)
 
-all: make_xulrunner
+all: make_swt make_awt make_gdip make_wgl
 
 webkit_win32_custom.obj: webkit_win32_custom.cpp
 	cl $(WEBKITCFLAGS) webkit_win32_custom.cpp
@@ -162,7 +163,16 @@
 	link @templrf
 	del templrf
 	
-make_xulrunner: $(XULRUNNER_OBJS) swt_xpcom.res
+make_xulrunner: $(XULRUNNER_OBJS) $(XPCOMINIT_OBJS) swt_xpcom.res
+	echo $(ldebug) $(dlllflags) >templrf
+	echo $(XULRUNNER_LIBS) >>templrf
+	echo $(XULRUNNER_OBJS) $(XPCOMINIT_OBJS) >>templrf
+	echo swt_xpcom.res >>templrf
+	echo -out:$(XULRUNNER_LIB) >>templrf
+	link @templrf
+	del templrf
+	
+make_xulrunner64: $(XULRUNNER_OBJS) swt_xpcom.res
 	echo $(ldebug) $(dlllflags) >templrf
 	echo $(XULRUNNER_LIBS) >>templrf
 	echo $(XULRUNNER_OBJS) >>templrf
diff --git a/bundles/org.eclipse.swt/buildSWT.xml b/bundles/org.eclipse.swt/buildSWT.xml
index 1cdd3b9..4aa044c 100644
--- a/bundles/org.eclipse.swt/buildSWT.xml
+++ b/bundles/org.eclipse.swt/buildSWT.xml
@@ -147,7 +147,7 @@
 			<param name="fragment" value="org.eclipse.swt.win32.win32.x86"/>
 		</antcall>
 		<antcall target="check_fragment_libraries">
-			<param name="library_count" value="4"/>
+			<param name="library_count" value="5"/>
 			<param name="fragment" value="org.eclipse.swt.win32.win32.x86_64"/>
 		</antcall>
 		<antcall target="check_fragment_libraries">
@@ -165,7 +165,7 @@
 	<target name="check_fragment_libraries" depends="get_version">
 		<echo>Checking ${fragment}</echo>
 		<property name="checkdir" value="~/build/check_libraries"/>
-		<property name="library_count" value="127"/>
+		<property name="library_count" value="128"/>
 		<property name="fragment" value=""/>
 		<fileset id="match" dir="${repo.bin}/bundles/${fragment}">
 			<filename regex="[0-9][0-9][0-9][0-9]."/>
@@ -1031,21 +1031,14 @@
 			<arg line="${targets}"/>
 			<arg line="${clean}"/>
 		</exec>
-		<condition property="should_build_xulrunner" value="true">
-			<and>
-				<equals arg1="${swt.ws}" arg2="win32"/>
-				<equals arg1="${swt.arch}" arg2="x86"/>
-			</and>
+		<condition property="xulrunner_target" value="make_xulrunner64" else="make_xulrunner">
+			<equals arg1="${swt.arch}" arg2="x86_64"/>
 		</condition>
-		<antcall target="build_local_win_xulrunner"/>
-	</target>
-
-	<target name="build_local_win_xulrunner" if="should_build_xulrunner">
 		<exec dir="${build_dir}" executable="cmd" failonerror="true">
 			<env key="JAVA_HOME" value=""/>
 			<env key="BUILD_XULRUNNER" value="true"/>
 			<env key="OUTPUT_DIR" value="${win_output_dir}"/>
-			<arg line="/c '${build_dir}/${build_file}' x86 make_xulrunner install ${clean}"/>
+			<arg line="/c '${build_dir}/${build_file}' ${swt.arch} ${xulrunner_target} install ${clean}"/>
 		</exec>
 	</target>