gecko-dev/dom/webidl/NativeOSFileInternals.webidl
Boris Zbarsky d36e5a4ea5 Bug 1214364 part 4. Only output full-featured Init methods for dictionaries that need them. r=peterv
Dictionaries that we never initialize with JS values don't need a full-featured
Init() method.  Instead, we output a cut-down Init() method that doesn't even
take a JSContext and Value as argument, and skips as much work as it can.  It
uses constant-false for "is the value present?", but also, to avoid compilation
errors due to use of `cx` and `val` in now-dead conversion code, it tells the
native-to-JS conversion machinery that the value is always missing, which lets
it skip most of the the work it would normally try to do and just output
initialization to the default value.  We only need to do this for members that
have default values; the others either remain no-passed or are required members
with no default-initialization behavior.

This saves about 330KB of codesize on Linux64 without PGO and 285KB with PGO.

Differential Revision: https://phabricator.services.mozilla.com/D48007

--HG--
extra : moz-landing-system : lando
2019-10-28 20:24:31 +00:00

61 lines
1.5 KiB
Plaintext

/* 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 obtaone at http://mozilla.org/MPL/2.0/. */
/**
* Options for nsINativeOSFileInternals::Read
*/
[GenerateInit]
dictionary NativeOSFileReadOptions
{
/**
* If specified, convert the raw bytes to a String
* with the specified encoding. Otherwise, return
* the raw bytes as a TypedArray.
*/
DOMString? encoding;
/**
* If specified, limit the number of bytes to read.
*/
unsigned long long? bytes;
};
/**
* Options for nsINativeOSFileInternals::WriteAtomic
*/
[GenerateInit]
dictionary NativeOSFileWriteAtomicOptions
{
/**
* If specified, specify the number of bytes to write.
* NOTE: This takes (and should take) a uint64 here but the actual
* value is limited to int32. This needs to be fixed, see Bug 1063635.
*/
unsigned long long? bytes;
/**
* If specified, write all data to a temporary file in the
* |tmpPath|. Else, write to the given path directly.
*/
DOMString? tmpPath = null;
/**
* If specified and true, a failure will occur if the file
* already exists in the given path.
*/
boolean noOverwrite = false;
/**
* If specified and true, this will sync any buffered data
* for the file to disk. This might be slower, but safer.
*/
boolean flush = false;
/**
* If specified, this will backup the destination file as
* specified.
*/
DOMString? backupTo = null;
};