[Top][All Lists]
[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