[Swfdec-commits] 3 commits - swfdec/swfdec_actor.c swfdec/swfdec_as_interpret.c swfdec/swfdec_as_movie_value.c swfdec/swfdec_as_object.c swfdec/swfdec_movie_asprops.c swfdec/swfdec_movie.c swfdec/swfdec_movie.h swfdec/swfdec_player.c swfdec/swfdec_resource.c swfdec/swfdec_sprite_movie_as.c swfdec/swfdec_sprite_movie.c test/trace vivified/ui
Benjamin Otte
company at kemper.freedesktop.org
Mon Nov 3 07:48:18 PST 2008
swfdec/swfdec_actor.c | 2
swfdec/swfdec_as_interpret.c | 4
swfdec/swfdec_as_movie_value.c | 4
swfdec/swfdec_as_object.c | 4
swfdec/swfdec_movie.c | 38 +-
swfdec/swfdec_movie.h | 2
swfdec/swfdec_movie_asprops.c | 6
swfdec/swfdec_player.c | 10
swfdec/swfdec_resource.c | 2
swfdec/swfdec_sprite_movie.c | 6
swfdec/swfdec_sprite_movie_as.c | 6
test/trace/Makefile.am | 18 +
test/trace/conversion-functions-5.swf |binary
test/trace/conversion-functions-5.swf.trace | 446 +++++++++++++++++++++++++++
test/trace/conversion-functions-6.swf |binary
test/trace/conversion-functions-6.swf.trace | 448 ++++++++++++++++++++++++++++
test/trace/conversion-functions-7.swf |binary
test/trace/conversion-functions-7.swf.trace | 448 ++++++++++++++++++++++++++++
test/trace/conversion-functions-8.swf |binary
test/trace/conversion-functions-8.swf.trace | 448 ++++++++++++++++++++++++++++
test/trace/conversion-functions.as | 17 +
test/trace/various-tests-5.swf |binary
test/trace/various-tests-5.swf.trace | 22 +
test/trace/various-tests-6.swf |binary
test/trace/various-tests-6.swf.trace | 25 +
test/trace/various-tests-7.swf |binary
test/trace/various-tests-7.swf.trace | 25 +
test/trace/various-tests-8.swf |binary
test/trace/various-tests-8.swf.trace | 25 +
test/trace/various-tests.as | 117 +++++++
vivified/ui/vivi_movie_list.c | 2
31 files changed, 2082 insertions(+), 43 deletions(-)
New commits:
commit 35fc7a031b4c61fb5216b43d987f1b193a6dc937
Author: Benjamin Otte <otte at gnome.org>
Date: Mon Nov 3 16:46:37 2008 +0100
name name variable correctly again
The previous name was to cause compiler erros, so I'd catch all cases
where it was used. It changed semantics slightly after all.
diff --git a/swfdec/swfdec_actor.c b/swfdec/swfdec_actor.c
index 27c1628..a35b7bf 100644
--- a/swfdec/swfdec_actor.c
+++ b/swfdec/swfdec_actor.c
@@ -304,7 +304,7 @@ swfdec_actor_queue_script_with_key (SwfdecActor *actor,
return;
/* can happen for mouse/keyboard events on the initial movie */
if (SWFDEC_MOVIE (actor)->resource->sandbox == NULL) {
- SWFDEC_INFO ("movie %s not yet initialized, skipping event", SWFDEC_MOVIE (actor)->nameasdf);
+ SWFDEC_INFO ("movie %s not yet initialized, skipping event", SWFDEC_MOVIE (actor)->name);
return;
}
diff --git a/swfdec/swfdec_as_interpret.c b/swfdec/swfdec_as_interpret.c
index 41bf69b..6ae6384 100644
--- a/swfdec/swfdec_as_interpret.c
+++ b/swfdec/swfdec_as_interpret.c
@@ -2770,7 +2770,7 @@ swfdec_action_remove_sprite (SwfdecAsContext *cx, guint action, const guint8 *da
SwfdecMovie *movie = swfdec_player_get_movie_from_value (SWFDEC_PLAYER (cx),
swfdec_as_stack_peek (cx, 1));
if (movie && swfdec_depth_classify (movie->depth) == SWFDEC_DEPTH_CLASS_DYNAMIC) {
- SWFDEC_LOG ("removing clip %s", movie->nameasdf);
+ SWFDEC_LOG ("removing clip %s", movie->name);
swfdec_movie_remove (movie);
} else {
SWFDEC_INFO ("cannot remove movie");
@@ -2803,7 +2803,7 @@ swfdec_action_clone_sprite (SwfdecAsContext *cx, guint action, const guint8 *dat
}
new_movie = swfdec_movie_duplicate (movie, new_name, depth);
if (new_movie) {
- SWFDEC_LOG ("duplicated %s as %s to depth %u", movie->nameasdf, new_movie->nameasdf, new_movie->depth);
+ SWFDEC_LOG ("duplicated %s as %s to depth %u", movie->name, new_movie->name, new_movie->depth);
}
}
swfdec_as_stack_pop_n (cx, 3);
diff --git a/swfdec/swfdec_as_movie_value.c b/swfdec/swfdec_as_movie_value.c
index 8c351b6..821c4af 100644
--- a/swfdec/swfdec_as_movie_value.c
+++ b/swfdec/swfdec_as_movie_value.c
@@ -52,8 +52,8 @@ swfdec_as_movie_value_new (SwfdecMovie *movie, const char *name)
val->names[n_names - 1] = name;
movie = movie->parent;
for (i = n_names - 2; movie; i--) {
- if (movie->nameasdf != SWFDEC_AS_STR_EMPTY) {
- val->names[i] = movie->nameasdf;
+ if (movie->name != SWFDEC_AS_STR_EMPTY) {
+ val->names[i] = movie->name;
} else {
val->names[i] = movie->as_value->names[i];
};
diff --git a/swfdec/swfdec_as_object.c b/swfdec/swfdec_as_object.c
index 0f83536..460edf7 100644
--- a/swfdec/swfdec_as_object.c
+++ b/swfdec/swfdec_as_object.c
@@ -1160,10 +1160,10 @@ swfdec_as_object_foreach (SwfdecAsObject *object, SwfdecAsVariableForeach func,
for (walk = movie->list; walk; walk = walk->next) {
SwfdecMovie *cur = walk->data;
- if (cur->nameasdf == SWFDEC_AS_STR_EMPTY)
+ if (cur->name == SWFDEC_AS_STR_EMPTY)
continue;
SWFDEC_AS_VALUE_SET_MOVIE (&val, cur);
- if (!func (object, cur->nameasdf, &val, 0, data))
+ if (!func (object, cur->name, &val, 0, data))
return FALSE;
}
}
diff --git a/swfdec/swfdec_movie.c b/swfdec/swfdec_movie.c
index d5202ca..8a3fba9 100644
--- a/swfdec/swfdec_movie.c
+++ b/swfdec/swfdec_movie.c
@@ -123,7 +123,7 @@ swfdec_movie_invalidate (SwfdecMovie *movie, const cairo_matrix_t *parent_to_glo
}
g_assert (movie->cache_state <= SWFDEC_MOVIE_INVALID_CHILDREN);
SWFDEC_LOG ("invalidating %s %s at %s", G_OBJECT_TYPE_NAME (movie),
- movie->nameasdf, new_contents ? "end" : "start");
+ movie->name, new_contents ? "end" : "start");
cairo_matrix_multiply (&matrix, &movie->matrix, parent_to_global);
klass = SWFDEC_MOVIE_GET_CLASS (movie);
klass->invalidate (movie, &matrix, new_contents);
@@ -354,7 +354,7 @@ swfdec_movie_do_remove (SwfdecMovie *movie, gboolean destroy)
{
SwfdecPlayer *player;
- SWFDEC_LOG ("removing %s %s", G_OBJECT_TYPE_NAME (movie), movie->nameasdf);
+ SWFDEC_LOG ("removing %s %s", G_OBJECT_TYPE_NAME (movie), movie->name);
player = SWFDEC_PLAYER (swfdec_gc_object_get_context (movie));
while (movie->list) {
@@ -420,7 +420,7 @@ swfdec_movie_destroy (SwfdecMovie *movie)
SwfdecPlayer *player = SWFDEC_PLAYER (swfdec_gc_object_get_context (movie));
g_assert (movie->state < SWFDEC_MOVIE_STATE_DESTROYED);
- SWFDEC_LOG ("destroying movie %s", movie->nameasdf);
+ SWFDEC_LOG ("destroying movie %s", movie->name);
while (movie->list) {
swfdec_movie_destroy (movie->list->data);
}
@@ -617,7 +617,7 @@ swfdec_movie_do_contains (SwfdecMovie *movie, double x, double y, gboolean event
SwfdecMovie *child = walk->data;
if (!child->visible) {
- SWFDEC_LOG ("%s %s (depth %d) is invisible, ignoring", G_OBJECT_TYPE_NAME (movie), movie->nameasdf, movie->depth);
+ SWFDEC_LOG ("%s %s (depth %d) is invisible, ignoring", G_OBJECT_TYPE_NAME (movie), movie->name, movie->depth);
continue;
}
got = swfdec_movie_get_movie_at (child, x, y, events);
@@ -792,7 +792,7 @@ swfdec_movie_render (SwfdecMovie *movie, cairo_t *cr,
if (movie->mask_of != NULL && !swfdec_color_transform_is_mask (color_transform)) {
SWFDEC_LOG ("not rendering %s %p, movie is a mask",
- G_OBJECT_TYPE_NAME (movie), movie->nameasdf);
+ G_OBJECT_TYPE_NAME (movie), movie->name);
return;
}
@@ -930,11 +930,11 @@ swfdec_movie_set_property (GObject *object, guint param_id, const GValue *value,
g_object_ref (movie->graphic);
break;
case PROP_NAME:
- movie->nameasdf = g_value_get_string (value);
- if (movie->nameasdf) {
- movie->nameasdf = swfdec_as_context_get_string (cx, movie->nameasdf);
+ movie->name = g_value_get_string (value);
+ if (movie->name) {
+ movie->name = swfdec_as_context_get_string (cx, movie->name);
} else {
- movie->nameasdf = SWFDEC_AS_STR_EMPTY;
+ movie->name = SWFDEC_AS_STR_EMPTY;
}
break;
case PROP_PARENT:
@@ -972,7 +972,7 @@ swfdec_movie_dispose (GObject *object)
g_assert (movie->list == NULL);
- SWFDEC_LOG ("disposing movie %s (depth %d)", movie->nameasdf, movie->depth);
+ SWFDEC_LOG ("disposing movie %s (depth %d)", movie->name, movie->depth);
if (movie->graphic) {
g_object_unref (movie->graphic);
movie->graphic = NULL;
@@ -1004,7 +1004,7 @@ swfdec_movie_mark (SwfdecGcObject *object)
swfdec_gc_object_mark (movie->parent);
if (movie->as_value)
swfdec_as_movie_value_mark (movie->as_value);
- swfdec_as_string_mark (movie->nameasdf);
+ swfdec_as_string_mark (movie->name);
g_list_foreach (movie->list, (GFunc) swfdec_gc_object_mark, NULL);
g_slist_foreach (movie->filters, (GFunc) swfdec_gc_object_mark, NULL);
@@ -1054,13 +1054,13 @@ swfdec_movie_get_by_name (SwfdecMovie *movie, const char *name, gboolean unnamed
for (walk = movie->list; walk; walk = walk->next) {
SwfdecMovie *cur = walk->data;
- if (swfdec_strcmp (version, cur->nameasdf, name) == 0) {
+ if (swfdec_strcmp (version, cur->name, name) == 0) {
if (swfdec_movie_is_scriptable (cur))
return cur;
else
return movie;
}
- if (unnamed && cur->nameasdf == SWFDEC_AS_STR_EMPTY) {
+ if (unnamed && cur->name == SWFDEC_AS_STR_EMPTY) {
if (swfdec_strcmp (version, cur->as_value->names[cur->as_value->n_names - 1], name) == 0) {
/* unnamed movies are always scriptable */
return cur;
@@ -1241,7 +1241,7 @@ swfdec_movie_do_render (SwfdecMovie *movie, cairo_t *cr,
clip->movie = child;
clip->depth = child->clip_depth;
SWFDEC_INFO ("clipping up to depth %d by using %s with depth %d", child->clip_depth,
- child->nameasdf, child->depth);
+ child->name, child->depth);
cairo_push_group (cr);
continue;
}
@@ -1307,12 +1307,12 @@ swfdec_movie_constructor (GType type, guint n_construct_properties,
/* the movie is created invalid */
priv->invalid_pending = g_slist_prepend (priv->invalid_pending, object);
- if (movie->nameasdf == SWFDEC_AS_STR_EMPTY &&
+ if (movie->name == SWFDEC_AS_STR_EMPTY &&
(swfdec_movie_is_scriptable (movie) || SWFDEC_IS_ACTOR (movie))) {
name = swfdec_as_context_give_string (cx,
g_strdup_printf ("instance%u", ++priv->unnamed_count));
} else {
- name = movie->nameasdf;
+ name = movie->name;
}
if (name != SWFDEC_AS_STR_EMPTY)
movie->as_value = swfdec_as_movie_value_new (movie, name);
@@ -1458,7 +1458,7 @@ swfdec_movie_set_static_properties (SwfdecMovie *movie, const cairo_matrix_t *tr
g_return_if_fail (ratio >= -1);
if (movie->modified) {
- SWFDEC_LOG ("%s has already been modified by scripts, ignoring updates", movie->nameasdf);
+ SWFDEC_LOG ("%s has already been modified by scripts, ignoring updates", movie->name);
return;
}
if (transform) {
@@ -1586,8 +1586,8 @@ swfdec_movie_get_path (SwfdecMovie *movie, gboolean dot)
s = g_string_new ("");
do {
if (movie->parent) {
- if (movie->nameasdf != SWFDEC_AS_STR_EMPTY) {
- g_string_prepend (s, movie->nameasdf);
+ if (movie->name != SWFDEC_AS_STR_EMPTY) {
+ g_string_prepend (s, movie->name);
} else if (movie->as_value) {
g_string_prepend (s, movie->as_value->names[movie->as_value->n_names - 1]);
} else {
diff --git a/swfdec/swfdec_movie.h b/swfdec/swfdec_movie.h
index 8ca92f5..dd437db 100644
--- a/swfdec/swfdec_movie.h
+++ b/swfdec/swfdec_movie.h
@@ -122,7 +122,7 @@ struct _SwfdecMovie {
SwfdecAsObject object;
SwfdecGraphic * graphic; /* graphic represented by this movie or NULL if script-created */
- const char * nameasdf; /* name of movie - GC'd */
+ const char * name; /* name of movie - GC'd */
GList * list; /* our contained movie clips (ordered by depth) */
int depth; /* depth of movie (equals content->depth unless explicitly set) */
SwfdecMovieCacheState cache_state; /* whether we are up to date */
diff --git a/swfdec/swfdec_movie_asprops.c b/swfdec/swfdec_movie_asprops.c
index 1961a1f..2009e85 100644
--- a/swfdec/swfdec_movie_asprops.c
+++ b/swfdec/swfdec_movie_asprops.c
@@ -138,13 +138,13 @@ mc_yscale_set (SwfdecMovie *movie, const SwfdecAsValue *val)
static void
mc_name_get (SwfdecMovie *movie, SwfdecAsValue *rval)
{
- SWFDEC_AS_VALUE_SET_STRING (rval, movie->nameasdf);
+ SWFDEC_AS_VALUE_SET_STRING (rval, movie->name);
}
static void
mc_name_set (SwfdecMovie *movie, const SwfdecAsValue *val)
{
- movie->nameasdf = swfdec_as_value_to_string (swfdec_gc_object_get_context (movie), val);
+ movie->name = swfdec_as_value_to_string (swfdec_gc_object_get_context (movie), val);
}
static void
@@ -353,7 +353,7 @@ mc_target_get (SwfdecMovie *movie, SwfdecAsValue *rval)
s = g_string_new ("");
while (movie->parent) {
- g_string_prepend (s, movie->nameasdf);
+ g_string_prepend (s, movie->name);
g_string_prepend_c (s, '/');
movie = movie->parent;
}
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index 80bfa84..b52f784 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -453,7 +453,7 @@ swfdec_player_add_action (SwfdecPlayer *player, SwfdecActor *actor,
g_return_if_fail (SWFDEC_IS_ACTOR (actor));
g_return_if_fail (importance < SWFDEC_PLAYER_N_ACTION_QUEUES);
- SWFDEC_LOG ("adding action %s %u", SWFDEC_MOVIE (actor)->nameasdf, type);
+ SWFDEC_LOG ("adding action %s %u", SWFDEC_MOVIE (actor)->name, type);
swfdec_player_do_add_action (player, importance, &action);
}
@@ -468,7 +468,7 @@ swfdec_player_add_action_script (SwfdecPlayer *player, SwfdecActor *actor,
g_return_if_fail (script != NULL);
g_return_if_fail (importance < SWFDEC_PLAYER_N_ACTION_QUEUES);
- SWFDEC_LOG ("adding action script %s %s", SWFDEC_MOVIE (actor)->nameasdf, script->name);
+ SWFDEC_LOG ("adding action script %s %s", SWFDEC_MOVIE (actor)->name, script->name);
swfdec_player_do_add_action (player, importance, &action);
}
@@ -1189,7 +1189,7 @@ swfdec_player_grab_focus (SwfdecPlayer *player, SwfdecActor *actor)
priv = player->priv;
if (actor == priv->focus) {
SWFDEC_DEBUG ("nothing to do, focus change request from movie %s to itself",
- actor ? SWFDEC_MOVIE (actor)->nameasdf : "---");
+ actor ? SWFDEC_MOVIE (actor)->name : "---");
return;
}
prev = priv->focus;
@@ -2615,7 +2615,7 @@ swfdec_player_create_movie_at_level (SwfdecPlayer *player, SwfdecResource *resou
/* create new root movie */
s = swfdec_as_context_give_string (SWFDEC_AS_CONTEXT (player), g_strdup_printf ("_level%d", level));
movie = swfdec_movie_new (player, level - 16384, NULL, resource, NULL, s);
- movie->nameasdf = SWFDEC_AS_STR_EMPTY;
+ movie->name = SWFDEC_AS_STR_EMPTY;
return SWFDEC_SPRITE_MOVIE (movie);
}
@@ -3798,7 +3798,7 @@ swfdec_player_set_url (SwfdecPlayer *player, const SwfdecURL *url)
priv->resource = swfdec_resource_new (player, loader, priv->variables);
movie = swfdec_movie_new (player, -16384, NULL, priv->resource, NULL, SWFDEC_AS_STR__level0);
SWFDEC_ACTOR (movie)->focusrect = SWFDEC_FLASH_YES;
- movie->nameasdf = SWFDEC_AS_STR_EMPTY;
+ movie->name = SWFDEC_AS_STR_EMPTY;
g_object_unref (loader);
g_object_notify (G_OBJECT (player), "url");
g_object_thaw_notify (G_OBJECT (player));
diff --git a/swfdec/swfdec_resource.c b/swfdec/swfdec_resource.c
index ad974d4..3dee52e 100644
--- a/swfdec/swfdec_resource.c
+++ b/swfdec/swfdec_resource.c
@@ -184,7 +184,7 @@ swfdec_resource_replace_movie (SwfdecSpriteMovie *movie, SwfdecResource *resourc
SwfdecMovie *copy;
copy = swfdec_movie_new (SWFDEC_PLAYER (swfdec_gc_object_get_context (movie)),
- mov->depth, mov->parent, resource, NULL, mov->nameasdf);
+ mov->depth, mov->parent, resource, NULL, mov->name);
if (copy == NULL)
return FALSE;
swfdec_movie_begin_update_matrix (copy);
diff --git a/swfdec/swfdec_sprite_movie.c b/swfdec/swfdec_sprite_movie.c
index 8f338a0..2dfbc42 100644
--- a/swfdec/swfdec_sprite_movie.c
+++ b/swfdec/swfdec_sprite_movie.c
@@ -79,7 +79,7 @@ swfdec_sprite_movie_perform_old_place (SwfdecSpriteMovie *movie,
dec = SWFDEC_SWF_DECODER (mov->resource->decoder);
- SWFDEC_LOG ("performing PlaceObject on movie %s", mov->nameasdf);
+ SWFDEC_LOG ("performing PlaceObject on movie %s", mov->name);
id = swfdec_bits_get_u16 (bits);
SWFDEC_LOG (" id = %d", id);
@@ -175,7 +175,7 @@ swfdec_sprite_movie_perform_place (SwfdecSpriteMovie *movie, SwfdecBits *bits, g
has_character = swfdec_bits_getbit (bits);
move = swfdec_bits_getbit (bits);
- SWFDEC_LOG ("performing PlaceObject%d on movie %s", tag == SWFDEC_TAG_PLACEOBJECT2 ? 2 : 3, mov->nameasdf);
+ SWFDEC_LOG ("performing PlaceObject%d on movie %s", tag == SWFDEC_TAG_PLACEOBJECT2 ? 2 : 3, mov->name);
SWFDEC_LOG (" has_clip_actions = %d", has_clip_actions);
SWFDEC_LOG (" has_clip_depth = %d", has_clip_depth);
SWFDEC_LOG (" has_name = %d", has_name);
@@ -323,7 +323,7 @@ swfdec_sprite_movie_perform_place (SwfdecSpriteMovie *movie, SwfdecBits *bits, g
has_ctrans ? &ctrans : NULL, ratio, clip_depth, blend_mode, events);
} else {
if (cur != NULL && version > 5) {
- SWFDEC_INFO ("depth %d is already occupied by movie %s, not placing", depth, cur->nameasdf);
+ SWFDEC_INFO ("depth %d is already occupied by movie %s, not placing", depth, cur->name);
goto out;
}
if (!SWFDEC_IS_GRAPHIC (graphic)) {
diff --git a/swfdec/swfdec_sprite_movie_as.c b/swfdec/swfdec_sprite_movie_as.c
index 2e667e0..cff5246 100644
--- a/swfdec/swfdec_sprite_movie_as.c
+++ b/swfdec/swfdec_sprite_movie_as.c
@@ -398,7 +398,7 @@ swfdec_sprite_movie_attachBitmap (SwfdecAsContext *cx, SwfdecAsObject *object,
swfdec_bitmap_movie_new (parent, SWFDEC_BITMAP_DATA (bitmap->relay), depth);
SWFDEC_LOG ("created new BitmapMovie to parent %s at depth %d",
- parent->nameasdf, depth);
+ parent->name, depth);
}
SWFDEC_AS_NATIVE (900, 26, swfdec_sprite_movie_getRect)
@@ -822,7 +822,7 @@ swfdec_sprite_movie_attachMovie (SwfdecAsContext *cx, SwfdecAsObject *object,
ret = swfdec_movie_new (SWFDEC_PLAYER (swfdec_gc_object_get_context (object)),
depth, movie, movie->resource, sprite, name);
SWFDEC_LOG ("attached %s (%u) as %s to depth %u", export, SWFDEC_CHARACTER (sprite)->id,
- ret->nameasdf, ret->depth);
+ ret->name, ret->depth);
/* run init and construct */
constructor = swfdec_player_get_export_class (SWFDEC_PLAYER (cx), export);
if (constructor == NULL) {
@@ -854,7 +854,7 @@ swfdec_sprite_movie_duplicateMovieClip (SwfdecAsContext *cx, SwfdecAsObject *obj
if (new == NULL)
return;
swfdec_sprite_movie_copy_props (new, movie);
- SWFDEC_LOG ("duplicated %s as %s to depth %u", movie->nameasdf, new->nameasdf, new->depth);
+ SWFDEC_LOG ("duplicated %s as %s to depth %u", movie->name, new->name, new->depth);
SWFDEC_AS_VALUE_SET_MOVIE (rval, new);
}
diff --git a/vivified/ui/vivi_movie_list.c b/vivified/ui/vivi_movie_list.c
index 01a88cd..4b6cbf5 100644
--- a/vivified/ui/vivi_movie_list.c
+++ b/vivified/ui/vivi_movie_list.c
@@ -125,7 +125,7 @@ vivi_movie_list_get_value (GtkTreeModel *tree_model, GtkTreeIter *iter,
return;
case VIVI_MOVIE_LIST_COLUMN_NAME:
g_value_init (value, G_TYPE_STRING);
- g_value_set_string (value, movie->nameasdf);
+ g_value_set_string (value, movie->name);
return;
case VIVI_MOVIE_LIST_COLUMN_DEPTH:
g_value_init (value, G_TYPE_INT);
commit f99e2db6715f7147458e29ac3b45f0a47ce7cc2e
Author: Benjamin Otte <otte at gnome.org>
Date: Mon Nov 3 16:31:13 2008 +0100
test how the primitive constructors convert values
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 7e7761a..dd3a4c3 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -806,6 +806,15 @@ EXTRA_DIST = \
context-menu-properties-7.swf.trace \
context-menu-properties-8.swf \
context-menu-properties-8.swf.trace \
+ conversion-functions-5.swf \
+ conversion-functions-5.swf.trace \
+ conversion-functions-6.swf \
+ conversion-functions-6.swf.trace \
+ conversion-functions-7.swf \
+ conversion-functions-7.swf.trace \
+ conversion-functions-8.swf \
+ conversion-functions-8.swf.trace \
+ conversion-functions.as \
convolution-filter-properties.as \
convolution-filter-properties-5.swf \
convolution-filter-properties-5.swf.trace \
diff --git a/test/trace/conversion-functions-5.swf b/test/trace/conversion-functions-5.swf
new file mode 100644
index 0000000..01bd168
Binary files /dev/null and b/test/trace/conversion-functions-5.swf differ
diff --git a/test/trace/conversion-functions-5.swf.trace b/test/trace/conversion-functions-5.swf.trace
new file mode 100644
index 0000000..27ff83e
--- /dev/null
+++ b/test/trace/conversion-functions-5.swf.trace
@@ -0,0 +1,446 @@
+valueOf called
+toString called
+toString called with
+valueOf called with
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+(0) (undefined)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: (object)
+(1) null (null)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: (object)
+(2) true (boolean)
+ Boolean: true (boolean)
+ Integer: 1 (number)
+ Number: 1 (number)
+ Object: true (object)
+(3) false (boolean)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: false (object)
+(4) 0 (number)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: 0 (object)
+(5) 1 (number)
+ Boolean: true (boolean)
+ Integer: 1 (number)
+ Number: 1 (number)
+ Object: 1 (object)
+(6) 0.5 (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: 0.5 (number)
+ Object: 0.5 (object)
+(7) -1 (number)
+ Boolean: true (boolean)
+ Integer: -1 (number)
+ Number: -1 (number)
+ Object: -1 (object)
+(8) -0.5 (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: -0.5 (number)
+ Object: -0.5 (object)
+(9) Infinity (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: Infinity (number)
+ Object: Infinity (object)
+(10) -Infinity (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: -Infinity (number)
+ Object: -Infinity (object)
+(11) NaN (number)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: NaN (object)
+(12) (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: (object)
+(13) 0 (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: 0 (object)
+(14) -0 (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: -0 (object)
+(15) 0.0 (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: 0.0 (object)
+(16) 1 (string)
+ Boolean: true (boolean)
+ Integer: 1 (number)
+ Number: 1 (number)
+ Object: 1 (object)
+(17) Hello World! (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: Hello World! (object)
+(18) true (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: true (object)
+(19) _level0 (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: _level0 (object)
+(20) äöü (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: äöü (object)
+(21) _level0 (movieclip)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: _level0 (movieclip)
+(22) [object Object] (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: [object Object] (object)
+(23) 103584024400.25 (object)
+ Boolean: true (boolean)
+ Integer: 504809296 (number)
+ Number: 103584024400.25 (number)
+ Object: 103584024400.25 (object)
+(24) (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: (object)
+(25) (undefined)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: (object)
+(26) [type Object] (object)
+ Boolean: true (boolean)
+valueOf called
+ Integer: 0 (number)
+valueOf called
+ Number: NaN (number)
+valueOf called
+toString called
+ Object: [type Object] (object)
+(27) [type Object] (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+toString called with
+ Object: [type Object] (object)
+(28) [object Object] (object)
+ Boolean: true (boolean)
+valueOf called with
+ Integer: 0 (number)
+valueOf called with
+ Number: NaN (number)
+valueOf called with
+ Object: [object Object] (object)
+(29) (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: (object)
+(30) (object)
+ Boolean: true (boolean)
+0: valueOf!
+ Integer: 0 (number)
+0: valueOf!
+ Number: 0 (number)
+0: valueOf!
+ Object: (object)
+(31) null (object)
+ Boolean: true (boolean)
+1: valueOf!
+ Integer: 0 (number)
+1: valueOf!
+ Number: 0 (number)
+1: valueOf!
+ Object: null (object)
+(32) true (object)
+ Boolean: true (boolean)
+2: valueOf!
+ Integer: 1 (number)
+2: valueOf!
+ Number: 1 (number)
+2: valueOf!
+ Object: true (object)
+(33) false (object)
+ Boolean: true (boolean)
+3: valueOf!
+ Integer: 0 (number)
+3: valueOf!
+ Number: 0 (number)
+3: valueOf!
+ Object: false (object)
+(34) 0 (object)
+ Boolean: true (boolean)
+4: valueOf!
+ Integer: 0 (number)
+4: valueOf!
+ Number: 0 (number)
+4: valueOf!
+ Object: 0 (object)
+(35) 1 (object)
+ Boolean: true (boolean)
+5: valueOf!
+ Integer: 1 (number)
+5: valueOf!
+ Number: 1 (number)
+5: valueOf!
+ Object: 1 (object)
+(36) 0.5 (object)
+ Boolean: true (boolean)
+6: valueOf!
+ Integer: 0 (number)
+6: valueOf!
+ Number: 0.5 (number)
+6: valueOf!
+ Object: 0.5 (object)
+(37) -1 (object)
+ Boolean: true (boolean)
+7: valueOf!
+ Integer: -1 (number)
+7: valueOf!
+ Number: -1 (number)
+7: valueOf!
+ Object: -1 (object)
+(38) -0.5 (object)
+ Boolean: true (boolean)
+8: valueOf!
+ Integer: 0 (number)
+8: valueOf!
+ Number: -0.5 (number)
+8: valueOf!
+ Object: -0.5 (object)
+(39) Infinity (object)
+ Boolean: true (boolean)
+9: valueOf!
+ Integer: 0 (number)
+9: valueOf!
+ Number: Infinity (number)
+9: valueOf!
+ Object: Infinity (object)
+(40) -Infinity (object)
+ Boolean: true (boolean)
+10: valueOf!
+ Integer: 0 (number)
+10: valueOf!
+ Number: -Infinity (number)
+10: valueOf!
+ Object: -Infinity (object)
+(41) NaN (object)
+ Boolean: true (boolean)
+11: valueOf!
+ Integer: 0 (number)
+11: valueOf!
+ Number: NaN (number)
+11: valueOf!
+ Object: NaN (object)
+(42) (object)
+ Boolean: true (boolean)
+12: valueOf!
+ Integer: 0 (number)
+12: valueOf!
+ Number: NaN (number)
+12: valueOf!
+ Object: (object)
+(43) 0 (object)
+ Boolean: true (boolean)
+13: valueOf!
+ Integer: 0 (number)
+13: valueOf!
+ Number: 0 (number)
+13: valueOf!
+ Object: 0 (object)
+(44) -0 (object)
+ Boolean: true (boolean)
+14: valueOf!
+ Integer: 0 (number)
+14: valueOf!
+ Number: 0 (number)
+14: valueOf!
+ Object: -0 (object)
+(45) 0.0 (object)
+ Boolean: true (boolean)
+15: valueOf!
+ Integer: 0 (number)
+15: valueOf!
+ Number: 0 (number)
+15: valueOf!
+ Object: 0.0 (object)
+(46) 1 (object)
+ Boolean: true (boolean)
+16: valueOf!
+ Integer: 1 (number)
+16: valueOf!
+ Number: 1 (number)
+16: valueOf!
+ Object: 1 (object)
+(47) Hello World! (object)
+ Boolean: true (boolean)
+17: valueOf!
+ Integer: 0 (number)
+17: valueOf!
+ Number: NaN (number)
+17: valueOf!
+ Object: Hello World! (object)
+(48) true (object)
+ Boolean: true (boolean)
+18: valueOf!
+ Integer: 0 (number)
+18: valueOf!
+ Number: NaN (number)
+18: valueOf!
+ Object: true (object)
+(49) _level0 (object)
+ Boolean: true (boolean)
+19: valueOf!
+ Integer: 0 (number)
+19: valueOf!
+ Number: NaN (number)
+19: valueOf!
+ Object: _level0 (object)
+(50) äöü (object)
+ Boolean: true (boolean)
+20: valueOf!
+ Integer: 0 (number)
+20: valueOf!
+ Number: NaN (number)
+20: valueOf!
+ Object: äöü (object)
+(51) _level0 (object)
+ Boolean: true (boolean)
+21: valueOf!
+ Integer: 0 (number)
+21: valueOf!
+ Number: NaN (number)
+21: valueOf!
+ Object: _level0 (object)
+(52) [type Object] (object)
+ Boolean: true (boolean)
+22: valueOf!
+ Integer: 0 (number)
+22: valueOf!
+ Number: NaN (number)
+22: valueOf!
+22: toString!
+ Object: [type Object] (object)
+(53) [type Object] (object)
+ Boolean: true (boolean)
+23: valueOf!
+ Integer: 0 (number)
+23: valueOf!
+ Number: NaN (number)
+23: valueOf!
+23: toString!
+ Object: [type Object] (object)
+(54) [type Object] (object)
+ Boolean: true (boolean)
+24: valueOf!
+ Integer: 0 (number)
+24: valueOf!
+ Number: NaN (number)
+24: valueOf!
+24: toString!
+ Object: [type Object] (object)
+(55) (object)
+ Boolean: true (boolean)
+25: valueOf!
+ Integer: 0 (number)
+25: valueOf!
+ Number: 0 (number)
+25: valueOf!
+ Object: (object)
+(56) [type Object] (object)
+ Boolean: true (boolean)
+26: valueOf!
+ Integer: 0 (number)
+26: valueOf!
+ Number: NaN (number)
+26: valueOf!
+26: toString!
+ Object: [type Object] (object)
+(57) [type Object] (object)
+ Boolean: true (boolean)
+27: valueOf!
+ Integer: 0 (number)
+27: valueOf!
+ Number: NaN (number)
+27: valueOf!
+27: toString!
+ Object: [type Object] (object)
+(58) [type Object] (object)
+ Boolean: true (boolean)
+28: valueOf!
+ Integer: 0 (number)
+28: valueOf!
+ Number: NaN (number)
+28: valueOf!
+28: toString!
+ Object: [type Object] (object)
+(59) [type Object] (object)
+ Boolean: true (boolean)
+29: valueOf!
+ Integer: 0 (number)
+29: valueOf!
+ Number: NaN (number)
+29: valueOf!
+29: toString!
+ Object: [type Object] (object)
diff --git a/test/trace/conversion-functions-6.swf b/test/trace/conversion-functions-6.swf
new file mode 100644
index 0000000..7527e8f
Binary files /dev/null and b/test/trace/conversion-functions-6.swf differ
diff --git a/test/trace/conversion-functions-6.swf.trace b/test/trace/conversion-functions-6.swf.trace
new file mode 100644
index 0000000..cc21f05
--- /dev/null
+++ b/test/trace/conversion-functions-6.swf.trace
@@ -0,0 +1,448 @@
+valueOf called
+toString called
+toString called with
+valueOf called with
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+25: toString!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+(0) (undefined)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: (object)
+(1) null (null)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: (object)
+(2) true (boolean)
+ Boolean: true (boolean)
+ Integer: 1 (number)
+ Number: 1 (number)
+ Object: true (object)
+(3) false (boolean)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: false (object)
+(4) 0 (number)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: 0 (object)
+(5) 1 (number)
+ Boolean: true (boolean)
+ Integer: 1 (number)
+ Number: 1 (number)
+ Object: 1 (object)
+(6) 0.5 (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: 0.5 (number)
+ Object: 0.5 (object)
+(7) -1 (number)
+ Boolean: true (boolean)
+ Integer: -1 (number)
+ Number: -1 (number)
+ Object: -1 (object)
+(8) -0.5 (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: -0.5 (number)
+ Object: -0.5 (object)
+(9) Infinity (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: Infinity (number)
+ Object: Infinity (object)
+(10) -Infinity (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: -Infinity (number)
+ Object: -Infinity (object)
+(11) NaN (number)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: NaN (object)
+(12) (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: (object)
+(13) 0 (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: 0 (object)
+(14) -0 (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: -0 (object)
+(15) 0.0 (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: 0.0 (object)
+(16) 1 (string)
+ Boolean: true (boolean)
+ Integer: 1 (number)
+ Number: 1 (number)
+ Object: 1 (object)
+(17) Hello World! (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: Hello World! (object)
+(18) true (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: true (object)
+(19) _level0 (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: _level0 (object)
+(20) äöü (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: äöü (object)
+(21) _level0 (movieclip)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: _level0 (movieclip)
+(22) [object Object] (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: [object Object] (object)
+(23) Fri Apr 13 21:20:24 GMT+0000 1973 (object)
+ Boolean: true (boolean)
+ Integer: 504809296 (number)
+ Number: 103584024400.25 (number)
+ Object: Fri Apr 13 21:20:24 GMT+0000 1973 (object)
+(24) (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: (object)
+(25) [type Function] (function)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: [type Function] (function)
+(26) [type Object] (object)
+ Boolean: true (boolean)
+valueOf called
+ Integer: 0 (number)
+valueOf called
+ Number: NaN (number)
+valueOf called
+toString called
+ Object: [type Object] (object)
+(27) [type Object] (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+toString called with
+ Object: [type Object] (object)
+(28) [object Object] (object)
+ Boolean: true (boolean)
+valueOf called with
+ Integer: 0 (number)
+valueOf called with
+ Number: NaN (number)
+valueOf called with
+ Object: [object Object] (object)
+(29) (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: (object)
+(30) (object)
+ Boolean: true (boolean)
+0: valueOf!
+ Integer: 0 (number)
+0: valueOf!
+ Number: 0 (number)
+0: valueOf!
+ Object: (object)
+(31) null (object)
+ Boolean: true (boolean)
+1: valueOf!
+ Integer: 0 (number)
+1: valueOf!
+ Number: 0 (number)
+1: valueOf!
+ Object: null (object)
+(32) true (object)
+ Boolean: true (boolean)
+2: valueOf!
+ Integer: 1 (number)
+2: valueOf!
+ Number: 1 (number)
+2: valueOf!
+ Object: true (object)
+(33) false (object)
+ Boolean: true (boolean)
+3: valueOf!
+ Integer: 0 (number)
+3: valueOf!
+ Number: 0 (number)
+3: valueOf!
+ Object: false (object)
+(34) 0 (object)
+ Boolean: true (boolean)
+4: valueOf!
+ Integer: 0 (number)
+4: valueOf!
+ Number: 0 (number)
+4: valueOf!
+ Object: 0 (object)
+(35) 1 (object)
+ Boolean: true (boolean)
+5: valueOf!
+ Integer: 1 (number)
+5: valueOf!
+ Number: 1 (number)
+5: valueOf!
+ Object: 1 (object)
+(36) 0.5 (object)
+ Boolean: true (boolean)
+6: valueOf!
+ Integer: 0 (number)
+6: valueOf!
+ Number: 0.5 (number)
+6: valueOf!
+ Object: 0.5 (object)
+(37) -1 (object)
+ Boolean: true (boolean)
+7: valueOf!
+ Integer: -1 (number)
+7: valueOf!
+ Number: -1 (number)
+7: valueOf!
+ Object: -1 (object)
+(38) -0.5 (object)
+ Boolean: true (boolean)
+8: valueOf!
+ Integer: 0 (number)
+8: valueOf!
+ Number: -0.5 (number)
+8: valueOf!
+ Object: -0.5 (object)
+(39) Infinity (object)
+ Boolean: true (boolean)
+9: valueOf!
+ Integer: 0 (number)
+9: valueOf!
+ Number: Infinity (number)
+9: valueOf!
+ Object: Infinity (object)
+(40) -Infinity (object)
+ Boolean: true (boolean)
+10: valueOf!
+ Integer: 0 (number)
+10: valueOf!
+ Number: -Infinity (number)
+10: valueOf!
+ Object: -Infinity (object)
+(41) NaN (object)
+ Boolean: true (boolean)
+11: valueOf!
+ Integer: 0 (number)
+11: valueOf!
+ Number: NaN (number)
+11: valueOf!
+ Object: NaN (object)
+(42) (object)
+ Boolean: true (boolean)
+12: valueOf!
+ Integer: 0 (number)
+12: valueOf!
+ Number: NaN (number)
+12: valueOf!
+ Object: (object)
+(43) 0 (object)
+ Boolean: true (boolean)
+13: valueOf!
+ Integer: 0 (number)
+13: valueOf!
+ Number: 0 (number)
+13: valueOf!
+ Object: 0 (object)
+(44) -0 (object)
+ Boolean: true (boolean)
+14: valueOf!
+ Integer: 0 (number)
+14: valueOf!
+ Number: 0 (number)
+14: valueOf!
+ Object: -0 (object)
+(45) 0.0 (object)
+ Boolean: true (boolean)
+15: valueOf!
+ Integer: 0 (number)
+15: valueOf!
+ Number: 0 (number)
+15: valueOf!
+ Object: 0.0 (object)
+(46) 1 (object)
+ Boolean: true (boolean)
+16: valueOf!
+ Integer: 1 (number)
+16: valueOf!
+ Number: 1 (number)
+16: valueOf!
+ Object: 1 (object)
+(47) Hello World! (object)
+ Boolean: true (boolean)
+17: valueOf!
+ Integer: 0 (number)
+17: valueOf!
+ Number: NaN (number)
+17: valueOf!
+ Object: Hello World! (object)
+(48) true (object)
+ Boolean: true (boolean)
+18: valueOf!
+ Integer: 0 (number)
+18: valueOf!
+ Number: NaN (number)
+18: valueOf!
+ Object: true (object)
+(49) _level0 (object)
+ Boolean: true (boolean)
+19: valueOf!
+ Integer: 0 (number)
+19: valueOf!
+ Number: NaN (number)
+19: valueOf!
+ Object: _level0 (object)
+(50) äöü (object)
+ Boolean: true (boolean)
+20: valueOf!
+ Integer: 0 (number)
+20: valueOf!
+ Number: NaN (number)
+20: valueOf!
+ Object: äöü (object)
+(51) _level0 (object)
+ Boolean: true (boolean)
+21: valueOf!
+ Integer: 0 (number)
+21: valueOf!
+ Number: NaN (number)
+21: valueOf!
+ Object: _level0 (object)
+(52) [type Object] (object)
+ Boolean: true (boolean)
+22: valueOf!
+ Integer: 0 (number)
+22: valueOf!
+ Number: NaN (number)
+22: valueOf!
+22: toString!
+ Object: [type Object] (object)
+(53) [type Object] (object)
+ Boolean: true (boolean)
+23: valueOf!
+ Integer: 0 (number)
+23: valueOf!
+ Number: NaN (number)
+23: valueOf!
+23: toString!
+ Object: [type Object] (object)
+(54) [type Object] (object)
+ Boolean: true (boolean)
+24: valueOf!
+ Integer: 0 (number)
+24: valueOf!
+ Number: NaN (number)
+24: valueOf!
+24: toString!
+ Object: [type Object] (object)
+(55) [type Object] (object)
+ Boolean: true (boolean)
+25: valueOf!
+ Integer: 0 (number)
+25: valueOf!
+ Number: NaN (number)
+25: valueOf!
+25: toString!
+ Object: [type Object] (object)
+(56) [type Object] (object)
+ Boolean: true (boolean)
+26: valueOf!
+ Integer: 0 (number)
+26: valueOf!
+ Number: NaN (number)
+26: valueOf!
+26: toString!
+ Object: [type Object] (object)
+(57) [type Object] (object)
+ Boolean: true (boolean)
+27: valueOf!
+ Integer: 0 (number)
+27: valueOf!
+ Number: NaN (number)
+27: valueOf!
+27: toString!
+ Object: [type Object] (object)
+(58) [type Object] (object)
+ Boolean: true (boolean)
+28: valueOf!
+ Integer: 0 (number)
+28: valueOf!
+ Number: NaN (number)
+28: valueOf!
+28: toString!
+ Object: [type Object] (object)
+(59) [type Object] (object)
+ Boolean: true (boolean)
+29: valueOf!
+ Integer: 0 (number)
+29: valueOf!
+ Number: NaN (number)
+29: valueOf!
+29: toString!
+ Object: [type Object] (object)
diff --git a/test/trace/conversion-functions-7.swf b/test/trace/conversion-functions-7.swf
new file mode 100644
index 0000000..ca47b75
Binary files /dev/null and b/test/trace/conversion-functions-7.swf differ
diff --git a/test/trace/conversion-functions-7.swf.trace b/test/trace/conversion-functions-7.swf.trace
new file mode 100644
index 0000000..51b2b5e
--- /dev/null
+++ b/test/trace/conversion-functions-7.swf.trace
@@ -0,0 +1,448 @@
+valueOf called
+toString called
+toString called with
+valueOf called with
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+25: toString!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+(0) undefined (undefined)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: undefined (object)
+(1) null (null)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: undefined (object)
+(2) true (boolean)
+ Boolean: true (boolean)
+ Integer: 1 (number)
+ Number: 1 (number)
+ Object: true (object)
+(3) false (boolean)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: false (object)
+(4) 0 (number)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: 0 (object)
+(5) 1 (number)
+ Boolean: true (boolean)
+ Integer: 1 (number)
+ Number: 1 (number)
+ Object: 1 (object)
+(6) 0.5 (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: 0.5 (number)
+ Object: 0.5 (object)
+(7) -1 (number)
+ Boolean: true (boolean)
+ Integer: -1 (number)
+ Number: -1 (number)
+ Object: -1 (object)
+(8) -0.5 (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: -0.5 (number)
+ Object: -0.5 (object)
+(9) Infinity (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: Infinity (number)
+ Object: Infinity (object)
+(10) -Infinity (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: -Infinity (number)
+ Object: -Infinity (object)
+(11) NaN (number)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: NaN (object)
+(12) (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: (object)
+(13) 0 (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: 0 (object)
+(14) -0 (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: -0 (object)
+(15) 0.0 (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: 0.0 (object)
+(16) 1 (string)
+ Boolean: true (boolean)
+ Integer: 1 (number)
+ Number: 1 (number)
+ Object: 1 (object)
+(17) Hello World! (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: Hello World! (object)
+(18) true (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: true (object)
+(19) _level0 (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: _level0 (object)
+(20) äöü (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: äöü (object)
+(21) _level0 (movieclip)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: _level0 (movieclip)
+(22) [object Object] (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: [object Object] (object)
+(23) Fri Apr 13 21:20:24 GMT+0000 1973 (object)
+ Boolean: true (boolean)
+ Integer: 504809296 (number)
+ Number: 103584024400.25 (number)
+ Object: Fri Apr 13 21:20:24 GMT+0000 1973 (object)
+(24) (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: (object)
+(25) [type Function] (function)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: [type Function] (function)
+(26) [type Object] (object)
+ Boolean: true (boolean)
+valueOf called
+ Integer: 0 (number)
+valueOf called
+ Number: NaN (number)
+valueOf called
+toString called
+ Object: [type Object] (object)
+(27) [type Object] (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+toString called with
+ Object: [type Object] (object)
+(28) [object Object] (object)
+ Boolean: true (boolean)
+valueOf called with
+ Integer: 0 (number)
+valueOf called with
+ Number: NaN (number)
+valueOf called with
+ Object: [object Object] (object)
+(29) undefined (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: undefined (object)
+(30) undefined (object)
+ Boolean: true (boolean)
+0: valueOf!
+ Integer: 0 (number)
+0: valueOf!
+ Number: NaN (number)
+0: valueOf!
+ Object: undefined (object)
+(31) null (object)
+ Boolean: true (boolean)
+1: valueOf!
+ Integer: 0 (number)
+1: valueOf!
+ Number: NaN (number)
+1: valueOf!
+ Object: null (object)
+(32) true (object)
+ Boolean: true (boolean)
+2: valueOf!
+ Integer: 1 (number)
+2: valueOf!
+ Number: 1 (number)
+2: valueOf!
+ Object: true (object)
+(33) false (object)
+ Boolean: true (boolean)
+3: valueOf!
+ Integer: 0 (number)
+3: valueOf!
+ Number: 0 (number)
+3: valueOf!
+ Object: false (object)
+(34) 0 (object)
+ Boolean: true (boolean)
+4: valueOf!
+ Integer: 0 (number)
+4: valueOf!
+ Number: 0 (number)
+4: valueOf!
+ Object: 0 (object)
+(35) 1 (object)
+ Boolean: true (boolean)
+5: valueOf!
+ Integer: 1 (number)
+5: valueOf!
+ Number: 1 (number)
+5: valueOf!
+ Object: 1 (object)
+(36) 0.5 (object)
+ Boolean: true (boolean)
+6: valueOf!
+ Integer: 0 (number)
+6: valueOf!
+ Number: 0.5 (number)
+6: valueOf!
+ Object: 0.5 (object)
+(37) -1 (object)
+ Boolean: true (boolean)
+7: valueOf!
+ Integer: -1 (number)
+7: valueOf!
+ Number: -1 (number)
+7: valueOf!
+ Object: -1 (object)
+(38) -0.5 (object)
+ Boolean: true (boolean)
+8: valueOf!
+ Integer: 0 (number)
+8: valueOf!
+ Number: -0.5 (number)
+8: valueOf!
+ Object: -0.5 (object)
+(39) Infinity (object)
+ Boolean: true (boolean)
+9: valueOf!
+ Integer: 0 (number)
+9: valueOf!
+ Number: Infinity (number)
+9: valueOf!
+ Object: Infinity (object)
+(40) -Infinity (object)
+ Boolean: true (boolean)
+10: valueOf!
+ Integer: 0 (number)
+10: valueOf!
+ Number: -Infinity (number)
+10: valueOf!
+ Object: -Infinity (object)
+(41) NaN (object)
+ Boolean: true (boolean)
+11: valueOf!
+ Integer: 0 (number)
+11: valueOf!
+ Number: NaN (number)
+11: valueOf!
+ Object: NaN (object)
+(42) (object)
+ Boolean: true (boolean)
+12: valueOf!
+ Integer: 0 (number)
+12: valueOf!
+ Number: NaN (number)
+12: valueOf!
+ Object: (object)
+(43) 0 (object)
+ Boolean: true (boolean)
+13: valueOf!
+ Integer: 0 (number)
+13: valueOf!
+ Number: 0 (number)
+13: valueOf!
+ Object: 0 (object)
+(44) -0 (object)
+ Boolean: true (boolean)
+14: valueOf!
+ Integer: 0 (number)
+14: valueOf!
+ Number: 0 (number)
+14: valueOf!
+ Object: -0 (object)
+(45) 0.0 (object)
+ Boolean: true (boolean)
+15: valueOf!
+ Integer: 0 (number)
+15: valueOf!
+ Number: 0 (number)
+15: valueOf!
+ Object: 0.0 (object)
+(46) 1 (object)
+ Boolean: true (boolean)
+16: valueOf!
+ Integer: 1 (number)
+16: valueOf!
+ Number: 1 (number)
+16: valueOf!
+ Object: 1 (object)
+(47) Hello World! (object)
+ Boolean: true (boolean)
+17: valueOf!
+ Integer: 0 (number)
+17: valueOf!
+ Number: NaN (number)
+17: valueOf!
+ Object: Hello World! (object)
+(48) true (object)
+ Boolean: true (boolean)
+18: valueOf!
+ Integer: 0 (number)
+18: valueOf!
+ Number: NaN (number)
+18: valueOf!
+ Object: true (object)
+(49) _level0 (object)
+ Boolean: true (boolean)
+19: valueOf!
+ Integer: 0 (number)
+19: valueOf!
+ Number: NaN (number)
+19: valueOf!
+ Object: _level0 (object)
+(50) äöü (object)
+ Boolean: true (boolean)
+20: valueOf!
+ Integer: 0 (number)
+20: valueOf!
+ Number: NaN (number)
+20: valueOf!
+ Object: äöü (object)
+(51) _level0 (object)
+ Boolean: true (boolean)
+21: valueOf!
+ Integer: 0 (number)
+21: valueOf!
+ Number: NaN (number)
+21: valueOf!
+ Object: _level0 (object)
+(52) [type Object] (object)
+ Boolean: true (boolean)
+22: valueOf!
+ Integer: 0 (number)
+22: valueOf!
+ Number: NaN (number)
+22: valueOf!
+22: toString!
+ Object: [type Object] (object)
+(53) [type Object] (object)
+ Boolean: true (boolean)
+23: valueOf!
+ Integer: 0 (number)
+23: valueOf!
+ Number: NaN (number)
+23: valueOf!
+23: toString!
+ Object: [type Object] (object)
+(54) [type Object] (object)
+ Boolean: true (boolean)
+24: valueOf!
+ Integer: 0 (number)
+24: valueOf!
+ Number: NaN (number)
+24: valueOf!
+24: toString!
+ Object: [type Object] (object)
+(55) [type Object] (object)
+ Boolean: true (boolean)
+25: valueOf!
+ Integer: 0 (number)
+25: valueOf!
+ Number: NaN (number)
+25: valueOf!
+25: toString!
+ Object: [type Object] (object)
+(56) [type Object] (object)
+ Boolean: true (boolean)
+26: valueOf!
+ Integer: 0 (number)
+26: valueOf!
+ Number: NaN (number)
+26: valueOf!
+26: toString!
+ Object: [type Object] (object)
+(57) [type Object] (object)
+ Boolean: true (boolean)
+27: valueOf!
+ Integer: 0 (number)
+27: valueOf!
+ Number: NaN (number)
+27: valueOf!
+27: toString!
+ Object: [type Object] (object)
+(58) [type Object] (object)
+ Boolean: true (boolean)
+28: valueOf!
+ Integer: 0 (number)
+28: valueOf!
+ Number: NaN (number)
+28: valueOf!
+28: toString!
+ Object: [type Object] (object)
+(59) [type Object] (object)
+ Boolean: true (boolean)
+29: valueOf!
+ Integer: 0 (number)
+29: valueOf!
+ Number: NaN (number)
+29: valueOf!
+29: toString!
+ Object: [type Object] (object)
diff --git a/test/trace/conversion-functions-8.swf b/test/trace/conversion-functions-8.swf
new file mode 100644
index 0000000..1c407f1
Binary files /dev/null and b/test/trace/conversion-functions-8.swf differ
diff --git a/test/trace/conversion-functions-8.swf.trace b/test/trace/conversion-functions-8.swf.trace
new file mode 100644
index 0000000..51b2b5e
--- /dev/null
+++ b/test/trace/conversion-functions-8.swf.trace
@@ -0,0 +1,448 @@
+valueOf called
+toString called
+toString called with
+valueOf called with
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+25: toString!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+(0) undefined (undefined)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: undefined (object)
+(1) null (null)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: undefined (object)
+(2) true (boolean)
+ Boolean: true (boolean)
+ Integer: 1 (number)
+ Number: 1 (number)
+ Object: true (object)
+(3) false (boolean)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: false (object)
+(4) 0 (number)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: 0 (object)
+(5) 1 (number)
+ Boolean: true (boolean)
+ Integer: 1 (number)
+ Number: 1 (number)
+ Object: 1 (object)
+(6) 0.5 (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: 0.5 (number)
+ Object: 0.5 (object)
+(7) -1 (number)
+ Boolean: true (boolean)
+ Integer: -1 (number)
+ Number: -1 (number)
+ Object: -1 (object)
+(8) -0.5 (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: -0.5 (number)
+ Object: -0.5 (object)
+(9) Infinity (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: Infinity (number)
+ Object: Infinity (object)
+(10) -Infinity (number)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: -Infinity (number)
+ Object: -Infinity (object)
+(11) NaN (number)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: NaN (object)
+(12) (string)
+ Boolean: false (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: (object)
+(13) 0 (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: 0 (object)
+(14) -0 (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: -0 (object)
+(15) 0.0 (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: 0 (number)
+ Object: 0.0 (object)
+(16) 1 (string)
+ Boolean: true (boolean)
+ Integer: 1 (number)
+ Number: 1 (number)
+ Object: 1 (object)
+(17) Hello World! (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: Hello World! (object)
+(18) true (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: true (object)
+(19) _level0 (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: _level0 (object)
+(20) äöü (string)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: äöü (object)
+(21) _level0 (movieclip)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: _level0 (movieclip)
+(22) [object Object] (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: [object Object] (object)
+(23) Fri Apr 13 21:20:24 GMT+0000 1973 (object)
+ Boolean: true (boolean)
+ Integer: 504809296 (number)
+ Number: 103584024400.25 (number)
+ Object: Fri Apr 13 21:20:24 GMT+0000 1973 (object)
+(24) (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: (object)
+(25) [type Function] (function)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: [type Function] (function)
+(26) [type Object] (object)
+ Boolean: true (boolean)
+valueOf called
+ Integer: 0 (number)
+valueOf called
+ Number: NaN (number)
+valueOf called
+toString called
+ Object: [type Object] (object)
+(27) [type Object] (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+toString called with
+ Object: [type Object] (object)
+(28) [object Object] (object)
+ Boolean: true (boolean)
+valueOf called with
+ Integer: 0 (number)
+valueOf called with
+ Number: NaN (number)
+valueOf called with
+ Object: [object Object] (object)
+(29) undefined (object)
+ Boolean: true (boolean)
+ Integer: 0 (number)
+ Number: NaN (number)
+ Object: undefined (object)
+(30) undefined (object)
+ Boolean: true (boolean)
+0: valueOf!
+ Integer: 0 (number)
+0: valueOf!
+ Number: NaN (number)
+0: valueOf!
+ Object: undefined (object)
+(31) null (object)
+ Boolean: true (boolean)
+1: valueOf!
+ Integer: 0 (number)
+1: valueOf!
+ Number: NaN (number)
+1: valueOf!
+ Object: null (object)
+(32) true (object)
+ Boolean: true (boolean)
+2: valueOf!
+ Integer: 1 (number)
+2: valueOf!
+ Number: 1 (number)
+2: valueOf!
+ Object: true (object)
+(33) false (object)
+ Boolean: true (boolean)
+3: valueOf!
+ Integer: 0 (number)
+3: valueOf!
+ Number: 0 (number)
+3: valueOf!
+ Object: false (object)
+(34) 0 (object)
+ Boolean: true (boolean)
+4: valueOf!
+ Integer: 0 (number)
+4: valueOf!
+ Number: 0 (number)
+4: valueOf!
+ Object: 0 (object)
+(35) 1 (object)
+ Boolean: true (boolean)
+5: valueOf!
+ Integer: 1 (number)
+5: valueOf!
+ Number: 1 (number)
+5: valueOf!
+ Object: 1 (object)
+(36) 0.5 (object)
+ Boolean: true (boolean)
+6: valueOf!
+ Integer: 0 (number)
+6: valueOf!
+ Number: 0.5 (number)
+6: valueOf!
+ Object: 0.5 (object)
+(37) -1 (object)
+ Boolean: true (boolean)
+7: valueOf!
+ Integer: -1 (number)
+7: valueOf!
+ Number: -1 (number)
+7: valueOf!
+ Object: -1 (object)
+(38) -0.5 (object)
+ Boolean: true (boolean)
+8: valueOf!
+ Integer: 0 (number)
+8: valueOf!
+ Number: -0.5 (number)
+8: valueOf!
+ Object: -0.5 (object)
+(39) Infinity (object)
+ Boolean: true (boolean)
+9: valueOf!
+ Integer: 0 (number)
+9: valueOf!
+ Number: Infinity (number)
+9: valueOf!
+ Object: Infinity (object)
+(40) -Infinity (object)
+ Boolean: true (boolean)
+10: valueOf!
+ Integer: 0 (number)
+10: valueOf!
+ Number: -Infinity (number)
+10: valueOf!
+ Object: -Infinity (object)
+(41) NaN (object)
+ Boolean: true (boolean)
+11: valueOf!
+ Integer: 0 (number)
+11: valueOf!
+ Number: NaN (number)
+11: valueOf!
+ Object: NaN (object)
+(42) (object)
+ Boolean: true (boolean)
+12: valueOf!
+ Integer: 0 (number)
+12: valueOf!
+ Number: NaN (number)
+12: valueOf!
+ Object: (object)
+(43) 0 (object)
+ Boolean: true (boolean)
+13: valueOf!
+ Integer: 0 (number)
+13: valueOf!
+ Number: 0 (number)
+13: valueOf!
+ Object: 0 (object)
+(44) -0 (object)
+ Boolean: true (boolean)
+14: valueOf!
+ Integer: 0 (number)
+14: valueOf!
+ Number: 0 (number)
+14: valueOf!
+ Object: -0 (object)
+(45) 0.0 (object)
+ Boolean: true (boolean)
+15: valueOf!
+ Integer: 0 (number)
+15: valueOf!
+ Number: 0 (number)
+15: valueOf!
+ Object: 0.0 (object)
+(46) 1 (object)
+ Boolean: true (boolean)
+16: valueOf!
+ Integer: 1 (number)
+16: valueOf!
+ Number: 1 (number)
+16: valueOf!
+ Object: 1 (object)
+(47) Hello World! (object)
+ Boolean: true (boolean)
+17: valueOf!
+ Integer: 0 (number)
+17: valueOf!
+ Number: NaN (number)
+17: valueOf!
+ Object: Hello World! (object)
+(48) true (object)
+ Boolean: true (boolean)
+18: valueOf!
+ Integer: 0 (number)
+18: valueOf!
+ Number: NaN (number)
+18: valueOf!
+ Object: true (object)
+(49) _level0 (object)
+ Boolean: true (boolean)
+19: valueOf!
+ Integer: 0 (number)
+19: valueOf!
+ Number: NaN (number)
+19: valueOf!
+ Object: _level0 (object)
+(50) äöü (object)
+ Boolean: true (boolean)
+20: valueOf!
+ Integer: 0 (number)
+20: valueOf!
+ Number: NaN (number)
+20: valueOf!
+ Object: äöü (object)
+(51) _level0 (object)
+ Boolean: true (boolean)
+21: valueOf!
+ Integer: 0 (number)
+21: valueOf!
+ Number: NaN (number)
+21: valueOf!
+ Object: _level0 (object)
+(52) [type Object] (object)
+ Boolean: true (boolean)
+22: valueOf!
+ Integer: 0 (number)
+22: valueOf!
+ Number: NaN (number)
+22: valueOf!
+22: toString!
+ Object: [type Object] (object)
+(53) [type Object] (object)
+ Boolean: true (boolean)
+23: valueOf!
+ Integer: 0 (number)
+23: valueOf!
+ Number: NaN (number)
+23: valueOf!
+23: toString!
+ Object: [type Object] (object)
+(54) [type Object] (object)
+ Boolean: true (boolean)
+24: valueOf!
+ Integer: 0 (number)
+24: valueOf!
+ Number: NaN (number)
+24: valueOf!
+24: toString!
+ Object: [type Object] (object)
+(55) [type Object] (object)
+ Boolean: true (boolean)
+25: valueOf!
+ Integer: 0 (number)
+25: valueOf!
+ Number: NaN (number)
+25: valueOf!
+25: toString!
+ Object: [type Object] (object)
+(56) [type Object] (object)
+ Boolean: true (boolean)
+26: valueOf!
+ Integer: 0 (number)
+26: valueOf!
+ Number: NaN (number)
+26: valueOf!
+26: toString!
+ Object: [type Object] (object)
+(57) [type Object] (object)
+ Boolean: true (boolean)
+27: valueOf!
+ Integer: 0 (number)
+27: valueOf!
+ Number: NaN (number)
+27: valueOf!
+27: toString!
+ Object: [type Object] (object)
+(58) [type Object] (object)
+ Boolean: true (boolean)
+28: valueOf!
+ Integer: 0 (number)
+28: valueOf!
+ Number: NaN (number)
+28: valueOf!
+28: toString!
+ Object: [type Object] (object)
+(59) [type Object] (object)
+ Boolean: true (boolean)
+29: valueOf!
+ Integer: 0 (number)
+29: valueOf!
+ Number: NaN (number)
+29: valueOf!
+29: toString!
+ Object: [type Object] (object)
diff --git a/test/trace/conversion-functions.as b/test/trace/conversion-functions.as
new file mode 100644
index 0000000..faf40c3
--- /dev/null
+++ b/test/trace/conversion-functions.as
@@ -0,0 +1,17 @@
+// makeswf -v 7 -s 200x150 -r 1 -o conversion-functions.swf conversion-functions.as
+
+#include "values.as"
+
+for (i = 0; i < values.length; i++) {
+ trace (names[i]);
+ x = Boolean (values[i]);
+ trace (" Boolean: " + x + " (" + typeof (x) + ")");
+ x = int (values[i]);
+ trace (" Integer: " + x + " (" + typeof (x) + ")");
+ x = Number (values[i]);
+ trace (" Number: " + x + " (" + typeof (x) + ")");
+ x = Object(values[i]);
+ trace (" Object: " + x + " (" + typeof (x) + ")");
+}
+
+getURL ("fscommand:quit", "");
commit 6eaa8eaee1becae183d7bd76e24145be0fd877cb
Author: Benjamin Otte <otte at gnome.org>
Date: Mon Nov 3 16:23:19 2008 +0100
add various tests that appeared during refactoring
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index bd8c091..7e7761a 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -4353,6 +4353,15 @@ EXTRA_DIST = \
utf-32-be-bom.txt \
utf-32-le-bom.txt \
values.as \
+ various-tests-5.swf \
+ various-tests-5.swf.trace \
+ various-tests-6.swf \
+ various-tests-6.swf.trace \
+ various-tests-7.swf \
+ various-tests-7.swf.trace \
+ various-tests-8.swf \
+ various-tests-8.swf.trace \
+ various-tests.as \
version4-global.sc \
version4-global.swf \
version4-global.swf.trace \
diff --git a/test/trace/various-tests-5.swf b/test/trace/various-tests-5.swf
new file mode 100644
index 0000000..83a0e46
Binary files /dev/null and b/test/trace/various-tests-5.swf differ
diff --git a/test/trace/various-tests-5.swf.trace b/test/trace/various-tests-5.swf.trace
new file mode 100644
index 0000000..111d27d
--- /dev/null
+++ b/test/trace/various-tests-5.swf.trace
@@ -0,0 +1,22 @@
+undefined
+undefined
+undefined
+undefined
+false
+undefined
+undefined
+undefined
+50
+[object Object]
+[type Object]
+toString
+42
+toString
+/
+/
+0
+0
+/
+42
+42
+[type Object]
diff --git a/test/trace/various-tests-6.swf b/test/trace/various-tests-6.swf
new file mode 100644
index 0000000..5ae66ad
Binary files /dev/null and b/test/trace/various-tests-6.swf differ
diff --git a/test/trace/various-tests-6.swf.trace b/test/trace/various-tests-6.swf.trace
new file mode 100644
index 0000000..c699cde
--- /dev/null
+++ b/test/trace/various-tests-6.swf.trace
@@ -0,0 +1,25 @@
+foo
+undefined
+_level0.a
+undefined
+undefined
+false
+1
+2
+3
+50
+[object Object]
+[type Object]
+toString
+42
+toString
+/b/b
+/
+0
+0
+/
+42
+42
+[type Object]
+not quitting, HAHA
+quitting
diff --git a/test/trace/various-tests-7.swf b/test/trace/various-tests-7.swf
new file mode 100644
index 0000000..25a15fc
Binary files /dev/null and b/test/trace/various-tests-7.swf differ
diff --git a/test/trace/various-tests-7.swf.trace b/test/trace/various-tests-7.swf.trace
new file mode 100644
index 0000000..c699cde
--- /dev/null
+++ b/test/trace/various-tests-7.swf.trace
@@ -0,0 +1,25 @@
+foo
+undefined
+_level0.a
+undefined
+undefined
+false
+1
+2
+3
+50
+[object Object]
+[type Object]
+toString
+42
+toString
+/b/b
+/
+0
+0
+/
+42
+42
+[type Object]
+not quitting, HAHA
+quitting
diff --git a/test/trace/various-tests-8.swf b/test/trace/various-tests-8.swf
new file mode 100644
index 0000000..15591c1
Binary files /dev/null and b/test/trace/various-tests-8.swf differ
diff --git a/test/trace/various-tests-8.swf.trace b/test/trace/various-tests-8.swf.trace
new file mode 100644
index 0000000..7176563
--- /dev/null
+++ b/test/trace/various-tests-8.swf.trace
@@ -0,0 +1,25 @@
+foo
+undefined
+_level0.a
+undefined
+(a=1, b=0, c=0, d=1, tx=0, ty=0)
+false
+1
+2
+3
+50
+[object Object]
+[type Object]
+toString
+42
+toString
+/b/b
+/
+0
+0
+/
+42
+42
+[type Object]
+not quitting, HAHA
+quitting
diff --git a/test/trace/various-tests.as b/test/trace/various-tests.as
new file mode 100644
index 0000000..80de246
--- /dev/null
+++ b/test/trace/various-tests.as
@@ -0,0 +1,117 @@
+// makeswf -v 7 -s 200x150 -r 1 -o various-tests.swf various-tests.as
+
+/* check if ASBroadcaster requires an Array in _listeners */
+o = {};
+AsBroadcaster.initialize (o);
+o._listeners = this;
+this.length = 1;
+this[0] = { foo: function () { trace ("foo"); } };
+o.broadcastMessage ("foo");
+
+
+/* check if Transform works on dead matrices */
+createEmptyMovieClip ("a", 0);
+no = a;
+a.removeMovieClip ();
+t = new flash.geom.Transform (no);
+trace (t.matrix);
+createEmptyMovieClip ("a", 0);
+trace (no);
+trace (t.matrix);
+t = new flash.geom.Transform (no);
+trace (t.matrix);
+delete t;
+
+
+/* check if objects are equal that return the same thing from valueOf */
+x = { valueOf: function () { return o; } };
+y = { valueOf: function () { return o; } };
+trace (x == y);
+
+
+/* check if setInterval works with deleted (and recreated) movies */
+createEmptyMovieClip ("a", 1000);
+trace (setInterval (no, "quit", 500));
+a.removeMovieClip ();
+trace (setInterval (no, "quit2", 500));
+createEmptyMovieClip ("a", 1000);
+a.quit = function () {
+ trace ("not quitting, HAHA");
+ getURL ("fscommand:quit", "");
+};
+a.quit2 = function () {
+ trace ("quitting");
+ getURL ("fscommand:quit", "");
+};
+
+createEmptyMovieClip ("b", 1);
+b.trace = function () { trace ("hello"); };
+trace (setInterval (b, "trace", 500));
+b.removeMovieClip ();
+
+
+/* check if Color.setTransform works with all types of objects */
+this.aa = 50;
+c = new Color (this);
+c.setTransform (this);
+trace (_alpha);
+
+
+/* check what undefined does as argument to Object */
+trace (new Object (undefined));
+trace (Object (undefined));
+
+
+/* check when setMember action calls [[ToName]] */
+o.toString = function () { trace ("toString"); return "x"; };
+asm {
+ push "o"
+ getvariable
+ dup
+ push 42
+ setmember
+};
+trace (o.x);
+asm {
+ push 42, "o"
+ getvariable
+ push 42
+ setmember
+};
+
+
+/* check what deleting the target does */
+createEmptyMovieClip ("b", 0);
+b.createEmptyMovieClip ("b", 0);
+setTarget ("b.b");
+trace (_target);
+_parent.removeMovieClip ();
+trace (_target);
+
+
+/* check what Number does without args */
+trace (new Number ());
+trace (Number ());
+
+
+/* check what object functions are set on upon declaration */
+createEmptyMovieClip ("b", 0);
+setTarget ("b");
+function f () { trace (_target); };
+setTarget ("");
+f();
+a.f();
+
+
+/* check if native functions get executed when run as constructor */
+x = new Array.prototype.push (42);
+trace (x[0]);
+
+
+/* check something with var (what was this supposed to be about?) */
+function test () {
+ var x = 42;
+ trace (x);
+}
+test ();
+trace (x);
More information about the Swfdec-commits
mailing list