Moved over from gnash-commit.

At 06:54 AM 7/9/2007, strk wrote:
In these cases we should refer to an higher standard (ECMA-262 in this case)
and properly document the differences. Other opinions are welcome.

You got me curious. Here's the short version. IEEE got it right, then Ecma got it wrong, which boggles, since they make explicit reference to IEEE.

Here's a quotation from the most recent draft of IEEE 754r:
Comparisons are exact and never overflow or underflow. Four mutually exclusive relations are possible: less than, equal, greater than, and unordered. The last case arises when at least one operand is NaN. Every NaN
shall compare unordered with everything, including itself.

Here's an excerpt from Ecma-262, 3rd Edition. Step 5 returns undefined if either operand is NaN. Pay attention to step 6.
11.8.2 The Greater-than Operator ( > )
The production RelationalExpression : RelationalExpression > ShiftExpression is evaluated as follows:
1. Evaluate RelationalExpression.
2. Call GetValue(Result(1)).
3. Evaluate ShiftExpression.
4. Call GetValue(Result(3)).
5. Perform the comparison Result(4) < Result(2). (see 11.8.5).
6. If Result(5) is undefined, return false. Otherwise, return Result(5).

In short, Ecma-262-3rd is broken. Make of that what you will. It's possible that 4th-edition may not be completely broken, the draft does not yet contain the broken algorithm.

It's possible the long-term requirement will be to provide version-specific behavior.

Eric



_______________________________________________
Gnash-dev mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gnash-dev

Reply via email to