gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/as_object.cpp server/as_...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/as_object.cpp server/as_...
Date: Mon, 31 Mar 2008 23:18:35 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/03/31 23:18:34

Modified files:
        .              : ChangeLog 
        server         : as_object.cpp as_object.h 
        server/asobj   : Number.cpp 
        testsuite/actionscript.all: Number.as 

Log message:
                * server/as_object.{cpp,h}: const-correct setPropFlags (sorry
                  for big rebuild).
                * server/asobj/Number.cpp: add missing properties, make all 
Number
                  properties constant (shown to be required by swfdec
                  number-properties-*.swf, all of which only fail due to 
rounding
                  issues now).
                * testsuite/actionscript.all/Number.as: add test for missing
                  properties.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6129&r2=1.6130
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.cpp?cvsroot=gnash&r1=1.109&r2=1.110
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.h?cvsroot=gnash&r1=1.100&r2=1.101
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Number.cpp?cvsroot=gnash&r1=1.40&r2=1.41
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/Number.as?cvsroot=gnash&r1=1.43&r2=1.44

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6129
retrieving revision 1.6130
diff -u -b -r1.6129 -r1.6130
--- ChangeLog   31 Mar 2008 22:12:05 -0000      1.6129
+++ ChangeLog   31 Mar 2008 23:18:32 -0000      1.6130
@@ -1,5 +1,16 @@
 2008-03-31 Sandro Santilli <address@hidden>
 
+       * server/as_object.{cpp,h}: const-correct setPropFlags (sorry
+         for big rebuild).
+       * server/asobj/Number.cpp: add missing properties, make all Number
+         properties constant (shown to be required by swfdec
+         number-properties-*.swf, all of which only fail due to rounding
+         issues now).
+       * testsuite/actionscript.all/Number.as: add test for missing
+         properties.
+
+2008-03-31 Sandro Santilli <address@hidden>
+
        * server/asobj/ClassHierarchy.cpp: use hasOwnProperty to find out
          if a native class initialized its own __proto__ as get_member
          won't return a non-visible one; add debugging and error

Index: server/as_object.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.cpp,v
retrieving revision 1.109
retrieving revision 1.110
diff -u -b -r1.109 -r1.110
--- server/as_object.cpp        31 Mar 2008 14:34:38 -0000      1.109
+++ server/as_object.cpp        31 Mar 2008 23:18:33 -0000      1.110
@@ -802,7 +802,7 @@
 };
 
 void
-as_object::setPropFlags(as_value& props_val, int set_false, int set_true)
+as_object::setPropFlags(const as_value& props_val, int set_false, int set_true)
 {
        if (props_val.is_string())
        {

Index: server/as_object.h
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.h,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -b -r1.100 -r1.101
--- server/as_object.h  28 Mar 2008 16:23:08 -0000      1.100
+++ server/as_object.h  31 Mar 2008 23:18:33 -0000      1.101
@@ -770,7 +770,7 @@
        /// @param set_false
        /// @param set_true
        ///
-       void setPropFlags(as_value& props, int set_false, int set_true);
+       void setPropFlags(const as_value& props, int set_false, int set_true);
 
 #ifdef USE_DEBUGGER
        /// Get the properties of this objects 

Index: server/asobj/Number.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Number.cpp,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- server/asobj/Number.cpp     28 Mar 2008 16:23:08 -0000      1.40
+++ server/asobj/Number.cpp     31 Mar 2008 23:18:34 -0000      1.41
@@ -156,9 +156,19 @@
                cl=new builtin_function(&number_ctor, getNumberInterface());
                VM::get().addStatic(cl.get());
 
-               // We don't want to attach Number prototype methods to the 
Number
-               // class itself.
-               //attachNumberInterface(*cl); 
+               // constants flags
+               int cflags = 
as_prop_flags::dontEnum|as_prop_flags::dontDelete|as_prop_flags::readOnly;
+
+               // change __proto__ constructor and prototype to have constant 
flags..
+               as_value nullVal; nullVal.set_null();
+               cl->setPropFlags(nullVal, 0, cflags);
+
+               cl->init_member("MAX_VALUE", 
std::numeric_limits<double>::max(), cflags);
+               cl->init_member("MIN_VALUE", 
std::numeric_limits<double>::denorm_min(), cflags);
+               cl->init_member("NaN", as_value(NAN), cflags);
+               cl->init_member("POSITIVE_INFINITY", as_value(INFINITY), 
cflags);
+               cl->init_member("NEGATIVE_INFINITY", as_value(-INFINITY), 
cflags);
+
        }
 
        return cl;

Index: testsuite/actionscript.all/Number.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/Number.as,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -b -r1.43 -r1.44
--- testsuite/actionscript.all/Number.as        31 Mar 2008 12:19:11 -0000      
1.43
+++ testsuite/actionscript.all/Number.as        31 Mar 2008 23:18:34 -0000      
1.44
@@ -28,9 +28,30 @@
 //     
 
 
-rcsid="$Id: Number.as,v 1.43 2008/03/31 12:19:11 strk Exp $";
+rcsid="$Id: Number.as,v 1.44 2008/03/31 23:18:34 strk Exp $";
 #include "check.as"
 
+Number.hasOwnProperty = ASnative(101, 5);
+
+check(Number.hasOwnProperty('MAX_VALUE'));
+check_equals(typeof(Number.MAX_VALUE), "number");
+// gnash fails in rounding (ends in 2316, we round up to 232)
+// TODO: check that we're close, if not extremely accurate
+xcheck_equals(Number.MAX_VALUE.toString(), "1.79769313486231e+308");
+
+check(Number.hasOwnProperty('MIN_VALUE'));
+check_equals(typeof(Number.MIN_VALUE), "number");
+check_equals(Number.MIN_VALUE.toString(), "4.94065645841247e-324"); 
+
+check(Number.hasOwnProperty('NEGATIVE_INFINITY'));
+check_equals(Number.NEGATIVE_INFINITY, -Infinity);
+
+check(Number.hasOwnProperty('NaN'));
+check_equals(Number.NaN, NaN);
+
+check(Number.hasOwnProperty('POSITIVE_INFINITY'));
+check_equals(Number.POSITIVE_INFINITY, Infinity);
+
 var n1=new Number(268);
 check_equals(typeof(n1), 'object');
 var n1prim = Number(268);
@@ -477,11 +498,11 @@
 // END OF TEST
 
 #if OUTPUT_VERSION < 6
- check_totals(158);
+ check_totals(170);
 #else
 #if OUTPUT_VERSION < 7
- check_totals(171);
+ check_totals(183);
 #else
- check_totals(169);
+ check_totals(181);
 #endif
 #endif




reply via email to

[Prev in Thread] Current Thread [Next in Thread]