[Swfdec-commits] 2 commits - swfdec/swfdec_as_math.c test/trace

Pekka Lampila medar at kemper.freedesktop.org
Tue Jul 29 07:21:41 PDT 2008


 swfdec/swfdec_as_math.c                      |   20 +++++++---
 test/trace/Makefile.am                       |    9 ++++
 test/trace/math-function-valueOf-5.swf       |binary
 test/trace/math-function-valueOf-5.swf.trace |   54 +++++++++++++++++++++++++++
 test/trace/math-function-valueOf-6.swf       |binary
 test/trace/math-function-valueOf-6.swf.trace |   54 +++++++++++++++++++++++++++
 test/trace/math-function-valueOf-7.swf       |binary
 test/trace/math-function-valueOf-7.swf.trace |   54 +++++++++++++++++++++++++++
 test/trace/math-function-valueOf-8.swf       |binary
 test/trace/math-function-valueOf-8.swf.trace |   54 +++++++++++++++++++++++++++
 test/trace/math-function-valueOf.as          |   28 ++++++++++++++
 11 files changed, 267 insertions(+), 6 deletions(-)

New commits:
commit 3abd3f8b58218b505506e45a8615a04f798b1f9c
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Tue Jul 29 17:07:54 2008 +0300

    Add a test for valueOf calls from Math functions

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index b2b4fa9..9a84071 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -2010,6 +2010,15 @@ EXTRA_DIST = \
 	math-constants-6.swf.trace \
 	math-constants-7.swf \
 	math-constants-7.swf.trace \
+	math-function-valueOf.as \
+	math-function-valueOf-5.swf \
+	math-function-valueOf-5.swf.trace \
+	math-function-valueOf-6.swf \
+	math-function-valueOf-6.swf.trace \
+	math-function-valueOf-7.swf \
+	math-function-valueOf-7.swf.trace \
+	math-function-valueOf-8.swf \
+	math-function-valueOf-8.swf.trace \
 	math-properties.as \
 	math-properties-5.swf \
 	math-properties-5.swf.trace \
