July 31, 2008
15% faster JPEG decoding on Windows x64 with IJG's JPEG library
Although Mozilla's JPEG library uses IJG's libjpeg6b, they adds native SSE2 optimization code for DCT using Intel's sample (AP-945. Origianl documents is removed from Intel server, but there is Japanese document in Intel Japan site). But this code in Mozilla is for MSVC for x86 only (Even if they make Linux version, most distributor uses system's libjpeg6b for their Firefox. So its result may becomes waste...).
How faster for decoding if its optimazation is implemented for AMD64 platform? Although SSE2 of AMD CPU (Trion, Althon64 and Opetron. Not Intel CPU) is slower than Intel CPU (except to Pentium M), since MMX assmebler doesn't work on MSVC for AMD64, I should try it.
Benchmark program is the following.
cinfo.err = jpeg_std_error(&jerr); jpeg_create_decompress(&cinfo); cinfo.dct_method = JDCT_ISLOW; jpeg_stdio_src(&cinfo, input_file); jpeg_read_header(&cinfo, TRUE); jpeg_start_decompress(&cinfo); width = cinfo.output_width; height = cinfo.output_height; img = (JSAMPARRAY)malloc(sizeof(JSAMPROW)*height); for(i = 0; i < height; ++i) img[i] = (JSAMPROW)calloc(sizeof(JSAMPLE), 3 * width); while (cinfo.output_scanline < cinfo.output_height) jpeg_read_scanlines(&cinfo, img + cinfo.output_scanline, cinfo.output_height - cinfo.output_scanline); jpeg_finish_decompress(&cinfo); jpeg_destroy_decompress(&cinfo);
Result. It is 15% faster than origianl!
Also, source code is available on http://hg.mozilla-x86-64.com/firefox-win64/. See jpeg directory.
December 28, 2007
Mozilla build system with Windows Vista x64
I bought new note PC (Dell XPS M1210). So although I installed Vista x64 on this PC, I tried re-newal build system.
Latest Mozilla build system uses MSYS. But current stable version of MSYS doesn't work on Vista x64. Since latest Mozilla build system package uses stable version, it doesn't work well.
This issue is a famous issue. Because this is compatibility issue of Vista's WOW6432. To fork thread/process on Cygwin/MSYS, it uses CreateProcess() API and STARTUPINFO parameter. Due to a lack of Vista WOW6432 compatibility, it cannot pass fork information to waiting funtion. So sicne The wait object become invalid, fork always failed.
This issue already fix on latest code (version "1.0.11"). But it isn't released as stabled package. So you have to replace MSYS-1.0.DLL into \mozilla-build\msys\bin with 1.0.11 binaries. MSYS team has released 1.0.11 version DLL as MSYS-1.0.11-20071204.tar.bz2. After installing Mozilla build system, you extract it and have to replace DLLs.
June 12, 2007
new build for Minefield
Since place which is new bookmark manager using SQLite is enabled again, I built Win64 binaries with /O1 option (optimized). There is the installer package in download page.
Notes: NSIS is 32-bits, so default install path is \Program Files (x86) directory.
October 08, 2006
New Build
I forgot posting new build information, there is new build on Download Page. From Firefox 2.0, Firefox team replaced a installer with Nullsoft Scriptable Install System. Since Win64 build uses this Win32 installer, default install path becomes C:\Program Files (x86).
February 21, 2006
Do you want Thunderbird Win64?
You can download from here.
NOTE:
- Must select custom setup and un-check "Quality Feedback Agent". If you select it, setup shows error dialog and doesn't finish.
- This is a test binary. So we don't file a bug to bugzilla.
February 14, 2006
Post new Binary
Since some trouble was resolved, I posted new binary for FireFox x64 using latest thunk CVS tree. So, this isn't based on 1.5 and this is as well-known as "Deer Park". Try it from Download Page (firefox-1.6a1.en-US.win64.installer.20060214.exe).
February 12, 2006
Research high CPU issue for x64 build
Since I don't resolve high CPU on DOM/XUL for x64 build, I cannot release new binaries. Although I built FireFox 1.5.0.1 with x64 patch, this version keeps this problem. So I back to 2005/09/01 code, then, I reseach this problem. So it is more time to resolve this issue.
Also, when I built XULRunner, this seems to works fine. Why does this issue occurs on Firefox only??
January 28, 2006
Current status of x86-64 version
- NSPR port is checked in thunk branch
- JavaScript port is checked in thunk branch
- XPT code that depends on CPU is checked in thunk branch
- We don't check in port code into toolkit, widget, gfx, browser, plugin, NSS tree and etc.
- Current thunk build into my build machine doesn't work well. XUL code spends more CPU time. But Gecko core engine works fine.
July 01, 2005
Implement IME attributes color to Gecko
Here is a current rendering on 1.8b2 on win32 build. (Japanese text means "Today is nice")
I don't know why underline is red on non-convert mode and style of convertion is reverted. (Maybe, this reason is into Frank/Bob's brain:-<).
Although Text rendering is into layout/generic/nsTextFrame.cpp, curernt implementation only decorates underline and revert for IME strings. So we must add each color settings to selection object. And custom color must get LookAndFeel service because this color depends on platform/IME.
Also, we excepted GTK+ platform from this behaivouir. Becasue AIX has some compatibility problems into XIM (see bug #195944). This code has some logical problem as long as I reference http://sanchi.appi.keio.ac.jp/~syl/Imserver/feedback-impl.html (Japanese). If I replace current XIM code with immodule code, I must fix this.
Here is new style with ATOK17. This is cool!
Also, on MS-IME2002
MS-IME2000/2002 has a bug that it returns that underline style is solid and dotted only. In other word, we cannot get thick style...
For Mac users, I cannot find true ways to get custom color each IME such as Kotoeri. But we can customaize color using prefs.js. If you want it, modify prefs.js. Of cource, prefs.js settins is enabled on Windows.
Patch will be ported to bugzilla. Please check my bug link.
June 03, 2005
FireFox 1.1 alpha1 version
Although Deer Park Alpha 1 is available on Mozilla.org, I have posted new x64 binary to download page. Of course, this binary is built on latest source tree (1.1 level). Also ,new package is EXE format like x86 package.
I hope that I will check in several codes for x64 if I have many time. But It isn't easy :-<...
May 02, 2005
Post new binary that SVG is enabled
I posted new binary that name is firefox-20050501.zip. This binary is that SVG is enabled since official is enabled.
Also, there is a SVG sample http://www.croczilla.com/svg/samples/. Try this with x64 build!.
April 22, 2005
New binary will work on XP x64 release
Today, I posted a new binary. As long as I test, This binary will work on XP x64 release.
It seems that x86 arch must be set arrayment to 16 byte per each function.
March 22, 2005
XPTCALL checked in
I checked in XPTCALL code for Windows x64. But, since it had invalied CRLF, I re-checked in...
February 04, 2005
Post new build tools for x64
I posted new build tools for x64 build.
When you read integer value from *.IDL file, XPIDL.EXE sometimes returns error "unsigned const declaration xxxxx initialized with negative constant" aginst integer. Because, although lexer.l/lexer.c uses scanf(), I don't set "I64" for 64-bit value.
So, for a fix, I modified IDL.h file...
Reference... scanf Format Specifiers from MSDN.
January 24, 2005
Post new binary
You can download 2005-01-23 binary of FireFox x64.
December 31, 2004
Port new build at 12/31
I ported new FireFox build for x64 platfrom. See download page.
Notes:
- Windows XP for x64 build 1289 (RC1) may not works current build with XP theme. This will be a complier bug.
If you enable theme, you may meet the following crash.0:000> r
rax=0000000001010058 rbx=0000000000000000 rcx=0000000000000000
rdx=0000000000000000 rsi=0000000003f4ebc0 rdi=000000000012b3c8
rip=000007ff772384a5 rsp=000000000012b258 rbp=0000000001010058
r8=000000000012b250 r9=0000000000000001 r10=0000000000000000
r11=0000000000000246 r12=0000000002cb1e38 r13=0000000000000001
r14=0000000000000000 r15=0000000000000000 iopl=0 nv up ei pl zr na po nc
cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246
uxtheme!CImageFile::ScaleMargins+0x65:
000007ff`772384a5 660f7f742450 movdqa oword ptr [rsp+0x50],xmm6 ss:00000000`0012 b2a8=00000000009400000000000002cb1e40 - This build is disabled compiler optimize. Because /O1 options causes invalied SSE code.
December 09, 2004
Build with same option as x86 firefox 1.0
I built FireFox 1.0+ for WinXP x64 by latest CVS. Binaries are http://www.mozilla-x86-64.com/firefox/.
December 05, 2004
new build at 2004/12/05
New build is here. This is built on latest CVS.
http://www.mozilla-x86-64.com/firefox/firefox-20041205.zip
May 29, 2004
Try to wrtite MPI assembler code
Today, I try to write MPI assembler code for Win64+AMD64. Although I wrote it using simply x86-64 code, should I use MMX/SSE? I don't know MMX assembler...
;
; mp_err s_mpv_div_2dx1d(mp_digit Nhi, mp_digit Nlo, mp_digit divisor, mp_digit *qp, mp_digit *rp)
;
_s_mpv_div_2dx1d PROC
mov rax, rdx ; Nlo
mov rdx, rcx ; Nhi
div r8
mov [r9], rax
mov r8, [rsp+40]
mov [r8], rdx
xor rax, rax
ret
_s_mpv_div_2dx1d ENDP
END
May 09, 2004
Good code for 64 Bit platform
Although I file a Bug for liveconnect, this check in is good!
bash-2.05b$ cvs log nsIThreadManager.h
RCS file: /cvsroot/mozilla/modules/oji/public/nsIThreadManager.h,v
Working file: nsIThreadManager.h
head: 1.10
branch:
locks: strict
access list:
:
:
description:
----------------------------
revision 1.10
date: 2004/05/09 10:22:18; author: kyle.yuan%sun.com; state: Exp; lines: +3 -2
Bug 136729 64bit problems in CreateThread/PostEvent r=joshua.xia+kyle.yuan, sr=brendan, patch by pkw@us.ibm.com Changes PRUint32 to PRThread* in CreateThread/PostEvent.
----------------------------
May 07, 2004
Good check in for VC++ 64bit
C:\mozilla>cvs log nsprpub/config/autoconf.mk.in
----------------------------
revision 1.32
date: 2004/05/06 14:01:42; author: wchang0222%aol.com; state: Exp; lines: +1-0
Bugzilla Bug 242741: MSVC .NET 2003 does not support the /PDB:NONE linker option, so we need to generate PDB files and ship them with our binary distributions when compiling with MSVC version > 6.0. r=cls.
Modified Files: configure configure.in autoconf.mk.in rules.mk
----------------------------
May 02, 2004
progress NSS port
Now, I am testing new patch. Comming soon :-).
April 29, 2004
check in port code for mozilla/db
It is simple patch.
Checking in mdb/public/mdb.h;
/cvsroot/mozilla/db/mdb/public/mdb.h,v <-- mdb.h
new revision: 1.38; previous revision: 1.37
done
Checking in mork/src/mork.h;
/cvsroot/mozilla/db/mork/src/mork.h,v <-- mork.h
new revision: 1.15; previous revision: 1.14
done
April 20, 2004
Good code for 64bit platform by Brendan
Good code for 64bit platform is checked in js/src/jsapi.c and jsapi.h
revision 3.168
date: 2004/04/20 02:21:27; author: brendan%mozilla.org; state: Exp; lines: +3 -3
Fix intN vs. jsword leftover confusion in context-thread API.
This code will works when you use JavaVM, but there is no JavaVM on WinXP for AMD64 now. (May be Sun may develop it?)
April 15, 2004
liveconnect fix for WinXP AMD64
According to Bug 227170...
The implementations of liveconnect/nsCLiveConnect.cpp methods that take jsobject obj parameters all cast obj to (JSObjectHandle*) right away. Why not just use that type? Or void* if you want to hide that type?
I think the jsobject name is quite wrong for this typedef, and it invades the JS engine's namespace (see http://lxr.mozilla.org/mozilla/source/js/src/README.html for naming conventions). I'd rather you rename it lcobject or some such name, while you're fixing this. Thanks,
/be
Humm, I will use simply typedef....
April 09, 2004
liveconnect...
comment for my proposal fix....
(From update of attachment 145401)
1. Please don't use PRWord here. see the comment in prtypes.h about PRWord.
2. Whenever you want to change the data type of jsobject, please also change its name. see Bug 227170 comment 4.
3. In Bug 227170, we all intend to use a pointer type for jsobject, rather than just define it as an integer type on 32/64 bit platform.
4. Please make all patches together next time. That would be much easier for reviewing.
To begin with, PRWord is only type for pointer....
April 03, 2004
Tracking bug for AMD64 issue.
Bug 237203 is useful for tracking Bug for AMD64 issue. Also, I filed a Bug as Bug 239499 for porting issue for mozilla/content.
Checked in bug #229722
----------------------------
revision 3.81
date: 2004/04/03 08:53:36; author: m_kato%ga2.so-net.ne.jp; state: Exp; lines
: +1 -1
Port issue for WinXP 64bit b=229722 r+sr=jst
----------------------------
March 11, 2004
1st check in for Linux AMD64 code
from check in log... Great!!. I work hard, too!
description:
----------------------------
revision 1.1
date: 2004/03/09 03:10:32; author: wchang0222%aol.com; state: Exp; branches: 1.1.2;
Bugzilla Bug 232742: added Linux/amd64 support. The patch came from Gentoo Linux's portage and was sent by Henrik Lynggaard Hansen. r=wtc.
Modified Files: configure configure.in prprf.c _linux.cfg linux.h
Added Files: os_Linux_x86_64.s
----------------------------
revision 1.1.2.1
date: 2004/03/09 03:18:19; author: wchang0222%aol.com; state: Exp; lines: +0-0
Bugzilla Bug 232742: added Linux/amd64 support. The patch came from Gentoo Linux's portage and was sent by Henrik Lynggaard Hansen. r=wtc.
Modified Files: configure configure.in prprf.c _linux.cfg linux.h
Added Files: os_Linux_x86_64.s
Tag: NSPRPUB_PRE_4_2_CLIENT_BRANCH
=============================================================================
November 10, 2003
Port to AMD64
Past years, I joined Mozilla comminuty for developemnt of Mozilla Suite. I wrote IME code such as Active IMM and fixed many I18N bugs. But, for my private issue, I detached it sudenlly.
But now, I got AMD64 PC because I am interesting in 64bit architecture. Although I got WinXP 64bit from MSDN, there is no native applications... So I decide to port several application to WinxP 64bit.
At first, I will port Mozilla to WinXP 64bit.