author Nicholas Nethercote <>
Wed, 12 Jul 2017 15:13:37 +1000
changeset 368809 129793760f2d718ed61ba17d9aacd57c7ec6785b
parent 367856 d8fb762465567cb1ec23d7cb76096b41b5025023
child 369162 962c95ec8881654704e33cee4c7e2c75c45ff99c
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.)

  "name": "mozillaeslintsetup",
  "description": "This package file is for setup of ESLint only for editor integration.",
  "repository": {},
  "license": "MPL-2.0",
  "dependencies": {
    "escope": "^3.6.0",
    "eslint": "3.19.0",
    "eslint-plugin-html": "2.0.3",
    "eslint-plugin-mozilla": "file:tools/lint/eslint/eslint-plugin-mozilla",
    "eslint-plugin-no-unsanitized": "2.0.1",
    "eslint-plugin-react": "7.1.0",
    "eslint-plugin-spidermonkey-js": "file:tools/lint/eslint/eslint-plugin-spidermonkey-js",
    "espree": "^3.4.0",
    "estraverse": "^4.2.0",
    "ini-parser": "^0.0.2",
    "sax": "^1.2.2"