diff --git a/test/trace/math-function-valueOf-5.swf b/test/trace/math-function-valueOf-5.swf
new file mode 100644
index 0000000..dff3656
Binary files /dev/null and b/test/trace/math-function-valueOf-5.swf differ
diff --git a/test/trace/math-function-valueOf-5.swf.trace b/test/trace/math-function-valueOf-5.swf.trace
new file mode 100644
index 0000000..7209e2e
--- /dev/null
+++ b/test/trace/math-function-valueOf-5.swf.trace
@@ -0,0 +1,54 @@
+Testing: abs
+valueOf ();
+valueOf2 ();
+Testing: min
+valueOf ();
+valueOf2 ();
+Testing: max
+valueOf ();
+valueOf2 ();
+Testing: sin
+valueOf ();
+valueOf2 ();
+Testing: cos
+valueOf ();
+valueOf2 ();
+Testing: atan2
+valueOf ();
+valueOf2 ();
+Testing: tan
+valueOf ();
+valueOf2 ();
+Testing: exp
+valueOf ();
+valueOf2 ();
+Testing: log
+valueOf ();
+valueOf2 ();
+Testing: sqrt
+valueOf ();
+valueOf2 ();
+Testing: round
+valueOf ();
+valueOf2 ();
+Testing: random
+valueOf ();
+valueOf2 ();
+Testing: floor
+valueOf ();
+valueOf2 ();
+Testing: ceil
+valueOf ();
+valueOf2 ();
+Testing: atan
+valueOf ();
+valueOf2 ();
+Testing: asin
+valueOf ();
+valueOf2 ();
+Testing: acos
+valueOf ();
+valueOf2 ();
+Testing: pow
+valueOf ();
+valueOf2 ();
diff --git a/test/trace/math-function-valueOf-6.swf b/test/trace/math-function-valueOf-6.swf
new file mode 100644
index 0000000..9abf470
Binary files /dev/null and b/test/trace/math-function-valueOf-6.swf differ
diff --git a/test/trace/math-function-valueOf-6.swf.trace b/test/trace/math-function-valueOf-6.swf.trace
new file mode 100644
index 0000000..7209e2e
--- /dev/null
+++ b/test/trace/math-function-valueOf-6.swf.trace
@@ -0,0 +1,54 @@
+Testing: abs
+valueOf ();
+valueOf2 ();
+Testing: min
+valueOf ();
+valueOf2 ();
+Testing: max
+valueOf ();
+valueOf2 ();
+Testing: sin
+valueOf ();
+valueOf2 ();
+Testing: cos
+valueOf ();
+valueOf2 ();
+Testing: atan2
+valueOf ();
+valueOf2 ();
+Testing: tan
+valueOf ();
+valueOf2 ();
+Testing: exp
+valueOf ();
+valueOf2 ();
+Testing: log
+valueOf ();
+valueOf2 ();
+Testing: sqrt
+valueOf ();
+valueOf2 ();
+Testing: round
+valueOf ();
+valueOf2 ();
+Testing: random
+valueOf ();
+valueOf2 ();
+Testing: floor
+valueOf ();
+valueOf2 ();
+Testing: ceil
+valueOf ();
+valueOf2 ();
+Testing: atan
+valueOf ();
+valueOf2 ();
+Testing: asin
+valueOf ();
+valueOf2 ();
+Testing: acos
+valueOf ();
+valueOf2 ();
+Testing: pow
+valueOf ();
+valueOf2 ();
diff --git a/test/trace/math-function-valueOf-7.swf b/test/trace/math-function-valueOf-7.swf
new file mode 100644
index 0000000..f743436
Binary files /dev/null and b/test/trace/math-function-valueOf-7.swf differ
diff --git a/test/trace/math-function-valueOf-7.swf.trace b/test/trace/math-function-valueOf-7.swf.trace
new file mode 100644
index 0000000..7209e2e
--- /dev/null
+++ b/test/trace/math-function-valueOf-7.swf.trace
@@ -0,0 +1,54 @@
+Testing: abs
+valueOf ();
+valueOf2 ();
+Testing: min
+valueOf ();
+valueOf2 ();
+Testing: max
+valueOf ();
+valueOf2 ();
+Testing: sin
+valueOf ();
+valueOf2 ();
+Testing: cos
+valueOf ();
+valueOf2 ();
+Testing: atan2
+valueOf ();
+valueOf2 ();
+Testing: tan
+valueOf ();
+valueOf2 ();
+Testing: exp
+valueOf ();
+valueOf2 ();
+Testing: log
+valueOf ();
+valueOf2 ();
+Testing: sqrt
+valueOf ();
+valueOf2 ();
+Testing: round
+valueOf ();
+valueOf2 ();
+Testing: random
+valueOf ();
+valueOf2 ();
+Testing: floor
+valueOf ();
+valueOf2 ();
+Testing: ceil
+valueOf ();
+valueOf2 ();
+Testing: atan
+valueOf ();
+valueOf2 ();
+Testing: asin
+valueOf ();
+valueOf2 ();
+Testing: acos
+valueOf ();
+valueOf2 ();
+Testing: pow
+valueOf ();
+valueOf2 ();
diff --git a/test/trace/math-function-valueOf-8.swf b/test/trace/math-function-valueOf-8.swf
new file mode 100644
index 0000000..24635cc
Binary files /dev/null and b/test/trace/math-function-valueOf-8.swf differ
diff --git a/test/trace/math-function-valueOf-8.swf.trace b/test/trace/math-function-valueOf-8.swf.trace
new file mode 100644
index 0000000..7209e2e
--- /dev/null
+++ b/test/trace/math-function-valueOf-8.swf.trace
@@ -0,0 +1,54 @@
+Testing: abs
+valueOf ();
+valueOf2 ();
+Testing: min
+valueOf ();
+valueOf2 ();
+Testing: max
+valueOf ();
+valueOf2 ();
+Testing: sin
+valueOf ();
+valueOf2 ();
+Testing: cos
+valueOf ();
+valueOf2 ();
+Testing: atan2
+valueOf ();
+valueOf2 ();
+Testing: tan
+valueOf ();
+valueOf2 ();
+Testing: exp
+valueOf ();
+valueOf2 ();
+Testing: log
+valueOf ();
+valueOf2 ();
+Testing: sqrt
+valueOf ();
+valueOf2 ();
+Testing: round
+valueOf ();
+valueOf2 ();
+Testing: random
+valueOf ();
+valueOf2 ();
+Testing: floor
+valueOf ();
+valueOf2 ();
+Testing: ceil
+valueOf ();
+valueOf2 ();
+Testing: atan
+valueOf ();
+valueOf2 ();
+Testing: asin
+valueOf ();
+valueOf2 ();
+Testing: acos
+valueOf ();
+valueOf2 ();
+Testing: pow
+valueOf ();
+valueOf2 ();
diff --git a/test/trace/math-function-valueOf.as b/test/trace/math-function-valueOf.as
new file mode 100644
index 0000000..1cd8e2e
--- /dev/null
+++ b/test/trace/math-function-valueOf.as
@@ -0,0 +1,28 @@
+// makeswf -v 7 -s 200x150 -r 15 -o math-function-valueOf-7.swf math-function-valueOf.as
+
+func = {};
+func.valueOf = function () {
+    trace ("valueOf ();");
+    return 4.5;
+};
+
+func2 = {};
+func2.valueOf = function () {
+    trace ("valueOf2 ();");
+    return 5.5;
+};
+
+func3 = {};
+func3.valueOf = function () {
+    trace ("valueOf3 ();");
+    return 6.5;
+};
+
+var functions = String ("abs,min,max,sin,cos,atan2,tan,exp,log,sqrt,round,random,floor,ceil,atan,asin,acos,pow").split (",");
+
+for (var i = 0; i < functions.length; i++) {
+  trace ("Testing: " + functions[i]);
+  Math[functions[i]] (func, func2, func3);
+}
+
+getURL ("fscommand:quit");
commit 9177159ee0c6dcb838fe807e9c01f068cd2d67d8
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Tue Jul 29 17:06:05 2008 +0300

    Call valueOf for the two first arguments of Math functions always, used or not

