gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] /srv/bzr/gnash/trunk r11651: Organize trace tests better


From: Benjamin Wolsey
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r11651: Organize trace tests better in their own subdirectories so that they
Date: Wed, 25 Nov 2009 17:52:44 +0100
User-agent: Bazaar (1.16.1)

------------------------------------------------------------
revno: 11651 [merge]
committer: Benjamin Wolsey <address@hidden>
branch nick: trunk
timestamp: Wed 2009-11-25 17:52:44 +0100
message:
  Organize trace tests better in their own subdirectories so that they
  aren't mixed up with other tests and are easier to skip when Gnash isn't
  built with AS3 support.
removed:
  testsuite/misc-swfmill.all/PASSING
  testsuite/misc-swfmill.all/scope1.trace
  testsuite/misc-swfmill.all/scope1.xml
  testsuite/misc-swfmill.all/stack1.trace
  testsuite/misc-swfmill.all/stack1.xml
  testsuite/misc-swfmill.all/super.trace
  testsuite/misc-swfmill.all/super.xml
added:
  testsuite/misc-swfmill.all/trace-as2/
  testsuite/misc-swfmill.all/trace-as2/Makefile.am
  testsuite/misc-swfmill.all/trace-as2/PASSING
  testsuite/misc-swfmill.all/trace-as2/super.trace
  testsuite/misc-swfmill.all/trace-as2/super.xml
  testsuite/misc-swfmill.all/trace-as3/
  testsuite/misc-swfmill.all/trace-as3/Makefile.am
  testsuite/misc-swfmill.all/trace-as3/PASSING
  testsuite/misc-swfmill.all/trace-as3/earlyshowframe.trace
  testsuite/misc-swfmill.all/trace-as3/earlyshowframe.xml
  testsuite/misc-swfmill.all/trace-as3/earlysymbolclass.trace
  testsuite/misc-swfmill.all/trace-as3/earlysymbolclass.xml
  testsuite/misc-swfmill.all/trace-as3/noshowframe.trace
  testsuite/misc-swfmill.all/trace-as3/noshowframe.xml
  testsuite/misc-swfmill.all/trace-as3/scope1.trace
  testsuite/misc-swfmill.all/trace-as3/scope1.xml
  testsuite/misc-swfmill.all/trace-as3/stack1.trace
  testsuite/misc-swfmill.all/trace-as3/stack1.xml
modified:
  configure.ac
  libcore/asobj/flash/xml/XMLDocument_as.h
  libcore/asobj/flash/xml/XMLNode_as.cpp
  testsuite/misc-swfmill.all/Makefile.am
  testsuite/misc-swfmill.all/gen-swfmill-trace-runner.sh
=== modified file 'configure.ac'
--- a/configure.ac      2009-11-05 09:17:32 +0000
+++ b/configure.ac      2009-11-25 11:20:17 +0000
@@ -2381,6 +2381,8 @@
 testsuite/misc-haxe.all/Makefile
 testsuite/misc-haxe.all/classes.all/Makefile
 testsuite/misc-swfmill.all/Makefile
+testsuite/misc-swfmill.all/trace-as2/Makefile
+testsuite/misc-swfmill.all/trace-as3/Makefile
 testsuite/misc-swfc.all/Makefile
 testsuite/network.all/Makefile
 testsuite/movies.all/Makefile

=== modified file 'libcore/asobj/flash/xml/XMLDocument_as.h'
--- a/libcore/asobj/flash/xml/XMLDocument_as.h  2009-08-26 07:58:52 +0000
+++ b/libcore/asobj/flash/xml/XMLDocument_as.h  2009-11-24 09:55:47 +0000
@@ -39,7 +39,6 @@
 // Forward declarations
 class fn_call;
 class URL;
-class LoaderThread;
 
 /// Implements XML (AS2) and flash.xml.XMLDocument (AS3) class.
 //

