Friday, February 8, 2013

screencast on Surface

This is a screencast.

Friday, February 1, 2013

Progress of Firefox on Windows ARM

This isn't official project and is just my research. Here is Jailbreak Surface's screenshot |o|.
Now, I am working...
  • JavaScript JIT is turned off. Although Win32/ARM ABI seems to require Thumb-2 only, our SpiderMonkey JIT generates ARMv7 code, not Thumb-2. So to use JIT on Win32/ARM, it is rewrite JIT assembler using Thumb-2 only
  • Porting xpconnect to Win32/ARM is in progress. The xpconnect is language binding for Gecko.
  • Porting libffi to Win32/ARM.
  • Possible using StoreApp API instead of Desktop API.

Tuesday, January 22, 2013

Mozilla community meeting in Tokyo

15th, January, we have community meetup at new Tokyo office.

Also, New Tokyo office for Mozilla Japan will open at Spring. This place will include MozSpaces.

Monday, December 12, 2011

Importing bookmark (and etc) from other web browsers to Firefox

Several years, we had not maintained profile migration code. On Firefox 4 source code, we had unused migrators such as OmniWeb (not working!), iCab (not working!!) and Camino (not working!!!). Also, localized files had konqueror, epiphany and galeon..

But, from Firefox 11...

Firefox 11

  • Added Google Chrome migrator
    This migrator supports bookmakrs, histories and cookies. And it may support signon data on Windows if possible. This migrator uses async database and file functions, so migration is faster than migrations for other web browsers.
  • Remove Opera migrator
    Current implementation of Opera profile migration is broken. Although this is written for Opera 6!, this doesn't work on the latest Opera. So we will remove this on Firefox 11.

Firefox 12 and feature

  • More support Google Chrome migrator
    It will support preferences and signon data for Mac and Linux
  • New Opera migrator
    I am rewriting new opera migator. This uses async operation as possible and fit with new Gecko code. I will land on Firefox 12 train.

Friday, October 14, 2011

HTC touch input w/ Fennec

In this week, I bought HTC Desire Z to debug several input issue on Firefox Mobile. HTC touch input is very buggy implementation as IME (Input Method Editor). Although I turn on IME support on hardware keyboard for Firefox Mobile from version 9 (released at Dec 2011), Touch Input with hardware keyboard doesn't work well.

When I investigate this, a articles of stackoverflow.com is found. But this wasn't good article for workaround and details.

When IME support on android application, onKeyPreIme has to return false. Then, InputConnection.commitText() is called per input. But 1st parameter may be incorrect because it has no meta state (alt/fn or shift). In other word, When you input Shift+[A], we expect "A". But HTC touch input calls commitText("a")....

If you doesn't implement full IME support using BaseInputConnection. this issue doesn't occurs. BaseInputConnection.commitText() has a workaround code for this issue. It generates KeyEvent for input, then it uses InputConnection.sendKeyEvent. Since this event has correct state, onKeyDown can handle correct key event.

I will create new fix for this problem then, I will land this to Firefox 9 and 10.

Wednesday, September 21, 2011

Starting new platform porting

You know, you can build Firefox, Thunderbird, Seamonkey and Xulrunner as Windows x64 binary by my work. Now, Firefox x64 is tier 2. (automation builder builds binary, runs automation test and nightly is available.). I am interested in porting new platforms

Android x86

It already works on gingerbread of Android x86 and will work on Honeybomb. Bug number is 681202. Also, Opera mobile already runs on Android x86

Windows/arm

Required Visual Studio 11. There is a lack of important libraries such as wsock32 to build binaries. I believe that it will be fixed by Visual Studio 11 beta (actually CTP, not beta!). Also, bug number for my status is 686843.

Sunday, September 11, 2011

Monday, September 5, 2011

Windows x64 status updated

Today, I have landed bug 663748 to mozilla-inbound. (Also this will be integrated to mozilla-central today or tomorrow). It means that Win64 build will pass all automation tests. But, since this is for test tool, no effect on Firefox package.

