[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