=== modified file 'libcore/asobj/flash/xml/XMLNode_as.cpp'
--- a/libcore/asobj/flash/xml/XMLNode_as.cpp    2009-11-18 13:05:53 +0000
+++ b/libcore/asobj/flash/xml/XMLNode_as.cpp    2009-11-24 09:57:07 +0000
@@ -45,7 +45,8 @@
 
 // Function Prototypes
 namespace {
-    void enumerateAttributes(const XMLNode_as& node, 
PropertyList::SortedPropertyList&attributes);
+    void enumerateAttributes(const XMLNode_as& node,
+            PropertyList::SortedPropertyList& attributes);
     bool prefixMatches(const PropertyList::SortedPropertyList::value_type& val,
             const std::string& prefix);
     bool namespaceMatches(

=== modified file 'testsuite/misc-swfmill.all/Makefile.am'
--- a/testsuite/misc-swfmill.all/Makefile.am    2009-11-23 16:44:15 +0000
+++ b/testsuite/misc-swfmill.all/Makefile.am    2009-11-25 15:19:08 +0000
@@ -21,6 +21,19 @@
 abs_topbuilddir=$(shell cd $(top_builddir); pwd)
 abs_builddir=$(shell cd $(top_builddir)/testsuite/misc-swfmill.all; pwd)
 
+if ENABLE_AVM2
+if SWFMILL_AS3_SUPPORT
+DIR_TRACE_AS3 = trace-as3
+endif
+endif
+
+SUBDIRS = trace-as2 $(DIR_TRACE_AS3)
+
+DIST_SUBDIRS = \
+       trace-as2 \
+       trace-as3 \
+       $(NULL)
+
 ## Self-contained XML tests
 SC_AS2_XMLTESTS =                      \
        mixed-bytecode-as2.xml  \
@@ -41,30 +54,8 @@
 
 # XML tests that rely on comparing trace output.
 
-TRACE_AS2_TESTS = \
-       super.xml \
-       $(NULL) 
-
-TRACE_AS2_TRACES = \
-       super.trace \
-       $(NULL) 
-
-TRACE_AS3_TESTS = \
-       scope1.xml \
-       stack1.xml \
-       $(NULL)
-
-TRACE_AS3_TRACES = \
-       scope1.trace \
-       stack1.trace \
-       $(NULL)
-
 EXTRA_DIST = $(SC_AS2_XMLTESTS) \
             $(SC_AS3_XMLTESTS) \
-                $(TRACE_AS2_TESTS) \
-            $(TRACE_AS2_TRACES) \
-                $(TRACE_AS3_TESTS) \
-            $(TRACE_AS3_TRACES) \
             gen-swfmill-trace-runner.sh \
             $(NULL)
 
@@ -81,26 +72,12 @@
        -I$(top_srcdir)/testsuite \
        $(NULL)
 
-TRACE_TESTS = $(TRACE_AS2_TESTS)
-TRACES = $(TRACE_AS2_TRACES)
 SC_XMLTESTS_OUT = $(SC_AS2_XMLTESTS:.xml=.swf)
 
-
-if ENABLE_AVM2
-if SWFMILL_AS3_SUPPORT
-TRACE_TESTS += $(TRACE_AS3_TESTS)
-TRACES += $(TRACE_AS3_TRACES)
-SC_XMLTESTS_OUT += $(SC_AS3_XMLTESTS:.xml=.swf)
-endif
-endif
-
-TRACE_XMLTESTS_OUT = $(TRACE_TESTS:.xml=.swf)
-
 # Dependencies for all self-contained SWF tests
 $(SC_XMLTESTS_OUT) : 
 
 check_SCRIPTS = \
-       trace-test-runner       \
        mixed-bytecode-as2-runner       \
        jump_after_end-runner   \
        jump_to_prev_block-runner       \
@@ -111,22 +88,10 @@
        Try-without-jump-runner \
        $(NULL)
 
-if ENABLE_AVM2
-if SWFMILL_AS3_SUPPORT
-check_SCRIPTS += \
-       mixed-bytecode-as3-runner       \
-       $(NULL)
-endif
-endif
-
 check_PROGRAMS = \
        backgroundTestRunner \
        $(NULL)
 
-trace-test-runner: $(srcdir)/gen-swfmill-trace-runner.sh $(TRACE_AS3_TESTS) 
$(TRACE_XMLTESTS_OUT)
-       sh $< $(srcdir) $(builddir) > $@
-       chmod 755 $@
-
 mixed-bytecode-as3-runner: $(srcdir)/../generic-testrunner.sh 
mixed-bytecode-as3.swf Makefile
        sh $< -r 50 -c "AS3" $(top_builddir) mixed-bytecode-as3.swf > $@
        chmod 755 $@

=== removed file 'testsuite/misc-swfmill.all/PASSING'
--- a/testsuite/misc-swfmill.all/PASSING        2009-11-23 16:44:15 +0000
+++ b/testsuite/misc-swfmill.all/PASSING        1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
-stack1
-super

=== modified file 'testsuite/misc-swfmill.all/gen-swfmill-trace-runner.sh'
--- a/testsuite/misc-swfmill.all/gen-swfmill-trace-runner.sh    2009-06-26 
12:45:04 +0000
+++ b/testsuite/misc-swfmill.all/gen-swfmill-trace-runner.sh    2009-11-25 
11:19:40 +0000
@@ -9,7 +9,7 @@
 BUILDDIR=$2
 PASSFILE="${TESTDIR}/PASSING"
 
-TESTER="${BUILDDIR}/../../utilities/gprocessor -v -r0 -f 10 "
+TESTER="${BUILDDIR}/../../../utilities/gprocessor -v -r0 -f 10 "
 
 cat<<EOF
 #!/bin/sh

=== removed file 'testsuite/misc-swfmill.all/scope1.trace'
--- a/testsuite/misc-swfmill.all/scope1.trace   2009-06-25 07:58:18 +0000
+++ b/testsuite/misc-swfmill.all/scope1.trace   1970-01-01 00:00:00 +0000
@@ -1,13 +0,0 @@
-3
-A.f()
-[object A]
-[class Sprite]
-[class Sprite]
-[class Sprite]
-[class Sprite]
-2
-1
-[object A]
-[class EventDispatcher]
-[class EventDispatcher]
-[class EventDispatcher]

=== removed file 'testsuite/misc-swfmill.all/scope1.xml'
--- a/testsuite/misc-swfmill.all/scope1.xml     2009-06-29 14:39:23 +0000
+++ b/testsuite/misc-swfmill.all/scope1.xml     1970-01-01 00:00:00 +0000
@@ -1,265 +0,0 @@
-<?xml version="1.0"?>
-<swf version="9" compressed="1">
-  <Header framerate="25" frames="1">
-    <size>
-      <Rectangle left="0" right="8000" top="0" bottom="6000"/>
-    </size>
-    <tags>
-      <FileAttributes hasMetaData="0" allowABC="1" 
suppressCrossDomainCaching="0" swfRelativeURLs="0" useNetwork="0"/>
-      <DoABCDefine flags="0" name="">
-        <actions>
-          <Action3 minorVersion="16" majorVersion="46">
-            <constants>
-              <Constants>
-                <ints/>
-                <uints/>
-                <doubles/>
-                <strings>
-                  <String2 value="A.f()"/>
-                  <String2 value="A"/>
-                  <String2 value="MovieClip"/>
-                  <String2 value="f"/>
-                  <String2 value="Object"/>
-                  <String2 value="EventDispatcher"/>
-                  <String2 value="DisplayObject"/>
-                  <String2 value="InteractiveObject"/>
-                  <String2 value="DisplayObjectContainer"/>
-                  <String2 value="Sprite"/>
-                  <String2 value="trace"/>
-                  <String2 value="a"/>
-                  <String2 value="flash.display"/>
-                  <String2 value=""/>
-                  <String2 value="flash.events"/>
-                </strings>
-                <namespaces>
-                  <ProtectedNamespace index="2"/>
-                  <PackageNamespace index="12"/>
-                  <PackageNamespace index="13"/>
-                  <PackageNamespace index="14"/>
-                  <PackageNamespace index="15"/>
-                </namespaces>
-                <namespaceSets/>
-                <multinames>
-                  <QName namespaceIndex="2" nameIndex="2"/>
-                  <QName namespaceIndex="3" nameIndex="3"/>
-                  <QName namespaceIndex="4" nameIndex="4"/>
-                  <QName namespaceIndex="4" nameIndex="5"/>
-                  <QName namespaceIndex="5" nameIndex="6"/>
-                  <QName namespaceIndex="3" nameIndex="7"/>
-                  <QName namespaceIndex="3" nameIndex="8"/>
-                  <QName namespaceIndex="3" nameIndex="9"/>
-                  <QName namespaceIndex="3" nameIndex="10"/>
-                  <QName namespaceIndex="4" nameIndex="11"/>
-                </multinames>
-              </Constants>
-            </constants>
-            <methods>
-              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
-                <paramTypes/>
-              </MethodInfo>
-              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
-                <paramTypes/>
-              </MethodInfo>
-              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
-                <paramTypes/>
-              </MethodInfo>
-              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
-                <paramTypes/>
-              </MethodInfo>
-            </methods>
-            <metadata/>
-            <instances>
-              <InstanceInfo nameIndex="1" superIndex="2" hasProtectedNS="1" 
interface="0" final="0" sealed="1" protectedNS="1" iInitIndex="2">
-                <interfaces/>
-                <traits>
-                  <TraitInfo nameIndex="3" override="0" final="0">
-                    <trait>
-                      <Method dispID="1" methodInfo="1"/>
-                    </trait>
-                  </TraitInfo>
-                </traits>
-              </InstanceInfo>
-            </instances>
-            <classes>
-              <ClassInfo cInitIndex="3">
-                <traits/>
-              </ClassInfo>
-            </classes>
-            <scripts>
-              <ScriptInfo initIndex="0">
-                <traits>
-                  <TraitInfo nameIndex="1" override="0" final="0">
-                    <trait>
-                      <Class slotID="1" classInfo="0"/>
-                    </trait>
-                  </TraitInfo>
-                </traits>
-              </ScriptInfo>
-            </scripts>
-            <methodBodies>
-              <MethodBody methodInfo="0" maxStack="3" maxRegs="1" 
scopeDepth="0" maxScope="8" exceptionCount="0">
-                <code>
-                  <OpGetLocal0/>
-                  <OpPushScope/>
-                  <OpGetGlobalScope/>
-                  <OpGetLex name="2"/>
-                  <OpDup/>
-                  <OpPushScope/>
-                  <OpNewClass classIndex="0"/>
-                  <OpPopScope/>
-                  <OpSetSlot slotID="1"/>
-                  <OpReturnVoid/>
-                </code>
-                <exceptions/>
-                <traits/>
-              </MethodBody>
-
-              <!-- This is function A.f() -->
-              <!--
-              Its purpose is to push things onto the stack and the scope
-              stack and leave them there to see whether they are still
-              available after return.
-              Ideally we would also verify that the stack and the scope stack
-              from before this function call are not available, but this causes
-              VerifyErrors that interrupt execution.
-              -->
-              <MethodBody methodInfo="1" maxStack="8" maxRegs="1" 
scopeDepth="5" maxScope="14" exceptionCount="0">
-                <code>
-
-                  <!-- OpPop and OpPopScope cause a scope stack
-                  underflow error, so we don't do it. -->
-
-                  <OpFindPropStrict name="10"/>
-                  <OpPushString index="1"/>
-                  <OpCallPropVoid name="10" argc="1"/>
-
-                  <!-- Push junk to the stack -->
-                  <OpPushByte value="9"/>
-                  <OpPushByte value="9"/>
-                  <OpPushByte value="9"/>
-                  <OpPushByte value="9"/>
-                  <OpPushByte value="9"/>
-                  
-                  <!-- Push junk to the scope stack (first A.A, then
-                  4 Sprite classes) -->
-                  <OpGetLocal0/>
-                  <OpPushScope/>
-                  <OpGetGlobalScope/>
-                  <OpGetLex name="9"/>
-                  <OpPushScope/>
-                  <OpGetLex name="9"/>
-                  <OpPushScope/>
-                  <OpGetLex name="9"/>
-                  <OpPushScope/>
-                  <OpGetLex name="9"/>
-                  <OpPushScope/>
-
-                  <!-- Check that the junk is there -->
-                  <OpFindPropStrict name="10"/>
-                  <OpGetScopeObject scopeIndex="0"/>
-                  <OpCallPropVoid name="10" argc="1"/>
-                  <OpFindPropStrict name="10"/>
-                  <OpGetScopeObject scopeIndex="1"/>
-                  <OpCallPropVoid name="10" argc="1"/>
-                  <OpFindPropStrict name="10"/>
-                  <OpGetScopeObject scopeIndex="2"/>
-                  <OpCallPropVoid name="10" argc="1"/>
-                  <OpFindPropStrict name="10"/>
-                  <OpGetScopeObject scopeIndex="3"/>
-                  <OpCallPropVoid name="10" argc="1"/>
-                  <OpFindPropStrict name="10"/>
-                  <OpGetScopeObject scopeIndex="4"/>
-                  <OpCallPropVoid name="10" argc="1"/>
-                  <!-- scopeIndex 5 causes a VerifyError (out of bounds),
-                  so the scope stack from before the call is not available. -->
-
-                 <OpReturnVoid/>
-                </code>
-                <exceptions/>
-                <traits/>
-              </MethodBody>
-              <MethodBody methodInfo="2" maxStack="10" maxRegs="1" 
scopeDepth="8" maxScope="12" exceptionCount="0">
-                <code>
-                  <OpGetLocal0/>
-                  <OpConstructSuper argc="0"/>
-                 
-                  <!-- Push stuff to the scope stack (A.A then three 
-                  EventDispatcher classes) -->
-                  <OpGetLocal0/>
-                  <OpPushScope/>
-                  <OpGetGlobalScope/>
-                  <OpGetLex name="5"/>
-                  <OpPushScope/>
-                  <OpGetLex name="5"/>
-                  <OpPushScope/>
-                  <OpGetLex name="5"/>
-                  <OpPushScope/>
-
-                  <!-- Push 3 values, 3 trace function lookups to the stack -->
-                  <OpFindPropStrict name="10"/>
-                  <OpPushByte value="1"/>      
-                  <OpFindPropStrict name="10"/>
-                  <OpPushByte value="2"/>      
-                  <OpFindPropStrict name="10"/>
-                  <OpPushByte value="3"/>      
-                  
-                  <!-- This is one call to trace() -->
-                  <OpCallPropVoid name="10" argc="1"/>
-                 
-                  <!-- This is the call to f() -->
-                  <!-- f() pushes things to the stack and scope stack, 
-                  and leaves them there. They should not be available after
-                  the function call has finished, but what was on the stacks
-                  before the call should still be there. -->
-                  <OpGetLocal0/>
-                  <OpCallPropVoid name="3" argc="0"/>
-                 
-                  <!-- These are the remaining calls to trace() -->
-                  <OpCallPropVoid name="10" argc="1"/>
-                  <OpCallPropVoid name="10" argc="1"/>
-
-                  <!-- Now trace what's on the scope stack -->
-                  <OpFindPropStrict name="10"/>
-                  <OpGetScopeObject scopeIndex="0"/>
-                  <OpCallPropVoid name="10" argc="1"/>
-                 
-                  <OpFindPropStrict name="10"/>
-                  <OpGetScopeObject scopeIndex="1"/>
-                  <OpCallPropVoid name="10" argc="1"/>
-                 
-                  <OpFindPropStrict name="10"/>
-                  <OpGetScopeObject scopeIndex="2"/>
-                  <OpCallPropVoid name="10" argc="1"/>
-                 
-                  <OpFindPropStrict name="10"/>
-                  <OpGetScopeObject scopeIndex="3"/>
-                  <OpCallPropVoid name="10" argc="1"/>
-                 
-                  <OpReturnVoid/>
-                </code>
-                <exceptions/>
-                <traits/>
-              </MethodBody>
-              <MethodBody methodInfo="3" maxStack="1" maxRegs="1" 
scopeDepth="8" maxScope="9" exceptionCount="0">
-                <code>
-                  <OpGetLocal0/>
-                  <OpPushScope/>
-                  <OpReturnVoid/>
-                </code>
-                <exceptions/>
-                <traits/>
-              </MethodBody>
-            </methodBodies>
-          </Action3>
-        </actions>
-      </DoABCDefine>
-      <SymbolClass>
-        <symbols>
-          <Symbol objectID="0" name="a.A"/>
-        </symbols>
-      </SymbolClass>
-      <ShowFrame/>
-      <End/>
-    </tags>
-  </Header>
-</swf>

=== removed file 'testsuite/misc-swfmill.all/stack1.trace'
--- a/testsuite/misc-swfmill.all/stack1.trace   2009-06-29 11:43:07 +0000
+++ b/testsuite/misc-swfmill.all/stack1.trace   1970-01-01 00:00:00 +0000
@@ -1,4 +0,0 @@
-3
-A.f()
-2
-1

=== removed file 'testsuite/misc-swfmill.all/stack1.xml'
--- a/testsuite/misc-swfmill.all/stack1.xml     2009-06-29 11:43:07 +0000
+++ b/testsuite/misc-swfmill.all/stack1.xml     1970-01-01 00:00:00 +0000
@@ -1,207 +0,0 @@
-<?xml version="1.0"?>
-<swf version="9" compressed="1">
-<!-- This is a simpler version of scope1.xml. It only traces simple stack
-values, because tracing things from the scope stack means getting object
-and class names right. That's the reason why scope1.swf fails, so this serves
-as a regression test for stack values only. -->
-  <Header framerate="25" frames="1">
-    <size>
-      <Rectangle left="0" right="8000" top="0" bottom="6000"/>
-    </size>
-    <tags>
-      <FileAttributes hasMetaData="0" allowABC="1" 
suppressCrossDomainCaching="0" swfRelativeURLs="0" useNetwork="0"/>
-      <DoABCDefine flags="0" name="">
-        <actions>
-          <Action3 minorVersion="16" majorVersion="46">
-            <constants>
-              <Constants>
-                <ints/>
-                <uints/>
-                <doubles/>
-                <strings>
-                  <String2 value="A.f()"/>
-                  <String2 value="A"/>
-                  <String2 value="MovieClip"/>
-                  <String2 value="f"/>
-                  <String2 value="Object"/>
-                  <String2 value="EventDispatcher"/>
-                  <String2 value="DisplayObject"/>
-                  <String2 value="InteractiveObject"/>
-                  <String2 value="DisplayObjectContainer"/>
-                  <String2 value="Sprite"/>
-                  <String2 value="trace"/>
-                  <String2 value="a"/>
-                  <String2 value="flash.display"/>
-                  <String2 value=""/>
-                  <String2 value="flash.events"/>
-                </strings>
-                <namespaces>
-                  <ProtectedNamespace index="2"/>
-                  <PackageNamespace index="12"/>
-                  <PackageNamespace index="13"/>
-                  <PackageNamespace index="14"/>
-                  <PackageNamespace index="15"/>
-                </namespaces>
-                <namespaceSets/>
-                <multinames>
-                  <QName namespaceIndex="2" nameIndex="2"/>
-                  <QName namespaceIndex="3" nameIndex="3"/>
-                  <QName namespaceIndex="4" nameIndex="4"/>
-                  <QName namespaceIndex="4" nameIndex="5"/>
-                  <QName namespaceIndex="5" nameIndex="6"/>
-                  <QName namespaceIndex="3" nameIndex="7"/>
-                  <QName namespaceIndex="3" nameIndex="8"/>
-                  <QName namespaceIndex="3" nameIndex="9"/>
-                  <QName namespaceIndex="3" nameIndex="10"/>
-                  <QName namespaceIndex="4" nameIndex="11"/>
-                </multinames>
-              </Constants>
-            </constants>
-            <methods>
-              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
-                <paramTypes/>
-              </MethodInfo>
-              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
-                <paramTypes/>
-              </MethodInfo>
-              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
-                <paramTypes/>
-              </MethodInfo>
-              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
-                <paramTypes/>
-              </MethodInfo>
-            </methods>
-            <metadata/>
-            <instances>
-              <InstanceInfo nameIndex="1" superIndex="2" hasProtectedNS="1" 
interface="0" final="0" sealed="1" protectedNS="1" iInitIndex="2">
-                <interfaces/>
-                <traits>
-                  <TraitInfo nameIndex="3" override="0" final="0">
-                    <trait>
-                      <Method dispID="1" methodInfo="1"/>
-                    </trait>
-                  </TraitInfo>
-                </traits>
-              </InstanceInfo>
-            </instances>
-            <classes>
-              <ClassInfo cInitIndex="3">
-                <traits/>
-              </ClassInfo>
-            </classes>
-            <scripts>
-              <ScriptInfo initIndex="0">
-                <traits>
-                  <TraitInfo nameIndex="1" override="0" final="0">
-                    <trait>
-                      <Class slotID="1" classInfo="0"/>
-                    </trait>
-                  </TraitInfo>
-                </traits>
-              </ScriptInfo>
-            </scripts>
-            <methodBodies>
-              <MethodBody methodInfo="0" maxStack="3" maxRegs="1" 
scopeDepth="0" maxScope="8" exceptionCount="0">
-                <code>
-                  <OpGetLocal0/>
-                  <OpPushScope/>
-                  <OpGetGlobalScope/>
-                  <OpGetLex name="2"/>
-                  <OpDup/>
-                  <OpPushScope/>
-                  <OpNewClass classIndex="0"/>
-                  <OpPopScope/>
-                  <OpSetSlot slotID="1"/>
-                  <OpReturnVoid/>
-                </code>
-                <exceptions/>
-                <traits/>
-              </MethodBody>
-
-             <!-- This is function A.f() -->
-             <!--
-             Its purpose is to push things onto the stack and the scope
-             stack and leave them there to see whether they are still
-             available after return.
-             Ideally we would also verify that the stack and the scope stack
-             from before this function call are not available, but this causes
-             VerifyErrors that interrupt execution.
-             -->
-              <MethodBody methodInfo="1" maxStack="8" maxRegs="1" 
scopeDepth="5" maxScope="14" exceptionCount="0">
-               <code>
-
-                 <!-- OpPop and OpPopScope cause a scope stack
-                 underflow error, so we don't do it. -->
-
-                  <OpFindPropStrict name="10"/>
-                  <OpPushString index="1"/>
-                 <OpCallPropVoid name="10" argc="1"/>
-
-                 <!-- Push junk to the stack -->
-                 <OpPushByte value="9"/>
-                 <OpPushByte value="9"/>
-                 <OpPushByte value="9"/>
-                 <OpPushByte value="9"/>
-                 <OpPushByte value="9"/>
-                 
-                 <OpReturnVoid/>
-                </code>
-                <exceptions/>
-                <traits/>
-              </MethodBody>
-              <MethodBody methodInfo="2" maxStack="10" maxRegs="1" 
scopeDepth="8" maxScope="12" exceptionCount="0">
-                <code>
-                  <OpGetLocal0/>
-                  <OpConstructSuper argc="0"/>
-                 
-                 <!-- Push 3 values, 3 trace function lookups to the stack -->
-                 <OpFindPropStrict name="10"/>
-                 <OpPushByte value="1"/>       
-                 <OpFindPropStrict name="10"/>
-                 <OpPushByte value="2"/>       
-                 <OpFindPropStrict name="10"/>
-                 <OpPushByte value="3"/>       
-                 
-                 <!-- This is one call to trace() -->
-                 <OpCallPropVoid name="10" argc="1"/>
-                 
-                 <!-- This is the call to f() -->
-                 <!-- f() pushes things to the stack and leaves them there.
-                 They should not be available after
-                 the function call has finished, but what was on the stack
-                 before the call should still be there. -->
-                  <OpGetLocal0/>
-                 <OpCallPropVoid name="3" argc="0"/>
-                 
-                 <!-- These are the remaining calls to trace() -->
-                  <OpCallPropVoid name="10" argc="1"/>
-                  <OpCallPropVoid name="10" argc="1"/>
-
-                 <OpReturnVoid/>
-                </code>
-                <exceptions/>
-                <traits/>
-              </MethodBody>
-              <MethodBody methodInfo="3" maxStack="1" maxRegs="1" 
scopeDepth="8" maxScope="9" exceptionCount="0">
-                <code>
-                  <OpGetLocal0/>
-                  <OpPushScope/>
-                  <OpReturnVoid/>
-                </code>
-                <exceptions/>
-                <traits/>
-              </MethodBody>
-            </methodBodies>
-          </Action3>
-        </actions>
-      </DoABCDefine>
-      <SymbolClass>
-        <symbols>
-          <Symbol objectID="0" name="a.A"/>
-        </symbols>
-      </SymbolClass>
-      <ShowFrame/>
-      <End/>
-    </tags>
-  </Header>
-</swf>

=== removed file 'testsuite/misc-swfmill.all/super.trace'
--- a/testsuite/misc-swfmill.all/super.trace    2009-11-23 16:44:15 +0000
+++ b/testsuite/misc-swfmill.all/super.trace    1970-01-01 00:00:00 +0000
@@ -1,8 +0,0 @@
-[object Object]
-undefined
-undefined
-undefined
-[object Object]
-undefined
-undefined
-[object Object]

=== removed file 'testsuite/misc-swfmill.all/super.xml'
--- a/testsuite/misc-swfmill.all/super.xml      2009-11-23 16:44:15 +0000
+++ b/testsuite/misc-swfmill.all/super.xml      1970-01-01 00:00:00 +0000
@@ -1,362 +0,0 @@
-<?xml version="1.0"?>
-<swf version="7" compressed="1">
-
-<!-- Tests when and where super is preloaded -->
-<!-- The answer is:
-       If it's suppressed, it's not available at all.
-       If it's preloaded, it is only available in a register, not as
-       a local variable.
--->
-
-  <Header framerate="12" frames="1">
-    <size>
-      <Rectangle left="0" right="12800" top="0" bottom="9600"/>
-    </size>
-    <tags>
-      <DoAction>
-        <actions>
-          <Dictionary>
-            <strings>
-              <String value="o"/>
-              <String value="ns"/>
-              <String value="super"/>
-              <String value="nr"/>
-              <String value="sss"/>
-              <String value="pss"/>
-              <String value="psr"/>
-              <String value="psss"/>
-              <String value="pssr"/>
-              <String value="__proto__"/>
-              <String value="oo"/>
-            </strings>
-          </Dictionary>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="0"/>
-              <StackInteger value="0"/>
-            </items>
-          </PushData>
-          <DeclareObject/>
-          <SetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="1"/>
-            </items>
-          </PushData>
-          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="0" preloadSuper="0" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
-            <args/>
-            <actions>
-              <PushData>
-                <items>
-                  <StackDictionaryLookup index="2"/>
-                </items>
-              </PushData>
-              <GetVariable/>
-              <Return/>
-            </actions>
-          </DeclareFunction2>
-          <SetMember/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="3"/>
-            </items>
-          </PushData>
-
-          <!-- Check what's in register 0 for a normal function (nothing)-->
-          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="0" preloadSuper="0" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
-            <args/>
-            <actions>
-              <PushData>
-                <items>
-                  <StackRegister reg="1"/>
-                </items>
-              </PushData>
-              <Return/>
-            </actions>
-          </DeclareFunction2>
-          <SetMember/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="4"/>
-            </items>
-          </PushData>
-
-          <!-- Check what super is when it's suppressed-->
-          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="1" preloadSuper="0" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
-            <args/>
-            <actions>
-              <PushData>
-                <items>
-                  <StackDictionaryLookup index="2"/>
-                </items>
-              </PushData>
-              <GetVariable/>
-              <Return/>
-            </actions>
-          </DeclareFunction2>
-          <SetMember/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="5"/>
-            </items>
-          </PushData>
-
-          <!-- Check what super is when it's preloaded-->
-          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="0" preloadSuper="1" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
-            <args/>
-            <actions>
-              <PushData>
-                <items>
-                  <StackDictionaryLookup index="2"/>
-                </items>
-              </PushData>
-              <GetVariable/>
-              <Return/>
-            </actions>
-          </DeclareFunction2>
-          <SetMember/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="6"/>
-            </items>
-          </PushData>
-
-          <!-- Check what register 0 is when super is preloaded-->
-          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="0" preloadSuper="1" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
-            <args/>
-            <actions>
-              <PushData>
-                <items>
-                  <StackRegister reg="1"/>
-                </items>
-              </PushData>
-              <Return/>
-            </actions>
-          </DeclareFunction2>
-          <SetMember/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="7"/>
-            </items>
-          </PushData>
-
-          <!-- Check what super is when it's suppressed and preloaded-->
-          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="1" preloadSuper="1" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
-            <args/>
-            <actions>
-              <PushData>
-                <items>
-                  <StackDictionaryLookup index="2"/>
-                </items>
-              </PushData>
-              <GetVariable/>
-              <Return/>
-            </actions>
-          </DeclareFunction2>
-          <SetMember/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="8"/>
-            </items>
-          </PushData>
-
-          <!-- Check what super is when it's suppressed and preloaded-->
-          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="1" preloadSuper="1" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
-            <args/>
-            <actions>
-              <PushData>
-                <items>
-                  <StackRegister reg="1"/>
-                </items>
-              </PushData>
-              <Return/>
-            </actions>
-          </DeclareFunction2>
-          <SetMember/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="9"/>
-              <StackInteger value="0"/>
-            </items>
-          </PushData>
-          <DeclareObject/>
-          <SetMember/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="10"/>
-              <StackInteger value="0"/>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <New/>
-         <SetLocalVariable/>
-
-         <!-- Start function calls -->
-          <PushData>
-            <items>
-              <StackInteger value="0"/>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="1"/>
-            </items>
-          </PushData>
-          <CallMethod/>
-          <Trace/>
-          <PushData>
-            <items>
-              <StackInteger value="0"/>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="3"/>
-            </items>
-          </PushData>
-          <CallMethod/>
-          <Trace/>
-          <PushData>
-            <items>
-              <StackInteger value="0"/>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="4"/>
-            </items>
-          </PushData>
-          <CallMethod/>
-          <Trace/>
-          <PushData>
-            <items>
-              <StackInteger value="0"/>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="5"/>
-            </items>
-          </PushData>
-          <CallMethod/>
-          <Trace/>
-          <PushData>
-            <items>
-              <StackInteger value="0"/>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="6"/>
-            </items>
-          </PushData>
-          <CallMethod/>
-          <Trace/>
-          <PushData>
-            <items>
-              <StackInteger value="0"/>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="7"/>
-            </items>
-          </PushData>
-          <CallMethod/>
-          <Trace/>
-          <PushData>
-            <items>
-              <StackInteger value="0"/>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="8"/>
-            </items>
-          </PushData>
-          <CallMethod/>
-          <Trace/>
-          <PushData>
-            <items>
-              <StackInteger value="0"/>
-              <StackDictionaryLookup index="0"/>
-            </items>
-          </PushData>
-          <GetVariable/>
-          <PushData>
-            <items>
-              <StackDictionaryLookup index="1"/>
-            </items>
-          </PushData>
-          <CallMethod/>
-          <Trace/>
-          <EndAction/>
-        </actions>
-      </DoAction>
-      <ShowFrame/>
-      <End/>
-    </tags>
-  </Header>
-</swf>

=== added directory 'testsuite/misc-swfmill.all/trace-as2'
=== added file 'testsuite/misc-swfmill.all/trace-as2/Makefile.am'
--- a/testsuite/misc-swfmill.all/trace-as2/Makefile.am  1970-01-01 00:00:00 
+0000
+++ b/testsuite/misc-swfmill.all/trace-as2/Makefile.am  2009-11-25 15:11:59 
+0000
@@ -0,0 +1,80 @@
+## Process this fill with automake to generate Makefile.in
+# 
+# Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+AUTOMAKE_OPTIONS = dejagnu -Wno-portability
+
+abs_topbuilddir=$(shell cd $(top_builddir); pwd)
+abs_builddir=$(shell cd $(top_builddir)/testsuite/misc-swfmill.all; pwd)
+
+# XML tests that rely on comparing trace output.
+
+TRACE_TESTS = \
+       super.xml \
+       $(NULL) 
+
+TRACE_TRACES = \
+       super.trace \
+       $(NULL) 
+
+EXTRA_DIST = \
+       $(TRACE_TESTS) \
+       $(TRACE_TRACES) \
+       $(NULL)
+
+TRACE_XMLTESTS_OUT = $(TRACE_TESTS:.xml=.swf)
+
+check_SCRIPTS = \
+       trace-test-runner \
+       $(NULL)
+
+trace-test-runner: $(srcdir)/../gen-swfmill-trace-runner.sh $(TRACE_TESTS) 
$(TRACE_XMLTESTS_OUT) Makefile
+       sh $< $(srcdir) $(builddir) > $@
+       chmod 755 $@
+
+.xml.swf: 
+       $(SWFMILL) -v xml2swf $(@:%.swf=$(srcdir)/%.xml) $@
+
+clean-local: 
+       rm -f $(check_SCRIPTS) $(TRACE_XMLTESTS_OUT) \
+               *.log *.trace-gnash *.out \
+               site.bak site.exp site.exp.bak testrun.sum \
+               gnash.sum 
+
+
+TEST_DRIVERS = ../../simple.exp
+
+TEST_CASES = ${check_SCRIPTS} 
+
+check-DEJAGNU: site-update $(check_PROGRAMS)
+       @runtest=$(RUNTEST); \
+       if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
+           GNASH_GC_TRIGGER_THRESHOLD=0 GNASHRC=../gnashrc $$runtest 
$(RUNTESTFLAGS) $(TEST_DRIVERS); true; \
+       else \
+         echo "WARNING: could not find \`runtest'" 1>&2; \
+          for i in "$(TEST_CASES)"; do \
+           GNASH_GC_TRIGGER_THRESHOLD=0 GNASHRC=../gnashrc $(SHELL) $$i; \
+         done; \
+       fi
+
+site-update: site.exp
+       @rm -fr site.exp.bak
+       @cp site.exp site.exp.bak
+       @sed -e '/testcases/d' site.exp.bak > site.exp
+       @echo "# This is a list of the pre-compiled testcases" >> site.exp
+       @echo "set testcases \"$(TEST_CASES)\"" >> site.exp
+

=== added file 'testsuite/misc-swfmill.all/trace-as2/PASSING'
--- a/testsuite/misc-swfmill.all/trace-as2/PASSING      1970-01-01 00:00:00 
+0000
+++ b/testsuite/misc-swfmill.all/trace-as2/PASSING      2009-11-25 11:19:40 
+0000
@@ -0,0 +1,1 @@
+super

=== added file 'testsuite/misc-swfmill.all/trace-as2/super.trace'
--- a/testsuite/misc-swfmill.all/trace-as2/super.trace  1970-01-01 00:00:00 
+0000
+++ b/testsuite/misc-swfmill.all/trace-as2/super.trace  2009-11-25 11:19:40 
+0000
@@ -0,0 +1,8 @@
+[object Object]
+undefined
+undefined
+undefined
+[object Object]
+undefined
+undefined
+[object Object]

=== added file 'testsuite/misc-swfmill.all/trace-as2/super.xml'
--- a/testsuite/misc-swfmill.all/trace-as2/super.xml    1970-01-01 00:00:00 
+0000
+++ b/testsuite/misc-swfmill.all/trace-as2/super.xml    2009-11-25 11:19:40 
+0000
@@ -0,0 +1,362 @@
+<?xml version="1.0"?>
+<swf version="7" compressed="1">
+
+<!-- Tests when and where super is preloaded -->
+<!-- The answer is:
+       If it's suppressed, it's not available at all.
+       If it's preloaded, it is only available in a register, not as
+       a local variable.
+-->
+
+  <Header framerate="12" frames="1">
+    <size>
+      <Rectangle left="0" right="12800" top="0" bottom="9600"/>
+    </size>
+    <tags>
+      <DoAction>
+        <actions>
+          <Dictionary>
+            <strings>
+              <String value="o"/>
+              <String value="ns"/>
+              <String value="super"/>
+              <String value="nr"/>
+              <String value="sss"/>
+              <String value="pss"/>
+              <String value="psr"/>
+              <String value="psss"/>
+              <String value="pssr"/>
+              <String value="__proto__"/>
+              <String value="oo"/>
+            </strings>
+          </Dictionary>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="0"/>
+              <StackInteger value="0"/>
+            </items>
+          </PushData>
+          <DeclareObject/>
+          <SetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="1"/>
+            </items>
+          </PushData>
+          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="0" preloadSuper="0" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
+            <args/>
+            <actions>
+              <PushData>
+                <items>
+                  <StackDictionaryLookup index="2"/>
+                </items>
+              </PushData>
+              <GetVariable/>
+              <Return/>
+            </actions>
+          </DeclareFunction2>
+          <SetMember/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="3"/>
+            </items>
+          </PushData>
+
+          <!-- Check what's in register 0 for a normal function (nothing)-->
+          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="0" preloadSuper="0" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
+            <args/>
+            <actions>
+              <PushData>
+                <items>
+                  <StackRegister reg="1"/>
+                </items>
+              </PushData>
+              <Return/>
+            </actions>
+          </DeclareFunction2>
+          <SetMember/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="4"/>
+            </items>
+          </PushData>
+
+          <!-- Check what super is when it's suppressed-->
+          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="1" preloadSuper="0" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
+            <args/>
+            <actions>
+              <PushData>
+                <items>
+                  <StackDictionaryLookup index="2"/>
+                </items>
+              </PushData>
+              <GetVariable/>
+              <Return/>
+            </actions>
+          </DeclareFunction2>
+          <SetMember/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="5"/>
+            </items>
+          </PushData>
+
+          <!-- Check what super is when it's preloaded-->
+          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="0" preloadSuper="1" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
+            <args/>
+            <actions>
+              <PushData>
+                <items>
+                  <StackDictionaryLookup index="2"/>
+                </items>
+              </PushData>
+              <GetVariable/>
+              <Return/>
+            </actions>
+          </DeclareFunction2>
+          <SetMember/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="6"/>
+            </items>
+          </PushData>
+
+          <!-- Check what register 0 is when super is preloaded-->
+          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="0" preloadSuper="1" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
+            <args/>
+            <actions>
+              <PushData>
+                <items>
+                  <StackRegister reg="1"/>
+                </items>
+              </PushData>
+              <Return/>
+            </actions>
+          </DeclareFunction2>
+          <SetMember/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="7"/>
+            </items>
+          </PushData>
+
+          <!-- Check what super is when it's suppressed and preloaded-->
+          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="1" preloadSuper="1" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
+            <args/>
+            <actions>
+              <PushData>
+                <items>
+                  <StackDictionaryLookup index="2"/>
+                </items>
+              </PushData>
+              <GetVariable/>
+              <Return/>
+            </actions>
+          </DeclareFunction2>
+          <SetMember/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="8"/>
+            </items>
+          </PushData>
+
+          <!-- Check what super is when it's suppressed and preloaded-->
+          <DeclareFunction2 name="" argc="0" regc="2" preloadParent="0" 
preloadRoot="0" suppressSuper="1" preloadSuper="1" suppressArguments="0" 
preloadArguments="0" suppressThis="0" preloadThis="0" reserved="0" 
preloadGlobal="0">
+            <args/>
+            <actions>
+              <PushData>
+                <items>
+                  <StackRegister reg="1"/>
+                </items>
+              </PushData>
+              <Return/>
+            </actions>
+          </DeclareFunction2>
+          <SetMember/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="9"/>
+              <StackInteger value="0"/>
+            </items>
+          </PushData>
+          <DeclareObject/>
+          <SetMember/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="10"/>
+              <StackInteger value="0"/>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <New/>
+         <SetLocalVariable/>
+
+         <!-- Start function calls -->
+          <PushData>
+            <items>
+              <StackInteger value="0"/>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="1"/>
+            </items>
+          </PushData>
+          <CallMethod/>
+          <Trace/>
+          <PushData>
+            <items>
+              <StackInteger value="0"/>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="3"/>
+            </items>
+          </PushData>
+          <CallMethod/>
+          <Trace/>
+          <PushData>
+            <items>
+              <StackInteger value="0"/>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="4"/>
+            </items>
+          </PushData>
+          <CallMethod/>
+          <Trace/>
+          <PushData>
+            <items>
+              <StackInteger value="0"/>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="5"/>
+            </items>
+          </PushData>
+          <CallMethod/>
+          <Trace/>
+          <PushData>
+            <items>
+              <StackInteger value="0"/>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="6"/>
+            </items>
+          </PushData>
+          <CallMethod/>
+          <Trace/>
+          <PushData>
+            <items>
+              <StackInteger value="0"/>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="7"/>
+            </items>
+          </PushData>
+          <CallMethod/>
+          <Trace/>
+          <PushData>
+            <items>
+              <StackInteger value="0"/>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="8"/>
+            </items>
+          </PushData>
+          <CallMethod/>
+          <Trace/>
+          <PushData>
+            <items>
+              <StackInteger value="0"/>
+              <StackDictionaryLookup index="0"/>
+            </items>
+          </PushData>
+          <GetVariable/>
+          <PushData>
+            <items>
+              <StackDictionaryLookup index="1"/>
+            </items>
+          </PushData>
+          <CallMethod/>
+          <Trace/>
+          <EndAction/>
+        </actions>
+      </DoAction>
+      <ShowFrame/>
+      <End/>
+    </tags>
+  </Header>
+</swf>

=== added directory 'testsuite/misc-swfmill.all/trace-as3'
=== added file 'testsuite/misc-swfmill.all/trace-as3/Makefile.am'
--- a/testsuite/misc-swfmill.all/trace-as3/Makefile.am  1970-01-01 00:00:00 
+0000
+++ b/testsuite/misc-swfmill.all/trace-as3/Makefile.am  2009-11-25 15:19:08 
+0000
@@ -0,0 +1,97 @@
+## Process this fill with automake to generate Makefile.in
+# 
+# Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+AUTOMAKE_OPTIONS = dejagnu -Wno-portability
+
+# XML tests that rely on comparing trace output.
+
+TRACE_TESTS = \
+       scope1.xml \
+       stack1.xml \
+       earlyshowframe.xml \
+       noshowframe.xml \
+       earlysymbolclass.xml \
+       $(NULL) 
+
+TRACE_TRACES = \
+       scope1.trace \
+       stack1.trace \
+       earlyshowframe.trace \
+       noshowframe.trace \
+       earlysymbolclass.trace \
+       $(NULL) 
+
+EXTRA_DIST = \
+       $(TRACE_TESTS) \
+       $(TRACE_TRACES) \
+       $(NULL)
+
+AM_CPPFLAGS = \
+       -I$(top_srcdir)/libbase \
+       -I$(top_srcdir)/libmedia \
+       -I$(top_srcdir)/libsound \
+       -I$(top_srcdir)/backend \
+       -I$(top_srcdir)/libcore  \
+       -I$(top_srcdir)/libcore/swf \
+       -I$(top_srcdir)/libcore/parser  \
+       -I$(top_srcdir)/libcore/vm \
+       -I$(top_srcdir)/libcore/asobj \
+       -I$(top_srcdir)/testsuite \
+       $(NULL)
+
+TRACE_XMLTESTS_OUT = $(TRACE_TESTS:.xml=.swf)
+
+check_SCRIPTS = \
+       trace-test-runner \
+       $(NULL)
+
+trace-test-runner: $(srcdir)/../gen-swfmill-trace-runner.sh $(TRACE_TESTS) 
$(TRACE_XMLTESTS_OUT)
+       sh $< $(srcdir) $(builddir) > $@
+       chmod 755 $@
+
+.xml.swf: 
+       $(SWFMILL) -v xml2swf $(@:%.swf=$(srcdir)/%.xml) $@
+
+clean-local: 
+       rm -f $(check_SCRIPTS) $(SC_XMLTESTS_OUT) $(TRACE_XMLTESTS_OUT) \
+               *.log *.trace-gnash *.out \
+               site.bak site.exp site.exp.bak testrun.sum \
+               gnash.sum 
+
+
+TEST_DRIVERS = ../../simple.exp
+TEST_CASES = ${check_SCRIPTS} 
+
+check-DEJAGNU: site-update $(check_PROGRAMS)
+       @runtest=$(RUNTEST); \
+       if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
+           GNASH_GC_TRIGGER_THRESHOLD=0 GNASHRC=../gnashrc $$runtest 
$(RUNTESTFLAGS) $(TEST_DRIVERS); true; \
+       else \
+         echo "WARNING: could not find \`runtest'" 1>&2; \
+          for i in "$(TEST_CASES)"; do \
+           GNASH_GC_TRIGGER_THRESHOLD=0 GNASHRC=../gnashrc $(SHELL) $$i; \
+         done; \
+       fi
+
+site-update: site.exp
+       @rm -fr site.exp.bak
+       @cp site.exp site.exp.bak
+       @sed -e '/testcases/d' site.exp.bak > site.exp
+       @echo "# This is a list of the pre-compiled testcases" >> site.exp
+       @echo "set testcases \"$(TEST_CASES)\"" >> site.exp
+

=== added file 'testsuite/misc-swfmill.all/trace-as3/PASSING'
--- a/testsuite/misc-swfmill.all/trace-as3/PASSING      1970-01-01 00:00:00 
+0000
+++ b/testsuite/misc-swfmill.all/trace-as3/PASSING      2009-11-25 15:19:08 
+0000
@@ -0,0 +1,2 @@
+stack1
+earlyshowframe

=== added file 'testsuite/misc-swfmill.all/trace-as3/earlyshowframe.trace'
=== added file 'testsuite/misc-swfmill.all/trace-as3/earlyshowframe.xml'
--- a/testsuite/misc-swfmill.all/trace-as3/earlyshowframe.xml   1970-01-01 
00:00:00 +0000
+++ b/testsuite/misc-swfmill.all/trace-as3/earlyshowframe.xml   2009-11-25 
15:19:08 +0000
@@ -0,0 +1,209 @@
+<?xml version="1.0"?>
+<swf version="9" compressed="1">
+<!-- 
+
+This is identical to stack1.xml except the showframe tag appears before
+the symbolclass tag. Nothing should be executed at all.
+
+-->
+  <Header framerate="25" frames="1">
+    <size>
+      <Rectangle left="0" right="8000" top="0" bottom="6000"/>
+    </size>
+    <tags>
+      <FileAttributes hasMetaData="0" allowABC="1" 
suppressCrossDomainCaching="0" swfRelativeURLs="0" useNetwork="0"/>
+      <DoABCDefine flags="0" name="">
+        <actions>
+          <Action3 minorVersion="16" majorVersion="46">
+            <constants>
+              <Constants>
+                <ints/>
+                <uints/>
+                <doubles/>
+                <strings>
+                  <String2 value="A.f()"/>
+                  <String2 value="A"/>
+                  <String2 value="MovieClip"/>
+                  <String2 value="f"/>
+                  <String2 value="Object"/>
+                  <String2 value="EventDispatcher"/>
+                  <String2 value="DisplayObject"/>
+                  <String2 value="InteractiveObject"/>
+                  <String2 value="DisplayObjectContainer"/>
+                  <String2 value="Sprite"/>
+                  <String2 value="trace"/>
+                  <String2 value="a"/>
+                  <String2 value="flash.display"/>
+                  <String2 value=""/>
+                  <String2 value="flash.events"/>
+                </strings>
+                <namespaces>
+                  <ProtectedNamespace index="2"/>
+                  <PackageNamespace index="12"/>
+                  <PackageNamespace index="13"/>
+                  <PackageNamespace index="14"/>
+                  <PackageNamespace index="15"/>
+                </namespaces>
+                <namespaceSets/>
+                <multinames>
+                  <QName namespaceIndex="2" nameIndex="2"/>
+                  <QName namespaceIndex="3" nameIndex="3"/>
+                  <QName namespaceIndex="4" nameIndex="4"/>
+                  <QName namespaceIndex="4" nameIndex="5"/>
+                  <QName namespaceIndex="5" nameIndex="6"/>
+                  <QName namespaceIndex="3" nameIndex="7"/>
+                  <QName namespaceIndex="3" nameIndex="8"/>
+                  <QName namespaceIndex="3" nameIndex="9"/>
+                  <QName namespaceIndex="3" nameIndex="10"/>
+                  <QName namespaceIndex="4" nameIndex="11"/>
+                </multinames>
+              </Constants>
+            </constants>
+            <methods>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+            </methods>
+            <metadata/>
+            <instances>
+              <InstanceInfo nameIndex="1" superIndex="2" hasProtectedNS="1" 
interface="0" final="0" sealed="1" protectedNS="1" iInitIndex="2">
+                <interfaces/>
+                <traits>
+                  <TraitInfo nameIndex="3" override="0" final="0">
+                    <trait>
+                      <Method dispID="1" methodInfo="1"/>
+                    </trait>
+                  </TraitInfo>
+                </traits>
+              </InstanceInfo>
+            </instances>
+            <classes>
+              <ClassInfo cInitIndex="3">
+                <traits/>
+              </ClassInfo>
+            </classes>
+            <scripts>
+              <ScriptInfo initIndex="0">
+                <traits>
+                  <TraitInfo nameIndex="1" override="0" final="0">
+                    <trait>
+                      <Class slotID="1" classInfo="0"/>
+                    </trait>
+                  </TraitInfo>
+                </traits>
+              </ScriptInfo>
+            </scripts>
+            <methodBodies>
+              <MethodBody methodInfo="0" maxStack="3" maxRegs="1" 
scopeDepth="0" maxScope="8" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpPushScope/>
+                  <OpGetGlobalScope/>
+                  <OpGetLex name="2"/>
+                  <OpDup/>
+                  <OpPushScope/>
+                  <OpNewClass classIndex="0"/>
+                  <OpPopScope/>
+                  <OpSetSlot slotID="1"/>
+                  <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+
+             <!-- This is function A.f() -->
+             <!--
+             Its purpose is to push things onto the stack and the scope
+             stack and leave them there to see whether they are still
+             available after return.
+             Ideally we would also verify that the stack and the scope stack
+             from before this function call are not available, but this causes
+             VerifyErrors that interrupt execution.
+             -->
+              <MethodBody methodInfo="1" maxStack="8" maxRegs="1" 
scopeDepth="5" maxScope="14" exceptionCount="0">
+               <code>
+
+                 <!-- OpPop and OpPopScope cause a scope stack
+                 underflow error, so we don't do it. -->
+
+                  <OpFindPropStrict name="10"/>
+                  <OpPushString index="1"/>
+                 <OpCallPropVoid name="10" argc="1"/>
+
+                 <!-- Push junk to the stack -->
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 
+                 <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+              <MethodBody methodInfo="2" maxStack="10" maxRegs="1" 
scopeDepth="8" maxScope="12" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpConstructSuper argc="0"/>
+                 
+                 <!-- Push 3 values, 3 trace function lookups to the stack -->
+                 <OpFindPropStrict name="10"/>
+                 <OpPushByte value="1"/>       
+                 <OpFindPropStrict name="10"/>
+                 <OpPushByte value="2"/>       
+                 <OpFindPropStrict name="10"/>
+                 <OpPushByte value="3"/>       
+                 
+                 <!-- This is one call to trace() -->
+                 <OpCallPropVoid name="10" argc="1"/>
+                 
+                 <!-- This is the call to f() -->
+                 <!-- f() pushes things to the stack and leaves them there.
+                 They should not be available after
+                 the function call has finished, but what was on the stack
+                 before the call should still be there. -->
+                  <OpGetLocal0/>
+                 <OpCallPropVoid name="3" argc="0"/>
+                 
+                 <!-- These are the remaining calls to trace() -->
+                  <OpCallPropVoid name="10" argc="1"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+
+                 <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+              <MethodBody methodInfo="3" maxStack="1" maxRegs="1" 
scopeDepth="8" maxScope="9" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpPushScope/>
+                  <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+            </methodBodies>
+          </Action3>
+        </actions>
+      </DoABCDefine>
+      <ShowFrame/>
+      <SymbolClass>
+        <symbols>
+          <Symbol objectID="0" name="a.A"/>
+        </symbols>
+      </SymbolClass>
+      <End/>
+    </tags>
+  </Header>
+</swf>

=== added file 'testsuite/misc-swfmill.all/trace-as3/earlysymbolclass.trace'
--- a/testsuite/misc-swfmill.all/trace-as3/earlysymbolclass.trace       
1970-01-01 00:00:00 +0000
+++ b/testsuite/misc-swfmill.all/trace-as3/earlysymbolclass.trace       
2009-11-25 16:09:25 +0000
@@ -0,0 +1,4 @@
+3
+A.f()
+2
+1

=== added file 'testsuite/misc-swfmill.all/trace-as3/earlysymbolclass.xml'
--- a/testsuite/misc-swfmill.all/trace-as3/earlysymbolclass.xml 1970-01-01 
00:00:00 +0000
+++ b/testsuite/misc-swfmill.all/trace-as3/earlysymbolclass.xml 2009-11-25 
16:09:25 +0000
@@ -0,0 +1,209 @@
+<?xml version="1.0"?>
+<swf version="9" compressed="1">
+<!-- 
+
+This is identical to stack1.xml except the symbolclass tag appears before
+the DoABC tag. This should be executed as normal.
+
+-->
+  <Header framerate="25" frames="1">
+    <size>
+      <Rectangle left="0" right="8000" top="0" bottom="6000"/>
+    </size>
+    <tags>
+      <FileAttributes hasMetaData="0" allowABC="1" 
suppressCrossDomainCaching="0" swfRelativeURLs="0" useNetwork="0"/>
+      <SymbolClass>
+        <symbols>
+          <Symbol objectID="0" name="a.A"/>
+        </symbols>
+      </SymbolClass>
+      <DoABCDefine flags="0" name="">
+        <actions>
+          <Action3 minorVersion="16" majorVersion="46">
+            <constants>
+              <Constants>
+                <ints/>
+                <uints/>
+                <doubles/>
+                <strings>
+                  <String2 value="A.f()"/>
+                  <String2 value="A"/>
+                  <String2 value="MovieClip"/>
+                  <String2 value="f"/>
+                  <String2 value="Object"/>
+                  <String2 value="EventDispatcher"/>
+                  <String2 value="DisplayObject"/>
+                  <String2 value="InteractiveObject"/>
+                  <String2 value="DisplayObjectContainer"/>
+                  <String2 value="Sprite"/>
+                  <String2 value="trace"/>
+                  <String2 value="a"/>
+                  <String2 value="flash.display"/>
+                  <String2 value=""/>
+                  <String2 value="flash.events"/>
+                </strings>
+                <namespaces>
+                  <ProtectedNamespace index="2"/>
+                  <PackageNamespace index="12"/>
+                  <PackageNamespace index="13"/>
+                  <PackageNamespace index="14"/>
+                  <PackageNamespace index="15"/>
+                </namespaces>
+                <namespaceSets/>
+                <multinames>
+                  <QName namespaceIndex="2" nameIndex="2"/>
+                  <QName namespaceIndex="3" nameIndex="3"/>
+                  <QName namespaceIndex="4" nameIndex="4"/>
+                  <QName namespaceIndex="4" nameIndex="5"/>
+                  <QName namespaceIndex="5" nameIndex="6"/>
+                  <QName namespaceIndex="3" nameIndex="7"/>
+                  <QName namespaceIndex="3" nameIndex="8"/>
+                  <QName namespaceIndex="3" nameIndex="9"/>
+                  <QName namespaceIndex="3" nameIndex="10"/>
+                  <QName namespaceIndex="4" nameIndex="11"/>
+                </multinames>
+              </Constants>
+            </constants>
+            <methods>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+            </methods>
+            <metadata/>
+            <instances>
+              <InstanceInfo nameIndex="1" superIndex="2" hasProtectedNS="1" 
interface="0" final="0" sealed="1" protectedNS="1" iInitIndex="2">
+                <interfaces/>
+                <traits>
+                  <TraitInfo nameIndex="3" override="0" final="0">
+                    <trait>
+                      <Method dispID="1" methodInfo="1"/>
+                    </trait>
+                  </TraitInfo>
+                </traits>
+              </InstanceInfo>
+            </instances>
+            <classes>
+              <ClassInfo cInitIndex="3">
+                <traits/>
+              </ClassInfo>
+            </classes>
+            <scripts>
+              <ScriptInfo initIndex="0">
+                <traits>
+                  <TraitInfo nameIndex="1" override="0" final="0">
+                    <trait>
+                      <Class slotID="1" classInfo="0"/>
+                    </trait>
+                  </TraitInfo>
+                </traits>
+              </ScriptInfo>
+            </scripts>
+            <methodBodies>
+              <MethodBody methodInfo="0" maxStack="3" maxRegs="1" 
scopeDepth="0" maxScope="8" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpPushScope/>
+                  <OpGetGlobalScope/>
+                  <OpGetLex name="2"/>
+                  <OpDup/>
+                  <OpPushScope/>
+                  <OpNewClass classIndex="0"/>
+                  <OpPopScope/>
+                  <OpSetSlot slotID="1"/>
+                  <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+
+             <!-- This is function A.f() -->
+             <!--
+             Its purpose is to push things onto the stack and the scope
+             stack and leave them there to see whether they are still
+             available after return.
+             Ideally we would also verify that the stack and the scope stack
+             from before this function call are not available, but this causes
+             VerifyErrors that interrupt execution.
+             -->
+              <MethodBody methodInfo="1" maxStack="8" maxRegs="1" 
scopeDepth="5" maxScope="14" exceptionCount="0">
+               <code>
+
+                 <!-- OpPop and OpPopScope cause a scope stack
+                 underflow error, so we don't do it. -->
+
+                  <OpFindPropStrict name="10"/>
+                  <OpPushString index="1"/>
+                 <OpCallPropVoid name="10" argc="1"/>
+
+                 <!-- Push junk to the stack -->
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 
+                 <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+              <MethodBody methodInfo="2" maxStack="10" maxRegs="1" 
scopeDepth="8" maxScope="12" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpConstructSuper argc="0"/>
+                 
+                 <!-- Push 3 values, 3 trace function lookups to the stack -->
+                 <OpFindPropStrict name="10"/>
+                 <OpPushByte value="1"/>       
+                 <OpFindPropStrict name="10"/>
+                 <OpPushByte value="2"/>       
+                 <OpFindPropStrict name="10"/>
+                 <OpPushByte value="3"/>       
+                 
+                 <!-- This is one call to trace() -->
+                 <OpCallPropVoid name="10" argc="1"/>
+                 
+                 <!-- This is the call to f() -->
+                 <!-- f() pushes things to the stack and leaves them there.
+                 They should not be available after
+                 the function call has finished, but what was on the stack
+                 before the call should still be there. -->
+                  <OpGetLocal0/>
+                 <OpCallPropVoid name="3" argc="0"/>
+                 
+                 <!-- These are the remaining calls to trace() -->
+                  <OpCallPropVoid name="10" argc="1"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+
+                 <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+              <MethodBody methodInfo="3" maxStack="1" maxRegs="1" 
scopeDepth="8" maxScope="9" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpPushScope/>
+                  <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+            </methodBodies>
+          </Action3>
+        </actions>
+      </DoABCDefine>
+      <ShowFrame/>
+      <End/>
+    </tags>
+  </Header>
+</swf>

=== added file 'testsuite/misc-swfmill.all/trace-as3/noshowframe.trace'
=== added file 'testsuite/misc-swfmill.all/trace-as3/noshowframe.xml'
--- a/testsuite/misc-swfmill.all/trace-as3/noshowframe.xml      1970-01-01 
00:00:00 +0000
+++ b/testsuite/misc-swfmill.all/trace-as3/noshowframe.xml      2009-11-25 
15:19:08 +0000
@@ -0,0 +1,208 @@
+<?xml version="1.0"?>
+<swf version="9" compressed="1">
+<!-- 
+
+This is identical to stack1.xml except there is no showframe tag. Nothing
+should be executed at all.
+
+-->
+  <Header framerate="25" frames="1">
+    <size>
+      <Rectangle left="0" right="8000" top="0" bottom="6000"/>
+    </size>
+    <tags>
+      <FileAttributes hasMetaData="0" allowABC="1" 
suppressCrossDomainCaching="0" swfRelativeURLs="0" useNetwork="0"/>
+      <DoABCDefine flags="0" name="">
+        <actions>
+          <Action3 minorVersion="16" majorVersion="46">
+            <constants>
+              <Constants>
+                <ints/>
+                <uints/>
+                <doubles/>
+                <strings>
+                  <String2 value="A.f()"/>
+                  <String2 value="A"/>
+                  <String2 value="MovieClip"/>
+                  <String2 value="f"/>
+                  <String2 value="Object"/>
+                  <String2 value="EventDispatcher"/>
+                  <String2 value="DisplayObject"/>
+                  <String2 value="InteractiveObject"/>
+                  <String2 value="DisplayObjectContainer"/>
+                  <String2 value="Sprite"/>
+                  <String2 value="trace"/>
+                  <String2 value="a"/>
+                  <String2 value="flash.display"/>
+                  <String2 value=""/>
+                  <String2 value="flash.events"/>
+                </strings>
+                <namespaces>
+                  <ProtectedNamespace index="2"/>
+                  <PackageNamespace index="12"/>
+                  <PackageNamespace index="13"/>
+                  <PackageNamespace index="14"/>
+                  <PackageNamespace index="15"/>
+                </namespaces>
+                <namespaceSets/>
+                <multinames>
+                  <QName namespaceIndex="2" nameIndex="2"/>
+                  <QName namespaceIndex="3" nameIndex="3"/>
+                  <QName namespaceIndex="4" nameIndex="4"/>
+                  <QName namespaceIndex="4" nameIndex="5"/>
+                  <QName namespaceIndex="5" nameIndex="6"/>
+                  <QName namespaceIndex="3" nameIndex="7"/>
+                  <QName namespaceIndex="3" nameIndex="8"/>
+                  <QName namespaceIndex="3" nameIndex="9"/>
+                  <QName namespaceIndex="3" nameIndex="10"/>
+                  <QName namespaceIndex="4" nameIndex="11"/>
+                </multinames>
+              </Constants>
+            </constants>
+            <methods>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+            </methods>
+            <metadata/>
+            <instances>
+              <InstanceInfo nameIndex="1" superIndex="2" hasProtectedNS="1" 
interface="0" final="0" sealed="1" protectedNS="1" iInitIndex="2">
+                <interfaces/>
+                <traits>
+                  <TraitInfo nameIndex="3" override="0" final="0">
+                    <trait>
+                      <Method dispID="1" methodInfo="1"/>
+                    </trait>
+                  </TraitInfo>
+                </traits>
+              </InstanceInfo>
+            </instances>
+            <classes>
+              <ClassInfo cInitIndex="3">
+                <traits/>
+              </ClassInfo>
+            </classes>
+            <scripts>
+              <ScriptInfo initIndex="0">
+                <traits>
+                  <TraitInfo nameIndex="1" override="0" final="0">
+                    <trait>
+                      <Class slotID="1" classInfo="0"/>
+                    </trait>
+                  </TraitInfo>
+                </traits>
+              </ScriptInfo>
+            </scripts>
+            <methodBodies>
+              <MethodBody methodInfo="0" maxStack="3" maxRegs="1" 
scopeDepth="0" maxScope="8" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpPushScope/>
+                  <OpGetGlobalScope/>
+                  <OpGetLex name="2"/>
+                  <OpDup/>
+                  <OpPushScope/>
+                  <OpNewClass classIndex="0"/>
+                  <OpPopScope/>
+                  <OpSetSlot slotID="1"/>
+                  <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+
+             <!-- This is function A.f() -->
+             <!--
+             Its purpose is to push things onto the stack and the scope
+             stack and leave them there to see whether they are still
+             available after return.
+             Ideally we would also verify that the stack and the scope stack
+             from before this function call are not available, but this causes
+             VerifyErrors that interrupt execution.
+             -->
+              <MethodBody methodInfo="1" maxStack="8" maxRegs="1" 
scopeDepth="5" maxScope="14" exceptionCount="0">
+               <code>
+
+                 <!-- OpPop and OpPopScope cause a scope stack
+                 underflow error, so we don't do it. -->
+
+                  <OpFindPropStrict name="10"/>
+                  <OpPushString index="1"/>
+                 <OpCallPropVoid name="10" argc="1"/>
+
+                 <!-- Push junk to the stack -->
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 
+                 <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+              <MethodBody methodInfo="2" maxStack="10" maxRegs="1" 
scopeDepth="8" maxScope="12" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpConstructSuper argc="0"/>
+                 
+                 <!-- Push 3 values, 3 trace function lookups to the stack -->
+                 <OpFindPropStrict name="10"/>
+                 <OpPushByte value="1"/>       
+                 <OpFindPropStrict name="10"/>
+                 <OpPushByte value="2"/>       
+                 <OpFindPropStrict name="10"/>
+                 <OpPushByte value="3"/>       
+                 
+                 <!-- This is one call to trace() -->
+                 <OpCallPropVoid name="10" argc="1"/>
+                 
+                 <!-- This is the call to f() -->
+                 <!-- f() pushes things to the stack and leaves them there.
+                 They should not be available after
+                 the function call has finished, but what was on the stack
+                 before the call should still be there. -->
+                  <OpGetLocal0/>
+                 <OpCallPropVoid name="3" argc="0"/>
+                 
+                 <!-- These are the remaining calls to trace() -->
+                  <OpCallPropVoid name="10" argc="1"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+
+                 <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+              <MethodBody methodInfo="3" maxStack="1" maxRegs="1" 
scopeDepth="8" maxScope="9" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpPushScope/>
+                  <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+            </methodBodies>
+          </Action3>
+        </actions>
+      </DoABCDefine>
+      <SymbolClass>
+        <symbols>
+          <Symbol objectID="0" name="a.A"/>
+        </symbols>
+      </SymbolClass>
+      <End/>
+    </tags>
+  </Header>
+</swf>

=== added file 'testsuite/misc-swfmill.all/trace-as3/scope1.trace'
--- a/testsuite/misc-swfmill.all/trace-as3/scope1.trace 1970-01-01 00:00:00 
+0000
+++ b/testsuite/misc-swfmill.all/trace-as3/scope1.trace 2009-11-25 11:19:40 
+0000
@@ -0,0 +1,13 @@
+3
+A.f()
+[object A]
+[class Sprite]
+[class Sprite]
+[class Sprite]
+[class Sprite]
+2
+1
+[object A]
+[class EventDispatcher]
+[class EventDispatcher]
+[class EventDispatcher]

=== added file 'testsuite/misc-swfmill.all/trace-as3/scope1.xml'
--- a/testsuite/misc-swfmill.all/trace-as3/scope1.xml   1970-01-01 00:00:00 
+0000
+++ b/testsuite/misc-swfmill.all/trace-as3/scope1.xml   2009-11-25 11:19:40 
+0000
@@ -0,0 +1,265 @@
+<?xml version="1.0"?>
+<swf version="9" compressed="1">
+  <Header framerate="25" frames="1">
+    <size>
+      <Rectangle left="0" right="8000" top="0" bottom="6000"/>
+    </size>
+    <tags>
+      <FileAttributes hasMetaData="0" allowABC="1" 
suppressCrossDomainCaching="0" swfRelativeURLs="0" useNetwork="0"/>
+      <DoABCDefine flags="0" name="">
+        <actions>
+          <Action3 minorVersion="16" majorVersion="46">
+            <constants>
+              <Constants>
+                <ints/>
+                <uints/>
+                <doubles/>
+                <strings>
+                  <String2 value="A.f()"/>
+                  <String2 value="A"/>
+                  <String2 value="MovieClip"/>
+                  <String2 value="f"/>
+                  <String2 value="Object"/>
+                  <String2 value="EventDispatcher"/>
+                  <String2 value="DisplayObject"/>
+                  <String2 value="InteractiveObject"/>
+                  <String2 value="DisplayObjectContainer"/>
+                  <String2 value="Sprite"/>
+                  <String2 value="trace"/>
+                  <String2 value="a"/>
+                  <String2 value="flash.display"/>
+                  <String2 value=""/>
+                  <String2 value="flash.events"/>
+                </strings>
+                <namespaces>
+                  <ProtectedNamespace index="2"/>
+                  <PackageNamespace index="12"/>
+                  <PackageNamespace index="13"/>
+                  <PackageNamespace index="14"/>
+                  <PackageNamespace index="15"/>
+                </namespaces>
+                <namespaceSets/>
+                <multinames>
+                  <QName namespaceIndex="2" nameIndex="2"/>
+                  <QName namespaceIndex="3" nameIndex="3"/>
+                  <QName namespaceIndex="4" nameIndex="4"/>
+                  <QName namespaceIndex="4" nameIndex="5"/>
+                  <QName namespaceIndex="5" nameIndex="6"/>
+                  <QName namespaceIndex="3" nameIndex="7"/>
+                  <QName namespaceIndex="3" nameIndex="8"/>
+                  <QName namespaceIndex="3" nameIndex="9"/>
+                  <QName namespaceIndex="3" nameIndex="10"/>
+                  <QName namespaceIndex="4" nameIndex="11"/>
+                </multinames>
+              </Constants>
+            </constants>
+            <methods>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+            </methods>
+            <metadata/>
+            <instances>
+              <InstanceInfo nameIndex="1" superIndex="2" hasProtectedNS="1" 
interface="0" final="0" sealed="1" protectedNS="1" iInitIndex="2">
+                <interfaces/>
+                <traits>
+                  <TraitInfo nameIndex="3" override="0" final="0">
+                    <trait>
+                      <Method dispID="1" methodInfo="1"/>
+                    </trait>
+                  </TraitInfo>
+                </traits>
+              </InstanceInfo>
+            </instances>
+            <classes>
+              <ClassInfo cInitIndex="3">
+                <traits/>
+              </ClassInfo>
+            </classes>
+            <scripts>
+              <ScriptInfo initIndex="0">
+                <traits>
+                  <TraitInfo nameIndex="1" override="0" final="0">
+                    <trait>
+                      <Class slotID="1" classInfo="0"/>
+                    </trait>
+                  </TraitInfo>
+                </traits>
+              </ScriptInfo>
+            </scripts>
+            <methodBodies>
+              <MethodBody methodInfo="0" maxStack="3" maxRegs="1" 
scopeDepth="0" maxScope="8" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpPushScope/>
+                  <OpGetGlobalScope/>
+                  <OpGetLex name="2"/>
+                  <OpDup/>
+                  <OpPushScope/>
+                  <OpNewClass classIndex="0"/>
+                  <OpPopScope/>
+                  <OpSetSlot slotID="1"/>
+                  <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+
+              <!-- This is function A.f() -->
+              <!--
+              Its purpose is to push things onto the stack and the scope
+              stack and leave them there to see whether they are still
+              available after return.
+              Ideally we would also verify that the stack and the scope stack
+              from before this function call are not available, but this causes
+              VerifyErrors that interrupt execution.
+              -->
+              <MethodBody methodInfo="1" maxStack="8" maxRegs="1" 
scopeDepth="5" maxScope="14" exceptionCount="0">
+                <code>
+
+                  <!-- OpPop and OpPopScope cause a scope stack
+                  underflow error, so we don't do it. -->
+
+                  <OpFindPropStrict name="10"/>
+                  <OpPushString index="1"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+
+                  <!-- Push junk to the stack -->
+                  <OpPushByte value="9"/>
+                  <OpPushByte value="9"/>
+                  <OpPushByte value="9"/>
+                  <OpPushByte value="9"/>
+                  <OpPushByte value="9"/>
+                  
+                  <!-- Push junk to the scope stack (first A.A, then
+                  4 Sprite classes) -->
+                  <OpGetLocal0/>
+                  <OpPushScope/>
+                  <OpGetGlobalScope/>
+                  <OpGetLex name="9"/>
+                  <OpPushScope/>
+                  <OpGetLex name="9"/>
+                  <OpPushScope/>
+                  <OpGetLex name="9"/>
+                  <OpPushScope/>
+                  <OpGetLex name="9"/>
+                  <OpPushScope/>
+
+                  <!-- Check that the junk is there -->
+                  <OpFindPropStrict name="10"/>
+                  <OpGetScopeObject scopeIndex="0"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+                  <OpFindPropStrict name="10"/>
+                  <OpGetScopeObject scopeIndex="1"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+                  <OpFindPropStrict name="10"/>
+                  <OpGetScopeObject scopeIndex="2"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+                  <OpFindPropStrict name="10"/>
+                  <OpGetScopeObject scopeIndex="3"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+                  <OpFindPropStrict name="10"/>
+                  <OpGetScopeObject scopeIndex="4"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+                  <!-- scopeIndex 5 causes a VerifyError (out of bounds),
+                  so the scope stack from before the call is not available. -->
+
+                 <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+              <MethodBody methodInfo="2" maxStack="10" maxRegs="1" 
scopeDepth="8" maxScope="12" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpConstructSuper argc="0"/>
+                 
+                  <!-- Push stuff to the scope stack (A.A then three 
+                  EventDispatcher classes) -->
+                  <OpGetLocal0/>
+                  <OpPushScope/>
+                  <OpGetGlobalScope/>
+                  <OpGetLex name="5"/>
+                  <OpPushScope/>
+                  <OpGetLex name="5"/>
+                  <OpPushScope/>
+                  <OpGetLex name="5"/>
+                  <OpPushScope/>
+
+                  <!-- Push 3 values, 3 trace function lookups to the stack -->
+                  <OpFindPropStrict name="10"/>
+                  <OpPushByte value="1"/>      
+                  <OpFindPropStrict name="10"/>
+                  <OpPushByte value="2"/>      
+                  <OpFindPropStrict name="10"/>
+                  <OpPushByte value="3"/>      
+                  
+                  <!-- This is one call to trace() -->
+                  <OpCallPropVoid name="10" argc="1"/>
+                 
+                  <!-- This is the call to f() -->
+                  <!-- f() pushes things to the stack and scope stack, 
+                  and leaves them there. They should not be available after
+                  the function call has finished, but what was on the stacks
+                  before the call should still be there. -->
+                  <OpGetLocal0/>
+                  <OpCallPropVoid name="3" argc="0"/>
+                 
+                  <!-- These are the remaining calls to trace() -->
+                  <OpCallPropVoid name="10" argc="1"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+
+                  <!-- Now trace what's on the scope stack -->
+                  <OpFindPropStrict name="10"/>
+                  <OpGetScopeObject scopeIndex="0"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+                 
+                  <OpFindPropStrict name="10"/>
+                  <OpGetScopeObject scopeIndex="1"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+                 
+                  <OpFindPropStrict name="10"/>
+                  <OpGetScopeObject scopeIndex="2"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+                 
+                  <OpFindPropStrict name="10"/>
+                  <OpGetScopeObject scopeIndex="3"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+                 
+                  <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+              <MethodBody methodInfo="3" maxStack="1" maxRegs="1" 
scopeDepth="8" maxScope="9" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpPushScope/>
+                  <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+            </methodBodies>
+          </Action3>
+        </actions>
+      </DoABCDefine>
+      <SymbolClass>
+        <symbols>
+          <Symbol objectID="0" name="a.A"/>
+        </symbols>
+      </SymbolClass>
+      <ShowFrame/>
+      <End/>
+    </tags>
+  </Header>
+</swf>

=== added file 'testsuite/misc-swfmill.all/trace-as3/stack1.trace'
--- a/testsuite/misc-swfmill.all/trace-as3/stack1.trace 1970-01-01 00:00:00 
+0000
+++ b/testsuite/misc-swfmill.all/trace-as3/stack1.trace 2009-11-25 11:19:40 
+0000
@@ -0,0 +1,4 @@
+3
+A.f()
+2
+1

=== added file 'testsuite/misc-swfmill.all/trace-as3/stack1.xml'
--- a/testsuite/misc-swfmill.all/trace-as3/stack1.xml   1970-01-01 00:00:00 
+0000
+++ b/testsuite/misc-swfmill.all/trace-as3/stack1.xml   2009-11-25 11:19:40 
+0000
@@ -0,0 +1,207 @@
+<?xml version="1.0"?>
+<swf version="9" compressed="1">
+<!-- This is a simpler version of scope1.xml. It only traces simple stack
+values, because tracing things from the scope stack means getting object
+and class names right. That's the reason why scope1.swf fails, so this serves
+as a regression test for stack values only. -->
+  <Header framerate="25" frames="1">
+    <size>
+      <Rectangle left="0" right="8000" top="0" bottom="6000"/>
+    </size>
+    <tags>
+      <FileAttributes hasMetaData="0" allowABC="1" 
suppressCrossDomainCaching="0" swfRelativeURLs="0" useNetwork="0"/>
+      <DoABCDefine flags="0" name="">
+        <actions>
+          <Action3 minorVersion="16" majorVersion="46">
+            <constants>
+              <Constants>
+                <ints/>
+                <uints/>
+                <doubles/>
+                <strings>
+                  <String2 value="A.f()"/>
+                  <String2 value="A"/>
+                  <String2 value="MovieClip"/>
+                  <String2 value="f"/>
+                  <String2 value="Object"/>
+                  <String2 value="EventDispatcher"/>
+                  <String2 value="DisplayObject"/>
+                  <String2 value="InteractiveObject"/>
+                  <String2 value="DisplayObjectContainer"/>
+                  <String2 value="Sprite"/>
+                  <String2 value="trace"/>
+                  <String2 value="a"/>
+                  <String2 value="flash.display"/>
+                  <String2 value=""/>
+                  <String2 value="flash.events"/>
+                </strings>
+                <namespaces>
+                  <ProtectedNamespace index="2"/>
+                  <PackageNamespace index="12"/>
+                  <PackageNamespace index="13"/>
+                  <PackageNamespace index="14"/>
+                  <PackageNamespace index="15"/>
+                </namespaces>
+                <namespaceSets/>
+                <multinames>
+                  <QName namespaceIndex="2" nameIndex="2"/>
+                  <QName namespaceIndex="3" nameIndex="3"/>
+                  <QName namespaceIndex="4" nameIndex="4"/>
+                  <QName namespaceIndex="4" nameIndex="5"/>
+                  <QName namespaceIndex="5" nameIndex="6"/>
+                  <QName namespaceIndex="3" nameIndex="7"/>
+                  <QName namespaceIndex="3" nameIndex="8"/>
+                  <QName namespaceIndex="3" nameIndex="9"/>
+                  <QName namespaceIndex="3" nameIndex="10"/>
+                  <QName namespaceIndex="4" nameIndex="11"/>
+                </multinames>
+              </Constants>
+            </constants>
+            <methods>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" 
setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" 
needActivation="0" needArguments="0">
+                <paramTypes/>
+              </MethodInfo>
+            </methods>
+            <metadata/>
+            <instances>
+              <InstanceInfo nameIndex="1" superIndex="2" hasProtectedNS="1" 
interface="0" final="0" sealed="1" protectedNS="1" iInitIndex="2">
+                <interfaces/>
+                <traits>
+                  <TraitInfo nameIndex="3" override="0" final="0">
+                    <trait>
+                      <Method dispID="1" methodInfo="1"/>
+                    </trait>
+                  </TraitInfo>
+                </traits>
+              </InstanceInfo>
+            </instances>
+            <classes>
+              <ClassInfo cInitIndex="3">
+                <traits/>
+              </ClassInfo>
+            </classes>
+            <scripts>
+              <ScriptInfo initIndex="0">
+                <traits>
+                  <TraitInfo nameIndex="1" override="0" final="0">
+                    <trait>
+                      <Class slotID="1" classInfo="0"/>
+                    </trait>
+                  </TraitInfo>
+                </traits>
+              </ScriptInfo>
+            </scripts>
+            <methodBodies>
+              <MethodBody methodInfo="0" maxStack="3" maxRegs="1" 
scopeDepth="0" maxScope="8" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpPushScope/>
+                  <OpGetGlobalScope/>
+                  <OpGetLex name="2"/>
+                  <OpDup/>
+                  <OpPushScope/>
+                  <OpNewClass classIndex="0"/>
+                  <OpPopScope/>
+                  <OpSetSlot slotID="1"/>
+                  <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+
+             <!-- This is function A.f() -->
+             <!--
+             Its purpose is to push things onto the stack and the scope
+             stack and leave them there to see whether they are still
+             available after return.
+             Ideally we would also verify that the stack and the scope stack
+             from before this function call are not available, but this causes
+             VerifyErrors that interrupt execution.
+             -->
+              <MethodBody methodInfo="1" maxStack="8" maxRegs="1" 
scopeDepth="5" maxScope="14" exceptionCount="0">
+               <code>
+
+                 <!-- OpPop and OpPopScope cause a scope stack
+                 underflow error, so we don't do it. -->
+
+                  <OpFindPropStrict name="10"/>
+                  <OpPushString index="1"/>
+                 <OpCallPropVoid name="10" argc="1"/>
+
+                 <!-- Push junk to the stack -->
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 <OpPushByte value="9"/>
+                 
+                 <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+              <MethodBody methodInfo="2" maxStack="10" maxRegs="1" 
scopeDepth="8" maxScope="12" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpConstructSuper argc="0"/>
+                 
+                 <!-- Push 3 values, 3 trace function lookups to the stack -->
+                 <OpFindPropStrict name="10"/>
+                 <OpPushByte value="1"/>       
+                 <OpFindPropStrict name="10"/>
+                 <OpPushByte value="2"/>       
+                 <OpFindPropStrict name="10"/>
+                 <OpPushByte value="3"/>       
+                 
+                 <!-- This is one call to trace() -->
+                 <OpCallPropVoid name="10" argc="1"/>
+                 
+                 <!-- This is the call to f() -->
+                 <!-- f() pushes things to the stack and leaves them there.
+                 They should not be available after
+                 the function call has finished, but what was on the stack
+                 before the call should still be there. -->
+                  <OpGetLocal0/>
+                 <OpCallPropVoid name="3" argc="0"/>
+                 
+                 <!-- These are the remaining calls to trace() -->
+                  <OpCallPropVoid name="10" argc="1"/>
+                  <OpCallPropVoid name="10" argc="1"/>
+
+                 <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+              <MethodBody methodInfo="3" maxStack="1" maxRegs="1" 
scopeDepth="8" maxScope="9" exceptionCount="0">
+                <code>
+                  <OpGetLocal0/>
+                  <OpPushScope/>
+                  <OpReturnVoid/>
+                </code>
+                <exceptions/>
+                <traits/>
+              </MethodBody>
+            </methodBodies>
+          </Action3>
+        </actions>
+      </DoABCDefine>
+      <SymbolClass>
+        <symbols>
+          <Symbol objectID="0" name="a.A"/>
+        </symbols>
+      </SymbolClass>
+      <ShowFrame/>
+      <End/>
+    </tags>
+  </Header>
+</swf>


reply via email to

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