Next Step

  • To analyze crash data easily, we have to improve google breakpad for Win64. dumpsym.exe has to add unwind information to symbol file.
  • PGO using VS2010. We consider to use VS2010 as official build. Now although we uses VS2008SP1 with PGO options, switching to VS2010SP1 means that we can get more performance. Here is a data how improve to switch to VS2010. But, unfortunately, due to a bug of VS2010, we cannot use 64-bit toolchain. Of course, there is a workaround.

Friday, August 5, 2011

Status Win64 build

Mochitest-1 failure

This is WebGL issue. Actually, Win64 build has no ANGLE that is D3D -> OpenGL ES wrapper. ANGLE now supports Win64 building by r697, and I and ransGaming fix a Win64 bug by r707. After merging these into m-c, it will pass mochitest-1.

test failures on jstest

I cannot reproduce this on my development machine. So if you know reproduce step, let me know. I think that this is GC issue, but I am still investigating...

But if this is compiler issue, this will be fixed using VS2010SP1. We have a plan to upgrade toolchains to VS2010SP1 as default.

Wednesday, May 18, 2011

Some browser migrations are gone

Since I landed bug 656205, some old migration (MacIE, Netscape 4 and Firebird / Phoenix) functions is gone. This code was too old and it didn't use async Places APIs.

Also, I am working Chrome migration code. At least, it will be landed on Firefox 7.

Monday, March 21, 2011

Firefox 4 on pandaboard (Ubuntu 10.10)

I got pandaboard to improve ARM code on Firefox. Pandaboard uses TI OMAP4 (Dual-core Cortex-A9 and PowerVR SGX 540), so it is the most powerful ARM board.

This data is sunspider benchmark on Firefox 4 on pandaboard. BTW, my Android phone (HTC Desire HD) is 2800ms.

============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total:                 1984.1ms +/- 0.7%
--------------------------------------------

  3d:                   354.2ms +/- 1.3%
    cube:               139.8ms +/- 2.0%
    morph:               65.2ms +/- 5.1%
    raytrace:           149.2ms +/- 3.5%

  access:               290.7ms +/- 2.5%
    binary-trees:        47.1ms +/- 3.5%
    fannkuch:           116.6ms +/- 6.9%
    nbody:               47.1ms +/- 6.9%
    nsieve:              79.9ms +/- 2.0%

  bitops:               105.1ms +/- 1.8%
    3bit-bits-in-byte:    5.1ms +/- 8.0%
    bits-in-byte:        50.4ms +/- 1.2%
    bitwise-and:         12.3ms +/- 5.5%
    nsieve-bits:         37.3ms +/- 2.9%

  controlflow:           21.5ms +/- 7.2%
    recursive:           21.5ms +/- 7.2%

  crypto:               181.5ms +/- 1.9%
    aes:                 94.5ms +/- 0.8%
    md5:                 51.8ms +/- 4.7%
    sha1:                35.2ms +/- 5.2%

  date:                 279.9ms +/- 1.9%
    format-tofte:       173.9ms +/- 2.6%
    format-xparb:       106.0ms +/- 2.9%

  math:                 144.1ms +/- 1.2%
    cordic:              39.7ms +/- 1.5%
    partial-sums:        47.5ms +/- 2.3%
    spectral-norm:       56.9ms +/- 1.7%

  regexp:               123.1ms +/- 3.9%
    dna:                123.1ms +/- 3.9%

  string:               484.0ms +/- 1.0%
    base64:              44.3ms +/- 3.3%
    fasta:               96.4ms +/- 3.1%
    tagcloud:           146.4ms +/- 1.5%
    unpack-code:        135.5ms +/- 1.7%
    validate-input:      61.4ms +/- 3.2%

Although I have already landed ARM optimized NSS code (for crypto) into cvs.mozilla.org, it won't used by Firefox 4 or 5. It is for NSS trunk (NSS version 4). But I am investigate ARM specific optimization for Firefox 5.

Wednesday, December 22, 2010

Running 32-bit plugin on 64-bit Firefox

