From e8727ee90d641851ae1cc18af6171c65b6228dbc Mon Sep 17 00:00:00 2001 From: Michael Dyck Date: Wed, 4 Apr 2018 22:48:04 -0400 Subject: [PATCH] Editorial: ensure spaces around binary operators (#1162) (resolves #925) --- spec.html | 408 +++++++++++++++++++++++++++--------------------------- 1 file changed, 204 insertions(+), 204 deletions(-) diff --git a/spec.html b/spec.html index 4b84d96261..a00f7a65e4 100644 --- a/spec.html +++ b/spec.html @@ -857,10 +857,10 @@

Mathematical Operations

Mathematical operations such as addition, subtraction, negation, multiplication, division, and the mathematical functions defined later in this clause should always be understood as computing exact mathematical results on mathematical real numbers, which unless otherwise noted do not include infinities and do not include a negative zero that is distinguished from positive zero. Algorithms in this standard that model floating-point arithmetic include explicit steps, where necessary, to handle infinities and signed zero and to perform rounding. If a mathematical operation or function is applied to a floating-point number, it should be understood as being applied to the exact mathematical value represented by that floating-point number; such a floating-point number must be finite, and if it is *+0* or *-0* then the corresponding mathematical value is simply 0.

The mathematical function abs(_x_) produces the absolute value of _x_, which is -_x_ if _x_ is negative (less than zero) and otherwise is _x_ itself.

The mathematical function min(_x1_, _x2_, ..., _xN_) produces the mathematically smallest of _x1_ through _xN_. The mathematical function max(_x1_, _x2_, ..., _xN_) produces the mathematically largest of _x1_ through _xN_. The domain and range of these mathematical functions include *+∞* and *-∞*.

-

The notation “_x_ modulo _y_” (_y_ must be finite and nonzero) computes a value _k_ of the same sign as _y_ (or zero) such that abs(_k_) < abs(_y_) and _x_-_k_ = _q_ × _y_ for some integer _q_.

+

The notation “_x_ modulo _y_” (_y_ must be finite and nonzero) computes a value _k_ of the same sign as _y_ (or zero) such that abs(_k_) < abs(_y_) and _x_ - _k_ = _q_ × _y_ for some integer _q_.

The mathematical function floor(_x_) produces the largest integer (closest to positive infinity) that is not larger than _x_.

-

floor(_x_) = _x_-(_x_ modulo 1).

+

floor(_x_) = _x_ - (_x_ modulo 1).

@@ -892,7 +892,7 @@

The Boolean Type

The String Type

-

The String type is the set of all ordered sequences of zero or more 16-bit unsigned integer values (“elements”) up to a maximum length of 253-1 elements. The String type is generally used to represent textual data in a running ECMAScript program, in which case each element in the String is treated as a UTF-16 code unit value. Each element is regarded as occupying a position within the sequence. These positions are indexed with nonnegative integers. The first element (if any) is at index 0, the next element (if any) at index 1, and so on. The length of a String is the number of elements (i.e., 16-bit values) within it. The empty String has length zero and therefore contains no elements.

+

The String type is the set of all ordered sequences of zero or more 16-bit unsigned integer values (“elements”) up to a maximum length of 253 - 1 elements. The String type is generally used to represent textual data in a running ECMAScript program, in which case each element in the String is treated as a UTF-16 code unit value. Each element is regarded as occupying a position within the sequence. These positions are indexed with nonnegative integers. The first element (if any) is at index 0, the next element (if any) at index 1, and so on. The length of a String is the number of elements (i.e., 16-bit values) within it. The empty String has length zero and therefore contains no elements.

ECMAScript operations that do not interpret String contents apply no further semantics. Operations that do interpret String values treat each element as a single UTF-16 code unit. However, ECMAScript does not restrict the value of or relationships between these code units, so operations that further interpret String contents as sequences of Unicode code points encoded in UTF-16 must account for ill-formed subsequences. Such operations apply special treatment to every code unit with a numeric value in the inclusive range 0xD800 to 0xDBFF (defined by the Unicode Standard as a leading surrogate, or more formally as a high-surrogate code unit) and every code unit with a numeric value in the inclusive range 0xDC00 to 0xDFFF (defined as a trailing surrogate, or more formally as a low-surrogate code unit) using the following rules:

Properties are identified using key values. A property key value is either an ECMAScript String value or a Symbol value. All String and Symbol values, including the empty string, are valid as property keys. A property name is a property key that is a String value.

-

An integer index is a String-valued property key that is a canonical numeric String (see ) and whose numeric value is either *+0* or a positive integer ≤ 253-1. An array index is an integer index whose numeric value _i_ is in the range +0 ≤ _i_ < 232-1.

+

An integer index is a String-valued property key that is a canonical numeric String (see ) and whose numeric value is either *+0* or a positive integer ≤ 253 - 1. An array index is an integer index whose numeric value _i_ is in the range +0 ≤ _i_ < 232 - 1.

Property keys are used to access properties and their values. There are two kinds of access for properties: get and set, corresponding to value retrieval and assignment, respectively. The properties accessible via get and set access includes both own properties that are a direct part of an object and inherited properties which are provided by another associated object via a property inheritance relationship. Inherited properties may be either own or inherited properties of the associated object. Each own property of an object must each have a key value that is distinct from the key values of the other own properties of that object.

All objects are logically collections of properties, but there are multiple forms of objects that differ in their semantics for accessing and manipulating their properties. Ordinary objects are the most common form of objects and have the default object semantics. An exotic object is any form of object whose property semantics differ in any way from the default semantics.

@@ -3376,7 +3376,7 @@

Data Blocks

CreateByteDataBlock ( _size_ )

When the abstract operation CreateByteDataBlock is called with integer argument _size_, the following steps are taken:

- 1. Assert: _size_≥0. + 1. Assert: _size_ ≥ 0. 1. Let _db_ be a new Data Block value consisting of _size_ bytes. If it is impossible to create such a Data Block, throw a *RangeError* exception. 1. Set all of the bytes of _db_ to 0. 1. Return _db_. @@ -3387,7 +3387,7 @@

CreateByteDataBlock ( _size_ )

CreateSharedByteDataBlock ( _size_ )

When the abstract operation CreateSharedByteDataBlock is called with integer argument _size_, the following steps are taken:

- 1. Assert: _size_≥0. + 1. Assert: _size_ ≥ 0. 1. Let _db_ be a new Shared Data Block value consisting of _size_ bytes. If it is impossible to create such a Shared Data Block, throw a *RangeError* exception. 1. Let _execution_ be the [[CandidateExecution]] field of the surrounding agent's Agent Record. 1. Let _eventList_ be the [[EventList]] field of the element in _execution_.[[EventLists]] whose [[AgentSignifier]] is AgentSignifier(). @@ -3405,10 +3405,10 @@

CopyDataBlockBytes ( _toBlock_, _toIndex_, _fromBlock_, _fromIndex_, _count_ 1. Assert: _fromBlock_ and _toBlock_ are distinct Data Block or Shared Data Block values. 1. Assert: _fromIndex_, _toIndex_, and _count_ are integer values ≥ 0. 1. Let _fromSize_ be the number of bytes in _fromBlock_. - 1. Assert: _fromIndex_+_count_ ≤ _fromSize_. + 1. Assert: _fromIndex_ + _count_ ≤ _fromSize_. 1. Let _toSize_ be the number of bytes in _toBlock_. - 1. Assert: _toIndex_+_count_ ≤ _toSize_. - 1. Repeat, while _count_>0 + 1. Assert: _toIndex_ + _count_ ≤ _toSize_. + 1. Repeat, while _count_ > 0 1. If _fromBlock_ is a Shared Data Block, then 1. Let _execution_ be the [[CandidateExecution]] field of the surrounding agent's Agent Record. 1. Let _eventList_ be the [[EventList]] field of the element in _execution_.[[EventLists]] whose [[AgentSignifier]] is AgentSignifier(). @@ -3747,7 +3747,7 @@

Runtime Semantics: MV

The MV of StrUnsignedDecimalLiteral ::: `.` DecimalDigits is the MV of |DecimalDigits| times 10-_n_, where _n_ is the number of code points in |DecimalDigits|.
  • - The MV of StrUnsignedDecimalLiteral ::: `.` DecimalDigits ExponentPart is the MV of |DecimalDigits| times 10_e_-_n_, where _n_ is the number of code points in |DecimalDigits| and _e_ is the MV of |ExponentPart|. + The MV of StrUnsignedDecimalLiteral ::: `.` DecimalDigits ExponentPart is the MV of |DecimalDigits| times 10_e_ - _n_, where _n_ is the number of code points in |DecimalDigits| and _e_ is the MV of |ExponentPart|.
  • The MV of StrUnsignedDecimalLiteral ::: DecimalDigits is the MV of |DecimalDigits|. @@ -3782,7 +3782,7 @@

    ToInteger ( _argument_ )

    ToInt32 ( _argument_ )

    -

    The abstract operation ToInt32 converts _argument_ to one of 232 integer values in the range -231 through 231-1, inclusive. This abstract operation functions as follows:

    +

    The abstract operation ToInt32 converts _argument_ to one of 232 integer values in the range -231 through 231 - 1, inclusive. This abstract operation functions as follows:

    1. Let _number_ be ? ToNumber(_argument_). 1. If _number_ is *NaN*, *+0*, *-0*, *+∞*, or *-∞*, return *+0*. @@ -3808,7 +3808,7 @@

    ToInt32 ( _argument_ )

    ToUint32 ( _argument_ )

    -

    The abstract operation ToUint32 converts _argument_ to one of 232 integer values in the range 0 through 232-1, inclusive. This abstract operation functions as follows:

    +

    The abstract operation ToUint32 converts _argument_ to one of 232 integer values in the range 0 through 232 - 1, inclusive. This abstract operation functions as follows:

    1. Let _number_ be ? ToNumber(_argument_). 1. If _number_ is *NaN*, *+0*, *-0*, *+∞*, or *-∞*, return *+0*. @@ -3849,7 +3849,7 @@

    ToInt16 ( _argument_ )

    ToUint16 ( _argument_ )

    -

    The abstract operation ToUint16 converts _argument_ to one of 216 integer values in the range 0 through 216-1, inclusive. This abstract operation functions as follows:

    +

    The abstract operation ToUint16 converts _argument_ to one of 216 integer values in the range 0 through 216 - 1, inclusive. This abstract operation functions as follows:

    1. Let _number_ be ? ToNumber(_argument_). 1. If _number_ is *NaN*, *+0*, *-0*, *+∞*, or *-∞*, return *+0*. @@ -4000,14 +4000,14 @@

    NumberToString ( _m_ )

    1. If _m_ is *+0* or *-0*, return the String `"0"`. 1. If _m_ is less than zero, return the string-concatenation of `"-"` and ! NumberToString(-_m_). 1. If _m_ is *+∞*, return the String `"Infinity"`. - 1. Otherwise, let _n_, _k_, and _s_ be integers such that _k_ ≥ 1, 10_k_-1 ≤ _s_ < 10_k_, the Number value for _s_ × 10_n_-_k_ is _m_, and _k_ is as small as possible. Note that _k_ is the number of digits in the decimal representation of _s_, that _s_ is not divisible by 10, and that the least significant digit of _s_ is not necessarily uniquely determined by these criteria. + 1. Otherwise, let _n_, _k_, and _s_ be integers such that _k_ ≥ 1, 10_k_ - 1 ≤ _s_ < 10_k_, the Number value for _s_ × 10_n_ - _k_ is _m_, and _k_ is as small as possible. Note that _k_ is the number of digits in the decimal representation of _s_, that _s_ is not divisible by 10, and that the least significant digit of _s_ is not necessarily uniquely determined by these criteria. 1. If _k_ ≤ _n_ ≤ 21, return the string-concatenation of: * the code units of the _k_ digits of the decimal representation of _s_ (in order, with no leading zeroes) - * _n_-_k_ occurrences of the code unit 0x0030 (DIGIT ZERO) + * _n_ - _k_ occurrences of the code unit 0x0030 (DIGIT ZERO) 1. If 0 < _n_ ≤ 21, return the string-concatenation of: * the code units of the most significant _n_ digits of the decimal representation of _s_ * the code unit 0x002E (FULL STOP) - * the code units of the remaining _k_-_n_ digits of the decimal representation of _s_ + * the code units of the remaining _k_ - _n_ digits of the decimal representation of _s_ 1. If -6 < _n_ ≤ 0, return the string-concatenation of: * the code unit 0x0030 (DIGIT ZERO) * the code unit 0x002E (FULL STOP) @@ -4016,15 +4016,15 @@

    NumberToString ( _m_ )

    1. Otherwise, if _k_ = 1, return the string-concatenation of: * the code unit of the single digit of _s_ * the code unit 0x0065 (LATIN SMALL LETTER E) - * the code unit 0x002B (PLUS SIGN) or the code unit 0x002D (HYPHEN-MINUS) according to whether _n_-1 is positive or negative - * the code units of the decimal representation of the integer abs(_n_-1) (with no leading zeroes) + * the code unit 0x002B (PLUS SIGN) or the code unit 0x002D (HYPHEN-MINUS) according to whether _n_ - 1 is positive or negative + * the code units of the decimal representation of the integer abs(_n_ - 1) (with no leading zeroes) 1. Return the string-concatenation of: * the code units of the most significant digit of the decimal representation of _s_ * the code unit 0x002E (FULL STOP) - * the code units of the remaining _k_-1 digits of the decimal representation of _s_ + * the code units of the remaining _k_ - 1 digits of the decimal representation of _s_ * the code unit 0x0065 (LATIN SMALL LETTER E) - * the code unit 0x002B (PLUS SIGN) or the code unit 0x002D (HYPHEN-MINUS) according to whether _n_-1 is positive or negative - * the code units of the decimal representation of the integer abs(_n_-1) (with no leading zeroes) + * the code unit 0x002B (PLUS SIGN) or the code unit 0x002D (HYPHEN-MINUS) according to whether _n_ - 1 is positive or negative + * the code units of the decimal representation of the integer abs(_n_ - 1) (with no leading zeroes)

    The following observations may be useful as guidelines for implementations, but are not part of the normative requirements of this Standard:

    @@ -4040,7 +4040,7 @@

    NumberToString ( _m_ )

    For implementations that provide more accurate conversions than required by the rules above, it is recommended that the following alternative version of step 5 be used as a guideline:

    - 5. Otherwise, let _n_, _k_, and _s_ be integers such that _k_ ≥ 1, 10_k_-1 ≤ _s_ < 10_k_, the Number value for _s_ × 10_n_-_k_ is _m_, and _k_ is as small as possible. If there are multiple possibilities for _s_, choose the value of _s_ for which _s_ × 10_n_-_k_ is closest in value to _m_. If there are two such possible values of _s_, choose the one that is even. Note that _k_ is the number of digits in the decimal representation of _s_ and that _s_ is not divisible by 10. + 5. Otherwise, let _n_, _k_, and _s_ be integers such that _k_ ≥ 1, 10_k_ - 1 ≤ _s_ < 10_k_, the Number value for _s_ × 10_n_ - _k_ is _m_, and _k_ is as small as possible. If there are multiple possibilities for _s_, choose the value of _s_ for which _s_ × 10_n_ - _k_ is closest in value to _m_. If there are two such possible values of _s_, choose the one that is even. Note that _k_ is the number of digits in the decimal representation of _s_ and that _s_ is not divisible by 10.
    @@ -4148,7 +4148,7 @@

    ToLength ( _argument_ )

    1. Let _len_ be ? ToInteger(_argument_). 1. If _len_ ≤ *+0*, return *+0*. - 1. Return min(_len_, 253-1). + 1. Return min(_len_, 253 - 1).
    @@ -4979,7 +4979,7 @@

    ListIterator next ( )

    1. Let _len_ be the number of elements of _list_. 1. If _index_ ≥ _len_, then 1. Return CreateIterResultObject(*undefined*, *true*). - 1. Set _O_.[[ListIteratorNextIndex]] to _index_+1. + 1. Set _O_.[[ListIteratorNextIndex]] to _index_ + 1. 1. Return CreateIterResultObject(_list_[_index_], *false*).
    @@ -7822,7 +7822,7 @@

    BoundFunctionCreate ( _targetFunction_, _boundThis_, _boundArgs_ )

    Array Exotic Objects

    An Array object is an exotic object that gives special treatment to array index property keys (see ). A property whose property name is an array index is also called an element. Every Array object has a non-configurable `"length"` property whose value is always a nonnegative integer less than 232. The value of the `"length"` property is numerically greater than the name of every own property whose name is an array index; whenever an own property of an Array object is created or changed, other properties are adjusted as necessary to maintain this invariant. Specifically, whenever an own property is added whose name is an array index, the value of the `"length"` property is changed, if necessary, to be one more than the numeric value of that array index; and whenever the value of the `"length"` property is changed, every own property whose name is an array index whose value is not smaller than the new length is deleted. This constraint applies only to own properties of an Array object and is unaffected by `"length"` or array index properties that may be inherited from its prototypes.

    -

    A String property name _P_ is an array index if and only if ToString(ToUint32(_P_)) is equal to _P_ and ToUint32(_P_) is not equal to 232-1.

    +

    A String property name _P_ is an array index if and only if ToString(ToUint32(_P_)) is equal to _P_ and ToUint32(_P_) is not equal to 232 - 1.

    Array exotic objects provide an alternative definition for the [[DefineOwnProperty]] internal method. Except for that internal method, Array exotic objects provide all of the other essential internal methods as specified in .

    @@ -7856,7 +7856,7 @@

    ArrayCreate ( _length_ [ , _proto_ ] )

    1. Assert: _length_ is an integer Number ≥ 0. 1. If _length_ is *-0*, set _length_ to *+0*. - 1. If _length_>232-1, throw a *RangeError* exception. + 1. If _length_ > 232 - 1, throw a *RangeError* exception. 1. If _proto_ is not present, set _proto_ to the intrinsic object %ArrayPrototype%. 1. Let _A_ be a newly created Array exotic object. 1. Set _A_'s essential internal methods except for [[DefineOwnProperty]] to the default ordinary object definitions specified in . @@ -10046,7 +10046,7 @@

    Static Semantics: MV

    The MV of DecimalLiteral :: `.` DecimalDigits is the MV of |DecimalDigits| × 10-_n_, where _n_ is the number of code points in |DecimalDigits|.
  • - The MV of DecimalLiteral :: `.` DecimalDigits ExponentPart is the MV of |DecimalDigits| × 10_e_-_n_, where _n_ is the number of code points in |DecimalDigits| and _e_ is the MV of |ExponentPart|. + The MV of DecimalLiteral :: `.` DecimalDigits ExponentPart is the MV of |DecimalDigits| × 10_e_ - _n_, where _n_ is the number of code points in |DecimalDigits| and _e_ is the MV of |ExponentPart|.
  • The MV of DecimalLiteral :: DecimalIntegerLiteral is the MV of |DecimalIntegerLiteral|. @@ -11450,7 +11450,7 @@

    Static Semantics: ElisionWidth

    Elision : Elision `,` 1. Let _preceding_ be the ElisionWidth of |Elision|. - 1. Return _preceding_+1. + 1. Return _preceding_ + 1. @@ -11462,14 +11462,14 @@

    Runtime Semantics: ArrayAccumulation

    1. Let _padding_ be the ElisionWidth of |Elision|; if |Elision| is not present, use the numeric value zero. 1. Let _initResult_ be the result of evaluating |AssignmentExpression|. 1. Let _initValue_ be ? GetValue(_initResult_). - 1. Let _created_ be CreateDataProperty(_array_, ToString(ToUint32(_nextIndex_+_padding_)), _initValue_). + 1. Let _created_ be CreateDataProperty(_array_, ToString(ToUint32(_nextIndex_ + _padding_)), _initValue_). 1. Assert: _created_ is *true*. - 1. Return _nextIndex_+_padding_+1. + 1. Return _nextIndex_ + _padding_ + 1. ElementList : Elision? SpreadElement 1. Let _padding_ be the ElisionWidth of |Elision|; if |Elision| is not present, use the numeric value zero. - 1. Return the result of performing ArrayAccumulation for |SpreadElement| with arguments _array_ and _nextIndex_+_padding_. + 1. Return the result of performing ArrayAccumulation for |SpreadElement| with arguments _array_ and _nextIndex_ + _padding_. ElementList : ElementList `,` Elision? AssignmentExpression @@ -11478,16 +11478,16 @@

    Runtime Semantics: ArrayAccumulation

    1. Let _padding_ be the ElisionWidth of |Elision|; if |Elision| is not present, use the numeric value zero. 1. Let _initResult_ be the result of evaluating |AssignmentExpression|. 1. Let _initValue_ be ? GetValue(_initResult_). - 1. Let _created_ be CreateDataProperty(_array_, ToString(ToUint32(_postIndex_+_padding_)), _initValue_). + 1. Let _created_ be CreateDataProperty(_array_, ToString(ToUint32(_postIndex_ + _padding_)), _initValue_). 1. Assert: _created_ is *true*. - 1. Return _postIndex_+_padding_+1. + 1. Return _postIndex_ + _padding_ + 1.
    ElementList : ElementList `,` Elision? SpreadElement 1. Let _postIndex_ be the result of performing ArrayAccumulation for |ElementList| with arguments _array_ and _nextIndex_. 1. ReturnIfAbrupt(_postIndex_). 1. Let _padding_ be the ElisionWidth of |Elision|; if |Elision| is not present, use the numeric value zero. - 1. Return the result of performing ArrayAccumulation for |SpreadElement| with arguments _array_ and _postIndex_+_padding_. + 1. Return the result of performing ArrayAccumulation for |SpreadElement| with arguments _array_ and _postIndex_ + _padding_. SpreadElement : `...` AssignmentExpression @@ -11532,7 +11532,7 @@

    Runtime Semantics: Evaluation

    1. Let _len_ be the result of performing ArrayAccumulation for |ElementList| with arguments _array_ and 0. 1. ReturnIfAbrupt(_len_). 1. Let _padding_ be the ElisionWidth of |Elision|; if |Elision| is not present, use the numeric value zero. - 1. Perform Set(_array_, `"length"`, ToUint32(_padding_+_len_), *false*). + 1. Perform Set(_array_, `"length"`, ToUint32(_padding_ + _len_), *false*). 1. NOTE: The above Set cannot fail because of the nature of the object returned by ArrayCreate. 1. Return _array_.
    @@ -11847,7 +11847,7 @@

    Static Semantics: Early Errors

    • - It is a Syntax Error if the number of elements in the result of TemplateStrings of |TemplateLiteral| with argument *false* is greater than 232-1. + It is a Syntax Error if the number of elements in the result of TemplateStrings of |TemplateLiteral| with argument *false* is greater than 232 - 1.
    • It is a Syntax Error if the [Tagged] parameter was not set and |NoSubstitutionTemplate| Contains |NotEscapeSequence|. @@ -11975,7 +11975,7 @@

      Runtime Semantics: GetTemplateObject ( _templateLiteral_ )

      1. Return _e_.[[Array]]. 1. Let _cookedStrings_ be TemplateStrings of _templateLiteral_ with argument *false*. 1. Let _count_ be the number of elements in the List _cookedStrings_. - 1. Assert: _count_ ≤ 232-1. + 1. Assert: _count_ ≤ 232 - 1. 1. Let _template_ be ! ArrayCreate(_count_). 1. Let _rawObj_ be ! ArrayCreate(_count_). 1. Let _index_ be 0. @@ -11985,7 +11985,7 @@

      Runtime Semantics: GetTemplateObject ( _templateLiteral_ )

      1. Call _template_.[[DefineOwnProperty]](_prop_, PropertyDescriptor { [[Value]]: _cookedValue_, [[Writable]]: *false*, [[Enumerable]]: *true*, [[Configurable]]: *false* }). 1. Let _rawValue_ be the String value _rawStrings_[_index_]. 1. Call _rawObj_.[[DefineOwnProperty]](_prop_, PropertyDescriptor { [[Value]]: _rawValue_, [[Writable]]: *false*, [[Enumerable]]: *true*, [[Configurable]]: *false* }). - 1. Let _index_ be _index_+1. + 1. Let _index_ be _index_ + 1. 1. Perform SetIntegrityLevel(_rawObj_, `"frozen"`). 1. Call _template_.[[DefineOwnProperty]](`"raw"`, PropertyDescriptor { [[Value]]: _rawObj_, [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }). 1. Perform SetIntegrityLevel(_template_, `"frozen"`). @@ -13444,7 +13444,7 @@

      Applying the Additive Operators to Numbers

    -

    The `-` operator performs subtraction when applied to two operands of numeric type, producing the difference of its operands; the left operand is the minuend and the right operand is the subtrahend. Given numeric operands `a` and `b`, it is always the case that `a-b` produces the same result as `a+(-b)`.

    +

    The `-` operator performs subtraction when applied to two operands of numeric type, producing the difference of its operands; the left operand is the minuend and the right operand is the subtrahend. Given numeric operands `a` and `b`, it is always the case that `a - b` produces the same result as `a + (-b)`.

    @@ -23380,7 +23380,7 @@

    parseFloat ( _string_ )

    1. If neither _trimmedString_ nor any prefix of _trimmedString_ satisfies the syntax of a |StrDecimalLiteral| (see ), return *NaN*. 1. Let _numberString_ be the longest prefix of _trimmedString_, which might be _trimmedString_ itself, that satisfies the syntax of a |StrDecimalLiteral|. 1. Let _mathFloat_ be MV of _numberString_. - 1. If _mathFloat_=0, then + 1. If _mathFloat_ = 0, then 1. If the first code unit of _trimmedString_ is the code unit 0x002D (HYPHEN-MINUS), return *-0*. 1. Return *+0*. 1. Return the Number value for _mathFloat_. @@ -23556,7 +23556,7 @@

    Runtime Semantics: Decode ( _string_, _reservedSet_ )

    This syntax of Uniform Resource Identifiers is based upon RFC 2396 and does not reflect the more recent RFC 3986 which replaces RFC 2396. A formal description and implementation of UTF-8 is given in RFC 3629.

    -

    In UTF-8, characters are encoded using sequences of 1 to 6 octets. The only octet of a sequence of one has the higher-order bit set to 0, the remaining 7 bits being used to encode the character value. In a sequence of n octets, n>1, the initial octet has the n higher-order bits set to 1, followed by a bit set to 0. The remaining bits of that octet contain bits from the value of the character to be encoded. The following octets all have the higher-order bit set to 1 and the following bit set to 0, leaving 6 bits in each to contain bits from the character to be encoded. The possible UTF-8 encodings of ECMAScript characters are specified in .

    +

    In UTF-8, characters are encoded using sequences of 1 to 6 octets. The only octet of a sequence of one has the higher-order bit set to 0, the remaining 7 bits being used to encode the character value. In a sequence of n octets, n > 1, the initial octet has the n higher-order bits set to 1, followed by a bit set to 0. The remaining bits of that octet contain bits from the value of the character to be encoded. The following octets all have the higher-order bit set to 1 and the following bit set to 0, leaving 6 bits in each to contain bits from the character to be encoded. The possible UTF-8 encodings of ECMAScript characters are specified in .

    @@ -24468,7 +24468,7 @@

    Runtime Semantics: CreateDynamicFunction ( _constructor_, _newTarget_, _kind 1. Let _firstArg_ be _args_[0]. 1. Set _P_ to ? ToString(_firstArg_). 1. Let _k_ be 1. - 1. Repeat, while _k_ < _argCount_-1 + 1. Repeat, while _k_ < _argCount_ - 1 1. Let _nextArg_ be _args_[_k_]. 1. Let _nextArgString_ be ? ToString(_nextArg_). 1. Set _P_ to the string-concatenation of the previous value of _P_, `","` (a comma), and _nextArgString_. @@ -25295,7 +25295,7 @@

    Properties of the Number Constructor

    Number.EPSILON

    -

    The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1 that is representable as a Number value, which is approximately 2.2204460492503130808472633361816 x 10-16.

    +

    The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1 that is representable as a Number value, which is approximately 2.2204460492503130808472633361816 x 10 - 16.

    This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

    @@ -25342,7 +25342,7 @@

    Number.isSafeInteger ( _number_ )

    1. If _number_ is *NaN*, *+∞*, or *-∞*, return *false*. 1. Let _integer_ be ToInteger(_number_). 1. If _integer_ is not equal to _number_, return *false*. - 1. If abs(_integer_) ≤ 253-1, return *true*. + 1. If abs(_integer_) ≤ 253 - 1, return *true*. 1. Otherwise, return *false*. @@ -25352,7 +25352,7 @@

    Number.MAX_SAFE_INTEGER

    The value of `Number.MAX_SAFE_INTEGER` is the largest integer n such that n and n + 1 are both exactly representable as a Number value.

    -

    The value of Number.MAX_SAFE_INTEGER is 9007199254740991 (253-1).

    +

    The value of Number.MAX_SAFE_INTEGER is 9007199254740991 (253 - 1).

    This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

    @@ -25367,7 +25367,7 @@

    Number.MIN_SAFE_INTEGER

    The value of `Number.MIN_SAFE_INTEGER` is the smallest integer n such that n and n - 1 are both exactly representable as a Number value.

    -

    The value of Number.MIN_SAFE_INTEGER is -9007199254740991 (-(253-1)).

    +

    The value of Number.MIN_SAFE_INTEGER is -9007199254740991 (-(253 - 1)).

    This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

    @@ -25454,13 +25454,13 @@

    Number.prototype.toExponential ( _fractionDigits_ )

    1. Return the string-concatenation of _s_ and `"Infinity"`. 1. If _f_ < 0 or _f_ > 100, throw a *RangeError* exception. 1. If _x_ = 0, then - 1. Let _m_ be the String value consisting of _f_+1 occurrences of the code unit 0x0030 (DIGIT ZERO). + 1. Let _m_ be the String value consisting of _f_ + 1 occurrences of the code unit 0x0030 (DIGIT ZERO). 1. Let _e_ be 0. 1. Else _x_ ≠ 0, 1. If _fractionDigits_ is not *undefined*, then - 1. Let _e_ and _n_ be integers such that 10_f_ ≤ _n_ < 10_f_+1 and for which the exact mathematical value of _n_ × 10_e_-_f_ - _x_ is as close to zero as possible. If there are two such sets of _e_ and _n_, pick the _e_ and _n_ for which _n_ × 10_e_-_f_ is larger. + 1. Let _e_ and _n_ be integers such that 10_f_ ≤ _n_ < 10_f_ + 1 and for which the exact mathematical value of _n_ × 10_e_ - _f_ - _x_ is as close to zero as possible. If there are two such sets of _e_ and _n_, pick the _e_ and _n_ for which _n_ × 10_e_ - _f_ is larger. 1. Else _fractionDigits_ is *undefined*, - 1. Let _e_, _n_, and _f_ be integers such that _f_ ≥ 0, 10_f_ ≤ _n_ < 10_f_+1, the Number value for _n_ × 10_e_-_f_ is _x_, and _f_ is as small as possible. Note that the decimal representation of _n_ has _f_+1 digits, _n_ is not divisible by 10, and the least significant digit of _n_ is not necessarily uniquely determined by these criteria. + 1. Let _e_, _n_, and _f_ be integers such that _f_ ≥ 0, 10_f_ ≤ _n_ < 10_f_ + 1, the Number value for _n_ × 10_e_ - _f_ is _x_, and _f_ is as small as possible. Note that the decimal representation of _n_ has _f_ + 1 digits, _n_ is not divisible by 10, and the least significant digit of _n_ is not necessarily uniquely determined by these criteria. 1. Let _m_ be the String value consisting of the digits of the decimal representation of _n_ (in order, with no leading zeroes). 1. If _f_ ≠ 0, then 1. Let _a_ be the first element of _m_, and let _b_ be the remaining _f_ elements of _m_. @@ -25480,7 +25480,7 @@

    Number.prototype.toExponential ( _fractionDigits_ )

    For implementations that provide more accurate conversions than required by the rules above, it is recommended that the following alternative version of step 10.b.i be used as a guideline:

    - 1. Let _e_, _n_, and _f_ be integers such that _f_ ≥ 0, 10_f_ ≤ _n_ < 10_f_+1, the Number value for _n_ × 10_e_-_f_ is _x_, and _f_ is as small as possible. If there are multiple possibilities for _n_, choose the value of _n_ for which _n_ × 10_e_-_f_ is closest in value to _x_. If there are two such possible values of _n_, choose the one that is even. + 1. Let _e_, _n_, and _f_ be integers such that _f_ ≥ 0, 10_f_ ≤ _n_ < 10_f_ + 1, the Number value for _n_ × 10_e_ - _f_ is _x_, and _f_ is as small as possible. If there are multiple possibilities for _n_, choose the value of _n_ for which _n_ × 10_e_ - _f_ is closest in value to _x_. If there are two such possible values of _n_, choose the one that is even.
    @@ -25508,10 +25508,10 @@

    Number.prototype.toFixed ( _fractionDigits_ )

    1. If _f_ ≠ 0, then 1. Let _k_ be the length of _m_. 1. If _k_ ≤ _f_, then - 1. Let _z_ be the String value consisting of _f_+1-_k_ occurrences of the code unit 0x0030 (DIGIT ZERO). + 1. Let _z_ be the String value consisting of _f_ + 1 - _k_ occurrences of the code unit 0x0030 (DIGIT ZERO). 1. Let _m_ be the string-concatenation of _z_ and _m_. 1. Let _k_ be _f_ + 1. - 1. Let _a_ be the first _k_-_f_ elements of _m_, and let _b_ be the remaining _f_ elements of _m_. + 1. Let _a_ be the first _k_ - _f_ elements of _m_, and let _b_ be the remaining _f_ elements of _m_. 1. Let _m_ be the string-concatenation of _a_, `"."`, and _b_. 1. Return the string-concatenation of _s_ and _m_. @@ -25532,7 +25532,7 @@

    Number.prototype.toLocaleString ( [ _reserved1_ [ , _reserved2_ ] ] )

    Number.prototype.toPrecision ( _precision_ )

    -

    Return a String containing this Number value represented either in decimal exponential notation with one digit before the significand's decimal point and _precision_-1 digits after the significand's decimal point or in decimal fixed notation with _precision_ significant digits. If _precision_ is *undefined*, call ToString instead. Specifically, perform the following steps:

    +

    Return a String containing this Number value represented either in decimal exponential notation with one digit before the significand's decimal point and _precision_ - 1 digits after the significand's decimal point or in decimal fixed notation with _precision_ significant digits. If _precision_ is *undefined*, call ToString instead. Specifically, perform the following steps:

    1. Let _x_ be ? thisNumberValue(*this* value). 1. If _precision_ is *undefined*, return ! ToString(_x_). @@ -25549,12 +25549,12 @@

    Number.prototype.toPrecision ( _precision_ )

    1. Let _m_ be the String value consisting of _p_ occurrences of the code unit 0x0030 (DIGIT ZERO). 1. Let _e_ be 0. 1. Else _x_ ≠ 0, - 1. Let _e_ and _n_ be integers such that 10_p_-1 ≤ _n_ < 10_p_ and for which the exact mathematical value of _n_ × 10_e_-_p_+1 - _x_ is as close to zero as possible. If there are two such sets of _e_ and _n_, pick the _e_ and _n_ for which _n_ × 10_e_-_p_+1 is larger. + 1. Let _e_ and _n_ be integers such that 10_p_ - 1 ≤ _n_ < 10_p_ and for which the exact mathematical value of _n_ × 10_e_ - _p_ + 1 - _x_ is as close to zero as possible. If there are two such sets of _e_ and _n_, pick the _e_ and _n_ for which _n_ × 10_e_ - _p_ + 1 is larger. 1. Let _m_ be the String value consisting of the digits of the decimal representation of _n_ (in order, with no leading zeroes). 1. If _e_ < -6 or _e_ ≥ _p_, then 1. Assert: _e_ ≠ 0. 1. If _p_ ≠ 1, then - 1. Let _a_ be the first element of _m_, and let _b_ be the remaining _p_-1 elements of _m_. + 1. Let _a_ be the first element of _m_, and let _b_ be the remaining _p_ - 1 elements of _m_. 1. Let _m_ be the string-concatenation of _a_, `"."`, and _b_. 1. If _e_ > 0, then 1. Let _c_ be the code unit 0x002B (PLUS SIGN). @@ -25563,11 +25563,11 @@

    Number.prototype.toPrecision ( _precision_ )

    1. Let _e_ be -_e_. 1. Let _d_ be the String value consisting of the digits of the decimal representation of _e_ (in order, with no leading zeroes). 1. Return the string-concatenation of _s_, _m_, the code unit 0x0065 (LATIN SMALL LETTER E), _c_, and _d_. - 1. If _e_ = _p_-1, return the string-concatenation of _s_ and _m_. + 1. If _e_ = _p_ - 1, return the string-concatenation of _s_ and _m_. 1. If _e_ ≥ 0, then - 1. Let _m_ be the string-concatenation of the first _e_+1 elements of _m_, the code unit 0x002E (FULL STOP), and the remaining _p_- (_e_+1) elements of _m_. + 1. Let _m_ be the string-concatenation of the first _e_ + 1 elements of _m_, the code unit 0x002E (FULL STOP), and the remaining _p_ - (_e_ + 1) elements of _m_. 1. Else _e_ < 0, - 1. Let _m_ be the string-concatenation of the code unit 0x0030 (DIGIT ZERO), the code unit 0x002E (FULL STOP), -(_e_+1) occurrences of the code unit 0x0030 (DIGIT ZERO), and the String _m_. + 1. Let _m_ be the string-concatenation of the code unit 0x0030 (DIGIT ZERO), the code unit 0x002E (FULL STOP), -(_e_ + 1) occurrences of the code unit 0x0030 (DIGIT ZERO), and the String _m_. 1. Return the string-concatenation of _s_ and _m_.
    @@ -25753,7 +25753,7 @@

    Math.acosh ( _x_ )

    Math.asin ( _x_ )

    -

    Returns an implementation-dependent approximation to the arc sine of _x_. The result is expressed in radians and ranges from -π/2 to +π/2.

    +

    Returns an implementation-dependent approximation to the arc sine of _x_. The result is expressed in radians and ranges from -π / 2 to +π / 2.

    • If _x_ is *NaN*, the result is *NaN*. @@ -25797,7 +25797,7 @@

      Math.asinh ( _x_ )

      Math.atan ( _x_ )

      -

      Returns an implementation-dependent approximation to the arc tangent of _x_. The result is expressed in radians and ranges from -π/2 to +π/2.

      +

      Returns an implementation-dependent approximation to the arc tangent of _x_. The result is expressed in radians and ranges from -π / 2 to +π / 2.

      • If _x_ is *NaN*, the result is *NaN*. @@ -25809,10 +25809,10 @@

        Math.atan ( _x_ )

        If _x_ is *-0*, the result is *-0*.
      • - If _x_ is *+∞*, the result is an implementation-dependent approximation to +π/2. + If _x_ is *+∞*, the result is an implementation-dependent approximation to +π / 2.
      • - If _x_ is *-∞*, the result is an implementation-dependent approximation to -π/2. + If _x_ is *-∞*, the result is an implementation-dependent approximation to -π / 2.
      @@ -25847,19 +25847,19 @@

      Math.atanh ( _x_ )

      Math.atan2 ( _y_, _x_ )

      -

      Returns an implementation-dependent approximation to the arc tangent of the quotient _y_/_x_ of the arguments _y_ and _x_, where the signs of _y_ and _x_ are used to determine the quadrant of the result. Note that it is intentional and traditional for the two-argument arc tangent function that the argument named _y_ be first and the argument named _x_ be second. The result is expressed in radians and ranges from -π to +π.

      +

      Returns an implementation-dependent approximation to the arc tangent of the quotient _y_ / _x_ of the arguments _y_ and _x_, where the signs of _y_ and _x_ are used to determine the quadrant of the result. Note that it is intentional and traditional for the two-argument arc tangent function that the argument named _y_ be first and the argument named _x_ be second. The result is expressed in radians and ranges from -π to +π.

      • If either _x_ or _y_ is *NaN*, the result is *NaN*.
      • - If _y_>0 and _x_ is *+0*, the result is an implementation-dependent approximation to +π/2. + If _y_ > 0 and _x_ is *+0*, the result is an implementation-dependent approximation to +π / 2.
      • - If _y_>0 and _x_ is *-0*, the result is an implementation-dependent approximation to +π/2. + If _y_ > 0 and _x_ is *-0*, the result is an implementation-dependent approximation to +π / 2.
      • - If _y_ is *+0* and _x_>0, the result is *+0*. + If _y_ is *+0* and _x_ > 0, the result is *+0*.
      • If _y_ is *+0* and _x_ is *+0*, the result is *+0*. @@ -25868,10 +25868,10 @@

        Math.atan2 ( _y_, _x_ )

        If _y_ is *+0* and _x_ is *-0*, the result is an implementation-dependent approximation to +π.
      • - If _y_ is *+0* and _x_<0, the result is an implementation-dependent approximation to +π. + If _y_ is *+0* and _x_ < 0, the result is an implementation-dependent approximation to +π.
      • - If _y_ is *-0* and _x_>0, the result is *-0*. + If _y_ is *-0* and _x_ > 0, the result is *-0*.
      • If _y_ is *-0* and _x_ is *+0*, the result is *-0*. @@ -25880,43 +25880,43 @@

        Math.atan2 ( _y_, _x_ )

        If _y_ is *-0* and _x_ is *-0*, the result is an implementation-dependent approximation to -π.
      • - If _y_ is *-0* and _x_<0, the result is an implementation-dependent approximation to -π. + If _y_ is *-0* and _x_ < 0, the result is an implementation-dependent approximation to -π.
      • - If _y_<0 and _x_ is *+0*, the result is an implementation-dependent approximation to -π/2. + If _y_ < 0 and _x_ is *+0*, the result is an implementation-dependent approximation to -π / 2.
      • - If _y_<0 and _x_ is *-0*, the result is an implementation-dependent approximation to -π/2. + If _y_ < 0 and _x_ is *-0*, the result is an implementation-dependent approximation to -π / 2.
      • - If _y_>0 and _y_ is finite and _x_ is *+∞*, the result is *+0*. + If _y_ > 0 and _y_ is finite and _x_ is *+∞*, the result is *+0*.
      • - If _y_>0 and _y_ is finite and _x_ is *-∞*, the result is an implementation-dependent approximation to +π. + If _y_ > 0 and _y_ is finite and _x_ is *-∞*, the result is an implementation-dependent approximation to +π.
      • - If _y_<0 and _y_ is finite and _x_ is *+∞*, the result is *-0*. + If _y_ < 0 and _y_ is finite and _x_ is *+∞*, the result is *-0*.
      • - If _y_<0 and _y_ is finite and _x_ is *-∞*, the result is an implementation-dependent approximation to -π. + If _y_ < 0 and _y_ is finite and _x_ is *-∞*, the result is an implementation-dependent approximation to -π.
      • - If _y_ is *+∞* and _x_ is finite, the result is an implementation-dependent approximation to +π/2. + If _y_ is *+∞* and _x_ is finite, the result is an implementation-dependent approximation to +π / 2.
      • - If _y_ is *-∞* and _x_ is finite, the result is an implementation-dependent approximation to -π/2. + If _y_ is *-∞* and _x_ is finite, the result is an implementation-dependent approximation to -π / 2.
      • - If _y_ is *+∞* and _x_ is *+∞*, the result is an implementation-dependent approximation to +π/4. + If _y_ is *+∞* and _x_ is *+∞*, the result is an implementation-dependent approximation to +π / 4.
      • - If _y_ is *+∞* and _x_ is *-∞*, the result is an implementation-dependent approximation to +3π/4. + If _y_ is *+∞* and _x_ is *-∞*, the result is an implementation-dependent approximation to +3π / 4.
      • - If _y_ is *-∞* and _x_ is *+∞*, the result is an implementation-dependent approximation to -π/4. + If _y_ is *-∞* and _x_ is *+∞*, the result is an implementation-dependent approximation to -π / 4.
      • - If _y_ is *-∞* and _x_ is *-∞*, the result is an implementation-dependent approximation to -3π/4. + If _y_ is *-∞* and _x_ is *-∞*, the result is an implementation-dependent approximation to -3π / 4.
      @@ -26025,7 +26025,7 @@

      Math.cosh ( _x_ )

    -

    The value of cosh(x) is the same as (exp(x) + exp(-x))/2.

    +

    The value of cosh(x) is the same as (exp(x) + exp(-x)) / 2.

    @@ -26323,7 +26323,7 @@

    Math.round ( _x_ )

    `Math.round(3.5)` returns 4, but `Math.round(-3.5)` returns -3.

    -

    The value of `Math.round(x)` is not always the same as the value of `Math.floor(x+0.5)`. When `x` is *-0* or is less than 0 but greater than or equal to -0.5, `Math.round(x)` returns *-0*, but `Math.floor(x+0.5)` returns *+0*. `Math.round(x)` may also differ from the value of `Math.floor(x+0.5)`because of internal rounding when computing `x+0.5`.

    +

    The value of `Math.round(x)` is not always the same as the value of `Math.floor(x + 0.5)`. When `x` is *-0* or is less than 0 but greater than or equal to -0.5, `Math.round(x)` returns *-0*, but `Math.floor(x + 0.5)` returns *+0*. `Math.round(x)` may also differ from the value of `Math.floor(x + 0.5)`because of internal rounding when computing `x + 0.5`.

    @@ -26389,7 +26389,7 @@

    Math.sinh ( _x_ )

    -

    The value of sinh(x) is the same as (exp(x) - exp(-x))/2.

    +

    The value of sinh(x) is the same as (exp(x) - exp(-x)) / 2.

    @@ -26529,7 +26529,7 @@

    Year Number

    = 366 if (_y_ modulo 400) = 0

    All non-leap years have 365 days with the usual number of days per month and leap years have an extra day in February. The day number of the first day of year _y_ is given by:

    - DayFromYear(_y_) = 365 × (_y_-1970) + floor((_y_-1969)/4) - floor((_y_-1901)/100) + floor((_y_-1601)/400) + DayFromYear(_y_) = 365 × (_y_ - 1970) + floor((_y_ - 1969) / 4) - floor((_y_ - 1901) / 100) + floor((_y_ - 1601) / 400)

    The time value of the start of a year is:

    TimeFromYear(_y_) = msPerDay × DayFromYear(_y_)

    A time value determines a year by:

    @@ -26546,20 +26546,20 @@

    Month Number

    Months are identified by an integer in the range 0 to 11, inclusive. The mapping MonthFromTime(_t_) from a time value _t_ to a month number is defined by:

    MonthFromTime(_t_) = 0 if 0 ≤ DayWithinYear(_t_) < 31 - = 1 if 31 ≤ DayWithinYear(_t_) < 59+InLeapYear(_t_) - = 2 if 59+InLeapYear(_t_) ≤ DayWithinYear(_t_) < 90+InLeapYear(_t_) - = 3 if 90+InLeapYear(_t_) ≤ DayWithinYear(_t_) < 120+InLeapYear(_t_) - = 4 if 120+InLeapYear(_t_) ≤ DayWithinYear(_t_) < 151+InLeapYear(_t_) - = 5 if 151+InLeapYear(_t_) ≤ DayWithinYear(_t_) < 181+InLeapYear(_t_) - = 6 if 181+InLeapYear(_t_) ≤ DayWithinYear(_t_) < 212+InLeapYear(_t_) - = 7 if 212+InLeapYear(_t_) ≤ DayWithinYear(_t_) < 243+InLeapYear(_t_) - = 8 if 243+InLeapYear(_t_) ≤ DayWithinYear(_t_) < 273+InLeapYear(_t_) - = 9 if 273+InLeapYear(_t_) ≤ DayWithinYear(_t_) < 304+InLeapYear(_t_) - = 10 if 304+InLeapYear(_t_) ≤ DayWithinYear(_t_) < 334+InLeapYear(_t_) - = 11 if 334+InLeapYear(_t_) ≤ DayWithinYear(_t_) < 365+InLeapYear(_t_) + = 1 if 31 ≤ DayWithinYear(_t_) < 59 + InLeapYear(_t_) + = 2 if 59 + InLeapYear(_t_) ≤ DayWithinYear(_t_) < 90 + InLeapYear(_t_) + = 3 if 90 + InLeapYear(_t_) ≤ DayWithinYear(_t_) < 120 + InLeapYear(_t_) + = 4 if 120 + InLeapYear(_t_) ≤ DayWithinYear(_t_) < 151 + InLeapYear(_t_) + = 5 if 151 + InLeapYear(_t_) ≤ DayWithinYear(_t_) < 181 + InLeapYear(_t_) + = 6 if 181 + InLeapYear(_t_) ≤ DayWithinYear(_t_) < 212 + InLeapYear(_t_) + = 7 if 212 + InLeapYear(_t_) ≤ DayWithinYear(_t_) < 243 + InLeapYear(_t_) + = 8 if 243 + InLeapYear(_t_) ≤ DayWithinYear(_t_) < 273 + InLeapYear(_t_) + = 9 if 273 + InLeapYear(_t_) ≤ DayWithinYear(_t_) < 304 + InLeapYear(_t_) + = 10 if 304 + InLeapYear(_t_) ≤ DayWithinYear(_t_) < 334 + InLeapYear(_t_) + = 11 if 334 + InLeapYear(_t_) ≤ DayWithinYear(_t_) < 365 + InLeapYear(_t_)

    where

    - DayWithinYear(_t_) = Day(_t_)-DayFromYear(YearFromTime(_t_)) + DayWithinYear(_t_) = Day(_t_) - DayFromYear(YearFromTime(_t_))

    A month value of 0 specifies January; 1 specifies February; 2 specifies March; 3 specifies April; 4 specifies May; 5 specifies June; 6 specifies July; 7 specifies August; 8 specifies September; 9 specifies October; 10 specifies November; and 11 specifies December. Note that MonthFromTime(0) = 0, corresponding to Thursday, 01 January, 1970.

    @@ -26567,18 +26567,18 @@

    Month Number

    Date Number

    A date number is identified by an integer in the range 1 through 31, inclusive. The mapping DateFromTime(_t_) from a time value _t_ to a date number is defined by:

    DateFromTime(_t_) - = DayWithinYear(_t_)+1 if MonthFromTime(_t_)=0 - = DayWithinYear(_t_)-30 if MonthFromTime(_t_)=1 - = DayWithinYear(_t_)-58-InLeapYear(_t_) if MonthFromTime(_t_)=2 - = DayWithinYear(_t_)-89-InLeapYear(_t_) if MonthFromTime(_t_)=3 - = DayWithinYear(_t_)-119-InLeapYear(_t_) if MonthFromTime(_t_)=4 - = DayWithinYear(_t_)-150-InLeapYear(_t_) if MonthFromTime(_t_)=5 - = DayWithinYear(_t_)-180-InLeapYear(_t_) if MonthFromTime(_t_)=6 - = DayWithinYear(_t_)-211-InLeapYear(_t_) if MonthFromTime(_t_)=7 - = DayWithinYear(_t_)-242-InLeapYear(_t_) if MonthFromTime(_t_)=8 - = DayWithinYear(_t_)-272-InLeapYear(_t_) if MonthFromTime(_t_)=9 - = DayWithinYear(_t_)-303-InLeapYear(_t_) if MonthFromTime(_t_)=10 - = DayWithinYear(_t_)-333-InLeapYear(_t_) if MonthFromTime(_t_)=11 + = DayWithinYear(_t_) + 1 if MonthFromTime(_t_) = 0 + = DayWithinYear(_t_) - 30 if MonthFromTime(_t_) = 1 + = DayWithinYear(_t_) - 58 - InLeapYear(_t_) if MonthFromTime(_t_) = 2 + = DayWithinYear(_t_) - 89 - InLeapYear(_t_) if MonthFromTime(_t_) = 3 + = DayWithinYear(_t_) - 119 - InLeapYear(_t_) if MonthFromTime(_t_) = 4 + = DayWithinYear(_t_) - 150 - InLeapYear(_t_) if MonthFromTime(_t_) = 5 + = DayWithinYear(_t_) - 180 - InLeapYear(_t_) if MonthFromTime(_t_) = 6 + = DayWithinYear(_t_) - 211 - InLeapYear(_t_) if MonthFromTime(_t_) = 7 + = DayWithinYear(_t_) - 242 - InLeapYear(_t_) if MonthFromTime(_t_) = 8 + = DayWithinYear(_t_) - 272 - InLeapYear(_t_) if MonthFromTime(_t_) = 9 + = DayWithinYear(_t_) - 303 - InLeapYear(_t_) if MonthFromTime(_t_) = 10 + = DayWithinYear(_t_) - 333 - InLeapYear(_t_) if MonthFromTime(_t_) = 11 @@ -26896,7 +26896,7 @@

    Date ( _year_, _month_ [ , _date_ [ , _hours_ [ , _minutes_ [ , _seconds_ [ 1. If _minutes_ is present, let _min_ be ? ToNumber(_minutes_); else let _min_ be 0. 1. If _seconds_ is present, let _s_ be ? ToNumber(_seconds_); else let _s_ be 0. 1. If _ms_ is present, let _milli_ be ? ToNumber(_ms_); else let _milli_ be 0. - 1. If _y_ is not *NaN* and 0 ≤ ToInteger(_y_) ≤ 99, let _yr_ be 1900+ToInteger(_y_); otherwise, let _yr_ be _y_. + 1. If _y_ is not *NaN* and 0 ≤ ToInteger(_y_) ≤ 99, let _yr_ be 1900 + ToInteger(_y_); otherwise, let _yr_ be _y_. 1. Let _finalDate_ be MakeDate(MakeDay(_yr_, _m_, _dt_), MakeTime(_h_, _min_, _s_, _milli_)). 1. Let _O_ be ? OrdinaryCreateFromConstructor(NewTarget, `"%DatePrototype%"`, « [[DateValue]] »). 1. Set _O_.[[DateValue]] to TimeClip(UTC(_finalDate_)). @@ -26995,7 +26995,7 @@

    Date.UTC ( _year_ [ , _month_ [ , _date_ [ , _hours_ [ , _minutes_ [ , _seco 1. If _minutes_ is present, let _min_ be ? ToNumber(_minutes_); else let _min_ be 0. 1. If _seconds_ is present, let _s_ be ? ToNumber(_seconds_); else let _s_ be 0. 1. If _ms_ is present, let _milli_ be ? ToNumber(_ms_); else let _milli_ be 0. - 1. If _y_ is not *NaN* and 0 ≤ ToInteger(_y_) ≤ 99, let _yr_ be 1900+ToInteger(_y_); otherwise, let _yr_ be _y_. + 1. If _y_ is not *NaN* and 0 ≤ ToInteger(_y_) ≤ 99, let _yr_ be 1900 + ToInteger(_y_); otherwise, let _yr_ be _y_. 1. Return TimeClip(MakeDate(MakeDay(_yr_, _m_, _dt_), MakeTime(_h_, _min_, _s_, _milli_))).

    The `"length"` property of the `UTC` function is 7.

    @@ -27970,7 +27970,7 @@

    Properties of the String Prototype Object

    String.prototype.charAt ( _pos_ )

    Returns a single element String containing the code unit at index _pos_ within the String value resulting from converting this object to a String. If there is no element at that index, the result is the empty String. The result is a String value, not a String object.

    -

    If `pos` is a value of Number type that is an integer, then the result of `x.charAt(pos)` is equal to the result of `x.substring(pos, pos+1)`.

    +

    If `pos` is a value of Number type that is an integer, then the result of `x.charAt(pos)` is equal to the result of `x.substring(pos, pos + 1)`.

    When the `charAt` method is called with one argument _pos_, the following steps are taken:

    @@ -28018,8 +28018,8 @@

    String.prototype.codePointAt ( _pos_ )

    1. Let _size_ be the length of _S_. 1. If _position_ < 0 or _position_ ≥ _size_, return *undefined*. 1. Let _first_ be the numeric value of the code unit at index _position_ within the String _S_. - 1. If _first_ < 0xD800 or _first_ > 0xDBFF or _position_+1 = _size_, return _first_. - 1. Let _second_ be the numeric value of the code unit at index _position_+1 within the String _S_. + 1. If _first_ < 0xD800 or _first_ > 0xDBFF or _position_ + 1 = _size_, return _first_. + 1. Let _second_ be the numeric value of the code unit at index _position_ + 1 within the String _S_. 1. If _second_ < 0xDC00 or _second_ > 0xDFFF, return _first_. 1. Return UTF16Decode(_first_, _second_).
    @@ -28098,7 +28098,7 @@

    String.prototype.includes ( _searchString_ [ , _position_ ] )

    1. Let _len_ be the length of _S_. 1. Let _start_ be min(max(_pos_, 0), _len_). 1. Let _searchLen_ be the length of _searchStr_. - 1. If there exists any integer _k_ not smaller than _start_ such that _k_ + _searchLen_ is not greater than _len_, and for all nonnegative integers _j_ less than _searchLen_, the code unit at index _k_+_j_ within _S_ is the same as the code unit at index _j_ within _searchStr_, return *true*; but if there is no such integer _k_, return *false*. + 1. If there exists any integer _k_ not smaller than _start_ such that _k_ + _searchLen_ is not greater than _len_, and for all nonnegative integers _j_ less than _searchLen_, the code unit at index _k_ + _j_ within _S_ is the same as the code unit at index _j_ within _searchStr_, return *true*; but if there is no such integer _k_, return *false*.

    If _searchString_ appears as a substring of the result of converting this object to a String, at one or more indices that are greater than or equal to _position_, return *true*; otherwise, returns *false*. If _position_ is *undefined*, 0 is assumed, so as to search all of the String.

    @@ -28125,7 +28125,7 @@

    String.prototype.indexOf ( _searchString_ [ , _position_ ] )

    1. Let _len_ be the length of _S_. 1. Let _start_ be min(max(_pos_, 0), _len_). 1. Let _searchLen_ be the length of _searchStr_. - 1. Return the smallest possible integer _k_ not smaller than _start_ such that _k_+_searchLen_ is not greater than _len_, and for all nonnegative integers _j_ less than _searchLen_, the code unit at index _k_+_j_ within _S_ is the same as the code unit at index _j_ within _searchStr_; but if there is no such integer _k_, return the value -1. + 1. Return the smallest possible integer _k_ not smaller than _start_ such that _k_ + _searchLen_ is not greater than _len_, and for all nonnegative integers _j_ less than _searchLen_, the code unit at index _k_ + _j_ within _S_ is the same as the code unit at index _j_ within _searchStr_; but if there is no such integer _k_, return the value -1.

    The `indexOf` function is intentionally generic; it does not require that its *this* value be a String object. Therefore, it can be transferred to other kinds of objects for use as a method.

    @@ -28147,7 +28147,7 @@

    String.prototype.lastIndexOf ( _searchString_ [ , _position_ ] )

    1. Let _len_ be the length of _S_. 1. Let _start_ be min(max(_pos_, 0), _len_). 1. Let _searchLen_ be the length of _searchStr_. - 1. Return the largest possible nonnegative integer _k_ not larger than _start_ such that _k_+_searchLen_ is not greater than _len_, and for all nonnegative integers _j_ less than _searchLen_, the code unit at index _k_+_j_ within _S_ is the same as the code unit at index _j_ within _searchStr_; but if there is no such integer _k_, return the value -1. + 1. Return the largest possible nonnegative integer _k_ not larger than _start_ such that _k_ + _searchLen_ is not greater than _len_, and for all nonnegative integers _j_ less than _searchLen_, the code unit at index _k_ + _j_ within _S_ is the same as the code unit at index _j_ within _searchStr_; but if there is no such integer _k_, return the value -1.

    The `lastIndexOf` function is intentionally generic; it does not require that its *this* value be a String object. Therefore, it can be transferred to other kinds of objects for use as a method.

    @@ -28401,7 +28401,7 @@

    Runtime Semantics: GetSubstitution ( _matched_, _str_, _position_, _captures `n` is one of `1 2 3 4 5 6 7 8 9` and `$n` is not followed by a decimal digit

    @@ -28418,7 +28418,7 @@

    Runtime Semantics: GetSubstitution ( _matched_, _str_, _position_, _captures `n` is one of `0 1 2 3 4 5 6 7 8 9`

    @@ -28479,7 +28479,7 @@

    String.prototype.search ( _regexp_ )

    String.prototype.slice ( _start_, _end_ )

    -

    The `slice` method takes two arguments, _start_ and _end_, and returns a substring of the result of converting this object to a String, starting from index _start_ and running to, but not including, index _end_ (or through the end of the String if _end_ is *undefined*). If _start_ is negative, it is treated as _sourceLength_+_start_ where _sourceLength_ is the length of the String. If _end_ is negative, it is treated as _sourceLength_+_end_ where _sourceLength_ is the length of the String. The result is a String value, not a String object. The following steps are taken:

    +

    The `slice` method takes two arguments, _start_ and _end_, and returns a substring of the result of converting this object to a String, starting from index _start_ and running to, but not including, index _end_ (or through the end of the String if _end_ is *undefined*). If _start_ is negative, it is treated as _sourceLength_ + _start_ where _sourceLength_ is the length of the String. If _end_ is negative, it is treated as _sourceLength_ + _end_ where _sourceLength_ is the length of the String. The result is a String value, not a String object. The following steps are taken:

    1. Let _O_ be ? RequireObjectCoercible(*this* value). 1. Let _S_ be ? ToString(_O_). @@ -28509,7 +28509,7 @@

    String.prototype.split ( _separator_, _limit_ )

    1. Let _S_ be ? ToString(_O_). 1. Let _A_ be ! ArrayCreate(0). 1. Let _lengthA_ be 0. - 1. If _limit_ is *undefined*, let _lim_ be 232-1; else let _lim_ be ? ToUint32(_limit_). + 1. If _limit_ is *undefined*, let _lim_ be 232 - 1; else let _lim_ be ? ToUint32(_limit_). 1. Let _s_ be the length of _S_. 1. Let _p_ be 0. 1. Let _R_ be ? ToString(_separator_). @@ -28525,9 +28525,9 @@

    String.prototype.split ( _separator_, _limit_ )

    1. Let _q_ be _p_. 1. Repeat, while _q_ ≠ _s_ 1. Let _e_ be SplitMatch(_S_, _q_, _R_). - 1. If _e_ is *false*, let _q_ be _q_+1. + 1. If _e_ is *false*, let _q_ be _q_ + 1. 1. Else _e_ is an integer index ≤ _s_, - 1. If _e_ = _p_, let _q_ be _q_+1. + 1. If _e_ = _p_, let _q_ be _q_ + 1. 1. Else _e_ ≠ _p_, 1. Let _T_ be the String value equal to the substring of _S_ consisting of the code units at indices _p_ (inclusive) through _q_ (exclusive). 1. Perform ! CreateDataProperty(_A_, ! ToString(_lengthA_), _T_). @@ -28555,9 +28555,9 @@

    Runtime Semantics: SplitMatch ( _S_, _q_, _R_ )

    1. Assert: Type(_R_) is String. 1. Let _r_ be the number of code units in _R_. 1. Let _s_ be the number of code units in _S_. - 1. If _q_+_r_ > _s_, return *false*. - 1. If there exists an integer _i_ between 0 (inclusive) and _r_ (exclusive) such that the code unit at index _q_+_i_ within _S_ is different from the code unit at index _i_ within _R_, return *false*. - 1. Return _q_+_r_. + 1. If _q_ + _r_ > _s_, return *false*. + 1. If there exists an integer _i_ between 0 (inclusive) and _r_ (exclusive) such that the code unit at index _q_ + _i_ within _S_ is different from the code unit at index _i_ within _R_, return *false*. + 1. Return _q_ + _r_.
    @@ -28575,7 +28575,7 @@

    String.prototype.startsWith ( _searchString_ [ , _position_ ] )

    1. Let _len_ be the length of _S_. 1. Let _start_ be min(max(_pos_, 0), _len_). 1. Let _searchLength_ be the length of _searchStr_. - 1. If _searchLength_+_start_ is greater than _len_, return *false*. + 1. If _searchLength_ + _start_ is greater than _len_, return *false*. 1. If the sequence of elements of _S_ starting at _start_ of length _searchLength_ is the same as the full element sequence of _searchStr_, return *true*. 1. Otherwise, return *false*. @@ -28762,9 +28762,9 @@

    %StringIteratorPrototype%.next ( )

    1. Set _O_.[[IteratedString]] to *undefined*. 1. Return CreateIterResultObject(*undefined*, *true*). 1. Let _first_ be the numeric value of the code unit at index _position_ within _s_. - 1. If _first_ < 0xD800 or _first_ > 0xDBFF or _position_+1 = _len_, let _resultString_ be the String value consisting of the single code unit _first_. + 1. If _first_ < 0xD800 or _first_ > 0xDBFF or _position_ + 1 = _len_, let _resultString_ be the String value consisting of the single code unit _first_. 1. Else, - 1. Let _second_ be the numeric value of the code unit at index _position_+1 within the String _S_. + 1. Let _second_ be the numeric value of the code unit at index _position_ + 1 within the String _S_. 1. If _second_ < 0xDC00 or _second_ > 0xDFFF, let _resultString_ be the String value consisting of the single code unit _first_. 1. Else, let _resultString_ be the string-concatenation of the code unit _first_ and the code unit _second_. 1. Let _resultSize_ be the number of code units in _resultString_. @@ -29037,7 +29037,7 @@

    Static Semantics: Early Errors

    Pattern :: Disjunction
    • - It is a Syntax Error if _NcapturingParens_ ≥ 232-1. + It is a Syntax Error if _NcapturingParens_ ≥ 232 - 1.
    • It is a Syntax Error if |Pattern| contains multiple |GroupSpecifier|s whose enclosed |RegExpIdentifierName|s have the same StringValue. @@ -29539,11 +29539,11 @@

      Runtime Semantics: RepeatMatcher ( _m_, _min_, _max_, _greedy_, _x_, _c_, _p 1. If _max_ is zero, return _c_(_x_). 1. Let _d_ be an internal Continuation closure that takes one State argument _y_ and performs the following steps when evaluated: 1. If _min_ is zero and _y_'s _endIndex_ is equal to _x_'s _endIndex_, return ~failure~. - 1. If _min_ is zero, let _min2_ be zero; otherwise let _min2_ be _min_-1. - 1. If _max_ is ∞, let _max2_ be ∞; otherwise let _max2_ be _max_-1. + 1. If _min_ is zero, let _min2_ be zero; otherwise let _min2_ be _min_ - 1. + 1. If _max_ is ∞, let _max2_ be ∞; otherwise let _max2_ be _max_ - 1. 1. Call RepeatMatcher(_m_, _min2_, _max2_, _greedy_, _y_, _c_, _parenIndex_, _parenCount_) and return its result. 1. Let _cap_ be a copy of _x_'s _captures_ List. - 1. For each integer _k_ that satisfies _parenIndex_ < _k_ and _k_ ≤ _parenIndex_+_parenCount_, set _cap_[_k_] to *undefined*. + 1. For each integer _k_ that satisfies _parenIndex_ < _k_ and _k_ ≤ _parenIndex_ + _parenCount_, set _cap_[_k_] to *undefined*. 1. Let _e_ be _x_'s _endIndex_. 1. Let _xr_ be the State (_e_, _cap_). 1. If _min_ is not zero, return _m_(_xr_, _d_). @@ -29559,7 +29559,7 @@

      Runtime Semantics: RepeatMatcher ( _m_, _min_, _max_, _greedy_, _x_, _c_, _p

      An |Atom| followed by a |Quantifier| is repeated the number of times specified by the |Quantifier|. A |Quantifier| can be non-greedy, in which case the |Atom| pattern is repeated as few times as possible while still matching the sequel, or it can be greedy, in which case the |Atom| pattern is repeated as many times as possible while still matching the sequel. The |Atom| pattern is repeated rather than the input character sequence that it matches, so different repetitions of the |Atom| can match different input substrings.

      -

      If the |Atom| and the sequel of the regular expression all have choice points, the |Atom| is first matched as many (or as few, if non-greedy) times as possible. All choices in the sequel are tried before moving on to the next choice in the last repetition of |Atom|. All choices in the last (nth) repetition of |Atom| are tried before moving on to the next choice in the next-to-last (n-1)st repetition of |Atom|; at which point it may turn out that more or fewer repetitions of |Atom| are now possible; these are exhausted (again, starting with either as few or as many as possible) before moving on to the next choice in the (n-1)st repetition of |Atom| and so on.

      +

      If the |Atom| and the sequel of the regular expression all have choice points, the |Atom| is first matched as many (or as few, if non-greedy) times as possible. All choices in the sequel are tried before moving on to the next choice in the last repetition of |Atom|. All choices in the last (nth) repetition of |Atom| are tried before moving on to the next choice in the next-to-last (n - 1)st repetition of |Atom|; at which point it may turn out that more or fewer repetitions of |Atom| are now possible; these are exhausted (again, starting with either as few or as many as possible) before moving on to the next choice in the (n - 1)st repetition of |Atom| and so on.

      Compare

      /a[a-z]{2,4}/.exec("abcdefghi")

      which returns `"abcde"` with

      @@ -29606,7 +29606,7 @@

      Assertion

      1. Let _e_ be _x_'s _endIndex_. 1. If _e_ is zero, return *true*. 1. If _Multiline_ is *false*, return *false*. - 1. If the character _Input_[_e_-1] is one of |LineTerminator|, return *true*. + 1. If the character _Input_[_e_ - 1] is one of |LineTerminator|, return *true*. 1. Return *false*. @@ -29625,7 +29625,7 @@

      Assertion

      1. Return an internal AssertionTester closure that takes a State argument _x_ and performs the following steps when evaluated: 1. Let _e_ be _x_'s _endIndex_. - 1. Call IsWordChar(_e_-1) and let _a_ be the Boolean result. + 1. Call IsWordChar(_e_ - 1) and let _a_ be the Boolean result. 1. Call IsWordChar(_e_) and let _b_ be the Boolean result. 1. If _a_ is *true* and _b_ is *false*, return *true*. 1. If _a_ is *false* and _b_ is *true*, return *true*. @@ -29635,7 +29635,7 @@

      Assertion

      1. Return an internal AssertionTester closure that takes a State argument _x_ and performs the following steps when evaluated: 1. Let _e_ be _x_'s _endIndex_. - 1. Call IsWordChar(_e_-1) and let _a_ be the Boolean result. + 1. Call IsWordChar(_e_ - 1) and let _a_ be the Boolean result. 1. Call IsWordChar(_e_) and let _b_ be the Boolean result. 1. If _a_ is *true* and _b_ is *false*, return *false*. 1. If _a_ is *false* and _b_ is *true*, return *false*. @@ -30024,7 +30024,7 @@

      Atom

      1. Assert: _direction_ is equal to -1. 1. Assert: _ye_ ≤ _xe_. 1. Let _s_ be a new List whose elements are the characters of _Input_ at indices _ye_ (inclusive) through _xe_ (exclusive). - 1. Set _cap_[_parenIndex_+1] to _s_. + 1. Set _cap_[_parenIndex_ + 1] to _s_. 1. Let _z_ be the State (_ye_, _cap_). 1. Call _c_(_z_) and return its result. 1. Call _m_(_x_, _d_) and return its result. @@ -30623,7 +30623,7 @@

      Runtime Semantics: RegExpBuiltinExec ( _R_, _S_ )

      1. If _global_ is *true* or _sticky_ is *true*, then 1. Perform ? Set(_R_, `"lastIndex"`, _e_, *true*). 1. Let _n_ be the number of elements in _r_'s _captures_ List. (This is the same value as 's _NcapturingParens_.) - 1. Assert: _n_ < 232-1. + 1. Assert: _n_ < 232 - 1. 1. Let _A_ be ! ArrayCreate(_n_ + 1). 1. Assert: The value of _A_'s `"length"` property is _n_ + 1. 1. Perform ! CreateDataProperty(_A_, `"index"`, _lastIndex_). @@ -30657,16 +30657,16 @@

      AdvanceStringIndex ( _S_, _index_, _unicode_ )

      The abstract operation AdvanceStringIndex with arguments _S_, _index_, and _unicode_ performs the following steps:

      1. Assert: Type(_S_) is String. - 1. Assert: _index_ is an integer such that 0≤_index_≤253-1. + 1. Assert: _index_ is an integer such that 0 ≤ _index_ ≤ 253 - 1. 1. Assert: Type(_unicode_) is Boolean. - 1. If _unicode_ is *false*, return _index_+1. + 1. If _unicode_ is *false*, return _index_ + 1. 1. Let _length_ be the number of code units in _S_. - 1. If _index_+1 ≥ _length_, return _index_+1. + 1. If _index_ + 1 ≥ _length_, return _index_ + 1. 1. Let _first_ be the numeric value of the code unit at index _index_ within _S_. - 1. If _first_ < 0xD800 or _first_ > 0xDBFF, return _index_+1. - 1. Let _second_ be the numeric value of the code unit at index _index_+1 within _S_. - 1. If _second_ < 0xDC00 or _second_ > 0xDFFF, return _index_+1. - 1. Return _index_+2. + 1. If _first_ < 0xD800 or _first_ > 0xDBFF, return _index_ + 1. + 1. Let _second_ be the numeric value of the code unit at index _index_ + 1 within _S_. + 1. If _second_ < 0xDC00 or _second_ > 0xDFFF, return _index_ + 1. + 1. Return _index_ + 2. @@ -30757,7 +30757,7 @@

      RegExp.prototype [ @@match ] ( _string_ )

      1. Repeat, 1. Let _result_ be ? RegExpExec(_rx_, _S_). 1. If _result_ is *null*, then - 1. If _n_=0, return *null*. + 1. If _n_ = 0, return *null*. 1. Return _A_. 1. Else _result_ is not *null*, 1. Let _matchStr_ be ? ToString(? Get(_result_, `"0"`)). @@ -30835,7 +30835,7 @@

      RegExp.prototype [ @@replace ] ( _string_, _replaceValue_ )

      1. If _capN_ is not *undefined*, then 1. Let _capN_ be ? ToString(_capN_). 1. Append _capN_ as the last element of _captures_. - 1. Let _n_ be _n_+1. + 1. Let _n_ be _n_ + 1. 1. Let _namedCaptures_ be ? Get(_result_, `"groups"`). 1. If _functionalReplace_ is *true*, then 1. Let _replacerArgs_ be « _matched_ ». @@ -30922,7 +30922,7 @@

      RegExp.prototype [ @@split ] ( _string_, _limit_ )

      1. Let _splitter_ be ? Construct(_C_, « _rx_, _newFlags_ »). 1. Let _A_ be ! ArrayCreate(0). 1. Let _lengthA_ be 0. - 1. If _limit_ is *undefined*, let _lim_ be 232-1; else let _lim_ be ? ToUint32(_limit_). + 1. If _limit_ is *undefined*, let _lim_ be 232 - 1; else let _lim_ be ? ToUint32(_limit_). 1. Let _size_ be the length of _S_. 1. Let _p_ be 0. 1. If _lim_ = 0, return _A_. @@ -30947,7 +30947,7 @@

      RegExp.prototype [ @@split ] ( _string_, _limit_ )

      1. If _lengthA_ = _lim_, return _A_. 1. Let _p_ be _e_. 1. Let _numberOfCaptures_ be ? ToLength(? Get(_z_, `"length"`)). - 1. Let _numberOfCaptures_ be max(_numberOfCaptures_-1, 0). + 1. Let _numberOfCaptures_ be max(_numberOfCaptures_ - 1, 0). 1. Let _i_ be 1. 1. Repeat, while _i_ ≤ _numberOfCaptures_, 1. Let _nextCapture_ be ? Get(_z_, ! ToString(_i_)). @@ -31144,7 +31144,7 @@

      Array.from ( _items_ [ , _mapfn_ [ , _thisArg_ ] ] )

      1. Let _iteratorRecord_ be ? GetIterator(_items_, ~sync~, _usingIterator_). 1. Let _k_ be 0. 1. Repeat, - 1. If _k_ ≥ 253-1, then + 1. If _k_ ≥ 253 - 1, then 1. Let _error_ be ThrowCompletion(a newly created *TypeError* object). 1. Return ? IteratorClose(_iteratorRecord_, _error_). 1. Let _Pk_ be ! ToString(_k_). @@ -31268,7 +31268,7 @@

      Array.prototype.concat ( ..._arguments_ )

      1. If _spreadable_ is *true*, then 1. Let _k_ be 0. 1. Let _len_ be ? ToLength(? Get(_E_, `"length"`)). - 1. If _n_ + _len_ > 253-1, throw a *TypeError* exception. + 1. If _n_ + _len_ > 253 - 1, throw a *TypeError* exception. 1. Repeat, while _k_ < _len_ 1. Let _P_ be ! ToString(_k_). 1. Let _exists_ be ? HasProperty(_E_, _P_). @@ -31278,7 +31278,7 @@

      Array.prototype.concat ( ..._arguments_ )

      1. Increase _n_ by 1. 1. Increase _k_ by 1. 1. Else _E_ is added as a single item rather than spread, - 1. If _n_≥253-1, throw a *TypeError* exception. + 1. If _n_ ≥ 253 - 1, throw a *TypeError* exception. 1. Perform ? CreateDataPropertyOrThrow(_A_, ! ToString(_n_), _E_). 1. Increase _n_ by 1. 1. Perform ? Set(_A_, `"length"`, _n_, *true*). @@ -31313,7 +31313,7 @@

      Array.prototype.constructor

      Array.prototype.copyWithin ( _target_, _start_ [ , _end_ ] )

      The `copyWithin` method takes up to three arguments _target_, _start_ and _end_.

      -

      The _end_ argument is optional with the length of the *this* object as its default value. If _target_ is negative, it is treated as _length_+_target_ where _length_ is the length of the array. If _start_ is negative, it is treated as _length_+_start_. If _end_ is negative, it is treated as _length_+_end_.

      +

      The _end_ argument is optional with the length of the *this* object as its default value. If _target_ is negative, it is treated as _length_ + _target_ where _length_ is the length of the array. If _start_ is negative, it is treated as _length_ + _start_. If _end_ is negative, it is treated as _length_ + _end_.

      The following steps are taken:

      @@ -31325,8 +31325,8 @@

      Array.prototype.copyWithin ( _target_, _start_ [ , _end_ ] )

      1. If _relativeStart_ < 0, let _from_ be max((_len_ + _relativeStart_), 0); else let _from_ be min(_relativeStart_, _len_). 1. If _end_ is *undefined*, let _relativeEnd_ be _len_; else let _relativeEnd_ be ? ToInteger(_end_). 1. If _relativeEnd_ < 0, let _final_ be max((_len_ + _relativeEnd_), 0); else let _final_ be min(_relativeEnd_, _len_). - 1. Let _count_ be min(_final_-_from_, _len_-_to_). - 1. If _from_<_to_ and _to_<_from_+_count_, then + 1. Let _count_ be min(_final_ - _from_, _len_ - _to_). + 1. If _from_ < _to_ and _to_ < _from_ + _count_, then 1. Let _direction_ be -1. 1. Let _from_ be _from_ + _count_ - 1. 1. Let _to_ be _to_ + _count_ - 1. @@ -31396,7 +31396,7 @@

      Array.prototype.every ( _callbackfn_ [ , _thisArg_ ] )

      Array.prototype.fill ( _value_ [ , _start_ [ , _end_ ] ] )

      The `fill` method takes up to three arguments _value_, _start_ and _end_.

      -

      The _start_ and _end_ arguments are optional with default values of 0 and the length of the *this* object. If _start_ is negative, it is treated as _length_+_start_ where _length_ is the length of the array. If _end_ is negative, it is treated as _length_+_end_.

      +

      The _start_ and _end_ arguments are optional with default values of 0 and the length of the *this* object. If _start_ is negative, it is treated as _length_ + _start_ where _length_ is the length of the array. If _end_ is negative, it is treated as _length_ + _end_.

      The following steps are taken:

      @@ -31657,7 +31657,7 @@

      Array.prototype.lastIndexOf ( _searchElement_ [ , _fromIndex_ ] )

      1. Let _O_ be ? ToObject(*this* value). 1. Let _len_ be ? ToLength(? Get(_O_, `"length"`)). 1. If _len_ is 0, return -1. - 1. If _fromIndex_ is present, let _n_ be ? ToInteger(_fromIndex_); else let _n_ be _len_-1. + 1. If _fromIndex_ is present, let _n_ be ? ToInteger(_fromIndex_); else let _n_ be _len_ - 1. 1. If _n_ ≥ 0, then 1. If _n_ is *-0*, let _k_ be *+0*; else let _k_ be min(_n_, _len_ - 1). 1. Else _n_ < 0, @@ -31721,7 +31721,7 @@

      Array.prototype.pop ( )

      1. Perform ? Set(_O_, `"length"`, 0, *true*). 1. Return *undefined*. 1. Else _len_ > 0, - 1. Let _newLen_ be _len_-1. + 1. Let _newLen_ be _len_ - 1. 1. Let _index_ be ! ToString(_newLen_). 1. Let _element_ be ? Get(_O_, _index_). 1. Perform ? DeletePropertyOrThrow(_O_, _index_). @@ -31744,11 +31744,11 @@

      Array.prototype.push ( ..._items_ )

      1. Let _len_ be ? ToLength(? Get(_O_, `"length"`)). 1. Let _items_ be a List whose elements are, in left to right order, the arguments that were passed to this function invocation. 1. Let _argCount_ be the number of elements in _items_. - 1. If _len_ + _argCount_ > 253-1, throw a *TypeError* exception. + 1. If _len_ + _argCount_ > 253 - 1, throw a *TypeError* exception. 1. Repeat, while _items_ is not empty 1. Remove the first element from _items_ and let _E_ be the value of the element. 1. Perform ? Set(_O_, ! ToString(_len_), _E_, *true*). - 1. Let _len_ be _len_+1. + 1. Let _len_ be _len_ + 1. 1. Perform ? Set(_O_, `"length"`, _len_, *true*). 1. Return _len_.
      @@ -31813,7 +31813,7 @@

      Array.prototype.reduceRight ( _callbackfn_ [ , _initialValue_ ] )

      1. Let _len_ be ? ToLength(? Get(_O_, `"length"`)). 1. If IsCallable(_callbackfn_) is *false*, throw a *TypeError* exception. 1. If _len_ is 0 and _initialValue_ is not present, throw a *TypeError* exception. - 1. Let _k_ be _len_-1. + 1. Let _k_ be _len_ - 1. 1. Let _accumulator_ be *undefined*. 1. If _initialValue_ is present, then 1. Set _accumulator_ to _initialValue_. @@ -31849,7 +31849,7 @@

      Array.prototype.reverse ( )

      1. Let _O_ be ? ToObject(*this* value). 1. Let _len_ be ? ToLength(? Get(_O_, `"length"`)). - 1. Let _middle_ be floor(_len_/2). + 1. Let _middle_ be floor(_len_ / 2). 1. Let _lower_ be 0. 1. Repeat, while _lower_ ≠ _middle_ 1. Let _upper_ be _len_ - _lower_ - 1. @@ -31896,7 +31896,7 @@

      Array.prototype.shift ( )

      1. Let _k_ be 1. 1. Repeat, while _k_ < _len_ 1. Let _from_ be ! ToString(_k_). - 1. Let _to_ be ! ToString(_k_-1). + 1. Let _to_ be ! ToString(_k_ - 1). 1. Let _fromPresent_ be ? HasProperty(_O_, _from_). 1. If _fromPresent_ is *true*, then 1. Let _fromVal_ be ? Get(_O_, _from_). @@ -31904,8 +31904,8 @@

      Array.prototype.shift ( )

      1. Else _fromPresent_ is *false*, 1. Perform ? DeletePropertyOrThrow(_O_, _to_). 1. Increase _k_ by 1. - 1. Perform ? DeletePropertyOrThrow(_O_, ! ToString(_len_-1)). - 1. Perform ? Set(_O_, `"length"`, _len_-1, *true*). + 1. Perform ? DeletePropertyOrThrow(_O_, ! ToString(_len_ - 1)). + 1. Perform ? Set(_O_, `"length"`, _len_ - 1, *true*). 1. Return _first_.
      @@ -31916,7 +31916,7 @@

      Array.prototype.shift ( )

      Array.prototype.slice ( _start_, _end_ )

      -

      The `slice` method takes two arguments, _start_ and _end_, and returns an array containing the elements of the array from element _start_ up to, but not including, element _end_ (or through the end of the array if _end_ is *undefined*). If _start_ is negative, it is treated as _length_+_start_ where _length_ is the length of the array. If _end_ is negative, it is treated as _length_+_end_ where _length_ is the length of the array.

      +

      The `slice` method takes two arguments, _start_ and _end_, and returns an array containing the elements of the array from element _start_ up to, but not including, element _end_ (or through the end of the array if _end_ is *undefined*). If _start_ is negative, it is treated as _length_ + _start_ where _length_ is the length of the array. If _end_ is negative, it is treated as _length_ + _end_ where _length_ is the length of the array.

      The following steps are taken:

      @@ -31990,7 +31990,7 @@

      Array.prototype.sort ( _comparefn_ )

      Within this specification of the `sort` method, an object, _obj_, is said to be sparse if the following algorithm returns *true*:

      - 1. For each integer _i_ in the range 0≤_i_< _len_, do + 1. For each integer _i_ in the range 0 ≤ _i_ < _len_, do 1. Let _elem_ be _obj_.[[GetOwnProperty]](! ToString(_i_)). 1. If _elem_ is *undefined*, return *true*. 1. Return *false*. @@ -32133,11 +32133,11 @@

      Array.prototype.splice ( _start_, _deleteCount_, ..._items_ )

      1. Let _insertCount_ be the number of actual arguments minus 2. 1. Let _dc_ be ? ToInteger(_deleteCount_). 1. Let _actualDeleteCount_ be min(max(_dc_, 0), _len_ - _actualStart_). - 1. If _len_+_insertCount_-_actualDeleteCount_ > 253-1, throw a *TypeError* exception. + 1. If _len_ + _insertCount_ - _actualDeleteCount_ > 253 - 1, throw a *TypeError* exception. 1. Let _A_ be ? ArraySpeciesCreate(_O_, _actualDeleteCount_). 1. Let _k_ be 0. 1. Repeat, while _k_ < _actualDeleteCount_ - 1. Let _from_ be ! ToString(_actualStart_+_k_). + 1. Let _from_ be ! ToString(_actualStart_ + _k_). 1. Let _fromPresent_ be ? HasProperty(_O_, _from_). 1. If _fromPresent_ is *true*, then 1. Let _fromValue_ be ? Get(_O_, _from_). @@ -32149,8 +32149,8 @@

      Array.prototype.splice ( _start_, _deleteCount_, ..._items_ )

      1. If _itemCount_ < _actualDeleteCount_, then 1. Let _k_ be _actualStart_. 1. Repeat, while _k_ < (_len_ - _actualDeleteCount_) - 1. Let _from_ be ! ToString(_k_+_actualDeleteCount_). - 1. Let _to_ be ! ToString(_k_+_itemCount_). + 1. Let _from_ be ! ToString(_k_ + _actualDeleteCount_). + 1. Let _to_ be ! ToString(_k_ + _itemCount_). 1. Let _fromPresent_ be ? HasProperty(_O_, _from_). 1. If _fromPresent_ is *true*, then 1. Let _fromValue_ be ? Get(_O_, _from_). @@ -32160,7 +32160,7 @@

      Array.prototype.splice ( _start_, _deleteCount_, ..._items_ )

      1. Increase _k_ by 1. 1. Let _k_ be _len_. 1. Repeat, while _k_ > (_len_ - _actualDeleteCount_ + _itemCount_) - 1. Perform ? DeletePropertyOrThrow(_O_, ! ToString(_k_-1)). + 1. Perform ? DeletePropertyOrThrow(_O_, ! ToString(_k_ - 1)). 1. Decrease _k_ by 1. 1. Else if _itemCount_ > _actualDeleteCount_, then 1. Let _k_ be (_len_ - _actualDeleteCount_). @@ -32247,11 +32247,11 @@

      Array.prototype.unshift ( ..._items_ )

      1. Let _len_ be ? ToLength(? Get(_O_, `"length"`)). 1. Let _argCount_ be the number of actual arguments. 1. If _argCount_ > 0, then - 1. If _len_+_argCount_ > 253-1, throw a *TypeError* exception. + 1. If _len_ + _argCount_ > 253 - 1, throw a *TypeError* exception. 1. Let _k_ be _len_. 1. Repeat, while _k_ > 0, - 1. Let _from_ be ! ToString(_k_-1). - 1. Let _to_ be ! ToString(_k_+_argCount_-1). + 1. Let _from_ be ! ToString(_k_ - 1). + 1. Let _to_ be ! ToString(_k_ + _argCount_ - 1). 1. Let _fromPresent_ be ? HasProperty(_O_, _from_). 1. If _fromPresent_ is *true*, then 1. Let _fromValue_ be ? Get(_O_, _from_). @@ -32265,8 +32265,8 @@

      Array.prototype.unshift ( ..._items_ )

      1. Remove the first element from _items_ and let _E_ be the value of that element. 1. Perform ? Set(_O_, ! ToString(_j_), _E_, *true*). 1. Increase _j_ by 1. - 1. Perform ? Set(_O_, `"length"`, _len_+_argCount_, *true*). - 1. Return _len_+_argCount_. + 1. Perform ? Set(_O_, `"length"`, _len_ + _argCount_, *true*). + 1. Return _len_ + _argCount_.

      The `"length"` property of the `unshift` method is 1.

      @@ -32372,7 +32372,7 @@

      %ArrayIteratorPrototype%.next ( )

      1. If _index_ ≥ _len_, then 1. Set _O_.[[IteratedObject]] to *undefined*. 1. Return CreateIterResultObject(*undefined*, *true*). - 1. Set _O_.[[ArrayIteratorNextIndex]] to _index_+1. + 1. Set _O_.[[ArrayIteratorNextIndex]] to _index_ + 1. 1. If _itemKind_ is `"key"`, return CreateIterResultObject(_index_, *false*). 1. Let _elementKey_ be ! ToString(_index_). 1. Let _elementValue_ be ? Get(_a_, _elementKey_). @@ -32866,7 +32866,7 @@

      %TypedArray%.prototype.copyWithin ( _target_, _start_ [ , _end_ ] )

      1. If _relativeStart_ < 0, let _from_ be max((_len_ + _relativeStart_), 0); else let _from_ be min(_relativeStart_, _len_). 1. If _end_ is *undefined*, let _relativeEnd_ be _len_; else let _relativeEnd_ be ? ToInteger(_end_). 1. If _relativeEnd_ < 0, let _final_ be max((_len_ + _relativeEnd_), 0); else let _final_ be min(_relativeEnd_, _len_). - 1. Let _count_ be min(_final_-_from_, _len_-_to_). + 1. Let _count_ be min(_final_ - _from_, _len_ - _to_). 1. If _count_ > 0, then 1. NOTE: The copying must be performed in a manner that preserves the bit-level encoding of the source data. 1. Let _buffer_ be _O_.[[ViewedArrayBuffer]]. @@ -32877,7 +32877,7 @@

      %TypedArray%.prototype.copyWithin ( _target_, _start_ [ , _end_ ] )

      1. Let _toByteIndex_ be _to_ × _elementSize_ + _byteOffset_. 1. Let _fromByteIndex_ be _from_ × _elementSize_ + _byteOffset_. 1. Let _countBytes_ be _count_ × _elementSize_. - 1. If _fromByteIndex_<_toByteIndex_ and _toByteIndex_<_fromByteIndex_+_countBytes_, then + 1. If _fromByteIndex_ < _toByteIndex_ and _toByteIndex_ < _fromByteIndex_ + _countBytes_, then 1. Let _direction_ be -1. 1. Let _fromByteIndex_ be _fromByteIndex_ + _countBytes_ - 1. 1. Let _toByteIndex_ be _toByteIndex_ + _countBytes_ - 1. @@ -33510,7 +33510,7 @@

      _TypedArray_ ( _buffer_ [ , _byteOffset_ [ , _length_ ] ] )

      1. If _newByteLength_ < 0, throw a *RangeError* exception. 1. Else, 1. Let _newByteLength_ be _newLength_ × _elementSize_. - 1. If _offset_+_newByteLength_ > _bufferByteLength_, throw a *RangeError* exception. + 1. If _offset_ + _newByteLength_ > _bufferByteLength_, throw a *RangeError* exception. 1. Set _O_.[[ViewedArrayBuffer]] to _buffer_. 1. Set _O_.[[ByteLength]] to _newByteLength_. 1. Set _O_.[[ByteOffset]] to _offset_. @@ -33833,7 +33833,7 @@

      get Map.prototype.size

      1. Let _entries_ be the List that is _M_.[[MapData]]. 1. Let _count_ be 0. 1. For each Record { [[Key]], [[Value]] } _p_ that is an element of _entries_, do - 1. If _p_.[[Key]] is not ~empty~, set _count_ to _count_+1. + 1. If _p_.[[Key]] is not ~empty~, set _count_ to _count_ + 1. 1. Return _count_.
      @@ -33908,7 +33908,7 @@

      %MapIteratorPrototype%.next ( )

      1. NOTE: _numEntries_ must be redetermined each time this method is evaluated. 1. Repeat, while _index_ is less than _numEntries_, 1. Let _e_ be the Record { [[Key]], [[Value]] } that is the value of _entries_[_index_]. - 1. Set _index_ to _index_+1. + 1. Set _index_ to _index_ + 1. 1. Set _O_.[[MapNextIndex]] to _index_. 1. If _e_.[[Key]] is not ~empty~, then 1. If _itemKind_ is `"key"`, let _result_ be _e_.[[Key]]. @@ -34176,7 +34176,7 @@

      get Set.prototype.size

      1. Let _entries_ be the List that is _S_.[[SetData]]. 1. Let _count_ be 0. 1. For each _e_ that is an element of _entries_, do - 1. If _e_ is not ~empty~, set _count_ to _count_+1. + 1. If _e_ is not ~empty~, set _count_ to _count_ + 1. 1. Return _count_.
      @@ -34251,7 +34251,7 @@

      %SetIteratorPrototype%.next ( )

      1. NOTE: _numEntries_ must be redetermined each time this method is evaluated. 1. Repeat, while _index_ is less than _numEntries_, 1. Let _e_ be _entries_[_index_]. - 1. Set _index_ to _index_+1. + 1. Set _index_ to _index_ + 1. 1. Set _O_.[[SetNextIndex]] to _index_. 1. If _e_ is not ~empty~, then 1. If _itemKind_ is `"key+value"`, then @@ -34882,7 +34882,7 @@

      ArrayBuffer.prototype.slice ( _start_, _end_ )

      1. If _relativeStart_ < 0, let _first_ be max((_len_ + _relativeStart_), 0); else let _first_ be min(_relativeStart_, _len_). 1. If _end_ is *undefined*, let _relativeEnd_ be _len_; else let _relativeEnd_ be ? ToInteger(_end_). 1. If _relativeEnd_ < 0, let _final_ be max((_len_ + _relativeEnd_), 0); else let _final_ be min(_relativeEnd_, _len_). - 1. Let _newLen_ be max(_final_-_first_, 0). + 1. Let _newLen_ be max(_final_ - _first_, 0). 1. Let _ctor_ be ? SpeciesConstructor(_O_, %ArrayBuffer%). 1. Let _new_ be ? Construct(_ctor_, « _newLen_ »). 1. If _new_ does not have an [[ArrayBufferData]] internal slot, throw a *TypeError* exception. @@ -35143,7 +35143,7 @@

      DataView ( _buffer_ [ , _byteOffset_ [ , _byteLength_ ] ] )

      1. Let _viewByteLength_ be _bufferByteLength_ - _offset_. 1. Else, 1. Let _viewByteLength_ be ? ToIndex(_byteLength_). - 1. If _offset_+_viewByteLength_ > _bufferByteLength_, throw a *RangeError* exception. + 1. If _offset_ + _viewByteLength_ > _bufferByteLength_, throw a *RangeError* exception. 1. Let _O_ be ? OrdinaryCreateFromConstructor(NewTarget, `"%DataViewPrototype%"`, « [[DataView]], [[ViewedArrayBuffer]], [[ByteLength]], [[ByteOffset]] »). 1. If IsDetachedBuffer(_buffer_) is *true*, throw a *TypeError* exception. 1. Set _O_.[[ViewedArrayBuffer]] to _buffer_. @@ -35458,7 +35458,7 @@

      GetWaiterList ( _block_, _i_ )

      The abstract operation GetWaiterList takes two arguments, a Shared Data Block _block_ and a nonnegative integer _i_. It performs the following steps:

      1. Assert: _block_ is a Shared Data Block. - 1. Assert: _i_ and _i_+3 are valid byte offsets within the memory of _block_. + 1. Assert: _i_ and _i_ + 3 are valid byte offsets within the memory of _block_. 1. Assert: _i_ is divisible by 4. 1. Return the WaiterList that is referenced by the pair (_block_, _i_). @@ -35853,7 +35853,7 @@

      JSON.stringify ( _value_ [ , _replacer_ [ , _space_ ] ] )

      1. Let _PropertyList_ be a new empty List. 1. Let _len_ be ? ToLength(? Get(_replacer_, `"length"`)). 1. Let _k_ be 0. - 1. Repeat, while _k_<_len_, + 1. Repeat, while _k_ < _len_, 1. Let _v_ be ? Get(_replacer_, ! ToString(_k_)). 1. Let _item_ be *undefined*. 1. If Type(_v_) is String, let _item_ be _v_. @@ -35862,7 +35862,7 @@

      JSON.stringify ( _value_ [ , _replacer_ [ , _space_ ] ] )

      1. If _v_ has a [[StringData]] or [[NumberData]] internal slot, let _item_ be ? ToString(_v_). 1. If _item_ is not *undefined* and _item_ is not currently an element of _PropertyList_, then 1. Append _item_ to the end of _PropertyList_. - 1. Let _k_ be _k_+1. + 1. Let _k_ be _k_ + 1. 1. If Type(_space_) is Object, then 1. If _space_ has a [[NumberData]] internal slot, then 1. Let _space_ be ? ToNumber(_space_). @@ -38616,7 +38616,7 @@

      Memory Model Fundamentals

      These events are introduced by abstract operations or by methods on the Atomics object.

      In addition to Shared Data Block events, there are host-specific events.

      -

      Let the range of a ReadSharedMemory, WriteSharedMemory, or ReadModifyWriteSharedMemory event be the Set of contiguous integers from its [[ByteIndex]] to [[ByteIndex]]+[[ElementSize]]-1. Two events' ranges are equal when the events have the same [[Block]], and the ranges are element-wise equal. Two events' ranges are overlapping when the events have the same [[Block]], the ranges are not equal and their intersection is non-empty. Two events' ranges are disjoint when the events do not have the same [[Block]] or their ranges are neither equal nor overlapping.

      +

      Let the range of a ReadSharedMemory, WriteSharedMemory, or ReadModifyWriteSharedMemory event be the Set of contiguous integers from its [[ByteIndex]] to [[ByteIndex]] + [[ElementSize]] - 1. Two events' ranges are equal when the events have the same [[Block]], and the ranges are element-wise equal. Two events' ranges are overlapping when the events have the same [[Block]], the ranges are not equal and their intersection is non-empty. Two events' ranges are disjoint when the events do not have the same [[Block]] or their ranges are neither equal nor overlapping.

      Examples of host-specific synchronizing events that should be accounted for are: sending a SharedArrayBuffer from one agent to another (e.g., by `postMessage` in a browser), starting and stopping agents, and communicating within the agent cluster via channels other than shared memory. It is assumed those events are appended to agent-order during evaluation like the other SharedArrayBuffer events.

      @@ -38830,7 +38830,7 @@

      reads-bytes-from

    • For each ReadSharedMemory or ReadModifyWriteSharedMemory event _R_ in SharedDataBlockEventSet(_execution_), _execution_.[[ReadsBytesFrom]](_R_) is a List of length equal to _R_.[[ElementSize]] of WriteSharedMemory or ReadModifyWriteSharedMemory events _Ws_ such that all of the following are true.

        -
      • Each event _W_ with index _i_ in _Ws_ has _R_.[[ByteIndex]]+_i_ in its range.
      • +
      • Each event _W_ with index _i_ in _Ws_ has _R_.[[ByteIndex]] + _i_ in its range.
      • _R_ is not in _Ws_.
    • @@ -40012,11 +40012,11 @@

      unescape ( _string_ )

      1. Repeat, while _k_ ≠ _length_ 1. Let _c_ be the code unit at index _k_ within _string_. 1. If _c_ is the code unit 0x0025 (PERCENT SIGN), then - 1. If _k_ ≤ _length_-6 and the code unit at index _k_+1 within _string_ is the code unit 0x0075 (LATIN SMALL LETTER U) and the four code units at indices _k_+2, _k_+3, _k_+4, and _k_+5 within _string_ are all hexadecimal digits, then - 1. Let _c_ be the code unit whose value is the integer represented by the four hexadecimal digits at indices _k_+2, _k_+3, _k_+4, and _k_+5 within _string_. + 1. If _k_ ≤ _length_ - 6 and the code unit at index _k_ + 1 within _string_ is the code unit 0x0075 (LATIN SMALL LETTER U) and the four code units at indices _k_ + 2, _k_ + 3, _k_ + 4, and _k_ + 5 within _string_ are all hexadecimal digits, then + 1. Let _c_ be the code unit whose value is the integer represented by the four hexadecimal digits at indices _k_ + 2, _k_ + 3, _k_ + 4, and _k_ + 5 within _string_. 1. Increase _k_ by 5. - 1. Else if _k_ ≤ _length_-3 and the two code units at indices _k_+1 and _k_+2 within _string_ are both hexadecimal digits, then - 1. Let _c_ be the code unit whose value is the integer represented by two zeroes plus the two hexadecimal digits at indices _k_+1 and _k_+2 within _string_. + 1. Else if _k_ ≤ _length_ - 3 and the two code units at indices _k_ + 1 and _k_ + 2 within _string_ are both hexadecimal digits, then + 1. Let _c_ be the code unit whose value is the integer represented by two zeroes plus the two hexadecimal digits at indices _k_ + 1 and _k_ + 2 within _string_. 1. Increase _k_ by 2. 1. Set _R_ to the string-concatenation of the previous value of _R_ and _c_. 1. Increase _k_ by 1. @@ -40119,7 +40119,7 @@

      Additional Properties of the String.prototype Object

      String.prototype.substr ( _start_, _length_ )

      -

      The `substr` method takes two arguments, _start_ and _length_, and returns a substring of the result of converting the *this* object to a String, starting from index _start_ and running for _length_ code units (or through the end of the String if _length_ is *undefined*). If _start_ is negative, it is treated as _sourceLength_+_start_ where _sourceLength_ is the length of the String. The result is a String value, not a String object. The following steps are taken:

      +

      The `substr` method takes two arguments, _start_ and _length_, and returns a substring of the result of converting the *this* object to a String, starting from index _start_ and running for _length_ code units (or through the end of the String if _length_ is *undefined*). If _start_ is negative, it is treated as _sourceLength_ + _start_ where _sourceLength_ is the length of the String. The result is a String value, not a String object. The following steps are taken:

      1. Let _O_ be ? RequireObjectCoercible(*this* value). 1. Let _S_ be ? ToString(_O_).

    - The _n_th element of _captures_, where _n_ is a single digit in the range 1 to 9. If _n_≤_m_ and the _n_th element of _captures_ is *undefined*, use the empty String instead. If _n_>_m_, no replacement is done. + The _n_th element of _captures_, where _n_ is a single digit in the range 1 to 9. If _n_ ≤ _m_ and the _n_th element of _captures_ is *undefined*, use the empty String instead. If _n_ > _m_, no replacement is done.
    - The _nn_th element of _captures_, where _nn_ is a two-digit decimal number in the range 01 to 99. If _nn_≤_m_ and the _nn_th element of _captures_ is *undefined*, use the empty String instead. If _nn_ is 00 or _nn_>_m_, no replacement is done. + The _nn_th element of _captures_, where _nn_ is a two-digit decimal number in the range 01 to 99. If _nn_ ≤ _m_ and the _nn_th element of _captures_ is *undefined*, use the empty String instead. If _nn_ is 00 or _nn_ > _m_, no replacement is done.