[Top][All Lists]
[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>
- [Gnash-commit] /srv/bzr/gnash/trunk r11651: Organize trace tests better in their own subdirectories so that they,
Benjamin Wolsey <=