I am working Bug 595053 and Bug 620888 for 32-bit plugin support on 64-bit Firefox. Today, it is successful that 32-bit plugin (Flash and Sliverlight) runs on 64-bit Firefox.

This screenshot is sliverlight page on Firefox 64-bit (with 32-bit plugin support). Although Firefox process is 64-bit, sliverlight works.

Monday, December 20, 2010

SunSpider on Intel Atom processor

This result of sunspider data is Firefox 4.0b9pre (2010-12-18) vs Google Chrome 10.0.612.1 dev on Ubuntu 10.10 + Intel Atom Z560. This result is interesting. (FROM is Chrome and TO is Firefox)

TEST                   COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:           1.38x as fast     1361.8ms +/- 5.4%   987.8ms +/- 1.0%     significant

=============================================================================

  3d:                  1.41x as fast      224.0ms +/- 11.6%   158.5ms +/- 0.9%     significant
    cube:              ??                  61.7ms +/- 23.3%    64.0ms +/- 1.8%     not conclusive: might be *1.037x as slow*
    morph:             1.48x as fast       47.2ms +/- 8.7%    31.9ms +/- 3.1%     significant
    raytrace:          1.84x as fast      115.1ms +/- 9.3%    62.6ms +/- 1.1%     significant

  access:              -                  130.6ms +/- 12.0%   128.7ms +/- 2.5% 
    binary-trees:      *2.02x as slow*      9.7ms +/- 42.8%    19.6ms +/- 12.8%     significant
    fannkuch:          1.42x as fast       53.3ms +/- 18.4%    37.6ms +/- 2.7%     significant
    nbody:             1.73x as fast       48.4ms +/- 11.9%    27.9ms +/- 2.2%     significant
    nsieve:            *2.27x as slow*     19.2ms +/- 7.6%    43.6ms +/- 2.5%     significant

  bitops:              1.77x as fast       87.6ms +/- 19.7%    49.5ms +/- 4.9%     significant
    3bit-bits-in-byte: 2.79x as fast        7.8ms +/- 5.8%     2.8ms +/- 10.8%     significant
    bits-in-byte:      ??                  17.8ms +/- 37.5%    19.6ms +/- 3.1%     not conclusive: might be *1.101x as slow*
    bitwise-and:       4.19x as fast       30.6ms +/- 22.5%     7.3ms +/- 6.6%     significant
    nsieve-bits:       1.59x as fast       31.4ms +/- 14.6%    19.8ms +/- 8.3%     significant

  controlflow:         1.49x as fast       12.7ms +/- 14.0%     8.5ms +/- 5.9%     significant
    recursive:         1.49x as fast       12.7ms +/- 14.0%     8.5ms +/- 5.9%     significant

  crypto:              1.65x as fast      111.6ms +/- 6.8%    67.6ms +/- 1.1%     significant
    aes:               1.61x as fast       59.7ms +/- 14.7%    37.1ms +/- 2.8%     significant
    md5:               1.64x as fast       26.0ms +/- 7.3%    15.9ms +/- 1.4%     significant
    sha1:              1.77x as fast       25.9ms +/- 7.1%    14.6ms +/- 3.4%     significant

  date:                1.50x as fast      241.3ms +/- 3.7%   161.3ms +/- 1.4%     significant
    format-tofte:      *1.116x as slow*    84.7ms +/- 8.2%    94.5ms +/- 1.2%     significant
    format-xparb:      2.34x as fast      156.6ms +/- 4.6%    66.8ms +/- 4.2%     significant

  math:                ??                  88.1ms +/- 4.4%    91.6ms +/- 1.3%     not conclusive: might be *1.040x as slow*
    cordic:            *1.47x as slow*     19.4ms +/- 10.7%    28.5ms +/- 2.7%     significant
    partial-sums:      1.27x as fast       51.0ms +/- 5.3%    40.1ms +/- 1.0%     significant
    spectral-norm:     *1.30x as slow*     17.7ms +/- 6.0%    23.0ms +/- 2.1%     significant

  regexp:              1.34x as fast       50.2ms +/- 8.4%    37.5ms +/- 7.6%     significant
    dna:               1.34x as fast       50.2ms +/- 8.4%    37.5ms +/- 7.6%     significant

  string:              1.46x as fast      415.7ms +/- 12.6%   284.6ms +/- 1.9%     significant
    base64:            1.44x as fast       30.2ms +/- 6.4%    21.0ms +/- 6.2%     significant
    fasta:             1.25x as fast       60.7ms +/- 5.1%    48.5ms +/- 2.6%     significant
    tagcloud:          1.31x as fast      114.1ms +/- 9.5%    87.2ms +/- 1.4%     significant
    unpack-code:       1.60x as fast      137.3ms +/- 22.0%    85.6ms +/- 2.5%     significant
    validate-input:    1.74x as fast       73.4ms +/- 20.7%    42.3ms +/- 6.5%     significant

