layout/moz.build
author Nicholas Nethercote <nnethercote@mozilla.com>
Wed, 12 Jul 2017 15:13:37 +1000
changeset 419917 129793760f2d718ed61ba17d9aacd57c7ec6785b
parent 371004 1d0eb83ca237bafb36c81e98f64a535bcf1b0984
child 452147 9d2c81fe9e4cf274e0446450a3da6e67626f336b
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/.

with Files('**'):
    BUG_COMPONENT = ('Core', 'Layout')

DIRS += [
    'style',
    'base',
    'generic',
    'forms',
    'tables',
    'svg',
    'xul',
    'ipc',
    'mathml',
    'inspector',
    'tools/recording',
    'reftests',
    'painting',
]


IPDL_SOURCES = [
    'printing/ipc/PRemotePrintJob.ipdl',
]

if CONFIG['NS_PRINTING']:
    DIRS += ['printing']

TEST_DIRS += [
    'tools/reftest',
]

DIRS += ['build', 'media']

if CONFIG['MOZ_DEBUG']:
    TEST_DIRS += ['tools/layout-debug']

CRASHTEST_MANIFESTS += ['../testing/crashtest/crashtests.list']