browser/moz.build
author Nicholas Nethercote <nnethercote@mozilla.com>
Wed, 12 Jul 2017 15:13:37 +1000
changeset 419917 129793760f2d718ed61ba17d9aacd57c7ec6785b
parent 353544 98bc41e5c777e70f1ae9772032860f2122c7c3b3
child 428875 f3455c101b7a672cce40ecd64f332d5e6e2d9447
permissions -rw-r--r--
Bug 1380227 - Avoid many UTF16toUTF8 and UTF8toUTF16 conversions in nsStringBundle. r=emk. Most of the names passed to nsIStringBundle::{Get,Format}StringFromUTF8Name have one of the two following forms: - a 16-bit C string literal, which is then converted to an 8-bit string in order for the lookup to occur; - an 8-bit C string literal converted to a 16-bit string, which is then converted back to an 8-bit string in order for the lookup to occur. This patch introduces and uses alternative methods that can take an 8-bit C string literal, which requires changing some signatures in other methods and functions. It replaces all C++ uses of the old methods. The patch also changes the existing {Get,Format}StringFromName() methods so they take an AUTF8String argument for the name instead of a wstring, because that's nicer for JS code. Even though there is a method for C++ code and a different one for JS code, |binaryname| is used so that the existing method names can be used for the common case in both languages. The change reduces the number of NS_ConvertUTF8toUTF16 and NS_ConvertUTF16toUTF8 conversions while running Speedometer v2 from ~270,000 to ~160,000. (Most of these conversions involved the string "deprecatedReferrerDirective" in nsCSPParser.cpp.)

# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

CONFIGURE_SUBST_FILES += ['installer/Makefile']

SPHINX_TREES['browser'] = 'docs'

DIRS += [
    'base',
    'components',
    'experiments',
    'fonts',
    'locales',
    'modules',
    'themes',
    'extensions',
]

DIRS += [
    'app',
]

if CONFIG['MAKENSISU']:
    DIRS += ['installer/windows']

TEST_DIRS += [
    'tools/mozscreenshots',
]

DIST_SUBDIR = 'browser'
export('DIST_SUBDIR')

if CONFIG['MOZ_ARTIFACT_BUILDS']:
    # Ensure a pre-built interfaces.xpt installed to the objdir by the artifact
    # code is included by the top-level chrome.manifest.
    EXTRA_COMPONENTS += [
        '../build/prebuilt-interfaces.manifest',
    ]