If you use Intel Core i7, this score is even. Why is V8 engine slow on Intel Atom?

Friday, November 26, 2010

Interesting AD by Google for Google Chrome

Google Japan says, "グーグルがゼロからつくったブラウザ Google Chrome".

It means that "Google Chrome is written from scratch by Google.". Is it joke? They use WebKit redering engine and many open source codes such as libevent, libpng, libjpeg, nspr/nss and etc. Their behavior are a lack of respect for open source community. So I am very very sad...

Friday, September 24, 2010

64bit Browser speed by SunSpider

This data is Firefox 4 x64 vs Internet Explorer 9 x64. Firefox 4 is three times faster than IE9。

TEST                   COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:           *2.90x as slow*   389.8ms +/- 3.0%   1132.2ms +/- 0.8%     significant

=============================================================================

  3d:                  *2.57x as slow*    71.7ms +/- 0.7%    184.0ms +/- 3.9%     significant
    cube:              *1.94x as slow*    27.5ms +/- 1.4%     53.4ms +/- 1.8%     significant
    morph:             *6.11x as slow*    11.0ms +/- 0.0%     67.2ms +/- 2.5%     significant
    raytrace:          *1.91x as slow*    33.2ms +/- 0.9%     63.4ms +/- 9.6%     significant

  access:              *4.97x as slow*    40.5ms +/- 18.4%    201.4ms +/- 1.0%     significant
    binary-trees:      *2.81x as slow*    10.1ms +/- 71.9%     28.4ms +/- 3.4%     significant
    fannkuch:          *4.72x as slow*    17.8ms +/- 1.7%     84.1ms +/- 0.3%     significant
    nbody:             *11.0x as slow*     6.2ms +/- 4.9%     67.9ms +/- 1.3%     significant
    nsieve:            *3.28x as slow*     6.4ms +/- 5.8%     21.0ms +/- 0.0%     significant

  bitops:              *8.29x as slow*    18.9ms +/- 3.3%    156.7ms +/- 0.3%     significant
    3bit-bits-in-byte: *45.1x as slow*     0.8ms +/- 37.7%     36.1ms +/- 0.6%     significant
    bits-in-byte:      *3.98x as slow*    10.3ms +/- 6.6%     41.0ms +/- 0.0%     significant
    bitwise-and:       *23.3x as slow*     1.7ms +/- 20.3%     39.6ms +/- 0.9%     significant
    nsieve-bits:       *6.56x as slow*     6.1ms +/- 3.7%     40.0ms +/- 0.0%     significant

  controlflow:         *8.30x as slow*     4.7ms +/- 7.3%     39.0ms +/- 0.0%     significant
    recursive:         *8.30x as slow*     4.7ms +/- 7.3%     39.0ms +/- 0.0%     significant

  crypto:              *3.04x as slow*    35.4ms +/- 21.1%    107.5ms +/- 0.7%     significant
    aes:               *1.62x as slow*    21.9ms +/- 33.5%     35.4ms +/- 2.0%     significant
    md5:               *3.65x as slow*     9.6ms +/- 3.8%     35.0ms +/- 0.0%     significant
    sha1:              *9.51x as slow*     3.9ms +/- 5.8%     37.1ms +/- 0.6%     significant

  date:                *1.37x as slow*    58.0ms +/- 19.3%     79.7ms +/- 0.6%     significant
    format-tofte:      *1.62x as slow*    27.4ms +/- 1.3%     44.5ms +/- 0.8%     significant
    format-xparb:      ??                 30.6ms +/- 36.1%     35.2ms +/- 0.9%     not conclusive: might be *1.150x as slow*

  math:                *3.46x as slow*    31.8ms +/- 1.4%    109.9ms +/- 0.9%     significant
    cordic:            1.28x as fast      13.4ms +/- 3.7%     10.5ms +/- 3.6%     significant
    partial-sums:      *6.56x as slow*     9.0ms +/- 0.0%     59.0ms +/- 1.0%     significant
    spectral-norm:     *4.30x as slow*     9.4ms +/- 3.9%     40.4ms +/- 1.2%     significant

  regexp:              *2.24x as slow*    13.8ms +/- 4.1%     30.9ms +/- 2.3%     significant
    dna:               *2.24x as slow*    13.8ms +/- 4.1%     30.9ms +/- 2.3%     significant

  string:              *1.94x as slow*   115.0ms +/- 11.6%    223.1ms +/- 0.4%     significant
    base64:            *6.18x as slow*     4.4ms +/- 8.4%     27.2ms +/- 1.1%     significant
    fasta:             *2.06x as slow*    23.5ms +/- 31.5%     48.5ms +/- 1.4%     significant
    tagcloud:          *1.99x as slow*    29.1ms +/- 25.9%     57.9ms +/- 0.4%     significant
    unpack-code:       ??                 46.6ms +/- 21.0%     49.8ms +/- 1.1%     not conclusive: might be *1.069x as slow*
    validate-input:    *3.48x as slow*    11.4ms +/- 76.3%     39.7ms +/- 0.9%     significant