diff --git a/swfdec/swfdec_as_math.c b/swfdec/swfdec_as_math.c
index 30b0c6e..7252943 100644
--- a/swfdec/swfdec_as_math.c
+++ b/swfdec/swfdec_as_math.c
@@ -32,14 +32,17 @@
 
 /*** AS CODE ***/
 
+// Note: All Math function call valueOf for two arguments, whether those are
+// needed or not
+
 #define MATH_FUN(name) \
 void \
 swfdec_as_math_ ## name (SwfdecAsContext *cx, SwfdecAsObject *object, \
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret) \
 { \
-  double d; \
+  double d, unused; \
 \
-  SWFDEC_AS_CHECK (0, NULL, "n", &d); \
+  SWFDEC_AS_CHECK (0, NULL, "n|n", &d, &unused); \
 \
   d = name (d); \
   SWFDEC_AS_VALUE_SET_NUMBER (ret, d); \
@@ -73,9 +76,9 @@ void
 swfdec_as_math_abs (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
-  double d;
+  double d, unused;
 
-  SWFDEC_AS_CHECK (0, NULL, "n", &d);
+  SWFDEC_AS_CHECK (0, NULL, "n|n", &d, &unused);
 
   SWFDEC_AS_VALUE_SET_NUMBER (ret, fabs (d));
 }
@@ -133,6 +136,11 @@ void
 swfdec_as_math_random (SwfdecAsContext *cx, SwfdecAsObject *object, 
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
+  double unused, unused2;
+
+  // generate valueOf
+  SWFDEC_AS_CHECK (0, NULL, "|nn", &unused, &unused2);
+
   SWFDEC_AS_VALUE_SET_NUMBER (ret, g_rand_double (cx->rand));
 }
 
@@ -141,9 +149,9 @@ void
 swfdec_as_math_round (SwfdecAsContext *cx, SwfdecAsObject *object, 
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
-  double d;
+  double d, unused;
 
-  SWFDEC_AS_CHECK (0, NULL, "n", &d);
+  SWFDEC_AS_CHECK (0, NULL, "n|n", &d, &unused);
 
   SWFDEC_AS_VALUE_SET_NUMBER (ret, floor (d + 0.5));
 }


More information about the Swfdec-commits mailing list