.gitignore
author Henri Sivonen <hsivonen@hsivonen.fi>
Fri, 06 Jul 2018 10:44:43 +0300
changeset 489140 4ef0f163fdeb9afeddd87b37bfd987298c038542
parent 484535 5f4b230692b94ec13b1bf946438e7781e88e4c7a
child 490349 d6d71f8bede06f31c8a5c28ecf1e3c29deb3234d
permissions -rw-r--r--
Bug 1402247 - Use encoding_rs for XPCOM string encoding conversions. r=Nika,erahm,froydnj. Correctness improvements: * UTF errors are handled safely per spec instead of dangerously truncating strings. * There are fewer converter implementations. Performance improvements: * The old code did exact buffer length math, which meant doing UTF math twice on each input string (once for length calculation and another time for conversion). Exact length math is more complicated when handling errors properly, which the old code didn't do. The new code does UTF math on the string content only once (when converting) but risks allocating more than once. There are heuristics in place to lower the probability of reallocation in cases where the double math avoidance isn't enough of a saving to absorb an allocation and memcpy. * Previously, in UTF-16 <-> UTF-8 conversions, an ASCII prefix was optimized but a single non-ASCII code point pessimized the rest of the string. The new code tries to get back on the fast ASCII path. * UTF-16 to Latin1 conversion guarantees less about handling of out-of-range input to eliminate an operation from the inner loop on x86/x86_64. * When assigning to a pre-existing string, the new code tries to reuse the old buffer instead of first releasing the old buffer and then allocating a new one. * When reallocating from the new code, the memcpy covers only the data that is part of the logical length of the old string instead of memcpying the whole capacity. (For old callers old excess memcpy behavior is preserved due to bogus callers. See bug 1472113.) * UTF-8 strings in XPConnect that are in the Latin1 range are passed to SpiderMonkey as Latin1. New features: * Conversion between UTF-8 and Latin1 is added in order to enable faster future interop between Rust code (or otherwise UTF-8-using code) and text node and SpiderMonkey code that uses Latin1. MozReview-Commit-ID: JaJuExfILM9

# .gitignore - List of filenames git should ignore

# Filenames that should be ignored wherever they appear
*~
*.pyc
*.pyo
TAGS
tags
# Ignore ID generated by idutils and un-ignore id directory (for Indonesian locale)
ID
!id/
.DS_Store*
*.pdb
*.egg-info

# Vim swap files.
.*.sw[a-z]
.sw[a-z]

# Emacs directory variable files.
**/.dir-locals.el

# User files that may appear at the root
/.mozconfig*
/mozconfig
/configure
/old-configure
/config.cache
/config.log
/.clang_complete
/machrc
/.machrc

# Empty marker file that's generated when we check out NSS
security/manager/.nss.checkout

# Build directories
/obj*/

# gecko.log is generated by various test harnesses
/gecko.log

# Build directories for js shell
_DBG.OBJ/
_OPT.OBJ/

# SpiderMonkey configury
js/src/configure
js/src/old-configure
js/src/autom4te.cache
# SpiderMonkey test result logs
js/src/tests/results-*.html
js/src/tests/results-*.txt

# Java HTML5 parser classes
parser/html/java/htmlparser/
parser/html/java/javaparser/

# Ignore the files and directory that Eclipse IDE creates
.project
.cproject
.settings/

# Ignore the files and directory that JetBrains IDEs create.
/.idea/
*.iml
# Android Monitor in Android Studio creates a captures/ directory.
/captures/

# Gradle cache.
/.gradle/

# Local Gradle configuration properties.
/local.properties

# Python virtualenv artifacts.
third_party/python/psutil/**/*.so
third_party/python/psutil/**/*.pyd
third_party/python/psutil/build/
third_party/python/psutil/tmp/

# Ignore chrome.manifest files from the devtools loader
devtools/client/chrome.manifest
devtools/shared/chrome.manifest

# Ignore node_modules directories in devtools
devtools/**/node_modules

# Tag files generated by GNU Global
GTAGS
GRTAGS
GSYMS
GPATH

# Git clone directory for updating web-platform-tests
testing/web-platform/sync/

# Third party metadata for web-platform-tests
testing/web-platform/products/

# Android Gradle artifacts.
mobile/android/gradle/.gradle

# XCode project cruft
/*.xcodeproj/
embedding/ios/GeckoEmbed/GeckoEmbed.xcodeproj/project.xcworkspace/xcuserdata
embedding/ios/GeckoEmbed/GeckoEmbed.xcodeproj/xcuserdata

# Rust/Cargo output from running `cargo` directly
/target/

# Ignore mozharness execution files
testing/mozharness/.tox/
testing/mozharness/build/
testing/mozharness/logs/
testing/mozharness/.coverage
testing/mozharness/nosetests.xml

# Ignore ESLint node_modules
node_modules/

# Ignore talos virtualenv and tp5n files.
# The tp5n set is supposed to be decompressed at
# testing/talos/talos/page_load_test/tp5n in order to run tests like tps
# locally. Similarly, running talos requires a Python package virtual
# environment. Both the virtual environment and tp5n files end up littering
# the status command, so we ignore them.
testing/talos/.Python
testing/talos/bin/
testing/talos/include/
testing/talos/lib/
testing/talos/talos/tests/tp5n.zip
testing/talos/talos/tests/tp5n
testing/talos/talos/tests/devtools/damp.manifest.develop

# Ignore sync tps logs and reports
tps.log
tps_result.json

# Ignore files created when running a reftest.
lextab.py

# tup database
/.tup

# Ignore Visual Studio Code workspace files.
.vscode/*
!.vscode/extensions.json
!.vscode/tasks.json