Thursday, September 23, 2010

Windows x64 version status

  • Since there is no build machine, Mozilla doesn't build nightly version for Win64. More detail is Bug 597919. So if this bug is fixed, nightly for Win64 will be built.
  • I have fixed JIT engine bugs for Win64. Although current nightly (2010-09-16?) will be crash by V8 benchmark (from browser only), please wait next nightly. it will be fixed.
  • Flash Plugin for Win64 is released as preview!. It works fine on Minefield. (64bit browser that uses NPAPI is Firefox/Minefield only!:-))
  • Although Internet Explorer 9 for x64 has released as beta, do you test JavaScript benchmark such as SunSpider or Kraken?. Our JIT engine (TraceMonkey + JaegerMonkey) is too faster than IE9 x64 JIT!

Sunday, May 30, 2010

Windows x64 build is available!

Armen announced Windows x64 build available on nightly build.

Also...

  • This built on VC++ 2010. (x86 build still uses VC++ 2005SP1)
  • installer is 32-bit. So installer path becomes same x86 by default, and registry is 32-bit. I am investigating about workaround for this.
  • jemalloc is disable now. Ted is reviewing my patch for VC++ 2005 and VC++ 2008. About for VC++2010, see bug 563316
  • comm-central tree is available to build x64 building. I am not owner for Thunderbird and SeaMonkey, so I don't know when they start building x64.

If you found new problem, please file a bug to bugzilla!

Thursday, April 29, 2010

How to view messageText table for command line or any tools

Thunderbird 3 or later uses SQLite3 to index mail body for "Gloda" full-text search. Gloda uses custom tokenizer "mozporter" to support non-ASCII characters. So when you open global-messages-db.sqlite, you cannot view a data into some tables such as messageText.

There is the way to view messageText table for command line version of SQLite3.

Before you try this, you should backup your database file!

  1. Get the module address for porter tokenizer
    sqlite> select hex(fts3_tokenizer('porter'));
    00EF420A8C7F0000
    
  2. Register dummy "mozporter" with same address of porter
    sqlite> select fts3_tokenizer('mozporter',X'00EF420A8C7F0000');

Then, you can view a data into messageText using SQL.