gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] /srv/bzr/gnash/trunk r10872: Merge AVM2 machine and parse


From: Benjamin Wolsey
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r10872: Merge AVM2 machine and parser code from the avm2 branch.
Date: Thu, 14 May 2009 17:02:29 +0200
User-agent: Bazaar (1.13.1)

------------------------------------------------------------
revno: 10872
committer: Benjamin Wolsey <address@hidden>
branch nick: trunk
timestamp: Thu 2009-05-14 17:02:29 +0200
message:
  Merge AVM2 machine and parser code from the avm2 branch.
  
  This appears to be stable, but does not work in most cases, so it is disabled
  by default. Compile with --enable-avm2 to enable it.
  
  The default build will now omit AVM2 code, which should reduce code size
  and compile time. There is no warning yet for running AVM2 code without
  AVM2 support.
  
  The perl-generated haxe version of the actionscript.all testsuite is disabled
  as Gnash fails some tests (tests may be bogus).
removed:
  libcore/parser/Namespace.h
added:
  libcore/abc_function.cpp
  libcore/abc_function.h
  libcore/asBoundValues.h
  libcore/asException.h
  libcore/asMethod.cpp
  libcore/asMethod.h
  libcore/asNamespace.cpp
  libcore/asNamespace.h
  libcore/asobj/flash/text/TextFieldAutoSize_as.cpp
  libcore/asobj/flash/text/TextFieldAutoSize_as.h
  libcore/asobj/int_as.cpp
  libcore/asobj/int_as.h
  libcore/swf/DoABCTag.cpp
  libcore/swf/DoABCTag.h
  libcore/swf/SymbolClassTag.h
  libcore/vm/CodeStream.cpp
  testsuite/actionscript.all/haxe-swf9/
  testsuite/actionscript.all/haxe-swf9/Dejagnu.hx
  testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
  testsuite/actionscript.all/haxe-swf9/check.as
  testsuite/libcore.all/CodeStreamTest.cpp
  testsuite/misc-haxe.all/AddChild.hx
modified:
  configure.ac
  libbase/log.cpp
  libbase/log.h
  libcore/Makefile.am
  libcore/Property.cpp
  libcore/SWFStream.cpp
  libcore/SWFStream.h
  libcore/asClass.cpp
  libcore/asClass.h
  libcore/as_environment.cpp
  libcore/as_object.cpp
  libcore/as_object.h
  libcore/asobj/ClassHierarchy.cpp
  libcore/asobj/ClassHierarchy.h
  libcore/asobj/Global.cpp
  libcore/asobj/Makefile.am
  libcore/asobj/flash/display_pkg.cpp
  libcore/asobj/flash/text_pkg.cpp
  libcore/asobj/flash_pkg.cpp
  libcore/impl.cpp
  libcore/namedStrings.cpp
  libcore/namedStrings.h
  libcore/parser/Makefile.am
  libcore/parser/abc_block.cpp
  libcore/parser/abc_block.h
  libcore/parser/action_buffer.cpp
  libcore/parser/action_buffer.h
  libcore/swf/tag_loaders.cpp
  libcore/swf/tag_loaders.h
  libcore/vm/CodeStream.h
  libcore/vm/Machine.cpp
  libcore/vm/Machine.h
  libcore/vm/Makefile.am
  libcore/vm/VM.cpp
  libcore/vm/VM.h
  libcore/vm/asName.h
  testsuite/actionscript.all/Makefile.am
  testsuite/actionscript.all/String.as
  testsuite/libcore.all/Makefile.am
  testsuite/misc-haxe.all/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.1
    committer: steltho <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-07-03 22:16:54 +0800
    message:
      Added a method stub in tag_loaders.cpp for tag 
DEFINESCENEANDFRAMELABELDATA
    modified:
      server/impl.cpp
      server/swf.h
      server/swf/tag_loaders.cpp
      server/swf/tag_loaders.h
    ------------------------------------------------------------
    revno: 9439.2.2
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-07-11 17:29:22 +0800
    message:
      Commited stuff so I can merge safe stack changes.
    modified:
      server/asClass.cpp
      server/as_object.cpp
      server/asobj/ClassHierarchy.h
      server/parser/abc_block.cpp
      server/swf/tag_loaders.cpp
      server/vm/Machine.cpp
      server/vm/Machine.h
      server/vm/SafeStack.h
      server/vm/VM.cpp
      server/vm/VM.h
    ------------------------------------------------------------
    revno: 9439.2.3
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-07-27 11:58:19 +0800
    message:
      Checking of all my work after renaming asName.getName() to 
asName.getABCName()
    added:
      testsuite/server/SafeStackTest.cpp
    modified:
      server/asClass.cpp
      server/asClass.h
      server/as_object.h
      server/parser/abc_block.cpp
      server/parser/abc_block.h
      server/swf/tag_loaders.cpp
      server/vm/Machine.cpp
      server/vm/Machine.h
      server/vm/SafeStack.h
      server/vm/VM.cpp
      server/vm/asName.h
      testsuite/server/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.4
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-08-05 11:02:31 +0800
    message:
      Large commit to prepare for merge with new AVM2 branck.
    added:
      server/asobj/DisplayObject.cpp
      server/asobj/DisplayObject.h
      server/asobj/DisplayObjectContainer.cpp
      server/asobj/DisplayObjectContainer.h
      server/asobj/EventDispatcher.cpp
      server/asobj/EventDispatcher.h
      server/asobj/InteractiveObject.cpp
      server/asobj/InteractiveObject.h
      server/asobj/Sprite_as.cpp
      server/asobj/Sprite_as.h
      server/swf/DoABCTag.cpp
      server/swf/DoABCTag.h
    modified:
      libbase/string_table.cpp
      server/Makefile.am
      server/asClass.h
      server/as_value.cpp
      server/asobj/ClassHierarchy.cpp
      server/asobj/Makefile.am
      server/impl.cpp
      server/namedStrings.cpp
      server/namedStrings.h
      server/parser/abc_block.cpp
      server/parser/abc_block.h
      server/sprite_instance.cpp
      server/swf/DoInitActionTag.h
      server/swf/tag_loaders.cpp
      server/swf/tag_loaders.h
      server/vm/Machine.cpp
      server/vm/Machine.h
      testsuite/libbase/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.5
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_merge_avm2
    timestamp: Tue 2008-08-05 11:45:40 +0800
    message:
      Merge AVM2 Branch with trunk.
    removed:
      .cvsignore
      backend/.cvsignore
      compatibility_include.h
      cygnal/.cvsignore
      cygnal/doc/.cvsignore
      cygnal/testsuite/.cvsignore
      cygnal/testsuite/cygnal.all/.cvsignore
      doc/.cvsignore
      doc/C/.cvsignore
      doc/C/BackLash/.cvsignore
      extensions/.cvsignore
      extensions/dbus/.cvsignore
      extensions/dejagnu/.cvsignore
      extensions/fileio/.cvsignore
      extensions/gtk2/.cvsignore
      extensions/lirc/.cvsignore
      extensions/metome/.cvsignore
      extensions/mysql/.cvsignore
      gui/.cvsignore
      gui/NOTES
      libamf/.cvsignore
      libbase/.cvsignore
      libbase/dlmalloc.c
      libbase/dlmalloc.h
      libbase/test_ogl.cpp
      libbase/tu_file_SDL.cpp
      libbase/utility.cpp
      libgeometry/
      libgeometry/.cvsignore
      libgeometry/Makefile.am
      libgeometry/Point2d.h
      libgeometry/Range2d.h
      libgeometry/snappingrange.h
      libmedia/.cvsignore
      libnet/.cvsignore
      packaging/.cvsignore
      packaging/debian/.cvsignore
      packaging/doc/.cvsignore
      packaging/ipkg/.cvsignore
      packaging/redhat/.cvsignore
      plugin/.cvsignore
      plugin/klash/.cvsignore
      plugin/mozilla-sdk/.cvsignore
      plugin/win32/.cvsignore
      po/.cvsignore
      pythonmodule/.cvsignore
      server/.cvsignore
      server/asobj/.cvsignore
      server/asobj/Error.cpp
      server/asobj/Error.h
      server/parser/.cvsignore
      server/vm/.cvsignore
      testsuite/.cvsignore
      testsuite/actionscript.all/.cvsignore
      testsuite/libamf.all/.cvsignore
      testsuite/libbase/.cvsignore
      testsuite/libgeometry/
      testsuite/libgeometry/.cvsignore
      testsuite/libgeometry/Makefile.am
      testsuite/libgeometry/Point2dTest.cpp
      testsuite/libgeometry/Range2dTest.cpp
      testsuite/libgeometry/snappingrangetest.cpp
      testsuite/libnet.all/.cvsignore
      testsuite/misc-ming.all/.cvsignore
      testsuite/misc-mtasc.all/.cvsignore
      testsuite/misc-swfc.all/.cvsignore
      testsuite/misc-swfmill.all/.cvsignore
      testsuite/movies.all/.cvsignore
      testsuite/samples/.cvsignore
      testsuite/server/.cvsignore
      testsuite/swfdec/.cvsignore
      utilities/.cvsignore
    added:
      ChangeLog-0.8.3
      libbase/Point2d.h
      libbase/Range2d.h
      libbase/snappingrange.h
      libcore/asobj/Accessibility_as.cpp
      libcore/asobj/Accessibility_as.h
      macros/haxe.m4
      testsuite/actionscript.all/Accessibility.as
      testsuite/actionscript.all/Instance.as
      testsuite/libbase/Point2dTest.cpp
      testsuite/libbase/Range2dTest.cpp
      testsuite/libbase/snappingrangetest.cpp
      testsuite/libbase/string_tableTest.cpp
      testsuite/misc-haxe.all/
      testsuite/misc-haxe.all/Dejagnu.hx
      testsuite/misc-haxe.all/Hello.hx
      testsuite/misc-haxe.all/Makefile.am
      testsuite/misc-haxe.all/check.as
      testsuite/misc-ming.all/DepthLimitsTest.c
      testsuite/misc-swfmill.all/Try-without-jump.xml
      testsuite/misc-swfmill.all/jump_to_prev_block.xml
    renamed:
      server/ => libcore/
      server/asobj/GMath.h => libcore/asobj/Math_as.h
      server/asobj/Math.cpp => libcore/asobj/Math_as.cpp
      server/asobj/gstring.h => libcore/asobj/String_as.h
      server/asobj/string.cpp => libcore/asobj/String_as.cpp
      server/dlist.cpp => libcore/DisplayList.cpp
      server/dlist.h => libcore/DisplayList.h
      server/parser/movie_def_impl.cpp => libcore/parser/SWFMovieDefinition.cpp
      server/parser/movie_def_impl.h => libcore/parser/SWFMovieDefinition.h
      testsuite/server/ => testsuite/libcore.all/
    modified:
      .bzrignore
      ChangeLog
      Makefile.am
      backend/Makefile.am
      backend/PathParser.cpp
      backend/PathParser.h
      backend/render_handler.h
      backend/render_handler_agg.cpp
      backend/render_handler_cairo.cpp
      backend/render_handler_ogl.cpp
      configure.ac
      cygnal/Makefile.am
      cygnal/testsuite/cygnal.all/Makefile.am
      doc/DESIGN
      extensions/Makefile.am
      extensions/dbus/Makefile.am
      extensions/dejagnu/Makefile.am
      extensions/fileio/Makefile.am
      extensions/gtk2/Makefile.am
      extensions/launcher/Makefile.am
      extensions/lirc/Makefile.am
      extensions/metome/Makefile.am
      extensions/mysql/Makefile.am
      gui/Makefile.am
      gui/Player.cpp
      gui/dump.cpp
      gui/dump.h
      gui/gtk_glue.h
      gui/gtk_glue_agg.cpp
      gui/gtk_glue_agg.h
      gui/gtksup.h
      gui/gui.cpp
      gui/gui.h
      libamf/Makefile.am
      libamf/amf.cpp
      libamf/amf.h
      libbase/IOChannel.h
      libbase/Makefile.am
      libbase/SimpleBuffer.h
      libbase/URL.cpp
      libbase/curl_adapter.cpp
      libbase/extension.cpp
      libbase/extension.h
      libbase/image.cpp
      libbase/image.h
      libbase/noseek_fd_adapter.cpp
      libbase/rc.cpp
      libbase/rc.h
      libbase/sharedlib.cpp
      libbase/sharedlib.h
      libbase/utility.h
      libcore/DynamicShape.cpp
      libcore/DynamicShape.h
      libcore/FreetypeGlyphsProvider.cpp
      libcore/FreetypeGlyphsProvider.h
      libcore/Makefile.am
      libcore/array.cpp
      libcore/array.h
      libcore/as_environment.cpp
      libcore/as_environment.h
      libcore/as_function.cpp
      libcore/as_object.cpp
      libcore/as_value.cpp
      libcore/as_value.h
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Color.cpp
      libcore/asobj/Error_as.cpp
      libcore/asobj/Global.cpp
      libcore/asobj/Makefile.am
      libcore/asobj/Mouse.cpp
      libcore/asobj/NetStream.cpp
      libcore/asobj/NetStream.h
      libcore/asobj/NetStreamFfmpeg.cpp
      libcore/asobj/NetStreamGst.cpp
      libcore/asobj/flash/display/BitmapData_as.cpp
      libcore/asobj/flash/display/BitmapData_as.h
      libcore/asobj/flash/geom/Rectangle_as.cpp
      libcore/asobj/flash/geom/Rectangle_as.h
      libcore/asobj/xml.cpp
      libcore/asobj/xmlsocket.cpp
      libcore/button_character_instance.cpp
      libcore/button_character_instance.h
      libcore/character.cpp
      libcore/character.h
      libcore/drag_state.h
      libcore/edit_text_character.cpp
      libcore/edit_text_character.h
      libcore/fill_style.cpp
      libcore/font.cpp
      libcore/font.h
      libcore/fontlib.cpp
      libcore/generic_character.cpp
      libcore/generic_character.h
      libcore/impl.cpp
      libcore/matrix.cpp
      libcore/matrix.h
      libcore/movie_root.cpp
      libcore/movie_root.h
      libcore/namedStrings.cpp
      libcore/namedStrings.h
      libcore/parser/BitmapMovieDefinition.cpp
      libcore/parser/Makefile.am
      libcore/parser/abc_block.cpp
      libcore/parser/bitmap_character_def.h
      libcore/parser/character_def.h
      libcore/parser/movie_definition.h
      libcore/parser/shape_character_def.cpp
      libcore/parser/shape_character_def.h
      libcore/parser/sprite_definition.cpp
      libcore/parser/sprite_definition.h
      libcore/parser/video_stream_def.cpp
      libcore/parser/video_stream_def.h
      libcore/rect.cpp
      libcore/rect.h
      libcore/render.cpp
      libcore/render.h
      libcore/shape.h
      libcore/sprite_instance.cpp
      libcore/sprite_instance.h
      libcore/stream.cpp
      libcore/swf/tag_loaders.cpp
      libcore/swf/tag_loaders.h
      libcore/swf_function.cpp
      libcore/text.cpp
      libcore/video_stream_instance.cpp
      libcore/video_stream_instance.h
      libcore/vm/ASHandlers.cpp
      libcore/vm/ActionExec.cpp
      libcore/vm/ActionExec.h
      libcore/vm/Makefile.am
      libcore/vm/SafeStack.h
      libmedia/FLVParser.cpp
      libmedia/Makefile.am
      libmedia/MediaParser.cpp
      libmedia/MediaParser.h
      libmedia/ffmpeg/sound_handler_sdl.cpp
      libmedia/sound_handler.h
      libnet/Makefile.am
      macros/boost.m4
      macros/ffmpeg.m4
      macros/x11.m4
      packaging/debian/rules
      plugin/Makefile.am
      plugin/win32/Makefile.am
      po/Makefile.am
      pythonmodule/Makefile.am
      testsuite/Makefile.am
      testsuite/actionscript.all/ASnative.as
      testsuite/actionscript.all/BitmapData.as
      testsuite/actionscript.all/Makefile.am
      testsuite/actionscript.all/MovieClip.as
      testsuite/actionscript.all/Rectangle.as
      testsuite/actionscript.all/String.as
      testsuite/actionscript.all/Try.as
      testsuite/actionscript.all/array.as
      testsuite/actionscript.all/ops.as
      testsuite/actionscript.all/setProperty.as
      testsuite/actionscript.all/targetPath.as
      testsuite/actionscript.all/with.as
      testsuite/gnashrc.in
      testsuite/libamf.all/Makefile.am
      testsuite/libbase/Makefile.am
      testsuite/libbase/URLTest.cpp
      testsuite/libcore.all/DisplayListTest.cpp
      testsuite/libcore.all/Makefile.am
      testsuite/libcore.all/MatrixTest.cpp
      testsuite/libcore.all/PointTest.cpp
      testsuite/libnet.all/Makefile.am
      testsuite/misc-ming.all/ButtonEventsTest-Runner.cpp
      testsuite/misc-ming.all/DefineEditTextTest-Runner.cpp
      testsuite/misc-ming.all/DefineEditTextVariableNameTest-Runner.cpp
      testsuite/misc-ming.all/DefineTextTest-Runner.cpp
      testsuite/misc-ming.all/DragDropTestRunner.cpp
      testsuite/misc-ming.all/DrawingApiTestRunner.cpp
      testsuite/misc-ming.all/Makefile.am
      testsuite/misc-ming.all/NetStream-SquareTestRunner.cpp
      testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp
      testsuite/misc-ming.all/RollOverOutTest-Runner.cpp
      testsuite/misc-ming.all/RollOverOutTest.c
      testsuite/misc-ming.all/SpriteButtonEventsTest-Runner.cpp
      testsuite/misc-ming.all/Video-EmbedSquareTest.c
      testsuite/misc-ming.all/Video-EmbedSquareTestRunner.cpp
      testsuite/misc-ming.all/attachMovieLoopingTestRunner.cpp
      testsuite/misc-ming.all/attachMovieTestRunner.cpp
      testsuite/misc-ming.all/eventSoundTest1-Runner.cpp
      testsuite/misc-ming.all/intervalTest.as
      testsuite/misc-ming.all/intervalTestRunner.cpp
      testsuite/misc-ming.all/key_event_testrunner.cpp
      testsuite/misc-ming.all/loadMovieTestRunner.cpp
      testsuite/misc-ming.all/loop_test-Runner.cpp
      testsuite/misc-ming.all/loop_test2runner.cpp
      testsuite/misc-ming.all/masks_test2runner.cpp
      testsuite/misc-ming.all/masks_testrunner.cpp
      testsuite/misc-ming.all/matrix_test.c
      testsuite/misc-ming.all/morph_test1runner.cpp
      testsuite/misc-ming.all/opcode_guard_test.c
      testsuite/misc-ming.all/registerClassTestRunner.cpp
      testsuite/misc-ming.all/replace_buttons1test_runner.cpp
      testsuite/misc-ming.all/replace_shapes1test_runner.cpp
      testsuite/misc-ming.all/replace_sprites1test_runner.cpp
      testsuite/misc-ming.all/root_stop_testrunner.cpp
      testsuite/misc-ming.all/simple_loop_testrunner.cpp
      testsuite/misc-ming.all/streamingSoundTest1-Runner.cpp
      testsuite/misc-mtasc.all/Makefile.am
      testsuite/misc-mtasc.all/exception.as
      testsuite/misc-swfc.all/Makefile.am
      testsuite/misc-swfc.all/button_test1runner.cpp
      testsuite/misc-swfmill.all/Makefile.am
      testsuite/misc-swfmill.all/backgroundTestRunner.cpp
      testsuite/movies.all/Makefile.am
      testsuite/movies.all/gravity_embedded-TestRunner.cpp
      testsuite/samples/Makefile.am
      testsuite/samples/clip_as_button2-TestRunner.cpp
      testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp
      testsuite/samples/subshapes-TestRunner.cpp
      testsuite/swfdec/PASSING
      utilities/Makefile.am
      libcore/asobj/Math_as.cpp
      libcore/asobj/String_as.cpp
      libcore/DisplayList.cpp
      libcore/parser/SWFMovieDefinition.cpp
      libcore/parser/SWFMovieDefinition.h
    ------------------------------------------------------------
    revno: 9439.2.6
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-08-05 12:34:43 +0800
    message:
      Fixed small errors left over from merge.
    modified:
      libcore/parser/abc_block.cpp
      libcore/swf/tag_loaders.cpp
      libcore/swf/tag_loaders.h
    ------------------------------------------------------------
    revno: 9439.2.7
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-08-07 13:33:39 +0800
    message:
      Use the state stack to save the Machine's state when calling a new 
function.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.8
    committer: Sandro Santilli <address@hidden>
    branch nick: avm2
    timestamp: Thu 2008-08-07 11:31:02 +0200
    message:
      Remove duplicated rule (merge error)
    modified:
      testsuite/libbase/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.9
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-10 20:50:12 +0800
    message:
      Push changes to AVM2.
    modified:
      libcore/impl.cpp
      libcore/swf/tag_loaders.cpp
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
        ------------------------------------------------------------
        revno: 9439.3.1
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Thu 2008-08-07 14:04:38 +0800
        message:
          Push an empty class on to the stack when creating a new class.
        modified:
          libcore/vm/Machine.cpp
        ------------------------------------------------------------
        revno: 9439.3.2
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Fri 2008-08-08 10:48:53 +0800
        message:
          Add number of items in stack to pop_stack debug message.
        modified:
          libcore/vm/Machine.h
        ------------------------------------------------------------
        revno: 9439.3.3
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Fri 2008-08-08 11:07:53 +0800
        message:
          INITPROPERTY opcode: Add code to initialize a property.  
        modified:
          libcore/vm/Machine.cpp
        ------------------------------------------------------------
        revno: 9439.3.4
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Sat 2008-08-09 21:20:40 +0800
        message:
          Parse SymbolClass tag and print debug information.
        modified:
          libcore/impl.cpp
          libcore/swf/tag_loaders.cpp
    ------------------------------------------------------------
    revno: 9439.2.10
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-10 23:45:26 +0800
    message:
      Added abc_function class for functions defined in ABC blocks.
    added:
      libcore/abc_function.cpp
      libcore/abc_function.h
    modified:
      libcore/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.11
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-10 23:52:41 +0800
    message:
      Add class constructor to new classes created by the NEWCLASS opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.12
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-08-12 11:04:21 +0800
    message:
      Merged change to pass SWFStream as a reference.
    modified:
      libcore/cxform.h
      libcore/fill_style.cpp
      libcore/fill_style.h
      libcore/font.cpp
      libcore/font.h
      libcore/matrix.h
      libcore/movie_root.cpp
      libcore/parser/SWFMovieDefinition.cpp
      libcore/parser/abc_block.cpp
      libcore/parser/abc_block.h
      libcore/parser/button_character_def.cpp
      libcore/parser/button_character_def.h
      libcore/parser/edit_text_character_def.cpp
      libcore/parser/edit_text_character_def.h
      libcore/parser/morph2_character_def.cpp
      libcore/parser/morph2_character_def.h
      libcore/parser/shape_character_def.cpp
      libcore/parser/shape_character_def.h
      libcore/parser/sprite_definition.cpp
      libcore/parser/sprite_definition.h
      libcore/parser/text_character_def.cpp
      libcore/parser/text_character_def.h
      libcore/parser/video_stream_def.cpp
      libcore/parser/video_stream_def.h
      libcore/rect.h
      libcore/styles.cpp
      libcore/styles.h
      libcore/swf/DefineFontAlignZonesTag.cpp
      libcore/swf/DefineFontAlignZonesTag.h
      libcore/swf/DoABCTag.h
      libcore/swf/DoActionTag.h
      libcore/swf/DoInitActionTag.h
      libcore/swf/PlaceObject2Tag.cpp
      libcore/swf/PlaceObject2Tag.h
      libcore/swf/RemoveObjectTag.cpp
      libcore/swf/RemoveObjectTag.h
      libcore/swf/ScriptLimitsTag.h
      libcore/swf/SetBackgroundColorTag.h
      libcore/swf/StartSoundTag.cpp
      libcore/swf/StartSoundTag.h
      libcore/swf/StreamSoundBlockTag.cpp
      libcore/swf/StreamSoundBlockTag.h
      libcore/swf/TagLoadersTable.h
      libcore/swf/tag_loaders.cpp
      libcore/swf/tag_loaders.h
      libcore/text.cpp
      libcore/text.h
      libcore/types.cpp
      libcore/types.h
    ------------------------------------------------------------
    revno: 9439.2.13
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-08-12 11:27:42 +0800
    message:
      Move SymbolClassTag loader into its own class.
    added:
      libcore/swf/SymbolClassTag.h
    modified:
      libcore/impl.cpp
      libcore/swf/tag_loaders.cpp
      libcore/swf/tag_loaders.h
    ------------------------------------------------------------
    revno: 9439.2.14
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-08-12 11:53:53 +0800
    message:
      Call ensureBytes() before reading integers in SymbolClassTag::loader.
    modified:
      libcore/swf/SymbolClassTag.h
    ------------------------------------------------------------
    revno: 9439.2.15
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-13 00:27:36 +0800
    message:
      Added function to locate a class by class name.
    modified:
      libcore/parser/abc_block.cpp
      libcore/parser/abc_block.h
    ------------------------------------------------------------
    revno: 9439.2.16
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-13 00:29:15 +0800
    message:
      Add function to instantiate a class by class name.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.17
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-13 00:29:48 +0800
    message:
      Add execute function to SymbolClassTag, so it can instantiate the main 
class.
    modified:
      libcore/swf/SymbolClassTag.h
    ------------------------------------------------------------
    revno: 9439.2.18
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-13 01:03:21 +0800
    message:
      Have ConstuctSuper opcode remove items from stack, and implement opcode 
FindPropStrict.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.19
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-13 01:07:33 +0800
    message:
      Fix PushString opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.20
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-13 01:12:05 +0800
    message:
      Don't call execute after calling object's constructor.
    modified:
      libcore/swf/SymbolClassTag.h
    ------------------------------------------------------------
    revno: 9439.2.21
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-13 01:18:51 +0800
    message:
      Make CallPropVoid opcode work.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.22
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-08-14 00:13:56 +0800
    message:
      Removed unnecessary log_debug.
    modified:
      libcore/swf/SymbolClassTag.h
    ------------------------------------------------------------
    revno: 9439.2.23
    committer: Sandro Santilli <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-08-13 23:56:21 +0200
    message:
      Merge from trunk
    removed:
      doc/C/amf.xml
      doc/C/debugger.xml
      doc/C/internals.xml
      doc/C/rtmp.xml
      doc/C/sources.xml
    added:
      libbase/GnashImage.h
      libbase/GnashImageGif.cpp
      libbase/GnashImageGif.h
      libbase/GnashImagePng.cpp
      libbase/GnashImagePng.h
      libcore/swf/CSMTextSettingsTag.cpp
      libcore/swf/CSMTextSettingsTag.h
      libcore/swf/DefineButtonCxformTag.h
      macros/nspr.m4
      macros/xpcom.m4
      packaging/xpi/update.rdf
      plugin/xpcom/
      plugin/xpcom/GnashComponent.cpp
      plugin/xpcom/GnashComponent.h
      plugin/xpcom/GnashComponentModule.cpp
      plugin/xpcom/Makefile.am
      plugin/xpcom/iGnashComponent.idl
      testsuite/media/gif-interlaced.gif
      testsuite/media/gif.gif
      testsuite/media/greyscale.png
      testsuite/media/indexed.png
      testsuite/media/png.png
      testsuite/misc-ming.all/loadImageTest.c
    renamed:
      libbase/jpeg.cpp => libbase/GnashImageJpeg.cpp
      libbase/jpeg.h => libbase/GnashImageJpeg.h
      libcore/stream.cpp => libcore/SWFStream.cpp
      libcore/stream.h => libcore/SWFStream.h
    modified:
      Makefile.am
      backend/render_handler_ogl.cpp
      configure.ac
      doc/C/preformatted/gnash_user.info.in
      doc/C/refmanual/building.xml
      doc/C/refmanual/code_dependencies.xml
      gui/gui.cpp
      libbase/GC.cpp
      libbase/GC.h
      libbase/Makefile.am
      libbase/curl_adapter.cpp
      libbase/image.cpp
      libbase/image.h
      libbase/noseek_fd_adapter.cpp
      libbase/shm.cpp
      libcore/Makefile.am
      libcore/asobj/NetConnection.cpp
      libcore/asobj/NetConnection.h
      libcore/asobj/NetStream.cpp
      libcore/asobj/NetStream.h
      libcore/cxform.cpp
      libcore/fill_style.cpp
      libcore/font.cpp
      libcore/gnash.h
      libcore/impl.cpp
      libcore/impl.h
      libcore/matrix.cpp
      libcore/movie_root.cpp
      libcore/namedStrings.cpp
      libcore/namedStrings.h
      libcore/parser/SWFMovieDefinition.cpp
      libcore/parser/SWFMovieDefinition.h
      libcore/parser/abc_block.cpp
      libcore/parser/action_buffer.cpp
      libcore/parser/button_character_def.cpp
      libcore/parser/button_character_def.h
      libcore/parser/edit_text_character_def.cpp
      libcore/parser/filter_factory.cpp
      libcore/parser/morph2_character_def.cpp
      libcore/parser/movie_definition.h
      libcore/parser/shape_character_def.cpp
      libcore/parser/sound_definition.cpp
      libcore/parser/sprite_definition.cpp
      libcore/parser/sprite_definition.h
      libcore/parser/text_character_def.cpp
      libcore/parser/video_stream_def.cpp
      libcore/rect.cpp
      libcore/shape.h
      libcore/sprite_instance.cpp
      libcore/styles.cpp
      libcore/swf/DefineFontAlignZonesTag.cpp
      libcore/swf/DoActionTag.h
      libcore/swf/DoInitActionTag.h
      libcore/swf/PlaceObject2Tag.cpp
      libcore/swf/RemoveObjectTag.cpp
      libcore/swf/ScriptLimitsTag.h
      libcore/swf/StartSoundTag.cpp
      libcore/swf/StreamSoundBlockTag.cpp
      libcore/swf/tag_loaders.cpp
      libcore/swf/tag_loaders.h
      libcore/text.cpp
      libcore/types.cpp
      libcore/vm/ActionExec.cpp
      libmedia/ffmpeg/sound_handler_sdl.cpp
      macros/ffmpeg.m4
      macros/ming.m4
      packaging/xpi.am
      packaging/xpi/install.rdf
      plugin/Makefile.am
      testsuite/Makefile.am
      testsuite/libcore.all/StreamTest.cpp
      testsuite/misc-ming.all/Makefile.am
      utilities/processor.cpp
      libbase/GnashImageJpeg.cpp
      libbase/GnashImageJpeg.h
      libcore/SWFStream.cpp
    ------------------------------------------------------------
    revno: 9439.2.24
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-08-15 00:40:50 +0800
    message:
      Use call_method to execute actionscript functions.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
        ------------------------------------------------------------
        revno: 9439.4.1
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Thu 2008-08-14 01:52:10 +0800
        message:
          Add some useful debug statements to push_stack and pop_stack.
        modified:
          libcore/vm/Machine.h
        ------------------------------------------------------------
        revno: 9439.4.2
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Thu 2008-08-14 19:31:01 +0800
        message:
          Don't resize the arg vector.
        modified:
          libcore/vm/Machine.h
        ------------------------------------------------------------
        revno: 9439.4.3
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Thu 2008-08-14 19:32:42 +0800
        message:
          Use an as_object pointer when calling an actionscript method.
        modified:
          libcore/vm/Machine.cpp
        ------------------------------------------------------------
        revno: 9439.4.4
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Thu 2008-08-14 19:38:11 +0800
        message:
          Use as_value object when pushing a string onto the stack.
        modified:
          libcore/vm/Machine.cpp
        ------------------------------------------------------------
        revno: 9439.4.5
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Thu 2008-08-14 22:00:00 +0800
        message:
          Use call_method to make function calls.
        modified:
          libcore/vm/Machine.cpp
          libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.25
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-08-15 01:49:07 +0800
    message:
      Only read flags and abc name for DOABCDEFINE tag.
    modified:
      libcore/swf/DoABCTag.h
    ------------------------------------------------------------
    revno: 9439.2.26
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-08-15 11:24:26 +0800
    message:
      Fix GETGLOBALSCOPE opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.27
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-08-15 11:34:10 +0800
    message:
      Pass a const ref to locateClass and return NULL if class not found.
    modified:
      libcore/parser/abc_block.cpp
      libcore/parser/abc_block.h
    ------------------------------------------------------------
    revno: 9439.2.28
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-08-15 23:32:25 +0800
    message:
      Remove markReachableResources() override from abc_function.
    modified:
      libcore/abc_function.cpp
      libcore/abc_function.h
    ------------------------------------------------------------
    revno: 9439.2.29
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-08-16 01:23:32 +0800
    message:
      Rename mFrame to mRegisters and use a vector instead of a SafeStack to 
represent the local registers.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.30
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-08-16 22:38:25 +0800
    message:
      Clean up NEWARRAY opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.31
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-08-16 23:09:58 +0800
    message:
      Clean up SETPROPERTY opcode, and improve debug info for INITPROPERTY 
opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.32
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-17 17:40:06 +0800
    message:
      Added more debugging output.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.33
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-17 18:08:45 +0800
    message:
      Update a multiname's global name, after it has been initialized.
    modified:
      libcore/parser/abc_block.cpp
      libcore/parser/abc_block.h
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.34
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-17 18:33:43 +0800
    message:
      SETPROPERTY opcode: initialize the property if it is not found.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.35
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-17 18:51:27 +0800
    message:
      Fix incorrect stack actions in INITPROPERTY and NEWCLASS opcodes.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.36
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-17 19:09:36 +0800
    message:
      Fix NEWFUNCTION opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.37
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-17 19:40:57 +0800
    message:
      Implement GETPROPERTY opcode.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.38
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-17 19:54:33 +0800
    message:
      NEWACTIVATION opcode: Pretend to create an activation object.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.39
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-17 20:00:37 +0800
    message:
      Fix PUSHNULL opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.40
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-17 21:16:54 +0800
    message:
      Fix bug that causes read_S32 to always throw an exception.
    modified:
      libcore/vm/CodeStream.h
    ------------------------------------------------------------
    revno: 9439.2.41
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-17 21:53:33 +0800
    message:
      Fix seekBy so that it seeks the correct number of bytes.
    modified:
      libcore/vm/CodeStream.h
    ------------------------------------------------------------
    revno: 9439.2.42
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-17 22:00:06 +0800
    message:
      Clean up IFFALSE opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.43
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-17 22:18:11 +0800
    message:
      Clean up PUSHFALSE opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.44
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-08-18 00:26:31 +0800
    message:
      Small cleanups in Machine.h
    modified:
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.45
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-08-18 00:29:37 +0800
    message:
      Some cleanups and new debug statements for CALLPROPVOID opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.46
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-08-18 00:33:27 +0800
    message:
      SETSLOT opcode:  Correct stack behavior.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.47
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-08-18 00:42:54 +0800
    message:
      Implement IFNE opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.48
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-08-18 00:48:32 +0800
    message:
      COERCE opcode: Make stack behavior correct.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.49
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-08-18 00:58:20 +0800
    message:
      Clean up SETLOCAL opcode and increase initial number of registers.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.50
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-08-18 01:02:22 +0800
    message:
      Clean up GETLOCAL opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.51
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-08-18 01:08:32 +0800
    message:
      Clean up IFEQ opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.52
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-08-18 01:11:10 +0800
    message:
      Clean up POP opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.53
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-08-18 01:30:57 +0800
    message:
      PUSHNULL opcode: Use set_null to make as_value null.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.54
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-08-19 11:29:32 +0800
    message:
      Begin to implement calling an abc_function.
    modified:
      libcore/abc_function.cpp
      libcore/abc_function.h
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.55
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-08-19 17:30:27 +0800
    message:
      Add int actionscript class.
    modified:
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Makefile.am
      libcore/namedStrings.cpp
      libcore/namedStrings.h
    ------------------------------------------------------------
    revno: 9439.2.56
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-20 00:01:29 +0800
    message:
      Implement CALLPROPERTY opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.57
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-20 00:33:48 +0800
    message:
      Add int actionscript class for real.
    added:
      libcore/asobj/int_as.cpp
      libcore/asobj/int_as.h
    ------------------------------------------------------------
    revno: 9439.2.58
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-20 01:04:30 +0800
    message:
      Change how abc_functions are executed.
    modified:
      libcore/abc_function.cpp
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.59
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev_merge
    timestamp: Wed 2008-08-20 01:45:09 +0800
    message:
      Merge from trunk.
    added:
      libamf/flv.cpp
      libamf/flv.h
      testsuite/libamf.all/test_flv.cpp
      utilities/flvdumper.cpp
      utilities/rtmpget.cpp
    modified:
      Makefile.am
      backend/Makefile.am
      backend/render_handler.h
      backend/render_handler_agg.cpp
      backend/render_handler_cairo.cpp
      backend/render_handler_ogl.cpp
      backend/render_handler_ogl.h
      configure.ac
      cygnal/Makefile.am
      gui/gtk_glue_agg.cpp
      libamf/Makefile.am
      libamf/amf.cpp
      libamf/buffer.cpp
      libamf/buffer.h
      libamf/element.cpp
      libamf/sol.cpp
      libbase/GnashImage.h
      libbase/GnashImageGif.cpp
      libbase/GnashImageJpeg.cpp
      libbase/GnashImagePng.cpp
      libbase/GnashImagePng.h
      libbase/Makefile.am
      libbase/Point2d.h
      libbase/curl_adapter.cpp
      libbase/image.cpp
      libbase/image.h
      libbase/noseek_fd_adapter.cpp
      libbase/tu_file.cpp
      libbase/utility.h
      libcore/CharacterProxy.cpp
      libcore/DisplayList.cpp
      libcore/FreetypeGlyphsProvider.cpp
      libcore/FreetypeGlyphsProvider.h
      libcore/StreamProvider.cpp
      libcore/array.cpp
      libcore/as_value.cpp
      libcore/as_value.h
      libcore/asobj/Date.cpp
      libcore/asobj/Global.cpp
      libcore/asobj/Math_as.cpp
      libcore/asobj/NetStream.cpp
      libcore/asobj/NetStream.h
      libcore/asobj/NetStreamFfmpeg.cpp
      libcore/asobj/NetStreamFfmpeg.h
      libcore/asobj/NetStreamGst.cpp
      libcore/asobj/Number.cpp
      libcore/asobj/flash/geom/Matrix_as.cpp
      libcore/asobj/flash/geom/Point_as.cpp
      libcore/asobj/xmlsocket.cpp
      libcore/bitmap_info.h
      libcore/button_character_instance.cpp
      libcore/character.cpp
      libcore/character.h
      libcore/edit_text_character.cpp
      libcore/fill_style.cpp
      libcore/fontlib.cpp
      libcore/gnash.h
      libcore/impl.cpp
      libcore/matrix.cpp
      libcore/movie_root.cpp
      libcore/movie_root.h
      libcore/parser/BitmapMovieDefinition.cpp
      libcore/parser/BitmapMovieDefinition.h
      libcore/parser/bitmap_character_def.cpp
      libcore/parser/bitmap_character_def.h
      libcore/parser/video_stream_def.cpp
      libcore/parser/video_stream_def.h
      libcore/render.cpp
      libcore/render.h
      libcore/sprite_instance.cpp
      libcore/swf/PlaceObject2Tag.cpp
      libcore/swf/tag_loaders.cpp
      libcore/text.cpp
      libcore/video_stream_instance.cpp
      libcore/video_stream_instance.h
      libcore/vm/ASHandlers.cpp
      libcore/vm/Machine.cpp
      libmedia/FLVParser.cpp
      libmedia/Makefile.am
      libmedia/MediaBuffer.h
      libmedia/MediaParser.cpp
      libmedia/VideoDecoder.h
      libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
      libmedia/ffmpeg/VideoDecoderFfmpeg.h
      libmedia/gst/VideoDecoderGst.cpp
      libmedia/gst/VideoDecoderGst.h
      libnet/network.cpp
      macros/ffmpeg.m4
      packaging/deb.am
      packaging/install-gnash.sh
      packaging/snapshot.am
      testsuite/actionscript.all/TextField.as
      testsuite/libamf.all/Makefile.am
      testsuite/libamf.all/test_amf.cpp
      testsuite/libamf.all/test_sol.cpp
      testsuite/libcore.all/AsValueTest.cpp
      testsuite/libcore.all/MatrixTest.cpp
      testsuite/libnet.all/Makefile.am
      testsuite/misc-swfc.all/matrix_accuracy_test1.sc
      testsuite/swfdec/PASSING
      utilities/Makefile.am
      utilities/soldumper.cpp
    ------------------------------------------------------------
    revno: 9439.2.60
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-20 10:35:24 +0800
    message:
      Assign a global name name to new strings at parse time.
    modified:
      libcore/parser/abc_block.cpp
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.61
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-20 12:42:57 +0800
    message:
      Cleaned up debug statements in the ABC parser.
    modified:
      libcore/parser/abc_block.cpp
    ------------------------------------------------------------
    revno: 9439.2.62
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-20 13:04:09 +0800
    message:
      Clean up the way functions are loaded in AVM2.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.63
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-08-21 13:07:42 +0800
    message:
      Clean up some debug statements.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.64
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-08-21 21:07:13 +0800
    message:
      opcode IFFALS: Always read the number of bytes to jump.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.65
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-08-21 21:28:08 +0800
    message:
      Implement JUMP opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.66
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-08-21 23:15:20 +0800
    message:
      Add some usefull debug statements.
    modified:
      libcore/parser/abc_block.cpp
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.67
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-08-22 01:09:23 +0800
    message:
      Give each function its own local registers.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.68
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-08-22 01:44:20 +0800
    message:
      NEWCLASS opcode: Use the base class when constructing the new class.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.69
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_traits
    timestamp: Fri 2008-08-22 11:07:31 +0800
    message:
      Initial changes to get function traits to work.
    modified:
      libcore/asClass.cpp
      libcore/asClass.h
      libcore/parser/abc_block.cpp
      libcore/parser/abc_block.h
      libcore/swf/DoABCTag.h
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.70
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_traits
    timestamp: Fri 2008-08-22 11:26:02 +0800
    message:
      Pass arguments to Machine when calling an ABC function.
    modified:
      libcore/abc_function.cpp
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.71
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_traits
    timestamp: Fri 2008-08-22 11:33:08 +0800
    message:
      IFNE opcode: add useful debugging statement.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.72
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_traits
    timestamp: Fri 2008-08-22 11:53:02 +0800
    message:
      Debug clean ups.
    modified:
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.73
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_traits
    timestamp: Fri 2008-08-22 11:53:14 +0800
    message:
      Fix CONSTRUCTPROP opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.74
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_traits
    timestamp: Fri 2008-08-22 17:41:33 +0800
    message:
      Clean up debug statements.
    modified:
      libcore/parser/abc_block.cpp
    ------------------------------------------------------------
    revno: 9439.2.75
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_traits
    timestamp: Fri 2008-08-22 17:42:25 +0800
    message:
      Fixed AsClass::AddSlot.
    modified:
      libcore/asClass.cpp
    ------------------------------------------------------------
    revno: 9439.2.76
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_traits
    timestamp: Fri 2008-08-22 17:51:45 +0800
    message:
      Allow abc_functions to return a value.
    modified:
      libcore/abc_function.cpp
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.77
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_traits
    timestamp: Fri 2008-08-22 18:19:17 +0800
    message:
      CONSTRUCTPROP opcode: Call the constructor of the correct object.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.78
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_traits
    timestamp: Fri 2008-08-22 19:16:15 +0800
    message:
      Remove all object->dump_member calls, and clean up ASTYPE opcode.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.79
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_traits
    timestamp: Fri 2008-08-22 19:29:02 +0800
    message:
      INITPROPERTY opcode: Make sure not initialize a property on an undefined 
object.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.80
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_traits
    timestamp: Fri 2008-08-22 19:32:54 +0800
    message:
      Clean up PUSHINT opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.81
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-08-22 23:42:16 +0800
    message:
      Add TextFieldAutoSize actionscript class.
    added:
      libcore/asobj/TextFieldAutoSize_as.cpp
      libcore/asobj/TextFieldAutoSize_as.h
    modified:
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Makefile.am
      libcore/namedStrings.cpp
      libcore/namedStrings.h
    ------------------------------------------------------------
    revno: 9439.2.82
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-08-22 23:47:34 +0800
    message:
      Implement ADD opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.83
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-08-22 23:57:06 +0800
    message:
      Clean up PUSHBYTE opcode, and increase maximum register size.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.84
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-08-23 00:14:15 +0800
    message:
      If FINDPROPSTRICT fails to find a property print a warning instead of 
throwing an exception.
    modified:
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.85
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_codestream
    timestamp: Sat 2008-08-23 12:11:35 +0800
    message:
      Rewrote CodeStream to inherit from istream.  Added unit tests and moved 
code from CodeStream.h to CodeStream.cpp
    added:
      libcore/vm/CodeStream.cpp
      testsuite/libcore.all/CodeStreamTest.cpp
    modified:
      libcore/parser/abc_block.cpp
      libcore/vm/CodeStream.h
      libcore/vm/Machine.cpp
      libcore/vm/Makefile.am
      testsuite/libcore.all/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.86
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-08-25 01:04:43 +0800
    message:
      Initialize global with an as_object instead of the TextFieldAutoSize 
object constructor.
    modified:
      libcore/asobj/TextFieldAutoSize_as.cpp
    ------------------------------------------------------------
    revno: 9439.2.87
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-27 13:25:49 +0800
    message:
      Add a useful debug message.
    modified:
      libcore/parser/abc_block.cpp
    ------------------------------------------------------------
    revno: 9439.2.88
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-27 13:27:40 +0800
    message:
      Add flash.utils package to actionscript objects.
    added:
      libcore/asobj/flash/utils_pkg.cpp
      libcore/asobj/flash/utils_pkg.h
    modified:
      libcore/asobj/Makefile.am
      libcore/asobj/flash_pkg.cpp
    ------------------------------------------------------------
    revno: 9439.2.89
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-08-27 13:41:23 +0800
    message:
      If we can't find a property in the scope stack, look again using 
as_environment::find_object.
    modified:
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.90
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-08-28 20:39:21 +0800
    message:
      Fixed bug in CodeStream::read_S24().
    modified:
      libcore/vm/CodeStream.cpp
      testsuite/libcore.all/CodeStreamTest.cpp
    ------------------------------------------------------------
    revno: 9439.2.91
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-08-28 21:04:18 +0800
    message:
      Clean up TYPEOF opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.92
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-08-28 22:05:32 +0800
    message:
      Clean up CONVERT_D opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.93
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-08-29 20:11:17 +0800
    message:
      Added debug statement to abc_block.cpp
    modified:
      libcore/parser/abc_block.cpp
    ------------------------------------------------------------
    revno: 9439.2.94
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-08-30 18:41:42 +0800
    message:
      COERCE opcode: Coerce null values.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.95
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-08-30 20:10:15 +0800
    message:
      Add Stage class to display_pkg.
    modified:
      libcore/asobj/flash/display_pkg.cpp
    ------------------------------------------------------------
    revno: 9439.2.96
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-08-30 20:13:17 +0800
    message:
      Add MovieClip calss.
    added:
      libcore/asobj/flash/display/MovieClip_as.cpp
      libcore/asobj/flash/display/MovieClip_as.h
    modified:
      libcore/asobj/Makefile.am
      libcore/asobj/flash/display_pkg.cpp
    ------------------------------------------------------------
    revno: 9439.2.97
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-08-30 20:19:45 +0800
    message:
      GETPROPERTY opcode: use as_environment::get_variable to search for the 
property.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.98
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-08-30 21:30:22 +0800
    message:
      Clean up IFGT opcode and in NEWCLASS opcode, set class's constructor to 
the right value.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.99
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-08-30 21:40:38 +0800
    message:
      Clean up EQUALS opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.100
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-31 08:41:54 +0800
    message:
      Pass an asMethod object to initialize abc_function.
    modified:
      libcore/abc_function.cpp
      libcore/abc_function.h
      libcore/asClass.cpp
      libcore/asClass.h
      libcore/parser/abc_block.cpp
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.101
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-31 09:43:07 +0800
    message:
      Clean up CONVERT_I opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.102
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-31 10:23:49 +0800
    message:
      Don't overwrite mExitWithReturn when we have several nested functions.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.103
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-08-31 11:02:37 +0800
    message:
      Wrap AVM2 debug messages with IF_VERBOSE_ACTION.
    modified:
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.104
    committer: Sandro Santilli <address@hidden>
    branch nick: avm2
    timestamp: Mon 2008-09-01 23:25:03 +0200
    message:
      merge from trunk
    added:
      testsuite/XmlSocketServer.pl
      testsuite/misc-ming.all/XMLSocketTest.c
      testsuite/misc-swfc.all/stackscope.sc
    renamed:
      libcore/asobj/xmlsocket.cpp => libcore/asobj/XMLSocket_as.cpp
      libcore/asobj/xmlsocket.h => libcore/asobj/XMLSocket_as.h
    modified:
      backend/render_handler_agg.cpp
      backend/render_handler_cairo.cpp
      backend/render_handler_ogl.cpp
      extensions/gtk2/gtkext.cpp
      libamf/amftest.cpp
      libbase/GnashException.h
      libbase/GnashImagePng.cpp
      libbase/image.cpp
      libbase/tu_file.cpp
      libbase/tu_file.h
      libcore/DisplayList.cpp
      libcore/LoadVariablesThread.cpp
      libcore/Property.cpp
      libcore/URLAccessManager.h
      libcore/array.cpp
      libcore/as_environment.cpp
      libcore/as_environment.h
      libcore/as_function.cpp
      libcore/as_function.h
      libcore/as_object.cpp
      libcore/as_object.h
      libcore/as_value.cpp
      libcore/as_value.h
      libcore/asobj/AsBroadcaster.cpp
      libcore/asobj/Boolean.cpp
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Global.cpp
      libcore/asobj/LoadVars.cpp
      libcore/asobj/LoadVars.h
      libcore/asobj/LocalConnection.cpp
      libcore/asobj/Makefile.am
      libcore/asobj/Math_as.cpp
      libcore/asobj/NetConnection.cpp
      libcore/asobj/NetConnection.h
      libcore/asobj/NetStream.cpp
      libcore/asobj/NetStreamFfmpeg.cpp
      libcore/asobj/Number.cpp
      libcore/asobj/Object.cpp
      libcore/asobj/SharedObject.cpp
      libcore/asobj/Sound.cpp
      libcore/asobj/Sound.h
      libcore/asobj/String_as.cpp
      libcore/asobj/System.cpp
      libcore/asobj/flash/geom/Point_as.cpp
      libcore/asobj/flash/geom/Rectangle_as.cpp
      libcore/asobj/xml.cpp
      libcore/asobj/xml.h
      libcore/asobj/xmlnode.cpp
      libcore/asobj/xmlnode.h
      libcore/button_character_instance.cpp
      libcore/character.cpp
      libcore/edit_text_character.cpp
      libcore/event_id.h
      libcore/fill_style.cpp
      libcore/fontlib.cpp
      libcore/matrix.cpp
      libcore/matrix.h
      libcore/movie_root.cpp
      libcore/movie_root.h
      libcore/namedStrings.cpp
      libcore/namedStrings.h
      libcore/sprite_instance.cpp
      libcore/sprite_instance.h
      libcore/swf/PlaceObject2Tag.cpp
      libcore/swf/PlaceObject2Tag.h
      libcore/swf/tag_loaders.cpp
      libcore/timers.cpp
      libcore/video_stream_instance.cpp
      libcore/vm/ASHandlers.cpp
      libcore/vm/ASHandlers.h
      libcore/vm/ActionExec.cpp
      libcore/vm/ActionExec.h
      libcore/vm/ExecutableCode.h
      libcore/vm/SafeStack.h
      libcore/vm/VM.cpp
      libcore/vm/VM.h
      libcore/vm/action.cpp
      libcore/vm/action.h
      libcore/vm/fn_call.h
      libmedia/FLVParser.cpp
      libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
      libmedia/ffmpeg/VideoDecoderFfmpeg.h
      macros/ffmpeg.m4
      testsuite/actionscript.all/Function.as
      testsuite/actionscript.all/MovieClip.as
      testsuite/actionscript.all/XMLNode.as
      testsuite/actionscript.all/XMLSocket.as
      testsuite/libbase/NoSeekFileTest.cpp
      testsuite/libbase/TCXXRc.cpp
      testsuite/libcore.all/StreamTest.cpp
      testsuite/misc-ming.all/Makefile.am
      testsuite/misc-ming.all/intervalTestRunner.cpp
      testsuite/misc-ming.all/matrix_test.c
      testsuite/misc-ming.all/runtime_vm_stack_test.c
      testsuite/misc-swfc.all/Makefile.am
      testsuite/samples/Makefile.am
      testsuite/swfdec/PASSING
      libcore/asobj/XMLSocket_as.cpp
      libcore/asobj/XMLSocket_as.h
    ------------------------------------------------------------
    revno: 9439.2.105
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-09-04 11:34:04 +0800
    message:
      Fix the build and improve creation of object members at parse time.
    modified:
      libcore/asClass.cpp
      libcore/parser/abc_block.cpp
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
      libcore/vm/VM.cpp
        ------------------------------------------------------------
        revno: 9439.5.1
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Tue 2008-09-02 01:24:52 +0800
        message:
          Clean up debug messages for abc_parser.
        modified:
          libcore/asClass.cpp
          libcore/parser/abc_block.cpp
        ------------------------------------------------------------
        revno: 9439.5.2
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Tue 2008-09-02 09:46:18 +0800
        message:
          Fix creation of Constant and Slot properties at parse time.
        modified:
          libcore/parser/abc_block.cpp
        ------------------------------------------------------------
        revno: 9439.5.3
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Tue 2008-09-02 10:19:58 +0800
        message:
          Do not specify a slot value for properties with slot index = 0.
        modified:
          libcore/asClass.cpp
          libcore/parser/abc_block.cpp
    ------------------------------------------------------------
    revno: 9439.2.106
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-09-05 13:39:59 +0800
    message:
      ADD opcode: Add values in the correct order.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.107
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-09-05 15:27:17 +0800
    message:
      Move some non-trivial functions from Machine.h to Machine.cpp.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.108
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-09-06 19:14:20 +0800
    message:
      Remove MovieClip actionscript class, and use the one defined in 
sprite_instance.cpp.
    removed:
      libcore/asobj/flash/display/MovieClip_as.cpp
      libcore/asobj/flash/display/MovieClip_as.h
    modified:
      libcore/asobj/Makefile.am
      libcore/asobj/flash/display_pkg.cpp
    ------------------------------------------------------------
    revno: 9439.2.109
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-09-06 23:57:32 +0800
    message:
      Move some of the new Actionscript3 classes to their correct packages.
    removed:
      libcore/asobj/DisplayObject.cpp
      libcore/asobj/DisplayObject.h
      libcore/asobj/DisplayObjectContainer.cpp
      libcore/asobj/DisplayObjectContainer.h
      libcore/asobj/EventDispatcher.cpp
      libcore/asobj/EventDispatcher.h
      libcore/asobj/InteractiveObject.cpp
      libcore/asobj/InteractiveObject.h
      libcore/asobj/Sprite_as.cpp
      libcore/asobj/Sprite_as.h
      libcore/asobj/TextFieldAutoSize_as.cpp
      libcore/asobj/TextFieldAutoSize_as.h
    added:
      libcore/asobj/flash/display/DisplayObjectContainer_as.cpp
      libcore/asobj/flash/display/DisplayObjectContainer_as.h
      libcore/asobj/flash/display/DisplayObject_as.cpp
      libcore/asobj/flash/display/DisplayObject_as.h
      libcore/asobj/flash/display/InteractiveObject_as.cpp
      libcore/asobj/flash/display/InteractiveObject_as.h
      libcore/asobj/flash/display/Sprite_as.cpp
      libcore/asobj/flash/display/Sprite_as.h
      libcore/asobj/flash/display/Stage_as.cpp
      libcore/asobj/flash/display/Stage_as.h
      libcore/asobj/flash/events/
      libcore/asobj/flash/events/EventDispatcher_as.cpp
      libcore/asobj/flash/events/EventDispatcher_as.h
      libcore/asobj/flash/events_pkg.cpp
      libcore/asobj/flash/events_pkg.h
      libcore/asobj/flash/text/TextFieldAutoSize_as.cpp
      libcore/asobj/flash/text/TextFieldAutoSize_as.h
    modified:
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Makefile.am
      libcore/asobj/flash/display_pkg.cpp
      libcore/asobj/flash/text_pkg.cpp
      libcore/asobj/flash_pkg.cpp
    ------------------------------------------------------------
    revno: 9439.2.110
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-09-08 14:34:24 +0800
    message:
      Simplify property lookups.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.111
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-09-09 11:08:38 +0800
    message:
      get_scope_stack should return the ith item from the bottom.
    modified:
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.112
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-09-09 11:50:38 +0800
    message:
      Clear stacks and registers when calling Machine::instantiateClass.
    modified:
      libcore/swf/SymbolClassTag.h
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.113
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-09-09 11:59:07 +0800
    message:
      Add useful debug message.
    modified:
      libcore/swf/SymbolClassTag.h
    ------------------------------------------------------------
    revno: 9439.2.114
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-09-10 00:23:40 +0800
    message:
      COERCE opcode:  Make this a no-op for now.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.115
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-09-11 23:23:21 +0800
    message:
      Add mGlobalObject property to Machine class.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.116
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-09-11 23:57:55 +0800
    message:
      Make find_prop_strict always search the global object.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.117
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-09-12 01:48:02 +0800
    message:
      Get arguments from the stack in the correct order.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.118
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-09-12 02:18:39 +0800
    message:
      Clean up Increment opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.119
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-09-12 03:04:58 +0800
    message:
      Initialize Class traits to 0.
    modified:
      libcore/parser/abc_block.cpp
    ------------------------------------------------------------
    revno: 9439.2.120
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-09-12 09:08:51 +0800
    message:
      Reset CodeStream after functions have returned.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.121
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-09-12 20:09:40 +0800
    message:
      Add addChild method to DisplayObjectContainerClass.
    modified:
      libcore/asobj/flash/display/DisplayObjectContainer_as.cpp
      libcore/asobj/flash/display/DisplayObjectContainer_as.h
      libcore/asobj/flash/display/DisplayObject_as.cpp
      libcore/asobj/flash/display/DisplayObject_as.h
    ------------------------------------------------------------
    revno: 9439.2.122
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-09-13 11:22:53 +0800
    message:
      NEWCLASS opcode: Construct the new class with the correct base class.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.123
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-09-13 16:11:38 +0800
    message:
      Add text_filed actionscript class to text_pkg.
    modified:
      libcore/asobj/flash/text_pkg.cpp
    ------------------------------------------------------------
    revno: 9439.2.124
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-09-13 16:38:38 +0800
    message:
      Add another overload of Machine::get_property_value method.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.125
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-09-13 17:06:12 +0800
    message:
      GETPROPERTY opcode: use as_object::get_member to get member values.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.126
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-09-13 18:30:51 +0800
    message:
      Rename mAsValueScopeStack to mScopeStack and change its type to 
SafeStack<boost::intrusive_ptr<as_object> > .
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.127
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-09-14 00:33:04 +0800
    message:
      Clean up CONSTRUCTPROP opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.128
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-09-14 01:51:12 +0800
    message:
      Initialize the Machine's string_table.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.129
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-09-14 02:31:43 +0800
    message:
      Clean up INITPROPERTY opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.130
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev_merge
    timestamp: Wed 2008-09-17 11:06:58 +0800
    message:
      Merge from trunk.
    added:
      .vimrc
      libcore/vm/CallStack.cpp
      libcore/vm/CallStack.h
      plugin/xpcom/README.txt
      testsuite/misc-ming.all/SharedObjectTest.as
      testsuite/misc-ming.all/SharedObjectTest.sol/
      testsuite/misc-ming.all/SharedObjectTest.sol/README
      testsuite/misc-ming.all/SharedObjectTest.sol/sol1.sol
      testsuite/misc-ming.all/SharedObjectTestRunner.sh
    renamed:
      libbase/curl_adapter.h => libbase/NetworkAdapter.h
    modified:
      .bzrignore
      ChangeLog
      Makefile.am
      README
      autogen.sh
      backend/Makefile.am
      backend/render_handler_agg.cpp
      backend/render_handler_cairo.cpp
      configure.ac
      cygnal/Makefile.am
      cygnal/crc.cpp
      cygnal/cygnal.cpp
      cygnal/testsuite/cygnal.all/Makefile.am
      doc/C/BackLash/asspec.xml
      doc/C/BackLash/date.xml
      doc/C/BackLash/netconnection.xml
      doc/C/dumpshm.man-xml
      doc/C/preformatted/dumpshm.1.in
      doc/C/refmanual/amf.xml
      doc/C/refmanual/building.xml
      doc/C/refmanual/extensions/extensions.xml
      doc/C/refmanual/internals.xml
      doc/C/refmanual/rtmp.xml
      doc/C/soldumper.man-xml
      doc/C/usermanual/glossary.xml
      extensions/mysql/mysql_table.cpp
      gui/Player.cpp
      gui/Player.h
      gui/aqua_ogl_glue.cpp
      gui/gnash.cpp
      gui/gtk_glue_agg.h
      gui/gtk_glue_gtkglext.cpp
      gui/gui.cpp
      gui/gui.h
      gui/kde_glue_opengl.cpp
      gui/sdl.cpp
      gui/sdl_ogl_glue.cpp
      libamf/element.cpp
      libamf/element.h
      libamf/flv.cpp
      libamf/sol.cpp
      libamf/sol.h
      libbase/GC.cpp
      libbase/GnashImageJpeg.cpp
      libbase/GnashImageJpeg.h
      libbase/Makefile.am
      libbase/SimpleBuffer.h
      libbase/curl_adapter.cpp
      libbase/image.cpp
      libbase/image.h
      libbase/log.cpp
      libbase/log.h
      libbase/rc.cpp
      libbase/rc.h
      libbase/shm.cpp
      libbase/utf8.cpp
      libbase/utility.h
      libcore/LoadVariablesThread.cpp
      libcore/Makefile.am
      libcore/PropertyList.h
      libcore/SWFStream.cpp
      libcore/StreamProvider.cpp
      libcore/StreamProvider.h
      libcore/array.cpp
      libcore/array.h
      libcore/as_environment.cpp
      libcore/as_environment.h
      libcore/as_object.cpp
      libcore/as_object.h
      libcore/as_value.cpp
      libcore/as_value.h
      libcore/asobj/AsBroadcaster.cpp
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Date.cpp
      libcore/asobj/LoadVars.cpp
      libcore/asobj/LoadVars.h
      libcore/asobj/Mouse.cpp
      libcore/asobj/NetConnection.cpp
      libcore/asobj/NetStreamFfmpeg.cpp
      libcore/asobj/NetStreamFfmpeg.h
      libcore/asobj/Selection.cpp
      libcore/asobj/SharedObject.cpp
      libcore/asobj/SharedObject.h
      libcore/asobj/Sound.cpp
      libcore/asobj/String_as.cpp
      libcore/asobj/System.cpp
      libcore/asobj/xml.cpp
      libcore/asobj/xml.h
      libcore/builtin_function.h
      libcore/button_character_instance.cpp
      libcore/debugger.cpp
      libcore/debugger.h
      libcore/edit_text_character.cpp
      libcore/fill_style.cpp
      libcore/fill_style.h
      libcore/font.cpp
      libcore/font.h
      libcore/mouse_button_state.h
      libcore/movie_root.cpp
      libcore/movie_root.h
      libcore/namedStrings.cpp
      libcore/namedStrings.h
      libcore/parser/SWFMovieDefinition.cpp
      libcore/parser/action_buffer.cpp
      libcore/parser/action_buffer.h
      libcore/parser/button_character_def.cpp
      libcore/parser/button_character_def.h
      libcore/parser/edit_text_character_def.cpp
      libcore/parser/edit_text_character_def.h
      libcore/parser/morph2_character_def.cpp
      libcore/parser/morph2_character_def.h
      libcore/parser/shape_character_def.cpp
      libcore/parser/shape_character_def.h
      libcore/parser/sprite_definition.cpp
      libcore/parser/sprite_definition.h
      libcore/parser/text_character_def.cpp
      libcore/parser/text_character_def.h
      libcore/parser/video_stream_def.cpp
      libcore/parser/video_stream_def.h
      libcore/sprite_instance.cpp
      libcore/sprite_instance.h
      libcore/styles.cpp
      libcore/styles.h
      libcore/swf/CSMTextSettingsTag.cpp
      libcore/swf/CSMTextSettingsTag.h
      libcore/swf/DefineButtonCxformTag.h
      libcore/swf/DefineFontAlignZonesTag.cpp
      libcore/swf/DefineFontAlignZonesTag.h
      libcore/swf/DoABCTag.h
      libcore/swf/DoActionTag.h
      libcore/swf/DoInitActionTag.h
      libcore/swf/PlaceObject2Tag.cpp
      libcore/swf/PlaceObject2Tag.h
      libcore/swf/RemoveObjectTag.cpp
      libcore/swf/RemoveObjectTag.h
      libcore/swf/ScriptLimitsTag.h
      libcore/swf/SetBackgroundColorTag.h
      libcore/swf/StartSoundTag.cpp
      libcore/swf/StartSoundTag.h
      libcore/swf/StreamSoundBlockTag.cpp
      libcore/swf/StreamSoundBlockTag.h
      libcore/swf/SymbolClassTag.h
      libcore/swf/TagLoadersTable.h
      libcore/swf/tag_loaders.cpp
      libcore/swf/tag_loaders.h
      libcore/swf_function.cpp
      libcore/swf_function.h
      libcore/video_stream_instance.cpp
      libcore/vm/ASHandlers.cpp
      libcore/vm/ActionExec.cpp
      libcore/vm/ActionExec.h
      libcore/vm/Makefile.am
      libcore/vm/SafeStack.h
      libcore/vm/VM.cpp
      libcore/vm/VM.h
      libcore/vm/action.h
      libcore/vm/fn_call.h
      libmedia/FLVParser.cpp
      libmedia/FLVParser.h
      libmedia/MediaParser.cpp
      libmedia/MediaParser.h
      libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
      libmedia/ffmpeg/sound_handler_sdl.cpp
      libmedia/ffmpeg/sound_handler_sdl.h
      libnet/cque.cpp
      libnet/cque.h
      libnet/network.cpp
      libnet/network.h
      libnet/rtmp.cpp
      libnet/rtmp.h
      libnet/rtmp_client.cpp
      libnet/rtmp_msg.cpp
      libnet/rtmp_msg.h
      libnet/rtmp_server.cpp
      macros/libltdl.m4
      macros/nspr.m4
      macros/xpcom.m4
      packaging/doc/gnashuser.ref.in
      packaging/redhat/gnash.spec
      packaging/xpi.am
      packaging/xpi/install.rdf
      plugin/klash/klash_part.desktop
      plugin/plugin.cpp
      plugin/win32/npgnash.rc
      plugin/win32/plugin.cpp
      plugin/xpcom/Makefile.am
      po/cs.po
      po/de.po
      po/es.po
      po/fi.po
      po/fr.po
      po/it.po
      po/ja.po
      po/sv.po
      testsuite/actionscript.all/Function.as
      testsuite/actionscript.all/Inheritance.as
      testsuite/actionscript.all/LoadVars.as
      testsuite/actionscript.all/MovieClip.as
      testsuite/actionscript.all/SharedObject.as
      testsuite/actionscript.all/TextField.as
      testsuite/actionscript.all/Try.as
      testsuite/actionscript.all/XML.as
      testsuite/actionscript.all/array.as
      testsuite/anaylse-results.sh
      testsuite/libamf.all/test_el.cpp
      testsuite/libcore.all/AsValueTest.cpp
      testsuite/libcore.all/EdgeTest.cpp
      testsuite/libcore.all/Makefile.am
      testsuite/libcore.all/MatrixTest.cpp
      testsuite/libcore.all/StreamTest.cpp
      testsuite/libnet.all/Makefile.am
      testsuite/libnet.all/test_rtmp.cpp
      testsuite/misc-haxe.all/Makefile.am
      testsuite/misc-ming.all/DragDropTestRunner.cpp
      testsuite/misc-ming.all/Makefile.am
      testsuite/misc-ming.all/NetStream-SquareTest.c
      testsuite/misc-ming.all/XMLSocketTest.c
      testsuite/misc-ming.all/action_execution_order_test8.c
      testsuite/misc-ming.all/matrix_test.c
      testsuite/misc-swfc.all/Makefile.am
      testsuite/swfdec/PASSING
      utilities/Makefile.am
      utilities/processor.cpp
      utilities/rtmpget.cpp
      libbase/NetworkAdapter.h
    ------------------------------------------------------------
    revno: 9439.2.131
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-09-26 01:01:25 +0800
    message:
      Add perl script to convert Actionscript2 to Haxe.
    added:
      testsuite/actionscript.all/haxe-swf9/
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.132
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-09-26 01:05:37 +0800
    message:
      Add header files for running Haxe tests.
    added:
      testsuite/actionscript.all/haxe-swf9/Dejagnu.hx
      testsuite/actionscript.all/haxe-swf9/check.as
    ------------------------------------------------------------
    revno: 9439.2.133
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-09-28 14:37:27 +0800
    message:
      Read a function's maximum number of registers, and use it to initialize 
Machine::mRegisters.
    modified:
      libcore/abc_function.cpp
      libcore/asClass.h
      libcore/parser/abc_block.cpp
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.134
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-09-28 21:23:03 +0800
    message:
      Begin implementing abc_block::finalize_mbody.
    modified:
      libcore/abc_function.cpp
      libcore/abc_function.h
      libcore/asClass.cpp
      libcore/asClass.h
      libcore/parser/abc_block.cpp
      libcore/swf/DoABCTag.h
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.135
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-09-30 21:59:24 +0800
    message:
      Move asMethod::initPrototype() to asClass.cpp.
    modified:
      libcore/asClass.cpp
      libcore/asClass.h
    ------------------------------------------------------------
    revno: 9439.2.136
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-09-30 22:02:04 +0800
    message:
      Add a reference to Machine for the function that is being executed.
    modified:
      libcore/abc_function.cpp
      libcore/abc_function.h
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.137
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-09-30 22:20:10 +0800
    message:
      NEWACTIVATION opcode: Create an activation object that has the correct 
properties.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.138
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-09-30 23:54:41 +0800
    message:
      Capture the scope stack when we create a function and use that scope 
stack when call the function.
    modified:
      libcore/abc_function.cpp
      libcore/abc_function.h
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.139
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-10-01 13:08:14 +0800
    message:
      Add check for perl to the configure script.
    modified:
      configure.ac
    ------------------------------------------------------------
    revno: 9439.2.140
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-10-01 13:10:38 +0800
    message:
      Add some preprocessor macros to allow String.as to be converted to .hx.
    modified:
      testsuite/actionscript.all/String.as
    ------------------------------------------------------------
    revno: 9439.2.141
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-10-01 13:21:29 +0800
    message:
      Remove hard-coded class name.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.142
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-10-01 13:22:24 +0800
    message:
      Add ability to convert .as tests to .hx and run them for swf-v9 tests. 
    modified:
      testsuite/actionscript.all/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.143
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-10-03 19:37:27 +0800
    message:
      Improve as2 -> haxe conversion script and remove some preprocessor 
directives from String.as.
    modified:
      testsuite/actionscript.all/String.as
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.144
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-10-03 23:26:56 +0800
    message:
      Remove more directives from String.as.
    modified:
      testsuite/actionscript.all/String.as
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.145
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-10-04 19:43:32 +0800
    message:
      When creating new functions only capture the current scope stack.
    modified:
      libcore/abc_function.h
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.146
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-10-04 20:03:19 +0800
    message:
      Add a useful log_debug and don't call as_object::get_member on undefined 
objects.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.147
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-05 08:14:40 +0800
    message:
      Clean up some debug statements.
    modified:
      libcore/abc_function.cpp
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.148
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-05 08:17:02 +0800
    message:
      Improve handling of String.split() .
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.149
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-05 19:59:44 +0800
    message:
      Add function as_object::set_member_slot() .
    modified:
      libcore/as_object.cpp
      libcore/as_object.h
    ------------------------------------------------------------
    revno: 9439.2.150
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-05 20:04:25 +0800
    message:
      Implement SETSLOT opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.151
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-05 21:07:54 +0800
    message:
      Correctly access an object's prototype, and other small improvements.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.152
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-10-08 13:14:54 +0800
    message:
      Replace 'new Object' with '{}'
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.153
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-10-08 14:04:16 +0800
    message:
      Improve conversion of calls to String.split() and String.indexOf()
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.154
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-10-09 00:29:02 +0800
    message:
      Improve conversion of String.split()
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.155
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-10-09 01:12:11 +0800
    message:
      Convert calls to String.fromCharCode(), that have more than one argument, 
to something that works in Haxe.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.156
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-10-09 10:39:45 +0800
    message:
      Revert String.as back to the version in trunk, and add #ifdef to include 
the haxe check.as when compiling with haxe.
    modified:
      testsuite/actionscript.all/String.as
    ------------------------------------------------------------
    revno: 9439.2.157
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-10-09 10:42:18 +0800
    message:
      Ignore calls to String.slice()
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.158
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-10-10 01:34:04 +0800
    message:
      GET_PROPERTY opcode:  If the property is a runtime multiname, get its 
name from the stack.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.159
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-10-10 01:35:30 +0800
    message:
      Replace references to Object with Dynamic and stop skipping return 
statements.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.160
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-10-10 15:34:52 +0800
    message:
      SETPROPERTY opcode: Get name value of the stack for runtime multinames.
      SETSLOT opcode: Add a useful log_debug.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.161
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-10-10 22:31:40 +0800
    message:
      Add as_object::get_member_slot() function.
    modified:
      libcore/as_object.cpp
      libcore/as_object.h
    ------------------------------------------------------------
    revno: 9439.2.162
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-10-10 22:33:23 +0800
    message:
      Implement GETSLOT opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.163
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-10-10 22:48:51 +0800
    message:
      Replace [object Dynamic] with [object Object]
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.164
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-10-11 00:09:32 +0800
    message:
      Improve debug output for Machine::push_scope_stack().
    modified:
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.165
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-10-11 00:12:02 +0800
    message:
      Add some useful debug statements.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.166
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-10-11 00:14:10 +0800
    message:
      Clear the scope stack before executing a new function.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.167
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-10-11 00:19:12 +0800
    message:
      Replace [type Dynamic] with [type Object] .
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.168
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-10-11 00:30:52 +0800
    message:
      Replace new Number() with Std.ParseInt().
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.169
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-10-11 00:35:30 +0800
    message:
      Don't skip attempts to set the length property of Strings.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.170
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-10-11 00:39:29 +0800
    message:
      Add license.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.171
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-10-11 01:53:08 +0800
    message:
      Keep track of the number of tests that are skipped.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.172
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-12 02:03:06 +0800
    message:
      Clean up HASNEXT2 opcode and add some debug statements.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.173
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-12 02:12:19 +0800
    message:
      Clean up IFTRUE opcode.
    modified:
      libcore/vm/Machine.cpp
      testsuite/actionscript.all/String.as
    ------------------------------------------------------------
    revno: 9439.2.174
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-12 02:51:31 +0800
    message:
      Clean up IFLT opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.175
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-12 03:14:49 +0800
    message:
      Clean up PUSHSHORT opcode.
      CONSTRUCTPROP opcode: make sure we find the objects constructor.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.176
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-12 10:44:20 +0800
    message:
      CONSTRCUTPROP opcode: Make this opcode work better when constructor is an 
abc_function.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.177
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-10-13 13:08:54 +0800
    message:
      Make sure we don't call methods on undefined objects.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.178
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-10-13 13:21:31 +0800
    message:
      Use Type.getInstanceFields to iterator over an object's properties.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.179
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-10-13 13:31:46 +0800
    message:
      Implement SUBTRACT opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.180
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-10-14 00:02:08 +0800
    message:
      Don't skip calls to String.slice()
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.181
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-10-14 08:06:05 +0800
    message:
      Replace type[oO]f with Type.typeof.
      Ignore String()
      Replace Class.property with Reflect.field(Class,property)
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.182
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-10-14 11:30:41 +0800
    message:
      Improve conversion of Class.property to Reflect.field(Class,property)
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.183
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-10-14 11:47:42 +0800
    message:
      Convert chr and ord functions.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.184
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev_merge
    timestamp: Thu 2008-10-16 14:55:51 +0800
    message:
      Merge from trunk.
    removed:
      libcore/asobj/NetStreamFfmpeg.cpp
      libcore/asobj/NetStreamFfmpeg.h
      libcore/asobj/NetStreamGst.cpp
      libcore/asobj/NetStreamGst.h
      libcore/asobj/SoundFfmpeg.cpp
      libcore/asobj/SoundFfmpeg.h
      libcore/asobj/SoundGst.cpp
      libcore/asobj/SoundGst.h
      libcore/asobj/SoundMad.cpp
      libcore/asobj/SoundMad.h
      libmedia/gst/SoundGst.cpp
      libmedia/gst/SoundGst.h
      libmedia/gst/SoundHandlerGst.cpp
      libmedia/gst/SoundHandlerGst.h
      libmedia/gst/gstappsink.c
      libmedia/gst/gstappsink.h
      libmedia/gst/gstappsrc.c
      libmedia/gst/gstappsrc.h
      libmedia/gst/gstbuffersrc.c
      libmedia/gst/gstbuffersrc.h
      libmedia/gst/gstflvdemux.c
      libmedia/gst/gstflvdemux.h
      libmedia/gst/gstflvparse.c
      libmedia/gst/gstflvparse.h
      ltmain.sh.darwin
    added:
      ChangeLog
      libbase/GnashSleep.h
      libcore/asobj/LoadableObject.cpp
      libcore/asobj/LoadableObject.h
      libmedia/README
      libmedia/ffmpeg/ffmpegHeaders.h
      libmedia/gst/MediaParserGst.cpp
      libmedia/gst/MediaParserGst.h
      libmedia/gst/swfdec_codec_gst.c
      libmedia/gst/swfdec_codec_gst.h
      testsuite/actionscript.all/ColorTransform.as
      testsuite/actionscript.all/Transform.as
      testsuite/media/brokenchord.sco
      testsuite/media/brokenchord.wav
      testsuite/media/mono44.mp2
      testsuite/media/stereo8.mp3
      testsuite/misc-ming.all/EmbeddedSoundTest-Runner.cpp
      testsuite/misc-ming.all/EmbeddedSoundTest.c
    renamed:
      ChangeLog => ChangeLog-0.8.4
      README_CVS => README_bzr
      libcore/asobj/LoadVars.cpp => libcore/asobj/LoadVars_as.cpp
      libcore/asobj/LoadVars.h => libcore/asobj/LoadVars_as.h
      libcore/asobj/System.cpp => libcore/asobj/System_as.cpp
      libcore/asobj/System.h => libcore/asobj/System_as.h
      libcore/asobj/xml.cpp => libcore/asobj/XML_as.cpp
      libcore/asobj/xml.h => libcore/asobj/XML_as.h
    modified:
      Makefile.am
      README
      TODO
      autogen.sh
      configure.ac
      doc/C/refmanual/internals.xml
      doc/C/usermanual/glossary.xml
      extensions/fileio/fileio.cpp
      extensions/mysql/mysql_db.cpp
      extensions/mysql/mysql_table.cpp
      gui/Makefile.am
      gui/NullGui.cpp
      gui/Player.cpp
      gui/am-frag/fltk.am
      gui/dump.cpp
      gui/fb.cpp
      gui/fltk.cpp
      gui/gtk.cpp
      gui/gtk_glue_agg.cpp
      gui/gtk_glue_agg.h
      gui/gtksup.h
      gui/gui.cpp
      gui/gui.h
      gui/kde.cpp
      libamf/Makefile.am
      libbase/ClockTime.cpp
      libbase/GnashException.h
      libbase/GnashImage.h
      libbase/GnashImageJpeg.cpp
      libbase/GnashImageJpeg.h
      libbase/GnashImagePng.cpp
      libbase/GnashImagePng.h
      libbase/LoadThread.cpp
      libbase/Makefile.am
      libbase/NetworkAdapter.h
      libbase/curl_adapter.cpp
      libbase/dsodefs.h
      libbase/extension.cpp
      libbase/gnashrc.in
      libbase/image.cpp
      libbase/image.h
      libbase/sharedlib.cpp
      libbase/utf8.h
      libcore/Makefile.am
      libcore/Property.h
      libcore/PropertyList.cpp
      libcore/PropertyList.h
      libcore/SWFStream.cpp
      libcore/SWFStream.h
      libcore/StreamProvider.cpp
      libcore/StreamProvider.h
      libcore/array.cpp
      libcore/array.h
      libcore/as_function.cpp
      libcore/as_object.cpp
      libcore/as_object.h
      libcore/as_value.cpp
      libcore/as_value.h
      libcore/asobj/AsBroadcaster.cpp
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Color.cpp
      libcore/asobj/Date.cpp
      libcore/asobj/Date.h
      libcore/asobj/Global.cpp
      libcore/asobj/Key.cpp
      libcore/asobj/Makefile.am
      libcore/asobj/MovieClipLoader.cpp
      libcore/asobj/NetConnection.cpp
      libcore/asobj/NetStream.cpp
      libcore/asobj/NetStream.h
      libcore/asobj/SharedObject.cpp
      libcore/asobj/Sound.cpp
      libcore/asobj/Sound.h
      libcore/asobj/String_as.cpp
      libcore/asobj/XMLSocket_as.cpp
      libcore/asobj/flash/display/BitmapData_as.cpp
      libcore/asobj/flash/display/BitmapData_as.h
      libcore/asobj/flash/geom/ColorTransform_as.cpp
      libcore/asobj/flash/geom/ColorTransform_as.h
      libcore/asobj/flash/geom/Matrix_as.cpp
      libcore/asobj/flash/geom/Rectangle_as.cpp
      libcore/asobj/flash/geom/Transform_as.cpp
      libcore/asobj/flash/geom_pkg.h
      libcore/asobj/xmlattrs.h
      libcore/asobj/xmlnode.cpp
      libcore/asobj/xmlnode.h
      libcore/button_character_instance.cpp
      libcore/button_character_instance.h
      libcore/character.cpp
      libcore/character.h
      libcore/debugger.cpp
      libcore/edit_text_character.cpp
      libcore/edit_text_character.h
      libcore/impl.cpp
      libcore/matrix.cpp
      libcore/matrix.h
      libcore/movie_root.cpp
      libcore/movie_root.h
      libcore/namedStrings.cpp
      libcore/namedStrings.h
      libcore/parser/Makefile.am
      libcore/parser/SWFMovieDefinition.cpp
      libcore/parser/abc_block.cpp
      libcore/parser/action_buffer.cpp
      libcore/parser/action_buffer.h
      libcore/parser/button_character_def.cpp
      libcore/rect.h
      libcore/sprite_instance.cpp
      libcore/sprite_instance.h
      libcore/swf/StartSoundTag.cpp
      libcore/swf/StreamSoundBlockTag.cpp
      libcore/swf/tag_loaders.cpp
      libcore/swf_event.h
      libcore/swf_function.cpp
      libcore/swf_function.h
      libcore/timers.cpp
      libcore/types.cpp
      libcore/vm/ASHandlers.cpp
      libcore/vm/CallStack.h
      libcore/vm/Machine.cpp
      libcore/vm/Makefile.am
      libcore/vm/VM.cpp
      libmedia/AudioDecoder.h
      libmedia/AudioDecoderNellymoser.cpp
      libmedia/AudioDecoderNellymoser.h
      libmedia/AudioDecoderSimple.cpp
      libmedia/AudioDecoderSimple.h
      libmedia/FLVParser.cpp
      libmedia/Makefile.am
      libmedia/MediaHandler.h
      libmedia/MediaParser.cpp
      libmedia/MediaParser.h
      libmedia/NullSoundHandler.h
      libmedia/ffmpeg/AudioDecoderFfmpeg.cpp
      libmedia/ffmpeg/AudioDecoderFfmpeg.h
      libmedia/ffmpeg/MediaHandlerFfmpeg.cpp
      libmedia/ffmpeg/MediaHandlerFfmpeg.h
      libmedia/ffmpeg/MediaParserFfmpeg.cpp
      libmedia/ffmpeg/MediaParserFfmpeg.h
      libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
      libmedia/ffmpeg/VideoDecoderFfmpeg.h
      libmedia/ffmpeg/ffmpegNetStreamUtil.h
      libmedia/ffmpeg/sound_handler_sdl.cpp
      libmedia/ffmpeg/sound_handler_sdl.h
      libmedia/gst/AudioDecoderGst.cpp
      libmedia/gst/AudioDecoderGst.h
      libmedia/gst/GstUtil.cpp
      libmedia/gst/GstUtil.h
      libmedia/gst/MediaHandlerGst.cpp
      libmedia/gst/VideoDecoderGst.cpp
      libmedia/gst/VideoDecoderGst.h
      libmedia/sound_handler.h
      libnet/Makefile.am
      libnet/rtmp_client.cpp
      macros/ffmpeg.m4
      macros/ming.m4
      macros/x11.m4
      macros/xpcom.m4
      packaging/xpi.am
      plugin/Makefile.am
      plugin/mozilla-sdk/Makefile.am
      plugin/mozilla-sdk/np_entry.cpp
      plugin/plugin.cpp
      plugin/plugin.h
      plugin/win32/Makefile.am
      plugin/win32/npgnash.c
      plugin/win32/plugin.cpp
      plugin/xpcom/GnashComponent.h
      po/Makefile.am
      po/cs.po
      po/de.po
      po/es.po
      po/fi.po
      po/fr.po
      po/gnash.pot
      po/it.po
      po/ja.po
      po/sv.po
      testsuite/MovieTester.cpp
      testsuite/actionscript.all/Date.as
      testsuite/actionscript.all/LoadVars.as
      testsuite/actionscript.all/Makefile.am
      testsuite/actionscript.all/Matrix.as
      testsuite/actionscript.all/MovieClip.as
      testsuite/actionscript.all/TextField.as
      testsuite/actionscript.all/XML.as
      testsuite/gnashrc.in
      testsuite/libbase/CurlStreamTest.cpp
      testsuite/misc-ming.all/ButtonEventsTest.c
      testsuite/misc-ming.all/DrawingApiTest.as
      testsuite/misc-ming.all/Makefile.am
      testsuite/misc-ming.all/NetStream-SquareTest.c
      testsuite/misc-ming.all/NetStream-SquareTestRunner.cpp
      testsuite/misc-ming.all/SharedObjectTestRunner.sh
      testsuite/misc-ming.all/matrix_test.c
      testsuite/simple.exp
      testsuite/swfdec/Makefile.am
      testsuite/swfdec/PASSING
      testsuite/swfdec/gen_run_swfdec_testsuite.sh
      utilities/Makefile.am
      utilities/flvdumper.cpp
      utilities/processor.cpp
      README_bzr
      libcore/asobj/LoadVars_as.cpp
      libcore/asobj/System_as.cpp
      libcore/asobj/XML_as.cpp
      libcore/asobj/XML_as.h
    ------------------------------------------------------------
    revno: 9439.2.185
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-19 13:21:10 +0800
    message:
      Don't remove calls to String.indexOf() .
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.186
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-19 13:23:44 +0800
    message:
      Don't remove calls to String.substring()
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.187
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-19 13:29:26 +0800
    message:
      Skip String(), but not toString() .
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.188
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-19 13:56:07 +0800
    message:
      Don't skip calls to hasOwnProperty() .
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.189
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-19 14:01:52 +0800
    message:
      Don't skip calls to String.concat()
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.190
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-19 14:09:19 +0800
    message:
      Replace isNan with Math.isNan
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.191
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-19 15:23:54 +0800
    message:
      ASTYPELATE opcode: Make stack behavior correct.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.192
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-19 18:54:25 +0800
    message:
      Make sure not to do operations on as_values that are null.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.193
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-19 19:09:07 +0800
    message:
      IFLT opcode: Use as_value::newLessThan()
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.194
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-19 19:16:07 +0800
    message:
      Don't skip calls to Class.__proto__ .
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.195
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-19 19:26:22 +0800
    message:
      Replace String() with new String("")
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.196
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-10-19 20:00:12 +0800
    message:
      Convert instance instanceof Class to Std.is(instance,Class)
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.197
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2
    timestamp: Mon 2008-10-20 22:24:16 +0200
    message:
      Fix build, abort rather than segfault, get rid of one horrible macro.
    modified:
      libcore/swf/DoABCTag.h
      libcore/swf/SymbolClassTag.h
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.198
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-10-21 10:51:11 +0800
    message:
      Improve AS2 to Haxe conversion script.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
        ------------------------------------------------------------
        revno: 9439.6.1
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Sun 2008-10-19 21:27:04 +0800
        message:
          Don't skip calls to call()
        modified:
          testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
        ------------------------------------------------------------
        revno: 9439.6.2
        committer: Tom Stellard <address@hidden>
        branch nick: gnash_dev
        timestamp: Sun 2008-10-19 22:30:00 +0800
        message:
          Convert actionscript delete statement to the equivalent Haxe function.
          Remove unused function.
        modified:
          testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.199
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Tue 2008-10-21 10:12:54 +0200
    message:
      Merge from trunk
    added:
      doc/C/flvdumper.man-xml
      doc/C/preformatted/flvdumper.1.in
      testsuite/media/Makefile.am
    renamed:
      libcore/asobj/Key.cpp => libcore/asobj/Key_as.cpp
      libcore/asobj/Key.h => libcore/asobj/Key_as.h
      libcore/asobj/NetStream.cpp => libcore/asobj/NetStream_as.cpp
      libcore/asobj/NetStream.h => libcore/asobj/NetStream_as.h
      libcore/asobj/Stage.cpp => libcore/asobj/Stage_as.cpp
      libcore/asobj/Stage.h => libcore/asobj/Stage_as.h
      libcore/asobj/TextSnapshot.cpp => libcore/asobj/TextSnapshot_as.cpp
      libcore/asobj/TextSnapshot.h => libcore/asobj/TextSnapshot_as.h
      libcore/asobj/xmlnode.cpp => libcore/asobj/XMLNode_as.cpp
      libcore/asobj/xmlnode.h => libcore/asobj/XMLNode_as.h
      libcore/button_character_instance.cpp => libcore/Button.cpp
      libcore/button_character_instance.h => libcore/Button.h
      libcore/matrix.cpp => libcore/SWFMatrix.cpp
      libcore/matrix.h => libcore/SWFMatrix.h
      libcore/types.cpp => libcore/RGBA.cpp
      libcore/types.h => libcore/RGBA.h
    modified:
      ChangeLog-0.8.4
      Makefile.am
      NEWS
      backend/PathParser.cpp
      backend/PathParser.h
      backend/render_handler.h
      backend/render_handler_agg.cpp
      backend/render_handler_agg_style.h
      backend/render_handler_cairo.cpp
      backend/render_handler_ogl.cpp
      backend/render_handler_ogl.h
      configure.ac
      doc/C/Makefile.am
      doc/C/refmanual/feature_configuration.xml
      gui/gtk.cpp
      gui/gui.cpp
      gui/gui.h
      libbase/Makefile.am
      libbase/gnashrc.in
      libbase/log.cpp
      libbase/rc.cpp
      libbase/rc.h
      libbase/tree.hh
      libcore/ColorMatrixFilter.h
      libcore/DisplayList.cpp
      libcore/DisplayList.h
      libcore/DynamicShape.cpp
      libcore/DynamicShape.h
      libcore/Makefile.am
      libcore/SWFStream.cpp
      libcore/as_function.cpp
      libcore/as_function.h
      libcore/asobj/AsBroadcaster.h
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Global.cpp
      libcore/asobj/Makefile.am
      libcore/asobj/NetConnection.h
      libcore/asobj/SharedObject.cpp
      libcore/asobj/String_as.cpp
      libcore/asobj/TextFormat.cpp
      libcore/asobj/TextFormat.h
      libcore/asobj/XML_as.cpp
      libcore/asobj/XML_as.h
      libcore/asobj/flash/geom/Transform_as.cpp
      libcore/character.cpp
      libcore/character.h
      libcore/cxform.cpp
      libcore/edit_text_character.cpp
      libcore/edit_text_character.h
      libcore/fill_style.cpp
      libcore/fill_style.h
      libcore/font.h
      libcore/generic_character.cpp
      libcore/impl.cpp
      libcore/impl.h
      libcore/movie_root.cpp
      libcore/movie_root.h
      libcore/parser/BitmapMovieDefinition.cpp
      libcore/parser/bitmap_character_def.h
      libcore/parser/button_character_def.cpp
      libcore/parser/button_character_def.h
      libcore/parser/character_def.h
      libcore/parser/edit_text_character_def.h
      libcore/parser/filter_factory.cpp
      libcore/parser/morph2_character_def.h
      libcore/parser/shape_character_def.cpp
      libcore/parser/shape_character_def.h
      libcore/parser/text_character_def.h
      libcore/rect.cpp
      libcore/rect.h
      libcore/render.cpp
      libcore/render.h
      libcore/shape.h
      libcore/sprite_instance.cpp
      libcore/sprite_instance.h
      libcore/styles.h
      libcore/swf/PlaceObject2Tag.cpp
      libcore/swf/PlaceObject2Tag.h
      libcore/swf/SetBackgroundColorTag.h
      libcore/text.cpp
      libcore/text.h
      libcore/video_stream_instance.cpp
      libcore/video_stream_instance.h
      libcore/vm/ASHandlers.cpp
      libcore/vm/ActionExec.cpp
      libcore/vm/action.cpp
      libcore/vm/action.h
      libmedia/FLVParser.cpp
      libmedia/FLVParser.h
      libmedia/MediaParser.h
      libmedia/ffmpeg/AudioDecoderFfmpeg.cpp
      libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
      libmedia/gst/AudioDecoderGst.cpp
      libmedia/gst/MediaHandlerGst.cpp
      libmedia/gst/VideoDecoderGst.cpp
      libmedia/gst/VideoDecoderGst.h
      plugin/Makefile.am
      plugin/klash/Makefile.am
      plugin/plugin.cpp
      plugin/win32/Makefile.am
      po/cs.po
      testsuite/FuzzyPixel.cpp
      testsuite/FuzzyPixel.h
      testsuite/Makefile.am
      testsuite/MovieTester.cpp
      testsuite/MovieTester.h
      testsuite/actionscript.all/MovieClip.as
      testsuite/actionscript.all/String.as
      testsuite/libbase/URLTest.cpp
      testsuite/libcore.all/ClassSizes.cpp
      testsuite/libcore.all/MatrixTest.cpp
      testsuite/misc-ming.all/EmbeddedSoundTest.c
      utilities/flvdumper.cpp
      libcore/asobj/Key_as.cpp
      libcore/asobj/Key_as.h
      libcore/asobj/NetStream_as.cpp
      libcore/asobj/NetStream_as.h
      libcore/asobj/Stage_as.cpp
      libcore/asobj/Stage_as.h
      libcore/asobj/TextSnapshot_as.cpp
      libcore/asobj/TextSnapshot_as.h
      libcore/asobj/XMLNode_as.cpp
      libcore/asobj/XMLNode_as.h
      libcore/Button.cpp
      libcore/Button.h
      libcore/SWFMatrix.cpp
      libcore/SWFMatrix.h
      libcore/RGBA.cpp
      libcore/RGBA.h
    ------------------------------------------------------------
    revno: 9439.2.200
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Tue 2008-10-21 11:26:34 +0200
    message:
      Fix build after merge from trunk
    modified:
      libcore/asobj/Makefile.am
      libcore/asobj/flash/display_pkg.cpp
    ------------------------------------------------------------
    revno: 9439.2.201
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Tue 2008-10-21 11:42:30 +0200
    message:
      don't try to build SWF9 testcases if HAXE isn't available
    modified:
      testsuite/actionscript.all/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.202
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Tue 2008-10-21 11:56:31 +0200
    message:
      Make haxe use friendly with haxe version 1.16 (packaged in Ubuntu 8.04 
lts)
    modified:
      testsuite/actionscript.all/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.203
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-10-22 00:58:11 +0800
    message:
      CONSTRUCTPROP opcode: Prevent segfault if constructor is undefined.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.204
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-10-27 11:18:37 +0800
    message:
      Wrap abc parser debug statements in IF_VERBOSE_PARSE macro.
    modified:
      libcore/asClass.cpp
      libcore/asClass.h
      libcore/parser/abc_block.cpp
      libcore/parser/abc_block.h
    ------------------------------------------------------------
    revno: 9439.2.205
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-10-27 13:16:17 +0800
    message:
      Only print the current stack when an opcode has finished executing.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.206
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-10-27 14:41:06 +0800
    message:
      Remove some conversions that result in actionscript errors.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.207
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-10-27 22:17:48 +0800
    message:
      Skip calls to String.lastIndexOf that have a more than two arguments, or 
have a string as the second argument.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.208
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-10-27 22:57:41 +0800
    message:
      Skip refrences to __proto__ property.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.209
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-10-28 15:02:59 +0800
    message:
      Skip attempts to set a String's length property.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.210
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Sat 2008-11-08 20:22:17 +0100
    message:
      Fix abstract equality. Hello.swf in misc-haxe.all succeeds all now ! :)
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.211
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sun 2008-11-09 14:19:23 +0800
    message:
      Fix some runtime errors and improve conversion of String.split()
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.212
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-11-10 23:13:19 +0800
    message:
      Fix conversion of String.charCodeAt and String.fromCharCode
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.213
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-11-11 00:49:48 +0800
    message:
      Various improvements to the as to haxe conversion script.  String-v9.swf 
no longer fails any test cases when played with Adobe's player.
    modified:
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
    ------------------------------------------------------------
    revno: 9439.2.214
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Mon 2008-11-10 20:30:45 +0100
    message:
      Merge from trunk; expect success in haxe-based framework; includes update
    removed:
      libbase/image.h
      libcore/parser/Timeline.h
      libcore/parser/edit_text_character_def.cpp
      libcore/parser/edit_text_character_def.h
      libcore/text.cpp
      libcore/text.h
      libmedia/MediaBuffer.h
      packaging/debian/gnash-cygnal.manpages
      packaging/debian/gnash-tools.manpages
      packaging/debian/klash.manpages
      packaging/ipkg/GnashG.xpm
      testsuite/samples/batch_test.py
    added:
      libcore/RunInfo.h
      libcore/swf/DefineButtonCxformTag.cpp
      libcore/swf/DefineButtonSoundTag.cpp
      libcore/swf/DefineButtonSoundTag.h
      libcore/swf/DefineEditTextTag.cpp
      libcore/swf/DefineEditTextTag.h
      libcore/swf/DefineFontNameTag.h
      libcore/swf/DefineFontTag.cpp
      libcore/swf/DefineFontTag.h
      libcore/swf/SoundInfoRecord.cpp
      libcore/swf/SoundInfoRecord.h
      libcore/swf/TextRecord.cpp
      libcore/swf/TextRecord.h
      libcore/swf/VideoFrameTag.cpp
      libcore/swf/VideoFrameTag.h
      libmedia/AudioDecoderSpeex.cpp
      libmedia/AudioDecoderSpeex.h
      libsound/
      libsound/AuxStream.h
      libsound/EmbedSound.cpp
      libsound/EmbedSound.h
      libsound/EmbedSoundInst.cpp
      libsound/EmbedSoundInst.h
      libsound/InputStream.h
      libsound/Makefile.am
      libsound/SoundEnvelope.h
      libsound/sdl/
      libsound/sound_handler.cpp
      packaging/gnash.xpm
      packaging/klash.xpm
      testsuite/actionscript.all/ExternalInterface.as
      testsuite/media/empty.txt
      testsuite/misc-ming.all/BitmapDataTest.c
      testsuite/misc-ming.all/LoadVarsTest.c
    renamed:
      libbase/image.cpp => libbase/GnashImage.cpp
      libcore/asobj/Number.cpp => libcore/asobj/Number_as.cpp
      libcore/asobj/Number.h => libcore/asobj/Number_as.h
      libcore/edit_text_character.cpp => libcore/TextField.cpp
      libcore/edit_text_character.h => libcore/TextField.h
      libcore/font.cpp => libcore/Font.cpp
      libcore/font.h => libcore/Font.h
      libcore/mouse_button_state.h => libcore/MouseButtonState.h
      libcore/parser/button_character_def.cpp => libcore/swf/DefineButtonTag.cpp
      libcore/parser/button_character_def.h => libcore/swf/DefineButtonTag.h
      libcore/parser/text_character_def.cpp => libcore/swf/DefineTextTag.cpp
      libcore/parser/text_character_def.h => libcore/swf/DefineTextTag.h
      libcore/parser/video_stream_def.cpp => 
libcore/swf/DefineVideoStreamTag.cpp
      libcore/parser/video_stream_def.h => libcore/swf/DefineVideoStreamTag.h
      libcore/resource.h => libcore/ExportableResource.h
      libcore/sprite_instance.cpp => libcore/MovieClip.cpp
      libcore/sprite_instance.h => libcore/MovieClip.h
      libcore/video_stream_instance.cpp => libcore/Video.cpp
      libcore/video_stream_instance.h => libcore/Video.h
      libmedia/NullSoundHandler.h => libsound/NullSoundHandler.h
      libmedia/Util.cpp => libmedia/AudioResampler.cpp
      libmedia/Util.h => libmedia/AudioResampler.h
      libmedia/ffmpeg/ffmpegNetStreamUtil.cpp => 
libmedia/ffmpeg/AudioResamplerFfmpeg.cpp
      libmedia/ffmpeg/ffmpegNetStreamUtil.h => 
libmedia/ffmpeg/AudioResamplerFfmpeg.h
      libmedia/ffmpeg/sound_handler_sdl.cpp => 
libsound/sdl/sound_handler_sdl.cpp
      libmedia/ffmpeg/sound_handler_sdl.h => libsound/sdl/sound_handler_sdl.h
      libmedia/sound_handler.h => libsound/sound_handler.h
    modified:
      Makefile.am
      backend/render_handler.h
      backend/render_handler_agg.cpp
      backend/render_handler_cairo.cpp
      backend/render_handler_ogl.cpp
      backend/render_handler_ogl.h
      configure.ac
      doc/DESIGN
      doc/Doxyfile.in
      gui/Makefile.am
      gui/Player.cpp
      gui/Player.h
      gui/dump.cpp
      gui/gnash.cpp
      gui/gtk.cpp
      gui/gtk_glue_agg.cpp
      gui/gui.cpp
      gui/gui.h
      libamf/Makefile.am
      libamf/amf.cpp
      libamf/amf.h
      libamf/buffer.cpp
      libamf/buffer.h
      libamf/element.cpp
      libamf/element.h
      libamf/flv.cpp
      libamf/flv.h
      libamf/lcshm.cpp
      libamf/lcshm.h
      libamf/sol.cpp
      libamf/sol.h
      libbase/BitsReader.h
      libbase/ClockTime.cpp
      libbase/GnashImage.h
      libbase/GnashImageGif.h
      libbase/GnashImageJpeg.cpp
      libbase/GnashImageJpeg.h
      libbase/GnashImagePng.cpp
      libbase/GnashImagePng.h
      libbase/Makefile.am
      libbase/SimpleBuffer.h
      libbase/URL.cpp
      libbase/curl_adapter.cpp
      libbase/log.h
      libbase/rc.cpp
      libbase/string_table.h
      libcore/Button.cpp
      libcore/Button.h
      libcore/DisplayList.cpp
      libcore/DisplayList.h
      libcore/FreetypeGlyphsProvider.cpp
      libcore/FreetypeGlyphsProvider.h
      libcore/Makefile.am
      libcore/PropertyList.cpp
      libcore/PropertyList.h
      libcore/Sprite.h
      libcore/URLAccessManager.cpp
      libcore/array.h
      libcore/as_environment.cpp
      libcore/as_environment.h
      libcore/as_object.cpp
      libcore/as_object.h
      libcore/as_value.cpp
      libcore/as_value.h
      libcore/asobj/AsBroadcaster.cpp
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Color.cpp
      libcore/asobj/Global.cpp
      libcore/asobj/LoadVars_as.cpp
      libcore/asobj/LoadableObject.cpp
      libcore/asobj/LoadableObject.h
      libcore/asobj/LocalConnection.cpp
      libcore/asobj/LocalConnection.h
      libcore/asobj/Makefile.am
      libcore/asobj/MovieClipLoader.cpp
      libcore/asobj/NetConnection.cpp
      libcore/asobj/NetStream_as.cpp
      libcore/asobj/NetStream_as.h
      libcore/asobj/Object.cpp
      libcore/asobj/SharedObject.cpp
      libcore/asobj/Sound.cpp
      libcore/asobj/Sound.h
      libcore/asobj/System_as.cpp
      libcore/asobj/TextFormat.cpp
      libcore/asobj/TextFormat.h
      libcore/asobj/XMLNode_as.cpp
      libcore/asobj/XMLSocket_as.cpp
      libcore/asobj/XML_as.cpp
      libcore/asobj/flash/display/Sprite_as.cpp
      libcore/asobj/flash/display_pkg.cpp
      libcore/asobj/flash/external/ExternalInterface_as.cpp
      libcore/asobj/flash/geom/Matrix_as.cpp
      libcore/asobj/flash/geom/Transform_as.cpp
      libcore/asobj/flash/text_pkg.cpp
      libcore/bitmap_info.h
      libcore/character.cpp
      libcore/character.h
      libcore/fill_style.cpp
      libcore/fill_style.h
      libcore/fontlib.cpp
      libcore/fontlib.h
      libcore/gnash.h
      libcore/impl.cpp
      libcore/movie_instance.cpp
      libcore/movie_instance.h
      libcore/movie_root.cpp
      libcore/movie_root.h
      libcore/namedStrings.cpp
      libcore/namedStrings.h
      libcore/parser/BitmapMovieDefinition.cpp
      libcore/parser/BitmapMovieDefinition.h
      libcore/parser/Makefile.am
      libcore/parser/SWFMovieDefinition.cpp
      libcore/parser/SWFMovieDefinition.h
      libcore/parser/bitmap_character_def.cpp
      libcore/parser/bitmap_character_def.h
      libcore/parser/character_def.h
      libcore/parser/morph2_character_def.cpp
      libcore/parser/morph2_character_def.h
      libcore/parser/movie_definition.h
      libcore/parser/shape_character_def.cpp
      libcore/parser/shape_character_def.h
      libcore/parser/sound_definition.cpp
      libcore/parser/sound_definition.h
      libcore/parser/sprite_definition.cpp
      libcore/parser/sprite_definition.h
      libcore/render.cpp
      libcore/render.h
      libcore/swf.h
      libcore/swf/CSMTextSettingsTag.cpp
      libcore/swf/CSMTextSettingsTag.h
      libcore/swf/ControlTag.h
      libcore/swf/DefineButtonCxformTag.h
      libcore/swf/DefineFontAlignZonesTag.cpp
      libcore/swf/DefineFontAlignZonesTag.h
      libcore/swf/DisplayListTag.h
      libcore/swf/DoABCTag.h
      libcore/swf/DoActionTag.h
      libcore/swf/DoInitActionTag.h
      libcore/swf/PlaceObject2Tag.cpp
      libcore/swf/PlaceObject2Tag.h
      libcore/swf/RemoveObjectTag.cpp
      libcore/swf/RemoveObjectTag.h
      libcore/swf/ScriptLimitsTag.h
      libcore/swf/SetBackgroundColorTag.h
      libcore/swf/StartSoundTag.cpp
      libcore/swf/StartSoundTag.h
      libcore/swf/StreamSoundBlockTag.cpp
      libcore/swf/StreamSoundBlockTag.h
      libcore/swf/SymbolClassTag.h
      libcore/swf/TagLoadersTable.h
      libcore/swf/tag_loaders.cpp
      libcore/swf/tag_loaders.h
      libcore/swf_function.cpp
      libcore/timers.cpp
      libcore/vm/ASHandlers.cpp
      libcore/vm/ActionExec.cpp
      libcore/vm/ExecutableCode.h
      libcore/vm/Makefile.am
      libcore/vm/VM.cpp
      libcore/vm/VM.h
      libmedia/AudioDecoder.h
      libmedia/AudioDecoderNellymoser.cpp
      libmedia/AudioDecoderNellymoser.h
      libmedia/AudioDecoderSimple.cpp
      libmedia/AudioDecoderSimple.h
      libmedia/FLVParser.cpp
      libmedia/FLVParser.h
      libmedia/Makefile.am
      libmedia/MediaHandler.cpp
      libmedia/MediaHandler.h
      libmedia/MediaParser.cpp
      libmedia/MediaParser.h
      libmedia/README
      libmedia/SoundInfo.h
      libmedia/VideoDecoder.h
      libmedia/ffmpeg/AudioDecoderFfmpeg.cpp
      libmedia/ffmpeg/AudioDecoderFfmpeg.h
      libmedia/ffmpeg/MediaHandlerFfmpeg.cpp
      libmedia/ffmpeg/MediaHandlerFfmpeg.h
      libmedia/ffmpeg/MediaParserFfmpeg.cpp
      libmedia/ffmpeg/MediaParserFfmpeg.h
      libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
      libmedia/ffmpeg/VideoDecoderFfmpeg.h
      libmedia/ffmpeg/ffmpegHeaders.h
      libmedia/gst/AudioDecoderGst.cpp
      libmedia/gst/AudioDecoderGst.h
      libmedia/gst/GstUtil.cpp
      libmedia/gst/GstUtil.h
      libmedia/gst/MediaHandlerGst.cpp
      libmedia/gst/MediaHandlerGst.h
      libmedia/gst/MediaParserGst.cpp
      libmedia/gst/MediaParserGst.h
      libmedia/gst/VideoDecoderGst.cpp
      libmedia/gst/VideoDecoderGst.h
      libnet/cque.cpp
      libnet/cque.h
      libnet/handler.cpp
      libnet/handler.h
      libnet/http.cpp
      libnet/http.h
      libnet/rtmp.cpp
      libnet/rtmp.h
      libnet/rtmp_client.cpp
      libnet/rtmp_client.h
      libnet/rtmp_msg.cpp
      libnet/rtmp_msg.h
      libnet/rtmp_server.cpp
      libnet/rtmp_server.h
      macros/ffmpeg.m4
      macros/xpcom.m4
      packaging/debian/gnash-common.install
      packaging/debian/mozilla-plugin-gnash.install
      packaging/debian/rules
      packaging/redhat/gnash.spec
      packaging/rpm.am
      packaging/snapshot.am
      plugin/klash/Makefile.am
      plugin/plugin.cpp
      plugin/win32/Makefile.am
      plugin/win32/plugin.cpp
      plugin/win32/plugin.h
      pythonmodule/gnashpython.cpp
      testsuite/Makefile.am
      testsuite/MovieTester.cpp
      testsuite/MovieTester.h
      testsuite/actionscript.all/AsBroadcaster.as
      testsuite/actionscript.all/LoadVars.as
      testsuite/actionscript.all/Makefile.am
      testsuite/actionscript.all/MovieClip.as
      testsuite/actionscript.all/Object.as
      testsuite/actionscript.all/Sound.as
      testsuite/actionscript.all/TextField.as
      testsuite/actionscript.all/Transform.as
      testsuite/actionscript.all/delete.as
      testsuite/actionscript.all/enumerate.as
      testsuite/actionscript.all/toString_valueOf.as
      testsuite/gnashrc.in
      testsuite/libamf.all/test_amf.cpp
      testsuite/libamf.all/test_buffer.cpp
      testsuite/libamf.all/test_el.cpp
      testsuite/libamf.all/test_flv.cpp
      testsuite/libamf.all/test_lc.cpp
      testsuite/libamf.all/test_sol.cpp
      testsuite/libcore.all/AsValueTest.cpp
      testsuite/libcore.all/ClassSizes.cpp
      testsuite/libcore.all/DisplayListTest.cpp
      testsuite/libcore.all/PropertyListTest.cpp
      testsuite/libnet.all/Makefile.am
      testsuite/libnet.all/test_cque.cpp
      testsuite/libnet.all/test_handler.cpp
      testsuite/libnet.all/test_rtmp.cpp
      testsuite/media/Makefile.am
      testsuite/media/README
      testsuite/misc-haxe.all/Makefile.am
      testsuite/misc-ming.all/ButtonEventsTest-Runner.cpp
      testsuite/misc-ming.all/DefineEditTextTest-Runner.cpp
      testsuite/misc-ming.all/DefineEditTextTest.c
      testsuite/misc-ming.all/DefineEditTextVariableNameTest-Runner.cpp
      testsuite/misc-ming.all/DefineTextTest-Runner.cpp
      testsuite/misc-ming.all/DragDropTestRunner.cpp
      testsuite/misc-ming.all/DrawingApiTestRunner.cpp
      testsuite/misc-ming.all/EmbeddedSoundTest-Runner.cpp
      testsuite/misc-ming.all/EmbeddedSoundTest.c
      testsuite/misc-ming.all/Makefile.am
      testsuite/misc-ming.all/NetStream-SquareTestRunner.cpp
      testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp
      testsuite/misc-ming.all/RollOverOutTest-Runner.cpp
      testsuite/misc-ming.all/SpriteButtonEventsTest-Runner.cpp
      testsuite/misc-ming.all/Video-EmbedSquareTestRunner.cpp
      testsuite/misc-ming.all/attachMovieLoopingTestRunner.cpp
      testsuite/misc-ming.all/attachMovieTestRunner.cpp
      testsuite/misc-ming.all/eventSoundTest1-Runner.cpp
      testsuite/misc-ming.all/eventSoundTest1.c
      testsuite/misc-ming.all/intervalTestRunner.cpp
      testsuite/misc-ming.all/key_event_testrunner.cpp
      testsuite/misc-ming.all/loadMovieTestRunner.cpp
      testsuite/misc-ming.all/loop_test-Runner.cpp
      testsuite/misc-ming.all/loop_test2runner.cpp
      testsuite/misc-ming.all/masks_test2runner.cpp
      testsuite/misc-ming.all/masks_testrunner.cpp
      testsuite/misc-ming.all/ming_utils.c
      testsuite/misc-ming.all/morph_test1runner.cpp
      testsuite/misc-ming.all/registerClassTestRunner.cpp
      testsuite/misc-ming.all/replace_buttons1test_runner.cpp
      testsuite/misc-ming.all/replace_shapes1test_runner.cpp
      testsuite/misc-ming.all/replace_sprites1test_runner.cpp
      testsuite/misc-ming.all/root_stop_testrunner.cpp
      testsuite/misc-ming.all/simple_loop_testrunner.cpp
      testsuite/misc-ming.all/streamingSoundTest1-Runner.cpp
      testsuite/misc-swfc.all/Makefile.am
      testsuite/misc-swfc.all/button_test1runner.cpp
      testsuite/misc-swfmill.all/Makefile.am
      testsuite/misc-swfmill.all/backgroundTestRunner.cpp
      testsuite/movies.all/Makefile.am
      testsuite/movies.all/gravity_embedded-TestRunner.cpp
      testsuite/samples/Makefile.am
      testsuite/samples/clip_as_button2-TestRunner.cpp
      testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp
      testsuite/samples/subshapes-TestRunner.cpp
      testsuite/swfdec/Makefile.am
      testsuite/swfdec/PASSING
      utilities/Makefile.am
      utilities/dumpshm.cpp
      utilities/flvdumper.cpp
      utilities/processor.cpp
      libbase/GnashImage.cpp
      libcore/asobj/Number_as.cpp
      libcore/TextField.cpp
      libcore/TextField.h
      libcore/Font.cpp
      libcore/Font.h
      libcore/MouseButtonState.h
      libcore/swf/DefineButtonTag.cpp
      libcore/swf/DefineButtonTag.h
      libcore/swf/DefineTextTag.cpp
      libcore/swf/DefineTextTag.h
      libcore/swf/DefineVideoStreamTag.cpp
      libcore/swf/DefineVideoStreamTag.h
      libcore/ExportableResource.h
      libcore/MovieClip.cpp
      libcore/MovieClip.h
      libcore/Video.cpp
      libcore/Video.h
      libsound/NullSoundHandler.h
      libmedia/AudioResampler.cpp
      libmedia/AudioResampler.h
      libmedia/ffmpeg/AudioResamplerFfmpeg.cpp
      libmedia/ffmpeg/AudioResamplerFfmpeg.h
      libsound/sdl/sound_handler_sdl.cpp
      libsound/sdl/sound_handler_sdl.h
      libsound/sound_handler.h
    ------------------------------------------------------------
    revno: 9439.2.215
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Mon 2008-11-10 20:56:19 +0100
    message:
      Fix initialization order warnings, always initialize mClass::mPrototype
      (is null for bug #24804)
    modified:
      libcore/asClass.h
    ------------------------------------------------------------
    revno: 9439.2.216
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Mon 2008-11-10 22:30:55 +0100
    message:
      some ignores
    modified:
      .bzrignore
    ------------------------------------------------------------
    revno: 9439.2.217
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Mon 2008-11-10 22:46:09 +0100
    message:
      make sure to initialize all members of abc_block, use 0 instead of NULL
    modified:
      libcore/parser/abc_block.h
    ------------------------------------------------------------
    revno: 9439.2.218
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-11-11 12:06:18 +0800
    message:
      Don't try and print a method's body if the method doesn't have a body.
    modified:
      libcore/asClass.cpp
    ------------------------------------------------------------
    revno: 9439.2.219
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-11-11 13:14:06 +0800
    message:
      Initialize scripts when executing DoABCTag.
    modified:
      libcore/swf/DoABCTag.h
    ------------------------------------------------------------
    revno: 9439.2.220
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Tue 2008-11-11 13:24:54 +0800
    message:
      Don't construct a new property on a null object.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.221
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Wed 2008-11-12 00:52:34 +0800
    message:
      Implement ISTYPELATE opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.222
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Tue 2008-11-11 20:07:03 +0100
    message:
      merge from trunk
    modified:
      libcore/Font.cpp
      libcore/TextField.cpp
      libcore/TextField.h
      libcore/Video.cpp
      libcore/Video.h
      libcore/asobj/NetStream_as.cpp
      libcore/asobj/NetStream_as.h
      libcore/swf/DefineEditTextTag.cpp
      libcore/swf/TextRecord.cpp
      libcore/swf/TextRecord.h
      libsound/sdl/sound_handler_sdl.cpp
      testsuite/actionscript.all/Video.as
      testsuite/misc-ming.all/NetStream-SquareTest.c
      testsuite/misc-ming.all/Video-EmbedSquareTest.c
      testsuite/misc-ming.all/Video-EmbedSquareTestRunner.cpp
    ------------------------------------------------------------
    revno: 9439.2.223
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Tue 2008-11-11 21:58:17 +0100
    message:
      improve error message on attempt to call undefined property
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.224
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Tue 2008-11-11 22:16:36 +0100
    message:
      stub _global.addChild for SWF9 (not sure it should be in global,
      but that's where gnash looks for it when running misc-haxe.all/Hello.swf);
      fix a possible segfault in ABC_CALL*.
    modified:
      libcore/asobj/Global.cpp
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.225
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-11-12 11:24:09 +0100
    message:
      merge from trunk
    modified:
      configure.ac
      libcore/TextField.cpp
      testsuite/samples/Makefile.am
      testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp
    ------------------------------------------------------------
    revno: 9439.2.226
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-11-12 12:17:03 +0100
    message:
      merge from trunk
    modified:
      libcore/Video.cpp
      libcore/Video.h
      libcore/asobj/NetStream_as.cpp
      libcore/asobj/NetStream_as.h
      libcore/movie_instance.h
      libcore/movie_root.cpp
      libcore/movie_root.h
      libmedia/FLVParser.cpp
      libmedia/VideoDecoder.h
      libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
      libmedia/ffmpeg/VideoDecoderFfmpeg.h
      libmedia/gst/VideoDecoderGst.cpp
      libmedia/gst/VideoDecoderGst.h
      testsuite/misc-ming.all/NetStream-SquareTest.c
    ------------------------------------------------------------
    revno: 9439.2.227
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-11-12 12:18:58 +0100
    message:
      register TextFieldAutoSize in class hierarchy
    modified:
      libcore/asobj/ClassHierarchy.cpp
    ------------------------------------------------------------
    revno: 9439.2.228
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-11-12 12:44:29 +0100
    message:
      Implement _global.addChild and _global.addChildAt, add tests (one of 
which triggers a segfault in Machine
    added:
      testsuite/misc-haxe.all/AddChild.hx
    modified:
      libcore/asobj/Global.cpp
      libcore/movie_root.cpp
      testsuite/misc-haxe.all/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.229
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-11-12 15:19:17 +0100
    message:
      Fix class documentation for DoABCTag and DoInitActionTag
    modified:
      libcore/swf/DoABCTag.h
      libcore/swf/DoInitActionTag.h
    ------------------------------------------------------------
    revno: 9439.2.230
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-11-12 15:37:07 +0100
    message:
      revert useless change, aimed at reducing false drifts from trunk
    modified:
      libcore/asobj/ClassHierarchy.h
    ------------------------------------------------------------
    revno: 9439.2.231
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-11-12 15:39:53 +0100
    message:
      revert useless change, aimed at reducing false drifts from trunk
    modified:
      libcore/as_value.cpp
    ------------------------------------------------------------
    revno: 9439.2.232
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-11-12 15:43:41 +0100
    message:
      revert useless change, aimed at reducing false drifts from trunk
    modified:
      libcore/parser/sprite_definition.cpp
    ------------------------------------------------------------
    revno: 9439.2.233
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-11-12 15:45:32 +0100
    message:
      revert useless change, aimed at reducing false drifts from trunk
    modified:
      libcore/vm/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.234
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-11-12 16:41:21 +0100
    message:
      revert useless change, aimed at reducing false drifts from trunk
    modified:
      libcore/vm/VM.h
    ------------------------------------------------------------
    revno: 9439.2.235
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-11-12 17:41:22 +0100
    message:
      merge from trunk
    modified:
      Makefile.am
      backend/Makefile.am
      configure.ac
      libbase/Makefile.am
      libmedia/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.236
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-11-12 17:56:03 +0100
    message:
      revert useless change, aimed at reducing false drifts from trunk
    modified:
      testsuite/libbase/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.237
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-11-13 23:04:04 +0800
    message:
      Fix segfault in GETPROPERTY opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.238
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Thu 2008-11-13 23:15:25 +0800
    message:
      Fix segfault in INITPROPERTY opcode.
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.239
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Thu 2008-11-13 17:16:04 +0100
    message:
      Merge from trunk, fix compiler warnings in Machine.cpp and
      add a couple of UNIMPLEMENTED messages (would be best to have
      these logs always come out for unimplemented opcodes...)
    modified:
      Makefile.am
      libcore/TextField.cpp
      libcore/asobj/NetStream_as.cpp
      libcore/vm/Machine.cpp
      libsound/EmbedSoundInst.cpp
      libsound/NullSoundHandler.h
      libsound/sdl/sound_handler_sdl.cpp
      libsound/sdl/sound_handler_sdl.h
      libsound/sound_handler.cpp
      libsound/sound_handler.h
      testsuite/MovieTester.cpp
      testsuite/misc-ming.all/EmbeddedSoundTest-Runner.cpp
      testsuite/misc-ming.all/eventSoundTest1-Runner.cpp
    ------------------------------------------------------------
    revno: 9439.2.240
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Thu 2008-11-13 17:59:51 +0100
    message:
      few more tests (overparanoid)
    modified:
      testsuite/misc-haxe.all/AddChild.hx
    ------------------------------------------------------------
    revno: 9439.2.241
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Thu 2008-11-13 19:35:33 +0100
    message:
      merge from trunk
    modified:
      libcore/movie_root.cpp
    ------------------------------------------------------------
    revno: 9439.2.242
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Thu 2008-11-13 19:40:45 +0100
    message:
      indentation
    modified:
      testsuite/misc-haxe.all/AddChild.hx
    ------------------------------------------------------------
    revno: 9439.2.243
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Thu 2008-11-13 20:14:56 +0100
    message:
      typo...
    modified:
      testsuite/misc-haxe.all/AddChild.hx
    ------------------------------------------------------------
    revno: 9439.2.244
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Fri 2008-11-14 13:32:10 +0800
    message:
      Have SWFStream::read_d64() use the convert_double_wacky function to 
correctly return a double.
    modified:
      libcore/SWFStream.cpp
      libcore/SWFStream.h
      libcore/parser/abc_block.cpp
      libcore/parser/action_buffer.cpp
      libcore/parser/action_buffer.h
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.245
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Fri 2008-11-14 13:12:22 +0100
    message:
      merge from trunk
    modified:
      backend/render_handler_agg.cpp
      gui/gtk_glue_agg.cpp
      gui/gtk_glue_agg.h
      libbase/GnashImage.h
      libbase/GnashImageGif.cpp
      libbase/GnashImageJpeg.cpp
      libbase/GnashImagePng.cpp
      libbase/curl_adapter.cpp
      libbase/noseek_fd_adapter.cpp
      libbase/tu_file.cpp
      libbase/utility.h
      libcore/CharacterProxy.cpp
      libcore/MovieClip.cpp
      libcore/MovieClip.h
      libcore/RGBA.cpp
      libcore/SWFMatrix.cpp
      libcore/StreamProvider.cpp
      libcore/TextField.cpp
      libcore/asobj/XMLSocket_as.cpp
      libcore/fontlib.cpp
      libcore/swf/PlaceObject2Tag.cpp
      libcore/swf/tag_loaders.cpp
      testsuite/actionscript.all/MovieClip.as
    ------------------------------------------------------------
    revno: 9439.2.246
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Sat 2008-11-15 02:19:01 +0800
    message:
      Fix segfault caused by null objects in the scope stack.
    modified:
      libcore/as_environment.cpp
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.247
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Mon 2008-11-17 12:01:01 +0100
    message:
      Merge from trunk
    removed:
      libcore/shape.cpp
    modified:
      gui/Player.cpp
      libbase/utf8.h
      libcore/DynamicShape.h
      libcore/Makefile.am
      libcore/MovieClip.cpp
      libcore/array.cpp
      libcore/array.h
      libcore/as_value.cpp
      libcore/as_value.h
      libcore/asobj/Date.cpp
      libcore/asobj/MovieClipLoader.cpp
      libcore/asobj/NetStream_as.cpp
      libcore/asobj/flash/display/BitmapData_as.cpp
      libcore/character.cpp
      libcore/parser/abc_block.cpp
      libcore/parser/character_def.h
      libcore/parser/shape_character_def.cpp
      libcore/parser/shape_character_def.h
      libcore/vm/Machine.cpp
      testsuite/actionscript.all/MovieClip.as
      testsuite/libcore.all/AsValueTest.cpp
    ------------------------------------------------------------
    revno: 9439.2.248
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Mon 2008-11-17 18:10:35 +0100
    message:
      merge from trunk
    added:
      libcore/swf.cpp
    modified:
      libcore/Makefile.am
      libcore/swf.h
    ------------------------------------------------------------
    revno: 9439.2.249
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Mon 2008-11-17 18:51:21 +0100
    message:
      Include opcode name in VM2 debugging
    modified:
      libcore/swf.cpp
      libcore/swf.h
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.250
    committer: strk <address@hidden>
    branch nick: avm2
    timestamp: Mon 2008-11-24 08:44:45 +0100
    message:
      Merge from trunk
    removed:
      libcore/asobj/xmlattrs.cpp
      libcore/asobj/xmlattrs.h
      macros/libXML.m4
    added:
      libbase/GnashSystemIOHeaders.h
    modified:
      Makefile.am
      configure.ac
      cygnal/crc.cpp
      cygnal/cygnal.cpp
      cygnal/stream.cpp
      cygnal/testsuite/cygnal.all/test_crc.cpp
      doc/C/refmanual/code_dependencies.xml
      doc/C/refmanual/custompath_configuration.xml
      extensions/fileio/fileio.cpp
      gui/Player.cpp
      gui/aqua.cpp
      gui/fb.cpp
      gui/gtk.cpp
      gui/gui.cpp
      gui/sdl.cpp
      libamf/amf.cpp
      libamf/amftest.cpp
      libamf/lcshm.cpp
      libamf/lcshm.h
      libamf/sol.cpp
      libbase/BitsReader.h
      libbase/Makefile.am
      libbase/URL.cpp
      libbase/noseek_fd_adapter.cpp
      libcore/LoadVariablesThread.cpp
      libcore/MovieClip.cpp
      libcore/StreamProvider.cpp
      libcore/URLAccessManager.cpp
      libcore/array.cpp
      libcore/as_environment.cpp
      libcore/as_environment.h
      libcore/as_function.cpp
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Global.cpp
      libcore/asobj/Key_as.cpp
      libcore/asobj/LoadVars_as.cpp
      libcore/asobj/LocalConnection.cpp
      libcore/asobj/Makefile.am
      libcore/asobj/Object.cpp
      libcore/asobj/SharedObject.cpp
      libcore/asobj/Sound.cpp
      libcore/asobj/String_as.cpp
      libcore/asobj/XMLNode_as.cpp
      libcore/asobj/XMLNode_as.h
      libcore/asobj/XMLSocket_as.cpp
      libcore/asobj/XML_as.cpp
      libcore/asobj/XML_as.h
      libcore/movie_root.cpp
      libcore/parser/SWFMovieDefinition.cpp
      libcore/parser/SWFMovieDefinition.h
      libcore/parser/action_buffer.cpp
      libcore/parser/action_buffer.h
      libcore/parser/movie_definition.h
      libcore/parser/sprite_definition.h
      libcore/vm/ASHandlers.cpp
      libcore/vm/ActionExec.cpp
      libcore/vm/ActionExec.h
      libcore/vm/VM.cpp
      libcore/vm/VM.h
      libcore/vm/action.cpp
      libcore/vm/action.h
      libcore/vm/fn_call.h
      libmedia/FLVParser.cpp
      libmedia/gst/MediaParserGst.cpp
      libnet/http.cpp
      libnet/network.cpp
      libsound/sound_handler.cpp
      libsound/sound_handler.h
      plugin/plugin.cpp
      testsuite/actionscript.all/XML.as
      testsuite/actionscript.all/XMLNode.as
      testsuite/libamf.all/test_lc.cpp
      testsuite/libamf.all/test_number.cpp
      testsuite/libamf.all/test_object.cpp
      testsuite/libamf.all/test_string.cpp
      testsuite/libamf.all/test_variable.cpp
      testsuite/libbase/NoSeekFileTest.cpp
      testsuite/libbase/TCXXRc.cpp
      testsuite/libbase/URLTest.cpp
      testsuite/libcore.all/BitsReaderTest.cpp
      testsuite/libcore.all/StreamTest.cpp
      testsuite/libnet.all/test_cque.cpp
      testsuite/libnet.all/test_crc.cpp
      testsuite/libnet.all/test_handler.cpp
      testsuite/libnet.all/test_http.cpp
      testsuite/misc-ming.all/DragDropTestRunner.cpp
      testsuite/misc-ming.all/NetStream-SquareTestRunner.cpp
      testsuite/misc-ming.all/intervalTestRunner.cpp
      testsuite/misc-ming.all/loadMovieTestRunner.cpp
      testsuite/swfdec/PASSING
      utilities/Makefile.am
      utilities/dumpshm.cpp
      utilities/soldumper.cpp
    ------------------------------------------------------------
    revno: 9439.2.251
    committer: Tom Stellard <address@hidden>
    branch nick: gnash_dev
    timestamp: Mon 2008-11-24 22:26:41 +0800
    message:
      Prevent null objects from being pushed onto the scope stack.
    modified:
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.252
    committer: Sandro Santilli <address@hidden>
    branch nick: avm2
    timestamp: Wed 2008-12-31 00:48:06 +0100
    message:
      Merge from trunk
    removed:
      gui/klash.moc.in
      libcore/parser/bitmap_character_def.cpp
      libcore/parser/bitmap_character_def.h
    added:
      cygnal/acinclude.m4
      cygnal/cvm.cpp
      cygnal/cygnal.h
      cygnal/testsuite/cygnal.all/bindata/
      cygnal/testsuite/cygnal.all/bindata/README
      cygnal/testsuite/cygnal.all/bindata/array1-request.bin
      cygnal/testsuite/cygnal.all/bindata/array1-response.bin
      cygnal/testsuite/cygnal.all/bindata/array2-request.bin
      cygnal/testsuite/cygnal.all/bindata/array2-response.bin
      cygnal/testsuite/cygnal.all/bindata/array3-request.bin
      cygnal/testsuite/cygnal.all/bindata/array3-response.bin
      cygnal/testsuite/cygnal.all/bindata/array4-request.bin
      cygnal/testsuite/cygnal.all/bindata/array4-response.bin
      cygnal/testsuite/cygnal.all/bindata/array5-request.bin
      cygnal/testsuite/cygnal.all/bindata/array5-response.bin
      cygnal/testsuite/cygnal.all/bindata/array6-request.bin
      cygnal/testsuite/cygnal.all/bindata/array6-response.bin
      cygnal/testsuite/cygnal.all/bindata/array7-request.bin
      cygnal/testsuite/cygnal.all/bindata/array7-response.bin
      cygnal/testsuite/cygnal.all/bindata/bool-false-response.bin
      cygnal/testsuite/cygnal.all/bindata/bool-true-response.bin
      cygnal/testsuite/cygnal.all/bindata/custom-class1-request.bin
      cygnal/testsuite/cygnal.all/bindata/custom-class1-response.bin
      cygnal/testsuite/cygnal.all/bindata/custom-class2-request.bin
      cygnal/testsuite/cygnal.all/bindata/custom-class2-response.bin
      cygnal/testsuite/cygnal.all/bindata/date1-request.bin
      cygnal/testsuite/cygnal.all/bindata/date1-response.bin
      cygnal/testsuite/cygnal.all/bindata/date2-request.bin
      cygnal/testsuite/cygnal.all/bindata/date2-response.bin
      cygnal/testsuite/cygnal.all/bindata/echo-bool-false.bin
      cygnal/testsuite/cygnal.all/bindata/echo-bool-true.bin
      cygnal/testsuite/cygnal.all/bindata/echo-number1.bin
      cygnal/testsuite/cygnal.all/bindata/echo-string.bin
      cygnal/testsuite/cygnal.all/bindata/echo1-request.bin
      cygnal/testsuite/cygnal.all/bindata/echo1-response.bin
      cygnal/testsuite/cygnal.all/bindata/echo2-request.bin
      cygnal/testsuite/cygnal.all/bindata/echo2-response.bin
      cygnal/testsuite/cygnal.all/bindata/echo3-request.bin
      cygnal/testsuite/cygnal.all/bindata/echo3-response.bin
      cygnal/testsuite/cygnal.all/bindata/echo4-1-request.bin
      cygnal/testsuite/cygnal.all/bindata/echo4-1-response.bin
      cygnal/testsuite/cygnal.all/bindata/echo4-2-request.bin
      cygnal/testsuite/cygnal.all/bindata/echo4-2-response.bin
      cygnal/testsuite/cygnal.all/bindata/echo4-3-request.bin
      cygnal/testsuite/cygnal.all/bindata/echo4-3-response.bin
      cygnal/testsuite/cygnal.all/bindata/null-request.bin
      cygnal/testsuite/cygnal.all/bindata/null-response.bin
      cygnal/testsuite/cygnal.all/bindata/number1-request.bin
      cygnal/testsuite/cygnal.all/bindata/number1-response.bin
      cygnal/testsuite/cygnal.all/bindata/number10-request.bin
      cygnal/testsuite/cygnal.all/bindata/number10-response.bin
      cygnal/testsuite/cygnal.all/bindata/number11-request.bin
      cygnal/testsuite/cygnal.all/bindata/number11-response.bin
      cygnal/testsuite/cygnal.all/bindata/number12-request.bin
      cygnal/testsuite/cygnal.all/bindata/number12-response.bin
      cygnal/testsuite/cygnal.all/bindata/number13-request.bin
      cygnal/testsuite/cygnal.all/bindata/number13-response.bin
      cygnal/testsuite/cygnal.all/bindata/number14-request.bin
      cygnal/testsuite/cygnal.all/bindata/number14-response.bin
      cygnal/testsuite/cygnal.all/bindata/number15-request.bin
      cygnal/testsuite/cygnal.all/bindata/number15-response.bin
      cygnal/testsuite/cygnal.all/bindata/number16-request.bin
      cygnal/testsuite/cygnal.all/bindata/number16-response.bin
      cygnal/testsuite/cygnal.all/bindata/number2-request.bin
      cygnal/testsuite/cygnal.all/bindata/number2-response.bin
      cygnal/testsuite/cygnal.all/bindata/number3-request.bin
      cygnal/testsuite/cygnal.all/bindata/number3-response.bin
      cygnal/testsuite/cygnal.all/bindata/number4-request.bin
      cygnal/testsuite/cygnal.all/bindata/number4-response.bin
      cygnal/testsuite/cygnal.all/bindata/number5-request.bin
      cygnal/testsuite/cygnal.all/bindata/number5-response.bin
      cygnal/testsuite/cygnal.all/bindata/number6-request.bin
      cygnal/testsuite/cygnal.all/bindata/number6-response.bin
      cygnal/testsuite/cygnal.all/bindata/number7-request.bin
      cygnal/testsuite/cygnal.all/bindata/number7-response.bin
      cygnal/testsuite/cygnal.all/bindata/number8-request.bin
      cygnal/testsuite/cygnal.all/bindata/number8-response.bin
      cygnal/testsuite/cygnal.all/bindata/number9-request.bin
      cygnal/testsuite/cygnal.all/bindata/number9-response.bin
      cygnal/testsuite/cygnal.all/bindata/object1-request.bin
      cygnal/testsuite/cygnal.all/bindata/object1-responses.bin
      cygnal/testsuite/cygnal.all/bindata/object2-request.bin
      cygnal/testsuite/cygnal.all/bindata/object2-response.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class1-request.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class1-response.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class2-request.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class2-response.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class3-request.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class3-response.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class4-request.bin
      cygnal/testsuite/cygnal.all/bindata/remote-class4-response.bin
      cygnal/testsuite/cygnal.all/bindata/undefined-request.bin
      cygnal/testsuite/cygnal.all/bindata/undefined-response.bin
      gui/GuiKde4.cpp
      gui/Kde4Glue.h
      gui/Kde4GlueAgg.cpp
      gui/Kde4GlueAgg.h
      gui/Kde4Gui.cpp
      gui/Kde4Gui.h
      gui/am-frag/kde4.am
      gui/klash3.moc.in
      gui/klash4.moc.in
      libcore/Bitmap.cpp
      libcore/Bitmap.h
      libcore/asobj/PlayHead.cpp
      libcore/asobj/PlayHead.h
      libnet/cache.cpp
      libnet/cache.h
      macros/kde4.m4
      macros/qt4.m4
      plugin/klash4/
      plugin/klash4/Makefile.am
      plugin/klash4/README
      plugin/klash4/klash.desktop
      plugin/klash4/klash_part.cpp
      plugin/klash4/klash_part.desktop
      plugin/klash4/klash_part.h
      plugin/klash4/klash_part.moc.in
      plugin/klash4/klashpartui.rc
      plugin/klash4/klashplayer.lsm
      plugin/klash4/pluginsinfo
      testsuite/libnet.all/amf0-boolean.bin
      testsuite/libnet.all/amf0-null-object.bin
      testsuite/libnet.all/amf0-null-string.bin
      testsuite/libnet.all/amf0-number.bin
      testsuite/libnet.all/amf0-string.bin
      testsuite/libnet.all/amf0-undefined-object.bin
      testsuite/libnet.all/amf0-unsupported-object.bin
      testsuite/libnet.all/ecma-array.bin
      testsuite/libnet.all/generate_amfbins.cpp
      testsuite/libnet.all/object1.bin
      testsuite/libnet.all/strict-array.bin
      testsuite/libnet.all/test_cache.cpp
      testsuite/libnet.all/test_diskstream.cpp
      testsuite/misc-ming.all/easysound.as
      testsuite/misc-ming.all/red5test.as
      testsuite/misc-ming.all/remoting.README
      testsuite/misc-ming.all/remoting.as
      testsuite/misc-ming.all/remoting.php
      testsuite/misc-ming.all/widgets.as
    renamed:
      cygnal/stream.cpp => libnet/diskstream.cpp
      cygnal/stream.h => libnet/diskstream.h
      cygnal/testsuite/simple.exp => cygnal/testsuite/cygnal.exp
      gui/am-frag/kde.am => gui/am-frag/kde3.am
      gui/am-frag/qtopia.am => gui/am-frag/qtopia3.am
      libcore/array.cpp => libcore/asobj/Array_as.cpp
      libcore/array.h => libcore/asobj/Array_as.h
      libcore/asobj/Boolean.cpp => libcore/asobj/Boolean_as.cpp
      libcore/asobj/Boolean.h => libcore/asobj/Boolean_as.h
      libcore/asobj/Color.cpp => libcore/asobj/Color_as.cpp
      libcore/asobj/Color.h => libcore/asobj/Color_as.h
      libcore/asobj/LocalConnection.cpp => libcore/asobj/LocalConnection_as.cpp
      libcore/asobj/LocalConnection.h => libcore/asobj/LocalConnection_as.h
      libcore/asobj/Mouse.cpp => libcore/asobj/Mouse_as.cpp
      libcore/asobj/Mouse.h => libcore/asobj/Mouse_as.h
      libcore/asobj/NetConnection.cpp => libcore/asobj/NetConnection_as.cpp
      libcore/asobj/NetConnection.h => libcore/asobj/NetConnection_as.h
      libcore/asobj/Selection.cpp => libcore/asobj/Selection_as.cpp
      libcore/asobj/Selection.h => libcore/asobj/Selection_as.h
      libcore/asobj/SharedObject.cpp => libcore/asobj/SharedObject_as.cpp
      libcore/asobj/SharedObject.h => libcore/asobj/SharedObject_as.h
      libcore/asobj/Sound.cpp => libcore/asobj/Sound_as.cpp
      libcore/asobj/Sound.h => libcore/asobj/Sound_as.h
      libcore/asobj/TextFormat.cpp => libcore/asobj/TextFormat_as.cpp
      libcore/asobj/TextFormat.h => libcore/asobj/TextFormat_as.h
      libcore/bitmap_info.h => libcore/BitmapInfo.h
      macros/kde.m4 => macros/kde3.m4
      macros/qt.m4 => macros/qt3.m4
    modified:
      .bzrignore
      Makefile.am
      TODO
      autogen.sh
      backend/render_handler.h
      backend/render_handler_agg.cpp
      backend/render_handler_agg_bitmap.h
      backend/render_handler_agg_style.h
      backend/render_handler_cairo.cpp
      backend/render_handler_ogl.cpp
      backend/render_handler_ogl.h
      configure.ac
      cygnal/Makefile.am
      cygnal/README
      cygnal/crc.cpp
      cygnal/crc.h
      cygnal/cygnal.cpp
      cygnal/testsuite/cygnal.all/Makefile.am
      cygnal/testsuite/cygnal.all/cygnalrc.in
      cygnal/testsuite/cygnal.all/test_crc.cpp
      extensions/fileio/fileio.cpp
      extensions/mysql/mysql_db.cpp
      gui/Makefile.am
      gui/Player.cpp
      gui/gnash.cpp
      gui/gnash.in
      gui/gui.cpp
      gui/gui.h
      gui/gui_kde.cpp
      gui/kde.cpp
      libamf/amf.cpp
      libamf/amf.h
      libamf/amfutf8.h
      libamf/buffer.cpp
      libamf/buffer.h
      libamf/element.cpp
      libamf/element.h
      libamf/flv.cpp
      libamf/flv.h
      libamf/lcshm.cpp
      libamf/lcshm.h
      libamf/sol.cpp
      libamf/sol.h
      libbase/GnashImage.cpp
      libbase/GnashImageJpeg.h
      libbase/NetworkAdapter.h
      libbase/SimpleBuffer.h
      libbase/URL.h
      libbase/curl_adapter.cpp
      libbase/log.h
      libbase/rc.cpp
      libbase/rc.h
      libbase/utility.h
      libcore/BitmapMovieInstance.cpp
      libcore/BitmapMovieInstance.h
      libcore/Button.cpp
      libcore/Button.h
      libcore/DisplayList.cpp
      libcore/DisplayList.h
      libcore/DynamicShape.h
      libcore/Font.cpp
      libcore/FreetypeGlyphsProvider.h
      libcore/Makefile.am
      libcore/MovieClip.cpp
      libcore/MovieClip.h
      libcore/Property.cpp
      libcore/Property.h
      libcore/PropertyList.cpp
      libcore/PropertyList.h
      libcore/SWFMatrix.cpp
      libcore/SWFMatrix.h
      libcore/SWFStream.cpp
      libcore/SWFStream.h
      libcore/StreamProvider.h
      libcore/StringPredicates.h
      libcore/TextField.cpp
      libcore/TextField.h
      libcore/Video.cpp
      libcore/Video.h
      libcore/as_environment.cpp
      libcore/as_environment.h
      libcore/as_function.cpp
      libcore/as_function.h
      libcore/as_object.cpp
      libcore/as_object.h
      libcore/as_prop_flags.h
      libcore/as_value.cpp
      libcore/as_value.h
      libcore/asobj/AsBroadcaster.cpp
      libcore/asobj/AsBroadcaster.h
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/ClassHierarchy.h
      libcore/asobj/Date.cpp
      libcore/asobj/Date.h
      libcore/asobj/Error_as.cpp
      libcore/asobj/Global.cpp
      libcore/asobj/Key_as.cpp
      libcore/asobj/Key_as.h
      libcore/asobj/LoadVars_as.cpp
      libcore/asobj/LoadableObject.cpp
      libcore/asobj/LoadableObject.h
      libcore/asobj/Makefile.am
      libcore/asobj/Math_as.cpp
      libcore/asobj/MovieClipLoader.cpp
      libcore/asobj/NetStream_as.cpp
      libcore/asobj/NetStream_as.h
      libcore/asobj/Object.cpp
      libcore/asobj/Object.h
      libcore/asobj/String_as.cpp
      libcore/asobj/String_as.h
      libcore/asobj/XMLNode_as.cpp
      libcore/asobj/XMLNode_as.h
      libcore/asobj/XMLSocket_as.cpp
      libcore/asobj/XML_as.cpp
      libcore/asobj/XML_as.h
      libcore/asobj/flash/display/BitmapData_as.cpp
      libcore/asobj/flash/display/BitmapData_as.h
      libcore/character.cpp
      libcore/character.h
      libcore/event_id.h
      libcore/fill_style.cpp
      libcore/fill_style.h
      libcore/generic_character.cpp
      libcore/generic_character.h
      libcore/impl.cpp
      libcore/movie_instance.cpp
      libcore/movie_instance.h
      libcore/movie_root.cpp
      libcore/movie_root.h
      libcore/namedStrings.cpp
      libcore/namedStrings.h
      libcore/parser/BitmapMovieDefinition.cpp
      libcore/parser/BitmapMovieDefinition.h
      libcore/parser/Makefile.am
      libcore/parser/SWFMovieDefinition.cpp
      libcore/parser/SWFMovieDefinition.h
      libcore/parser/morph2_character_def.cpp
      libcore/parser/movie_definition.h
      libcore/parser/sprite_definition.h
      libcore/render.cpp
      libcore/render.h
      libcore/styles.cpp
      libcore/styles.h
      libcore/swf.h
      libcore/swf/DefineButtonCxformTag.cpp
      libcore/swf/DefineButtonSoundTag.cpp
      libcore/swf/DefineButtonSoundTag.h
      libcore/swf/DefineButtonTag.cpp
      libcore/swf/PlaceObject2Tag.cpp
      libcore/swf/PlaceObject2Tag.h
      libcore/swf/SoundInfoRecord.cpp
      libcore/swf/SoundInfoRecord.h
      libcore/swf/StartSoundTag.cpp
      libcore/swf/StartSoundTag.h
      libcore/swf/StreamSoundBlockTag.cpp
      libcore/swf/TextRecord.cpp
      libcore/swf/tag_loaders.cpp
      libcore/swf_function.cpp
      libcore/vm/ASHandlers.cpp
      libcore/vm/ASHandlers.h
      libcore/vm/Machine.cpp
      libcore/vm/VM.cpp
      libcore/vm/action.cpp
      libcore/vm/fn_call.h
      libcore/vm/with_stack_entry.h
      libmedia/FLVParser.cpp
      libmedia/MediaHandler.cpp
      libmedia/MediaParser.h
      libmedia/ffmpeg/AudioDecoderFfmpeg.cpp
      libmedia/ffmpeg/AudioDecoderFfmpeg.h
      libmedia/ffmpeg/MediaParserFfmpeg.cpp
      libmedia/ffmpeg/ffmpegHeaders.h
      libmedia/gst/MediaHandlerGst.cpp
      libmedia/gst/MediaParserGst.cpp
      libmedia/gst/VideoDecoderGst.cpp
      libnet/Makefile.am
      libnet/cque.cpp
      libnet/cque.h
      libnet/handler.cpp
      libnet/handler.h
      libnet/http.cpp
      libnet/http.h
      libnet/network.cpp
      libnet/network.h
      libnet/rtmp.cpp
      libnet/rtmp.h
      libnet/rtmp_client.cpp
      libnet/rtmp_client.h
      libnet/rtmp_msg.h
      libnet/rtmp_server.cpp
      libnet/rtmp_server.h
      libsound/sdl/sound_handler_sdl.cpp
      libsound/sdl/sound_handler_sdl.h
      libsound/sound_handler.cpp
      libsound/sound_handler.h
      macros/libslist
      plugin/Makefile.am
      plugin/klash/Makefile.am
      plugin/plugin.cpp
      plugin/plugin.h
      testsuite/DummyMovieDefinition.h
      testsuite/MovieTester.cpp
      testsuite/actionscript.all/ASnative.as
      testsuite/actionscript.all/AsBroadcaster.as
      testsuite/actionscript.all/LocalConnection.as
      testsuite/actionscript.all/Makefile.am
      testsuite/actionscript.all/MovieClip.as
      testsuite/actionscript.all/NetConnection.as
      testsuite/actionscript.all/Object.as
      testsuite/actionscript.all/Selection.as
      testsuite/actionscript.all/SharedObject.as
      testsuite/actionscript.all/Sound.as
      testsuite/actionscript.all/XML.as
      testsuite/actionscript.all/array.as
      testsuite/actionscript.all/setProperty.as
      testsuite/check.h
      testsuite/gnashrc.in
      testsuite/libamf.all/test_amf.cpp
      testsuite/libamf.all/test_buffer.cpp
      testsuite/libamf.all/test_el.cpp
      testsuite/libcore.all/as_prop_flagsTest.cpp
      testsuite/libnet.all/Makefile.am
      testsuite/libnet.all/test_cque.cpp
      testsuite/libnet.all/test_handler.cpp
      testsuite/libnet.all/test_http.cpp
      testsuite/misc-ming.all/ButtonEventsTest.c
      testsuite/misc-ming.all/DefineEditTextTest.c
      testsuite/misc-ming.all/Makefile.am
      testsuite/misc-ming.all/NetStream-SquareTest.c
      testsuite/misc-ming.all/RollOverOutTest-Runner.cpp
      testsuite/misc-ming.all/SharedObjectTest.as
      testsuite/misc-ming.all/SharedObjectTest.sol/sol1.sol
      testsuite/misc-ming.all/SharedObjectTestRunner.sh
      testsuite/misc-ming.all/attachMovieLoopingTest.c
      testsuite/misc-ming.all/attachMovieLoopingTestRunner.cpp
      testsuite/misc-ming.all/eventSoundTest1-Runner.cpp
      testsuite/misc-swfc.all/check.sc
      testsuite/misc-swfc.all/swf4opcode.sc
      testsuite/swfdec/Makefile.am
      testsuite/swfdec/PASSING
      utilities/Makefile.am
      utilities/dumpshm.cpp
      utilities/flvdumper.cpp
      utilities/rtmpget.cpp
      libnet/diskstream.cpp
      libnet/diskstream.h
      cygnal/testsuite/cygnal.exp
      gui/am-frag/kde3.am
      gui/am-frag/qtopia3.am
      libcore/asobj/Array_as.cpp
      libcore/asobj/Array_as.h
      libcore/asobj/Boolean_as.cpp
      libcore/asobj/Boolean_as.h
      libcore/asobj/Color_as.cpp
      libcore/asobj/Color_as.h
      libcore/asobj/LocalConnection_as.cpp
      libcore/asobj/LocalConnection_as.h
      libcore/asobj/Mouse_as.cpp
      libcore/asobj/Mouse_as.h
      libcore/asobj/NetConnection_as.cpp
      libcore/asobj/NetConnection_as.h
      libcore/asobj/Selection_as.cpp
      libcore/asobj/Selection_as.h
      libcore/asobj/SharedObject_as.cpp
      libcore/asobj/SharedObject_as.h
      libcore/asobj/Sound_as.cpp
      libcore/asobj/Sound_as.h
      libcore/asobj/TextFormat_as.cpp
      libcore/asobj/TextFormat_as.h
      libcore/BitmapInfo.h
      macros/kde3.m4
      macros/qt3.m4
    ------------------------------------------------------------
    revno: 9439.2.253
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2
    timestamp: Fri 2009-02-20 13:24:00 +0100
    message:
      Merge from trunk.
    removed:
      backend/render_handler_agg_compat.h
      po/sv.po
      testsuite/misc-ming.all/SharedObjectTest.sol/sol1.sol
    added:
      libbase/GnashFileUtilities.cpp
      libbase/GnashFileUtilities.h
      libbase/NamingPolicy.cpp
      libbase/NamingPolicy.h
      macros/swfmill.m4
      packaging/redhat/klash.spec
      testsuite/actionscript.all/HitTest.as
      testsuite/misc-ming.all/SharedObjectTest.sol/sol1.sol
    renamed:
      libcore/asobj/Date.cpp => libcore/asobj/Date_as.cpp
      libcore/asobj/Date.h => libcore/asobj/Date_as.h
      libnet/rtmp_server.cpp => cygnal/rtmp_server.cpp
      libnet/rtmp_server.h => cygnal/rtmp_server.h
    modified:
      Makefile.am
      backend/Makefile.am
      backend/render_handler.h
      backend/render_handler_agg.cpp
      backend/render_handler_agg_style.h
      backend/render_handler_cairo.cpp
      backend/render_handler_ogl.cpp
      backend/render_handler_ogl.h
      configure.ac
      cygnal/Makefile.am
      cygnal/README
      cygnal/cvm.cpp
      cygnal/cygnal.cpp
      cygnal/testsuite/cygnal.exp
      gui/Kde4Gui.cpp
      gui/Kde4Gui.h
      gui/Player.cpp
      gui/Player.h
      gui/fltk.cpp
      gui/fltksup.h
      gui/gnash.cpp
      gui/gtk.cpp
      gui/gtk_glue.h
      gui/gtk_glue_agg.cpp
      gui/gtk_glue_agg.h
      gui/gtksup.h
      gui/gui.cpp
      gui/gui.h
      gui/kde.cpp
      gui/kdesup.h
      gui/klash3.moc.in
      gui/klash4.moc.in
      libamf/amf.cpp
      libamf/amf.h
      libamf/buffer.cpp
      libamf/buffer.h
      libamf/element.cpp
      libamf/element.h
      libamf/flv.cpp
      libbase/GnashImage.h
      libbase/GnashSystemIOHeaders.h
      libbase/IOChannel.cpp
      libbase/IOChannel.h
      libbase/Makefile.am
      libbase/NetworkAdapter.h
      libbase/curl_adapter.cpp
      libbase/noseek_fd_adapter.cpp
      libbase/rc.cpp
      libbase/rc.h
      libbase/tu_file.cpp
      libbase/tu_file.h
      libbase/zlib_adapter.cpp
      libcore/Button.cpp
      libcore/CharacterProxy.h
      libcore/DisplayList.cpp
      libcore/Font.cpp
      libcore/Font.h
      libcore/LoadVariablesThread.cpp
      libcore/LoadVariablesThread.h
      libcore/MovieClip.cpp
      libcore/MovieClip.h
      libcore/Property.cpp
      libcore/PropertyList.cpp
      libcore/PropertyList.h
      libcore/RGBA.cpp
      libcore/RGBA.h
      libcore/RunInfo.h
      libcore/SWFStream.cpp
      libcore/SWFStream.h
      libcore/StreamProvider.cpp
      libcore/StreamProvider.h
      libcore/TextField.cpp
      libcore/TextField.h
      libcore/Video.cpp
      libcore/Video.h
      libcore/as_environment.cpp
      libcore/as_environment.h
      libcore/as_function.cpp
      libcore/as_object.cpp
      libcore/as_object.h
      libcore/as_value.cpp
      libcore/as_value.h
      libcore/asobj/Array_as.cpp
      libcore/asobj/AsBroadcaster.cpp
      libcore/asobj/AsBroadcaster.h
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Error_as.cpp
      libcore/asobj/Global.cpp
      libcore/asobj/LoadVars_as.cpp
      libcore/asobj/LoadVars_as.h
      libcore/asobj/LoadableObject.cpp
      libcore/asobj/LocalConnection_as.cpp
      libcore/asobj/Makefile.am
      libcore/asobj/Math_as.cpp
      libcore/asobj/Mouse_as.cpp
      libcore/asobj/NetConnection_as.cpp
      libcore/asobj/NetStream_as.cpp
      libcore/asobj/Number_as.cpp
      libcore/asobj/Object.cpp
      libcore/asobj/SharedObject_as.cpp
      libcore/asobj/SharedObject_as.h
      libcore/asobj/Sound_as.cpp
      libcore/asobj/String_as.cpp
      libcore/asobj/TextFormat_as.cpp
      libcore/asobj/XMLNode_as.cpp
      libcore/asobj/XMLNode_as.h
      libcore/asobj/XMLSocket_as.cpp
      libcore/asobj/XML_as.cpp
      libcore/asobj/XML_as.h
      libcore/character.cpp
      libcore/character.h
      libcore/cxform.cpp
      libcore/debugger.cpp
      libcore/fill_style.cpp
      libcore/fill_style.h
      libcore/generic_character.cpp
      libcore/gnash.h
      libcore/impl.cpp
      libcore/impl.h
      libcore/movie_root.cpp
      libcore/movie_root.h
      libcore/parser/SWFMovieDefinition.cpp
      libcore/parser/SWFMovieDefinition.h
      libcore/parser/action_buffer.cpp
      libcore/parser/action_buffer.h
      libcore/parser/character_def.cpp
      libcore/parser/character_def.h
      libcore/parser/morph2_character_def.cpp
      libcore/parser/morph2_character_def.h
      libcore/parser/shape_character_def.cpp
      libcore/parser/shape_character_def.h
      libcore/parser/sprite_definition.cpp
      libcore/render.cpp
      libcore/render.h
      libcore/styles.cpp
      libcore/styles.h
      libcore/swf.h
      libcore/swf/CSMTextSettingsTag.cpp
      libcore/swf/CSMTextSettingsTag.h
      libcore/swf/DefineButtonCxformTag.cpp
      libcore/swf/DefineButtonCxformTag.h
      libcore/swf/DefineButtonSoundTag.cpp
      libcore/swf/DefineButtonSoundTag.h
      libcore/swf/DefineButtonTag.cpp
      libcore/swf/DefineButtonTag.h
      libcore/swf/DefineEditTextTag.cpp
      libcore/swf/DefineEditTextTag.h
      libcore/swf/DefineFontAlignZonesTag.cpp
      libcore/swf/DefineFontAlignZonesTag.h
      libcore/swf/DefineFontNameTag.h
      libcore/swf/DefineFontTag.cpp
      libcore/swf/DefineFontTag.h
      libcore/swf/DefineTextTag.cpp
      libcore/swf/DefineTextTag.h
      libcore/swf/DefineVideoStreamTag.cpp
      libcore/swf/DefineVideoStreamTag.h
      libcore/swf/DisplayListTag.h
      libcore/swf/DoABCTag.h
      libcore/swf/DoActionTag.h
      libcore/swf/DoInitActionTag.h
      libcore/swf/PlaceObject2Tag.cpp
      libcore/swf/PlaceObject2Tag.h
      libcore/swf/RemoveObjectTag.cpp
      libcore/swf/RemoveObjectTag.h
      libcore/swf/ScriptLimitsTag.h
      libcore/swf/SetBackgroundColorTag.h
      libcore/swf/StartSoundTag.cpp
      libcore/swf/StartSoundTag.h
      libcore/swf/StreamSoundBlockTag.cpp
      libcore/swf/StreamSoundBlockTag.h
      libcore/swf/SymbolClassTag.h
      libcore/swf/TagLoadersTable.cpp
      libcore/swf/TagLoadersTable.h
      libcore/swf/TextRecord.cpp
      libcore/swf/TextRecord.h
      libcore/swf/VideoFrameTag.cpp
      libcore/swf/VideoFrameTag.h
      libcore/swf/tag_loaders.cpp
      libcore/swf/tag_loaders.h
      libcore/swf_function.cpp
      libcore/swf_function.h
      libcore/vm/ASHandlers.cpp
      libcore/vm/ASHandlers.h
      libcore/vm/ActionExec.cpp
      libcore/vm/ActionExec.h
      libcore/vm/CallStack.cpp
      libcore/vm/ExecutableCode.h
      libcore/vm/Machine.cpp
      libcore/vm/VM.cpp
      libcore/vm/VM.h
      libcore/vm/action.cpp
      libcore/vm/fn_call.h
      libmedia/AudioDecoderNellymoser.cpp
      libmedia/FLVParser.cpp
      libmedia/FLVParser.h
      libmedia/Makefile.am
      libmedia/MediaHandler.cpp
      libmedia/MediaHandler.h
      libmedia/MediaParser.cpp
      libmedia/MediaParser.h
      libmedia/ffmpeg/AudioDecoderFfmpeg.cpp
      libmedia/ffmpeg/MediaHandlerFfmpeg.cpp
      libmedia/ffmpeg/MediaParserFfmpeg.cpp
      libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
      libmedia/gst/AudioDecoderGst.cpp
      libmedia/gst/MediaHandlerGst.cpp
      libmedia/gst/MediaParserGst.cpp
      libmedia/gst/VideoDecoderGst.cpp
      libnet/Makefile.am
      libnet/cache.h
      libnet/cque.h
      libnet/diskstream.cpp
      libnet/handler.cpp
      libnet/http.cpp
      libnet/http.h
      libnet/network.cpp
      libnet/rtmp.cpp
      libnet/rtmp.h
      libnet/rtmp_client.cpp
      libnet/rtmp_msg.cpp
      libnet/rtmp_msg.h
      libsound/EmbedSoundInst.cpp
      macros/ffmpeg.m4
      macros/kde3.m4
      macros/kde4.m4
      packaging/deb.am
      packaging/debian/changelog
      packaging/debian/control
      packaging/debian/gnash-klash.install
      packaging/debian/klash.install
      packaging/debian/klash.links
      packaging/debian/konqueror-plugin-gnash.install
      packaging/debian/mozilla-plugin-gnash.install
      packaging/debian/mozilla-plugin-gnash.postinst
      packaging/debian/mozilla-plugin-gnash.prerm
      packaging/debian/rules
      packaging/redhat/gnash.spec
      packaging/rpm.am
      packaging/snapshot.am
      packaging/xpi.am
      packaging/xpi/install.rdf
      packaging/xpi/update.rdf
      plugin/Makefile.am
      plugin/mozilla-sdk/np_entry.cpp
      plugin/mozilla-sdk/npn_gate.cpp
      plugin/mozilla-sdk/npp_gate.cpp
      plugin/mozilla-sdk/npplat.h
      plugin/mozilla-sdk/pluginbase.h
      plugin/plugin.cpp
      po/Makefile.am
      po/cs.po
      po/de.po
      po/es.po
      po/fi.po
      po/fr.po
      po/gnash.pot
      po/it.po
      po/ja.po
      testsuite/MovieTester.cpp
      testsuite/MovieTester.h
      testsuite/actionscript.all/ASnative.as
      testsuite/actionscript.all/Date.as
      testsuite/actionscript.all/Error.as
      testsuite/actionscript.all/Global.as
      testsuite/actionscript.all/LoadVars.as
      testsuite/actionscript.all/Makefile.am
      testsuite/actionscript.all/Math.as
      testsuite/actionscript.all/MovieClip.as
      testsuite/actionscript.all/Number.as
      testsuite/actionscript.all/TextField.as
      testsuite/actionscript.all/XML.as
      testsuite/actionscript.all/ops.as
      testsuite/gnashrc.in
      testsuite/libamf.all/test_amf.cpp
      testsuite/libbase/CurlStreamTest.cpp
      testsuite/libcore.all/Makefile.am
      testsuite/libcore.all/PropertyListTest.cpp
      testsuite/libcore.all/StreamTest.cpp
      testsuite/libnet.all/Makefile.am
      testsuite/libnet.all/test_diskstream.cpp
      testsuite/libnet.all/test_http.cpp
      testsuite/libnet.all/test_rtmp.cpp
      testsuite/misc-ming.all/DrawingApiTestRunner.cpp
      testsuite/misc-ming.all/NetStream-SquareTest.c
      testsuite/misc-ming.all/SharedObjectTest.as
      testsuite/misc-ming.all/SharedObjectTestRunner.sh
      testsuite/swfdec/PASSING
      testsuite/swfdec/swfdec_gnash_tester
      utilities/Makefile.am
      utilities/flvdumper.cpp
      utilities/processor.cpp
      libcore/asobj/Date_as.cpp
      libcore/asobj/Date_as.h
      cygnal/rtmp_server.cpp
      cygnal/rtmp_server.h
    ------------------------------------------------------------
    revno: 9439.2.254
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2
    timestamp: Wed 2009-02-25 19:37:36 +0100
    message:
      Make formatting in Machine.cpp more consistent with itself and the coding
      guidelines. Stop initializing members in the ctor body without good 
reason.
      
      Clean up abc_function interface and initialization order.
    modified:
      libcore/abc_function.cpp
      libcore/abc_function.h
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.255
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2
    timestamp: Wed 2009-02-25 19:57:02 +0100
    message:
      Merge from trunk.
    added:
      gui/gtk_glue_agg_xv.cpp
      gui/gtk_glue_agg_xv.h
      libmedia/VideoConverter.h
      libmedia/ffmpeg/VideoConverterFfmpeg.cpp
      libmedia/ffmpeg/VideoConverterFfmpeg.h
      libmedia/gst/VideoConverterGst.cpp
      libmedia/gst/VideoConverterGst.h
    modified:
      Makefile.am
      configure.ac
      cygnal/rtmp_server.cpp
      doc/C/usermanual/gnashrc.xml
      extensions/Makefile.am
      extensions/dbus/Makefile.am
      extensions/dejagnu/Makefile.am
      extensions/fileio/Makefile.am
      extensions/gtk2/Makefile.am
      extensions/launcher/Makefile.am
      extensions/lirc/Makefile.am
      extensions/metome/Makefile.am
      extensions/mysql/Makefile.am
      extensions/mysql/mysql_db.cpp
      gui/Kde4Gui.cpp
      gui/am-frag/gtk.am
      gui/gtk.cpp
      gui/gui.h
      libbase/curl_adapter.cpp
      libbase/gnashrc.in
      libbase/rc.cpp
      libbase/rc.h
      libcore/TextField.cpp
      libcore/movie_root.h
      libmedia/Makefile.am
      libmedia/MediaHandler.h
      libmedia/ffmpeg/MediaHandlerFfmpeg.cpp
      libmedia/ffmpeg/MediaHandlerFfmpeg.h
      libmedia/gst/MediaHandlerGst.cpp
      libmedia/gst/MediaHandlerGst.h
      libmedia/gst/swfdec_codec_gst.c
      libmedia/gst/swfdec_codec_gst.h
      libsound/Makefile.am
      macros/x11.m4
      plugin/plugin.cpp
      testsuite/MovieTester.cpp
      testsuite/libbase/TCXXRc.cpp
      testsuite/libbase/gnashrc-local.in
      testsuite/libbase/gnashrc.in
      testsuite/libnet.all/generate_amfbins.cpp
      testsuite/libnet.all/test_diskstream.cpp
      utilities/processor.cpp
    ------------------------------------------------------------
    revno: 9439.2.256
    committer: Bastiaan Jacques <address@hidden>
    branch nick: avm2
    timestamp: Wed 2009-03-04 21:30:04 +0100
    message:
      Merge trunk.
    added:
      libamf/amf_msg.cpp
      libamf/amf_msg.h
      testsuite/libamf.all/test_amfmsg.cpp
    modified:
      INSTALL
      Makefile.am
      autogen.sh
      backend/PathParser.cpp
      backend/PathParser.h
      backend/render_handler_agg.h
      backend/render_handler_agg_bitmap.h
      backend/render_handler_cairo.h
      configure.ac
      cygnal/Makefile.am
      cygnal/acinclude.m4
      cygnal/alloc.cpp
      cygnal/crc.cpp
      cygnal/crc.h
      cygnal/cvm.cpp
      cygnal/cygnal.cpp
      cygnal/cygnal.h
      cygnal/rtmp_server.cpp
      cygnal/rtmp_server.h
      cygnal/testsuite/Makefile.am
      cygnal/testsuite/cygnal.all/Makefile.am
      cygnal/testsuite/cygnal.all/test_crc.cpp
      cygnal/testsuite/cygnal.exp
      depcomp
      devtools/lib/Gnash/Distribution.pm
      devtools/lib/Gnash/Utils.pm
      devtools/testsuite/c_casts.t
      devtools/testsuite/copyright_notices.t
      devtools/testsuite/tabs.t
      devtools/testsuite/uncuddled_else.t
      doc/C/COPYING-DOC
      doc/C/Makefile.am
      doc/C/gen-doc.sh
      doc/C/preformatted/gnash_user.info.in
      doc/C/preformatted/gnashref.html.in
      doc/Makefile.am
      extensions/Makefile.am
      extensions/dbus/Makefile.am
      extensions/dbus/dbus_ext.cpp
      extensions/dejagnu/Makefile.am
      extensions/dejagnu/dejagnu.cpp
      extensions/dejagnu/dejagnu.h
      extensions/dejagnu/test.as
      extensions/fileio/Makefile.am
      extensions/fileio/fileio.cpp
      extensions/fileio/fileio.h
      extensions/fileio/test.as
      extensions/gtk2/Makefile.am
      extensions/gtk2/gtkext.cpp
      extensions/gtk2/gtkext.h
      extensions/gtk2/hello.as
      extensions/launcher/Makefile.am
      extensions/launcher/launcher.cpp
      extensions/launcher/launcher_ext.cpp
      extensions/launcher/launcher_ext.h
      extensions/launcher/md5.cpp
      extensions/launcher/md5.h
      extensions/launcher/test.as
      extensions/lirc/Makefile.am
      extensions/lirc/lirc_ext.cpp
      extensions/lirc/lirc_ext.h
      extensions/lirc/test.as
      extensions/metome/Makefile.am
      extensions/metome/metome_ext.cpp
      extensions/metome/metome_ext.h
      extensions/mysql/Makefile.am
      extensions/mysql/mysql_db.cpp
      extensions/mysql/mysql_db.h
      extensions/mysql/mysql_table.cpp
      extensions/mysql/test.as
      gui/GuiKde4.cpp
      gui/Kde4Glue.h
      gui/Kde4GlueAgg.cpp
      gui/Kde4GlueAgg.h
      gui/Makefile.am
      gui/NullGui.cpp
      gui/NullGui.h
      gui/Player.h
      gui/am-frag/alp.am
      gui/am-frag/aqua.am
      gui/am-frag/dump.am
      gui/am-frag/fb.am
      gui/am-frag/fltk.am
      gui/am-frag/gtk.am
      gui/am-frag/hildon.am
      gui/am-frag/kde3.am
      gui/am-frag/kde4.am
      gui/am-frag/qtopia3.am
      gui/am-frag/riscos.am
      gui/am-frag/sdl.am
      gui/aqua.cpp
      gui/aqua_glue.h
      gui/aqua_ogl_glue.cpp
      gui/aqua_ogl_glue.h
      gui/aquasup.h
      gui/dump.cpp
      gui/dump.h
      gui/fb.cpp
      gui/fbsup.h
      gui/fltk.cpp
      gui/fltk_glue_agg.cpp
      gui/fltk_glue_agg.h
      gui/fltk_glue_cairo.cpp
      gui/fltk_glue_cairo.h
      gui/fltksup.h
      gui/gnash.cpp
      gui/gnash.in
      gui/gtk_glue.h
      gui/gtk_glue_agg.cpp
      gui/gtk_glue_agg.h
      gui/gtk_glue_agg_xv.h
      gui/gtk_glue_cairo.cpp
      gui/gtk_glue_cairo.h
      gui/gtk_glue_gtkglext.cpp
      gui/gtk_glue_gtkglext.h
      gui/gui.cpp
      gui/gui_aqua.cpp
      gui/gui_dump.cpp
      gui/gui_fb.cpp
      gui/gui_fltk.cpp
      gui/gui_gtk.cpp
      gui/gui_kde.cpp
      gui/gui_riscos.cpp
      gui/gui_sdl.cpp
      gui/kde.cpp
      gui/kde_glue.h
      gui/kde_glue_agg.cpp
      gui/kde_glue_agg.h
      gui/kde_glue_opengl.cpp
      gui/kde_glue_opengl.h
      gui/kdesup.h
      gui/riscos.cpp
      gui/riscos_glue.h
      gui/riscos_glue_agg.cpp
      gui/riscos_glue_agg.h
      gui/riscossup.h
      gui/sdl.cpp
      gui/sdl_agg_glue.cpp
      gui/sdl_agg_glue.h
      gui/sdl_cairo_glue.cpp
      gui/sdl_cairo_glue.h
      gui/sdl_glue.h
      gui/sdl_ogl_glue.cpp
      gui/sdl_ogl_glue.h
      gui/sdlsup.h
      libamf/Makefile.am
      libamf/amf.cpp
      libamf/amf.h
      libamf/amftest.cpp
      libamf/amfutf8.h
      libamf/buffer.cpp
      libamf/buffer.h
      libamf/element.cpp
      libamf/element.h
      libamf/flv.cpp
      libamf/flv.h
      libamf/lcshm.cpp
      libamf/lcshm.h
      libamf/protocol.h
      libamf/sol.cpp
      libamf/sol.h
      libbase/BitsReader.cpp
      libbase/BitsReader.h
      libbase/ClockTime.cpp
      libbase/ClockTime.h
      libbase/GC.cpp
      libbase/GC.h
      libbase/GnashException.h
      libbase/GnashImage.cpp
      libbase/GnashImage.h
      libbase/GnashImageGif.cpp
      libbase/GnashImageGif.h
      libbase/GnashImageJpeg.cpp
      libbase/GnashImageJpeg.h
      libbase/GnashImagePng.cpp
      libbase/GnashImagePng.h
      libbase/GnashSleep.h
      libbase/IOChannel.cpp
      libbase/IOChannel.h
      libbase/LoadThread.cpp
      libbase/LoadThread.h
      libbase/Makefile.am
      libbase/NetworkAdapter.h
      libbase/Point2d.h
      libbase/Range2d.h
      libbase/SimpleBuffer.h
      libbase/URL.cpp
      libbase/URL.h
      libbase/WallClockTimer.cpp
      libbase/WallClockTimer.h
      libbase/arg_parser.cpp
      libbase/arg_parser.h
      libbase/curl_adapter.cpp
      libbase/dsodefs.h
      libbase/extension.cpp
      libbase/extension.h
      libbase/getclocktime.hpp
      libbase/gettext.h
      libbase/gmemory.h
      libbase/lirc.h
      libbase/log.cpp
      libbase/log.h
      libbase/memory.cpp
      libbase/noseek_fd_adapter.cpp
      libbase/noseek_fd_adapter.h
      libbase/rc.cpp
      libbase/ref_counted.h
      libbase/sharedlib.cpp
      libbase/sharedlib.h
      libbase/shm.cpp
      libbase/shm.h
      libbase/smart_ptr.h
      libbase/snappingrange.h
      libbase/string_table.cpp
      libbase/string_table.h
      libbase/utf8.cpp
      libbase/utf8.h
      libbase/utility.h
      libcore/BevelFilter.cpp
      libcore/BevelFilter.h
      libcore/Bitmap.cpp
      libcore/Bitmap.h
      libcore/BitmapFilter.h
      libcore/BitmapInfo.h
      libcore/BitmapMovieInstance.cpp
      libcore/BitmapMovieInstance.h
      libcore/BlurFilter.cpp
      libcore/BlurFilter.h
      libcore/Button.h
      libcore/CharacterProxy.cpp
      libcore/CharacterProxy.h
      libcore/ColorMatrixFilter.cpp
      libcore/ColorMatrixFilter.h
      libcore/ConvolutionFilter.cpp
      libcore/ConvolutionFilter.h
      libcore/DisplayList.cpp
      libcore/DisplayList.h
      libcore/DropShadowFilter.cpp
      libcore/DropShadowFilter.h
      libcore/DynamicShape.cpp
      libcore/DynamicShape.h
      libcore/ExportableResource.h
      libcore/FreetypeGlyphsProvider.cpp
      libcore/FreetypeGlyphsProvider.h
      libcore/GlowFilter.cpp
      libcore/GlowFilter.h
      libcore/GnashKey.h
      libcore/GradientBevelFilter.cpp
      libcore/GradientBevelFilter.h
      libcore/GradientGlowFilter.cpp
      libcore/GradientGlowFilter.h
      libcore/LoadVariablesThread.cpp
      libcore/LoadVariablesThread.h
      libcore/Makefile.am
      libcore/ManualClock.h
      libcore/MovieClip.cpp
      libcore/Property.cpp
      libcore/Property.h
      libcore/PropertyList.cpp
      libcore/RunInfo.h
      libcore/SWFMatrix.cpp
      libcore/SWFMatrix.h
      libcore/Sprite.h
      libcore/StreamProvider.cpp
      libcore/StreamProvider.h
      libcore/StringPredicates.h
      libcore/SystemClock.cpp
      libcore/SystemClock.h
      libcore/TextField.cpp
      libcore/TextField.h
      libcore/URLAccessManager.cpp
      libcore/URLAccessManager.h
      libcore/VirtualClock.h
      libcore/asClass.cpp
      libcore/asClass.h
      libcore/as_environment.cpp
      libcore/as_environment.h
      libcore/as_function.cpp
      libcore/as_function.h
      libcore/as_prop_flags.h
      libcore/asobj/Accessibility_as.cpp
      libcore/asobj/Accessibility_as.h
      libcore/asobj/Array_as.h
      libcore/asobj/AsBroadcaster.cpp
      libcore/asobj/Boolean_as.cpp
      libcore/asobj/Boolean_as.h
      libcore/asobj/Camera.cpp
      libcore/asobj/Camera.h
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/ClassHierarchy.h
      libcore/asobj/Color_as.cpp
      libcore/asobj/Color_as.h
      libcore/asobj/ContextMenu.cpp
      libcore/asobj/ContextMenu.h
      libcore/asobj/CustomActions.cpp
      libcore/asobj/CustomActions.h
      libcore/asobj/Error_as.h
      libcore/asobj/Global.h
      libcore/asobj/Key_as.cpp
      libcore/asobj/Key_as.h
      libcore/asobj/LoadableObject.h
      libcore/asobj/LocalConnection_as.h
      libcore/asobj/Makefile.am
      libcore/asobj/Math_as.h
      libcore/asobj/Microphone.cpp
      libcore/asobj/Microphone.h
      libcore/asobj/Mouse_as.h
      libcore/asobj/MovieClipLoader.cpp
      libcore/asobj/MovieClipLoader.h
      libcore/asobj/NetConnection_as.h
      libcore/asobj/NetStream_as.h
      libcore/asobj/Number_as.h
      libcore/asobj/Object.h
      libcore/asobj/PlayHead.cpp
      libcore/asobj/PlayHead.h
      libcore/asobj/Selection_as.cpp
      libcore/asobj/Selection_as.h
      libcore/asobj/Sound_as.cpp
      libcore/asobj/Sound_as.h
      libcore/asobj/Stage_as.cpp
      libcore/asobj/Stage_as.h
      libcore/asobj/String_as.h
      libcore/asobj/System_as.cpp
      libcore/asobj/System_as.h
      libcore/asobj/TextFormat_as.h
      libcore/asobj/TextSnapshot_as.cpp
      libcore/asobj/TextSnapshot_as.h
      libcore/asobj/XMLSocket_as.cpp
      libcore/asobj/XMLSocket_as.h
      libcore/asobj/flash/display/BitmapData_as.cpp
      libcore/asobj/flash/display/BitmapData_as.h
      libcore/asobj/flash/display_pkg.cpp
      libcore/asobj/flash/display_pkg.h
      libcore/asobj/flash/external/ExternalInterface_as.cpp
      libcore/asobj/flash/external/ExternalInterface_as.h
      libcore/asobj/flash/external_pkg.cpp
      libcore/asobj/flash/external_pkg.h
      libcore/asobj/flash/filters/BevelFilter_as.cpp
      libcore/asobj/flash/filters/BevelFilter_as.h
      libcore/asobj/flash/filters/BitmapFilter_as.cpp
      libcore/asobj/flash/filters/BitmapFilter_as.h
      libcore/asobj/flash/filters/BlurFilter_as.cpp
      libcore/asobj/flash/filters/BlurFilter_as.h
      libcore/asobj/flash/filters/ColorMatrixFilter_as.cpp
      libcore/asobj/flash/filters/ColorMatrixFilter_as.h
      libcore/asobj/flash/filters/ConvolutionFilter_as.cpp
      libcore/asobj/flash/filters/ConvolutionFilter_as.h
      libcore/asobj/flash/filters/DisplacementMapFilter_as.cpp
      libcore/asobj/flash/filters/DisplacementMapFilter_as.h
      libcore/asobj/flash/filters/DropShadowFilter_as.cpp
      libcore/asobj/flash/filters/DropShadowFilter_as.h
      libcore/asobj/flash/filters/GlowFilter_as.cpp
      libcore/asobj/flash/filters/GlowFilter_as.h
      libcore/asobj/flash/filters/GradientBevelFilter_as.cpp
      libcore/asobj/flash/filters/GradientBevelFilter_as.h
      libcore/asobj/flash/filters/GradientGlowFilter_as.cpp
      libcore/asobj/flash/filters/GradientGlowFilter_as.h
      libcore/asobj/flash/filters_pkg.cpp
      libcore/asobj/flash/filters_pkg.h
      libcore/asobj/flash/geom/ColorTransform_as.cpp
      libcore/asobj/flash/geom/ColorTransform_as.h
      libcore/asobj/flash/geom/Matrix_as.cpp
      libcore/asobj/flash/geom/Matrix_as.h
      libcore/asobj/flash/geom/Point_as.cpp
      libcore/asobj/flash/geom/Point_as.h
      libcore/asobj/flash/geom/Rectangle_as.cpp
      libcore/asobj/flash/geom/Rectangle_as.h
      libcore/asobj/flash/geom/Transform_as.cpp
      libcore/asobj/flash/geom/Transform_as.h
      libcore/asobj/flash/geom_pkg.cpp
      libcore/asobj/flash/geom_pkg.h
      libcore/asobj/flash/net/FileReferenceList_as.cpp
      libcore/asobj/flash/net/FileReferenceList_as.h
      libcore/asobj/flash/net/FileReference_as.cpp
      libcore/asobj/flash/net/FileReference_as.h
      libcore/asobj/flash/net_pkg.cpp
      libcore/asobj/flash/net_pkg.h
      libcore/asobj/flash/text/TextRenderer_as.cpp
      libcore/asobj/flash/text/TextRenderer_as.h
      libcore/asobj/flash/text_pkg.cpp
      libcore/asobj/flash/text_pkg.h
      libcore/asobj/flash_pkg.cpp
      libcore/asobj/flash_pkg.h
      libcore/asobj/gen-asclass.pl
      libcore/asobj/prophelper.h
      libcore/builtin_function.h
      libcore/character.cpp
      libcore/cxform.h
      libcore/debugger.h
      libcore/drag_state.h
      libcore/event_id.h
      libcore/fontlib.h
      libcore/generic_character.h
      libcore/movie_instance.cpp
      libcore/movie_instance.h
      libcore/movie_root.cpp
      libcore/movie_root.h
      libcore/namedStrings.cpp
      libcore/namedStrings.h
      libcore/parser/BitmapMovieDefinition.cpp
      libcore/parser/BitmapMovieDefinition.h
      libcore/parser/Makefile.am
      libcore/parser/Namespace.h
      libcore/parser/SWFMovieDefinition.h
      libcore/parser/abc_block.cpp
      libcore/parser/abc_block.h
      libcore/parser/filter_factory.cpp
      libcore/parser/filter_factory.h
      libcore/parser/movie_definition.h
      libcore/parser/sound_definition.h
      libcore/parser/sprite_definition.h
      libcore/rect.cpp
      libcore/rect.h
      libcore/shape.h
      libcore/swf.cpp
      libcore/swf/ControlTag.h
      libcore/swf/SoundInfoRecord.cpp
      libcore/swf/SoundInfoRecord.h
      libcore/swf_event.h
      libcore/swf_function.cpp
      libcore/swf_function.h
      libcore/timers.cpp
      libcore/timers.h
      libcore/vm/CallStack.h
      libcore/vm/CodeStream.h
      libcore/vm/ExecutableCode.h
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
      libcore/vm/Makefile.am
      libcore/vm/SafeStack.h
      libcore/vm/VM.cpp
      libcore/vm/action.cpp
      libcore/vm/action.h
      libcore/vm/asName.h
      libcore/vm/fn_call.h
      libcore/vm/with_stack_entry.h
      libmedia/AudioDecoder.h
      libmedia/AudioDecoderNellymoser.h
      libmedia/AudioDecoderSimple.cpp
      libmedia/AudioDecoderSimple.h
      libmedia/AudioDecoderSpeex.cpp
      libmedia/AudioDecoderSpeex.h
      libmedia/AudioResampler.cpp
      libmedia/AudioResampler.h
      libmedia/Makefile.am
      libmedia/MediaParser.cpp
      libmedia/SoundInfo.h
      libmedia/VideoDecoder.h
      libmedia/ffmpeg/AudioDecoderFfmpeg.cpp
      libmedia/ffmpeg/AudioDecoderFfmpeg.h
      libmedia/ffmpeg/AudioResamplerFfmpeg.cpp
      libmedia/ffmpeg/AudioResamplerFfmpeg.h
      libmedia/ffmpeg/MediaHandlerFfmpeg.h
      libmedia/ffmpeg/MediaParserFfmpeg.h
      libmedia/ffmpeg/VideoConverterFfmpeg.cpp
      libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
      libmedia/ffmpeg/VideoDecoderFfmpeg.h
      libmedia/ffmpeg/ffmpegHeaders.h
      libmedia/gst/AudioDecoderGst.cpp
      libmedia/gst/AudioDecoderGst.h
      libmedia/gst/GstUtil.cpp
      libmedia/gst/GstUtil.h
      libmedia/gst/MediaHandlerGst.h
      libmedia/gst/MediaParserGst.cpp
      libmedia/gst/MediaParserGst.h
      libmedia/gst/VideoDecoderGst.cpp
      libmedia/gst/VideoDecoderGst.h
      libmedia/gst/swfdec_codec_gst.c
      libmedia/gst/swfdec_codec_gst.h
      libnet/Makefile.am
      libnet/cache.cpp
      libnet/cache.h
      libnet/cque.cpp
      libnet/cque.h
      libnet/cqueue.cpp
      libnet/cqueue.h
      libnet/diskstream.cpp
      libnet/diskstream.h
      libnet/handler.cpp
      libnet/handler.h
      libnet/http.cpp
      libnet/http.h
      libnet/lirc.cpp
      libnet/lirc.h
      libnet/netstats.cpp
      libnet/netstats.h
      libnet/network.cpp
      libnet/network.h
      libnet/rtmp.cpp
      libnet/rtmp.h
      libnet/rtmp_client.cpp
      libnet/rtmp_client.h
      libnet/rtmp_msg.cpp
      libnet/rtmp_msg.h
      libnet/statistics.cpp
      libnet/statistics.h
      libsound/AuxStream.h
      libsound/EmbedSound.cpp
      libsound/EmbedSound.h
      libsound/EmbedSoundInst.cpp
      libsound/EmbedSoundInst.h
      libsound/InputStream.h
      libsound/Makefile.am
      libsound/NullSoundHandler.h
      libsound/SoundEnvelope.h
      libsound/sdl/sound_handler_sdl.cpp
      libsound/sdl/sound_handler_sdl.h
      libsound/sound_handler.cpp
      libsound/sound_handler.h
      macros/agg.m4
      macros/alp.m4
      macros/archflag.m4
      macros/boost.m4
      macros/codeset.m4
      macros/curl.m4
      macros/dbus.m4
      macros/docbook.m4
      macros/ffmpeg.m4
      macros/firefox.m4
      macros/freetype.m4
      macros/gettext.m4
      macros/glib.m4
      macros/glibc2.m4
      macros/glibc21.m4
      macros/gnashpkgtool.m4
      macros/gtk2.m4
      macros/gtkglext.m4
      macros/haxe.m4
      macros/hildon.m4
      macros/iconv.m4
      macros/intdiv0.m4
      macros/intmax.m4
      macros/inttypes-pri.m4
      macros/inttypes.m4
      macros/inttypes_h.m4
      macros/isc-posix.m4
      macros/kde3.m4
      macros/kde4.m4
      macros/lcmessage.m4
      macros/lib-link.m4
      macros/lib-prefix.m4
      macros/libexe.m4
      macros/libltdl.m4
      macros/lirc.m4
      macros/longdouble.m4
      macros/longlong.m4
      macros/ming.m4
      macros/mtasc.m4
      macros/mysql.m4
      macros/nls.m4
      macros/nspr.m4
      macros/opengl.m4
      macros/pango.m4
      macros/po.m4
      macros/printf-posix.m4
      macros/progtest.m4
      macros/pthreads.m4
      macros/qt3.m4
      macros/qt4.m4
      macros/qtopia.m4
      macros/sdl.m4
      macros/signed.m4
      macros/size_max.m4
      macros/stdint_h.m4
      macros/uintmax_t.m4
      macros/ulonglong.m4
      macros/wchar_t.m4
      macros/wint_t.m4
      macros/x11.m4
      macros/xpcom.m4
      macros/xsize.m4
      missing
      packaging/Makefile.am
      packaging/alp.am
      packaging/bsd.am
      packaging/deb.am
      packaging/debian/Makefile.am
      packaging/debian/copyright
      packaging/doc/Makefile.am
      packaging/install-gnash.sh
      packaging/ipkg.am
      packaging/ipkg/Makefile.am
      packaging/redhat/Makefile.am
      packaging/rpm.am
      packaging/snapshot.am
      packaging/xpi.am
      plugin/Makefile.am
      plugin/klash/Makefile.am
      plugin/klash/klash_part.cpp
      plugin/klash/klash_part.h
      plugin/klash4/Makefile.am
      plugin/klash4/klash_part.cpp
      plugin/klash4/klash_part.h
      plugin/mozilla-sdk/Makefile.am
      plugin/mozilla-sdk/include/jni.h
      plugin/mozilla-sdk/include/jni_md.h
      plugin/mozilla-sdk/include/jri.h
      plugin/mozilla-sdk/include/jri_md.h
      plugin/mozilla-sdk/include/jritypes.h
      plugin/mozilla-sdk/include/npapi.h
      plugin/mozilla-sdk/include/nptypes.h
      plugin/mozilla-sdk/include/npupp.h
      plugin/mozilla-sdk/include/prcpucfg-glibc.h
      plugin/mozilla-sdk/include/prcpucfg-win32.h
      plugin/mozilla-sdk/include/prcpucfg.h
      plugin/mozilla-sdk/include/prcvar.h
      plugin/mozilla-sdk/include/prerr.h
      plugin/mozilla-sdk/include/prerror.h
      plugin/mozilla-sdk/include/prinit.h
      plugin/mozilla-sdk/include/prinrval.h
      plugin/mozilla-sdk/include/prlock.h
      plugin/mozilla-sdk/include/prthread.h
      plugin/mozilla-sdk/include/prtypes.h
      plugin/mozilla-sdk/include/prwin16.h
      plugin/plugin.cpp
      plugin/plugin.h
      plugin/win32/Makefile.am
      plugin/win32/npgnash.c
      plugin/win32/plugin.cpp
      plugin/win32/plugin.h
      plugin/xpcom/GnashComponent.cpp
      plugin/xpcom/GnashComponent.h
      plugin/xpcom/GnashComponentModule.cpp
      plugin/xpcom/Makefile.am
      plugin/xpcom/iGnashComponent.idl
      po/Makefile.am
      po/cs.po
      po/de.po
      pythonmodule/Makefile.am
      pythonmodule/gnashPythonExample.py
      pythonmodule/gnashpython.cpp
      pythonmodule/gnashpython.h
      pythonmodule/pyGnash.cpp
      testsuite/DummyCharacter.h
      testsuite/DummyMovieDefinition.h
      testsuite/FuzzyPixel.cpp
      testsuite/FuzzyPixel.h
      testsuite/Makefile.am
      testsuite/MovieTester.cpp
      testsuite/MovieTester.h
      testsuite/actionscript.all/Accessibility.as
      testsuite/actionscript.all/AsBroadcaster.as
      testsuite/actionscript.all/BitmapData.as
      testsuite/actionscript.all/Boolean.as
      testsuite/actionscript.all/Camera.as
      testsuite/actionscript.all/Color.as
      testsuite/actionscript.all/ColorTransform.as
      testsuite/actionscript.all/ContextMenu.as
      testsuite/actionscript.all/CustomActions.as
      testsuite/actionscript.all/Date.as
      testsuite/actionscript.all/Error.as
      testsuite/actionscript.all/ExternalInterface.as
      testsuite/actionscript.all/Function.as
      testsuite/actionscript.all/Inheritance.as
      testsuite/actionscript.all/Instance.as
      testsuite/actionscript.all/Key.as
      testsuite/actionscript.all/LoadVars.as
      testsuite/actionscript.all/LocalConnection.as
      testsuite/actionscript.all/Makefile.am
      testsuite/actionscript.all/Math.as
      testsuite/actionscript.all/Matrix.as
      testsuite/actionscript.all/Microphone.as
      testsuite/actionscript.all/Mouse.as
      testsuite/actionscript.all/MovieClip.as
      testsuite/actionscript.all/MovieClipLoader.as
      testsuite/actionscript.all/NetConnection.as
      testsuite/actionscript.all/NetStream.as
      testsuite/actionscript.all/Number.as
      testsuite/actionscript.all/Object.as
      testsuite/actionscript.all/Point.as
      testsuite/actionscript.all/Random.as
      testsuite/actionscript.all/Rectangle.as
      testsuite/actionscript.all/Selection.as
      testsuite/actionscript.all/SharedObject.as
      testsuite/actionscript.all/Sound.as
      testsuite/actionscript.all/Stage.as
      testsuite/actionscript.all/System.as
      testsuite/actionscript.all/TextField.as
      testsuite/actionscript.all/TextFormat.as
      testsuite/actionscript.all/TextSnapshot.as
      testsuite/actionscript.all/Transform.as
      testsuite/actionscript.all/Try.as
      testsuite/actionscript.all/Video.as
      testsuite/actionscript.all/XML.as
      testsuite/actionscript.all/XMLNode.as
      testsuite/actionscript.all/XMLSocket.as
      testsuite/actionscript.all/array.as
      testsuite/actionscript.all/case.as
      testsuite/actionscript.all/check.as
      testsuite/actionscript.all/dejagnu.as
      testsuite/actionscript.all/enumerate.as
      testsuite/actionscript.all/gen-test.sh
      testsuite/actionscript.all/getvariable.as
      testsuite/actionscript.all/ops.as
      testsuite/actionscript.all/rtmp.as
      testsuite/actionscript.all/rtrace.as
      testsuite/actionscript.all/setProperty.as
      testsuite/actionscript.all/swap.as
      testsuite/actionscript.all/targetPath.as
      testsuite/actionscript.all/toString_valueOf.as
      testsuite/actionscript.all/utils.as
      testsuite/actionscript.all/with.as
      testsuite/actionscript.all/xtrace.as
      testsuite/generic-testrunner.sh
      testsuite/libamf.all/Makefile.am
      testsuite/libamf.all/test_amf.cpp
      testsuite/libamf.all/test_buffer.cpp
      testsuite/libamf.all/test_el.cpp
      testsuite/libamf.all/test_flv.cpp
      testsuite/libamf.all/test_lc.cpp
      testsuite/libamf.all/test_number.cpp
      testsuite/libamf.all/test_object.cpp
      testsuite/libamf.all/test_sol.cpp
      testsuite/libamf.all/test_string.cpp
      testsuite/libamf.all/test_variable.cpp
      testsuite/libbase/CurlStreamTest.cpp
      testsuite/libbase/IntTypesTest.cpp
      testsuite/libbase/Makefile.am
      testsuite/libbase/NoSeekFileTest.cpp
      testsuite/libbase/Point2dTest.cpp
      testsuite/libbase/Range2dTest.cpp
      testsuite/libbase/TCXXRc.cpp
      testsuite/libbase/URLTest.cpp
      testsuite/libbase/memtest.cpp
      testsuite/libbase/snappingrangetest.cpp
      testsuite/libbase/string_tableTest.cpp
      testsuite/libcore.all/AsValueTest.cpp
      testsuite/libcore.all/BitsReaderTest.cpp
      testsuite/libcore.all/ClassSizes.cpp
      testsuite/libcore.all/DisplayListTest.cpp
      testsuite/libcore.all/EdgeTest.cpp
      testsuite/libcore.all/MatrixTest.cpp
      testsuite/libcore.all/PropertyListTest.cpp
      testsuite/libcore.all/SafeStackTest.cpp
      testsuite/libcore.all/StreamTest.cpp
      testsuite/libcore.all/as_prop_flagsTest.cpp
      testsuite/libnet.all/Makefile.am
      testsuite/libnet.all/generate_amfbins.cpp
      testsuite/libnet.all/test_cache.cpp
      testsuite/libnet.all/test_cque.cpp
      testsuite/libnet.all/test_crc.cpp
      testsuite/libnet.all/test_diskstream.cpp
      testsuite/libnet.all/test_handler.cpp
      testsuite/libnet.all/test_http.cpp
      testsuite/libnet.all/test_rtmp.cpp
      testsuite/media/Makefile.am
      testsuite/misc-haxe.all/Dejagnu.hx
      testsuite/misc-haxe.all/Makefile.am
      testsuite/misc-haxe.all/check.as
      testsuite/misc-ming.all/BitmapDataTest.c
      testsuite/misc-ming.all/ButtonEventsTest-Runner.cpp
      testsuite/misc-ming.all/ButtonEventsTest.c
      testsuite/misc-ming.all/DefineEditTextTest-Runner.cpp
      testsuite/misc-ming.all/DefineEditTextTest.c
      testsuite/misc-ming.all/DefineEditTextVariableNameTest-Runner.cpp
      testsuite/misc-ming.all/DefineEditTextVariableNameTest.c
      testsuite/misc-ming.all/DefineEditTextVariableNameTest2.c
      testsuite/misc-ming.all/DefineTextTest-Runner.cpp
      testsuite/misc-ming.all/DefineTextTest.c
      testsuite/misc-ming.all/Dejagnu.c
      testsuite/misc-ming.all/DepthLimitsTest.c
      testsuite/misc-ming.all/DragDropTestRunner.cpp
      testsuite/misc-ming.all/EmbeddedSoundTest-Runner.cpp
      testsuite/misc-ming.all/EmbeddedSoundTest.c
      testsuite/misc-ming.all/FlashVarsTest.as
      testsuite/misc-ming.all/KeyIsDownTest.c
      testsuite/misc-ming.all/LoadVarsTest.c
      testsuite/misc-ming.all/Makefile.am
      testsuite/misc-ming.all/NetStream-SquareTestRunner.cpp
      testsuite/misc-ming.all/PlaceObject2Test.c
      testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp
      testsuite/misc-ming.all/RemoveObject2Test.c
      testsuite/misc-ming.all/RollOverOutTest-Runner.cpp
      testsuite/misc-ming.all/RollOverOutTest.c
      testsuite/misc-ming.all/SpriteButtonEventsTest-Runner.cpp
      testsuite/misc-ming.all/SpriteButtonEventsTest.c
      testsuite/misc-ming.all/Video-EmbedSquareTest.c
      testsuite/misc-ming.all/Video-EmbedSquareTestRunner.cpp
      testsuite/misc-ming.all/XMLSocketTest.c
      testsuite/misc-ming.all/action_execution_order_extend_test.c
      testsuite/misc-ming.all/action_execution_order_test.c
      testsuite/misc-ming.all/action_execution_order_test1.c
      testsuite/misc-ming.all/action_execution_order_test11.c
      testsuite/misc-ming.all/action_execution_order_test2.c
      testsuite/misc-ming.all/action_execution_order_test3.c
      testsuite/misc-ming.all/action_execution_order_test4.c
      testsuite/misc-ming.all/action_execution_order_test5.c
      testsuite/misc-ming.all/action_execution_order_test6.c
      testsuite/misc-ming.all/action_execution_order_test7.c
      testsuite/misc-ming.all/action_execution_order_test8.c
      testsuite/misc-ming.all/action_execution_order_test9.c
      testsuite/misc-ming.all/attachMovieLoopingTest.c
      testsuite/misc-ming.all/attachMovieLoopingTestRunner.cpp
      testsuite/misc-ming.all/attachMovieTest.c
      testsuite/misc-ming.all/attachMovieTestRunner.cpp
      testsuite/misc-ming.all/callFunction_test.c
      testsuite/misc-ming.all/consecutive_goto_frame_test.c
      testsuite/misc-ming.all/definebitsjpeg2.c
      testsuite/misc-ming.all/displaylist_depths_test.c
      testsuite/misc-ming.all/displaylist_depths_test10.c
      testsuite/misc-ming.all/displaylist_depths_test11.c
      testsuite/misc-ming.all/displaylist_depths_test2.c
      testsuite/misc-ming.all/displaylist_depths_test3.c
      testsuite/misc-ming.all/displaylist_depths_test4.c
      testsuite/misc-ming.all/displaylist_depths_test5.c
      testsuite/misc-ming.all/displaylist_depths_test6.c
      testsuite/misc-ming.all/displaylist_depths_test7.c
      testsuite/misc-ming.all/displaylist_depths_test8.c
      testsuite/misc-ming.all/displaylist_depths_test9.c
      testsuite/misc-ming.all/duplicate_movie_clip_test.c
      testsuite/misc-ming.all/duplicate_movie_clip_test2.c
      testsuite/misc-ming.all/easysound.as
      testsuite/misc-ming.all/eventSoundTest1-Runner.cpp
      testsuite/misc-ming.all/eventSoundTest1.c
      testsuite/misc-ming.all/event_handler_scope_test.c
      testsuite/misc-ming.all/frame_label_test.c
      testsuite/misc-ming.all/getTimer_test.c
      testsuite/misc-ming.all/get_frame_number_test.c
      testsuite/misc-ming.all/goto_frame_test.c
      testsuite/misc-ming.all/init_action_test.c
      testsuite/misc-ming.all/instanceNameTest.c
      testsuite/misc-ming.all/intervalTest.as
      testsuite/misc-ming.all/intervalTestRunner.cpp
      testsuite/misc-ming.all/key_event_test.c
      testsuite/misc-ming.all/key_event_testrunner.cpp
      testsuite/misc-ming.all/loadImageTest.c
      testsuite/misc-ming.all/loadMovieTest.c
      testsuite/misc-ming.all/loadMovieTestRunner.cpp
      testsuite/misc-ming.all/loop_test-Runner.cpp
      testsuite/misc-ming.all/loop_test.c
      testsuite/misc-ming.all/loop_test10.c
      testsuite/misc-ming.all/loop_test2.c
      testsuite/misc-ming.all/loop_test2runner.cpp
      testsuite/misc-ming.all/loop_test3.c
      testsuite/misc-ming.all/loop_test4.c
      testsuite/misc-ming.all/loop_test5.c
      testsuite/misc-ming.all/loop_test6.c
      testsuite/misc-ming.all/loop_test7.c
      testsuite/misc-ming.all/loop_test8.c
      testsuite/misc-ming.all/loop_test9.c
      testsuite/misc-ming.all/masks_test.c
      testsuite/misc-ming.all/masks_test2.c
      testsuite/misc-ming.all/masks_test2runner.cpp
      testsuite/misc-ming.all/masks_testrunner.cpp
      testsuite/misc-ming.all/matrix_test.c
      testsuite/misc-ming.all/ming_utils.c
      testsuite/misc-ming.all/ming_utils.h
      testsuite/misc-ming.all/morph_test1.c
      testsuite/misc-ming.all/morph_test1runner.cpp
      testsuite/misc-ming.all/move_object_test.c
      testsuite/misc-ming.all/moviecliploader_test.c
      testsuite/misc-ming.all/multi_doactions_and_goto_frame_test.c
      testsuite/misc-ming.all/new_child_in_unload_test.c
      testsuite/misc-ming.all/opcode_guard_test.c
      testsuite/misc-ming.all/path_format_test.c
      testsuite/misc-ming.all/place_and_remove_object_insane_test.c
      testsuite/misc-ming.all/place_and_remove_object_test.c
      testsuite/misc-ming.all/place_object_test.c
      testsuite/misc-ming.all/place_object_test2.c
      testsuite/misc-ming.all/registerClassTest.c
      testsuite/misc-ming.all/registerClassTest2.c
      testsuite/misc-ming.all/registerClassTestRunner.cpp
      testsuite/misc-ming.all/replace_buttons1test.c
      testsuite/misc-ming.all/replace_buttons1test_runner.cpp
      testsuite/misc-ming.all/replace_shapes1test.c
      testsuite/misc-ming.all/replace_shapes1test_runner.cpp
      testsuite/misc-ming.all/replace_sprites1test.c
      testsuite/misc-ming.all/replace_sprites1test_runner.cpp
      testsuite/misc-ming.all/reverse_execute_PlaceObject2_test1.c
      testsuite/misc-ming.all/reverse_execute_PlaceObject2_test2.c
      testsuite/misc-ming.all/root_stop_test.c
      testsuite/misc-ming.all/root_stop_testrunner.cpp
      testsuite/misc-ming.all/runtime_vm_stack_test.c
      testsuite/misc-ming.all/shape_test.c
      testsuite/misc-ming.all/simple_loop_test.c
      testsuite/misc-ming.all/simple_loop_testrunner.cpp
      testsuite/misc-ming.all/spritehier.c
      testsuite/misc-ming.all/static_vs_dynamic1.c
      testsuite/misc-ming.all/static_vs_dynamic2.c
      testsuite/misc-ming.all/streamingSoundTest1-Runner.cpp
      testsuite/misc-ming.all/streamingSoundTest1.c
      testsuite/misc-ming.all/timeline_var_test.c
      testsuite/misc-ming.all/unload_movieclip_test1.c
      testsuite/misc-ming.all/widgets.as
      testsuite/misc-mtasc.all/Base1.as
      testsuite/misc-mtasc.all/Dejagnu.as
      testsuite/misc-mtasc.all/Derived1.as
      testsuite/misc-mtasc.all/Makefile.am
      testsuite/misc-mtasc.all/TextFieldTest.as
      testsuite/misc-mtasc.all/check.as
      testsuite/misc-mtasc.all/exception.as
      testsuite/misc-mtasc.all/implementsOp/BExtendingImplementation.as
      testsuite/misc-mtasc.all/implementsOp/ImplementationA.as
      testsuite/misc-mtasc.all/implementsOp/ImplementationB.as
      testsuite/misc-mtasc.all/implementsOp/SimpleInterface.as
      testsuite/misc-mtasc.all/implementsOpTest.as
      testsuite/misc-mtasc.all/level5.as
      testsuite/misc-mtasc.all/level87.as
      testsuite/misc-mtasc.all/level99.as
      testsuite/misc-mtasc.all/levels.as
      testsuite/misc-mtasc.all/super_test1.as
      testsuite/misc-swfc.all/Dejagnu.sc
      testsuite/misc-swfc.all/Makefile.am
      testsuite/misc-swfc.all/action_execution_order_test10.sc
      testsuite/misc-swfc.all/action_execution_order_test12.sc
      testsuite/misc-swfc.all/button_test1.sc
      testsuite/misc-swfc.all/button_test1runner.cpp
      testsuite/misc-swfc.all/button_test2.sc
      testsuite/misc-swfc.all/check.sc
      testsuite/misc-swfc.all/edittext_test1.sc
      testsuite/misc-swfc.all/matrix_accuracy_test1.sc
      testsuite/misc-swfc.all/mouse_drag_test.sc
      testsuite/misc-swfc.all/movieclip_destruction_test1.sc
      testsuite/misc-swfc.all/movieclip_destruction_test2.sc
      testsuite/misc-swfc.all/movieclip_destruction_test3.sc
      testsuite/misc-swfc.all/movieclip_destruction_test4.sc
      testsuite/misc-swfc.all/opcode_guard_test2.sc
      testsuite/misc-swfc.all/opcode_guard_test3.sc
      testsuite/misc-swfc.all/registerclass_test3.sc
      testsuite/misc-swfc.all/soft_reference_test1.sc
      testsuite/misc-swfc.all/stackscope.sc
      testsuite/misc-swfc.all/swf4opcode.sc
      testsuite/misc-swfmill.all/Makefile.am
      testsuite/misc-swfmill.all/backgroundTestRunner.cpp
      testsuite/movies.all/Makefile.am
      testsuite/movies.all/gravity_embedded-TestRunner.cpp
      testsuite/samples/Makefile.am
      testsuite/samples/clip_as_button2-TestRunner.cpp
      testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp
      testsuite/samples/subshapes-TestRunner.cpp
      testsuite/swfdec/Makefile.am
      testsuite/swfdec/PASSING
      testsuite/swfdec/gen_run_swfdec_testsuite.sh
      utilities/dumpshm.cpp
      utilities/flvdumper.cpp
      utilities/processor.cpp
      utilities/rtmpget.cpp
      utilities/soldumper.cpp
    ------------------------------------------------------------
    revno: 9439.2.257
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2
    timestamp: Mon 2009-03-09 07:50:41 +0100
    message:
      Merge from trunk.
    added:
      testsuite/misc-ming.all/TextSnapshotTest.c
    modified:
      configure.ac
      cygnal/Makefile.am
      cygnal/acinclude.m4
      gui/Kde4Gui.cpp
      libbase/NamingPolicy.h
      libcore/Font.cpp
      libcore/Font.h
      libcore/MovieClip.cpp
      libcore/asobj/Error_as.cpp
      libcore/asobj/TextSnapshot_as.cpp
      libcore/asobj/TextSnapshot_as.h
      libcore/character.h
      libcore/debugger.cpp
      libcore/generic_character.cpp
      libcore/generic_character.h
      libcore/parser/action_buffer.cpp
      libcore/parser/character_def.h
      libcore/swf/DefineEditTextTag.h
      libcore/swf/DefineTextTag.cpp
      libcore/swf/DefineTextTag.h
      libcore/vm/ASHandlers.cpp
      libcore/vm/ASHandlers.h
      libcore/vm/fn_call.h
      libnet/http.cpp
      libnet/http.h
      libnet/network.cpp
      libnet/network.h
      macros/qt4.m4
      po/cs.po
      testsuite/actionscript.all/TextSnapshot.as
      testsuite/misc-ming.all/Makefile.am
      testsuite/simple.exp
    ------------------------------------------------------------
    revno: 9439.2.258
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2
    timestamp: Mon 2009-03-09 07:56:19 +0100
    message:
      Fix testsuite run outside source tree.
    modified:
      testsuite/actionscript.all/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.259
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2
    timestamp: Tue 2009-03-24 11:56:52 +0100
    message:
      Merge from trunk.
    removed:
      libcore/generic_character.cpp
      libcore/generic_character.h
      libcore/shape.h
    added:
      libbase/GnashAlgorithm.h
      libbase/GnashNumeric.h
      libcore/DisplayObject.cpp
      libcore/DisplayObject.h
      libcore/Geometry.h
      libcore/Shape.cpp
      libcore/Shape.h
      libcore/StaticText.cpp
      libcore/StaticText.h
      testsuite/as3/
      testsuite/as3/Makefile.am
      testsuite/as3/basic.as
      testsuite/as3/check.as
      testsuite/as3/dejagnu.as
      testsuite/media/vstroke.png
      testsuite/misc-ming.all/BitmapSmoothingTest.c
    renamed:
      libcore/timers.cpp => libcore/Timers.cpp
      libcore/timers.h => libcore/Timers.h
    modified:
      README
      backend/PathParser.h
      backend/render_handler.h
      backend/render_handler_agg.cpp
      backend/render_handler_cairo.cpp
      backend/render_handler_ogl.cpp
      configure.ac
      cygnal/Makefile.am
      cygnal/crc.cpp
      cygnal/cygnal.cpp
      doc/C/gnashref.xml
      doc/C/gnashuser.xml
      doc/C/preformatted/gnash.1.in
      doc/C/preformatted/gnash_ref.info.in
      doc/C/preformatted/gnash_user.info.in
      doc/C/preformatted/gnashref.html.in
      doc/C/preformatted/gnashuser.html.in
      doc/C/usermanual/gnashrc.xml
      gui/Kde4Gui.cpp
      gui/gnash.cpp
      gui/gtk.cpp
      gui/gtk_glue_agg_xv.cpp
      gui/gui.cpp
      gui/kde.cpp
      libamf/amf_msg.cpp
      libbase/GnashException.h
      libbase/GnashImage.h
      libbase/GnashImageJpeg.cpp
      libbase/LoadThread.cpp
      libbase/LoadThread.h
      libbase/Makefile.am
      libbase/NamingPolicy.h
      libbase/URL.cpp
      libbase/gnashrc.in
      libbase/jemalloc.c
      libbase/utility.h
      libcore/BitmapMovieInstance.cpp
      libcore/Button.cpp
      libcore/DisplayList.cpp
      libcore/DisplayList.h
      libcore/DynamicShape.cpp
      libcore/Font.cpp
      libcore/Font.h
      libcore/Makefile.am
      libcore/MovieClip.cpp
      libcore/MovieClip.h
      libcore/RGBA.cpp
      libcore/RGBA.h
      libcore/SWFMatrix.cpp
      libcore/TextField.cpp
      libcore/as_object.h
      libcore/as_value.cpp
      libcore/asobj/Array_as.cpp
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Date_as.cpp
      libcore/asobj/Global.cpp
      libcore/asobj/LoadVars_as.cpp
      libcore/asobj/LoadableObject.cpp
      libcore/asobj/LoadableObject.h
      libcore/asobj/Math_as.cpp
      libcore/asobj/NetConnection_as.cpp
      libcore/asobj/NetConnection_as.h
      libcore/asobj/NetStream_as.cpp
      libcore/asobj/NetStream_as.h
      libcore/asobj/Sound_as.cpp
      libcore/asobj/Sound_as.h
      libcore/asobj/String_as.cpp
      libcore/asobj/TextFormat_as.cpp
      libcore/asobj/TextSnapshot_as.cpp
      libcore/asobj/TextSnapshot_as.h
      libcore/asobj/XMLSocket_as.cpp
      libcore/asobj/XML_as.cpp
      libcore/asobj/flash/geom/Point_as.cpp
      libcore/asobj/flash/geom/Rectangle_as.cpp
      libcore/asobj/flash/geom/Transform_as.cpp
      libcore/character.cpp
      libcore/character.h
      libcore/cxform.cpp
      libcore/debugger.cpp
      libcore/fill_style.cpp
      libcore/fill_style.h
      libcore/movie_root.cpp
      libcore/movie_root.h
      libcore/parser/BitmapMovieDefinition.cpp
      libcore/parser/BitmapMovieDefinition.h
      libcore/parser/SWFMovieDefinition.cpp
      libcore/parser/SWFMovieDefinition.h
      libcore/parser/character_def.cpp
      libcore/parser/character_def.h
      libcore/parser/morph2_character_def.cpp
      libcore/parser/morph2_character_def.h
      libcore/parser/shape_character_def.cpp
      libcore/parser/shape_character_def.h
      libcore/parser/sprite_definition.cpp
      libcore/parser/sprite_definition.h
      libcore/rect.cpp
      libcore/styles.cpp
      libcore/swf.h
      libcore/swf/DefineButtonTag.cpp
      libcore/swf/DefineButtonTag.h
      libcore/swf/DefineEditTextTag.cpp
      libcore/swf/DefineEditTextTag.h
      libcore/swf/DefineFontAlignZonesTag.cpp
      libcore/swf/DefineFontTag.cpp
      libcore/swf/DefineTextTag.cpp
      libcore/swf/DefineTextTag.h
      libcore/swf/DefineVideoStreamTag.cpp
      libcore/swf/DefineVideoStreamTag.h
      libcore/swf/PlaceObject2Tag.cpp
      libcore/swf/SetBackgroundColorTag.h
      libcore/swf/TextRecord.cpp
      libcore/swf/TextRecord.h
      libcore/swf/tag_loaders.cpp
      libcore/vm/ASHandlers.cpp
      libcore/vm/Machine.cpp
      libmedia/AudioDecoderSimple.cpp
      libmedia/FLVParser.cpp
      libmedia/FLVParser.h
      libmedia/MediaParser.h
      libmedia/ffmpeg/MediaParserFfmpeg.cpp
      libmedia/ffmpeg/VideoConverterFfmpeg.cpp
      libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
      libmedia/gst/swfdec_codec_gst.c
      libnet/Makefile.am
      plugin/klash4/klash_part.moc.in
      plugin/plugin.cpp
      testsuite/DummyMovieDefinition.h
      testsuite/Makefile.am
      testsuite/actionscript.all/SharedObject.as
      testsuite/actionscript.all/TextSnapshot.as
      testsuite/libbase/TCXXRc.cpp
      testsuite/libbase/URLTest.cpp
      testsuite/libbase/gnashrc.in
      testsuite/libcore.all/AsValueTest.cpp
      testsuite/libcore.all/ClassSizes.cpp
      testsuite/libcore.all/EdgeTest.cpp
      testsuite/libcore.all/Makefile.am
      testsuite/libnet.all/test_http.cpp
      testsuite/misc-ming.all/LoadVarsTest.c
      testsuite/misc-ming.all/Makefile.am
      testsuite/misc-ming.all/TextSnapshotTest.c
      testsuite/misc-swfc.all/button_test1runner.cpp
      libcore/Timers.cpp
      libcore/Timers.h
    ------------------------------------------------------------
    revno: 9439.2.260
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2
    timestamp: Wed 2009-03-25 13:01:00 +0100
    message:
      Introduce AVM2 to Gnash coding style. Start some attempt at proper
      encapsulation and replace some of the debugging output hacks.
    modified:
      libbase/log.cpp
      libbase/log.h
      libcore/abc_function.cpp
      libcore/abc_function.h
      libcore/asClass.cpp
      libcore/asClass.h
      libcore/parser/abc_block.cpp
      libcore/parser/abc_block.h
      libcore/swf/DoABCTag.h
      libcore/vm/Machine.cpp
      libcore/vm/asName.h
        ------------------------------------------------------------
        revno: 9439.7.1
        committer: Benjamin Wolsey <address@hidden>
        branch nick: avm2-work
        timestamp: Tue 2009-03-24 12:07:39 +0100
        message:
          Add log_abc for ABC block parsing, replacing macro.
        modified:
          libbase/log.cpp
          libbase/log.h
          libcore/parser/abc_block.cpp
          libcore/parser/abc_block.h
        ------------------------------------------------------------
        revno: 9439.7.2
        committer: Benjamin Wolsey <address@hidden>
        branch nick: avm2-work
        timestamp: Tue 2009-03-24 12:13:33 +0100
        message:
          Replace ERR with log_error. Drop c_str().
        modified:
          libcore/parser/abc_block.cpp
        ------------------------------------------------------------
        revno: 9439.7.3
        committer: Benjamin Wolsey <address@hidden>
        branch nick: avm2-work
        timestamp: Tue 2009-03-24 12:23:07 +0100
        message:
          Clean up more.
        modified:
          libcore/parser/abc_block.cpp
        ------------------------------------------------------------
        revno: 9439.7.4
        committer: Benjamin Wolsey <address@hidden>
        branch nick: avm2-work
        timestamp: Wed 2009-03-25 12:02:48 +0100
        message:
          Introduce a bit of encapasulation.
        modified:
          libcore/abc_function.cpp
          libcore/asClass.cpp
          libcore/asClass.h
          libcore/parser/abc_block.cpp
          libcore/parser/abc_block.h
          libcore/swf/DoABCTag.h
          libcore/vm/Machine.cpp
          libcore/vm/asName.h
        ------------------------------------------------------------
        revno: 9439.7.5
        committer: Benjamin Wolsey <address@hidden>
        branch nick: avm2-work
        timestamp: Wed 2009-03-25 12:23:39 +0100
        message:
          Initialize _body correctly and only log_abc at debug level 2 or above.
        modified:
          libbase/log.cpp
          libcore/abc_function.h
          libcore/asClass.cpp
    ------------------------------------------------------------
    revno: 9439.2.261
    committer: Sandro Santilli <address@hidden>
    branch nick: avm2
    timestamp: Tue 2009-03-31 11:06:17 +0200
    message:
      Log aserror and donothing when class to be instantiated isn't found 
(yeah, I know it'a s gnash bug not finding that, but I think you can reproduce 
this with a malformed SWF too)
    modified:
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.262
    committer: Sandro Santilli <address@hidden>
    branch nick: avm2
    timestamp: Tue 2009-03-31 11:45:01 +0200
    message:
      Merge from trunk
    modified:
      configure.ac
      gui/Player.cpp
      gui/gtk.cpp
      gui/gui.cpp
      gui/gui.h
      libamf/amf_msg.cpp
      libbase/curl_adapter.cpp
      libcore/VirtualClock.h
      libcore/asobj/LoadableObject.cpp
      libcore/asobj/MovieClipLoader.cpp
      libcore/asobj/NetStream_as.cpp
      libcore/asobj/TextSnapshot_as.cpp
      libcore/fill_style.cpp
      libcore/parser/SWFMovieDefinition.cpp
      libcore/swf.h
      libcore/vm/VM.h
      libnet/network.cpp
      macros/gnashpkgtool.m4
      macros/pthreads.m4
      testsuite/as3/Makefile.am
      testsuite/as3/basic.as
    ------------------------------------------------------------
    revno: 9439.2.263
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2
    timestamp: Wed 2009-04-01 17:25:07 +0200
    message:
      Merge from trunk. Use log level of 3 for log_abc. Fix an AVM2 crash and
      log error.
    modified:
      gui/gnash.cpp
      libbase/log.cpp
      libbase/log.h
      libcore/MovieClip.cpp
      libcore/Timers.cpp
      libcore/Timers.h
      libcore/as_environment.h
      libcore/as_function.cpp
      libcore/as_function.h
      libcore/as_object.cpp
      libcore/as_value.cpp
      libcore/asobj/Array_as.cpp
      libcore/asobj/Array_as.h
      libcore/asobj/NetStream_as.cpp
      libcore/asobj/NetStream_as.h
      libcore/asobj/TextSnapshot_as.cpp
      libcore/asobj/XMLNode_as.cpp
      libcore/asobj/XMLNode_as.h
      libcore/asobj/flash/display/BitmapData_as.cpp
      libcore/asobj/flash/geom/Rectangle_as.cpp
      libcore/parser/abc_block.cpp
      libcore/swf_function.cpp
      libcore/vm/ASHandlers.cpp
      libcore/vm/Machine.cpp
      libcore/vm/action.cpp
      libcore/vm/action.h
      libcore/vm/fn_call.h
      macros/pthreads.m4
      utilities/processor.cpp
        ------------------------------------------------------------
        revno: 9439.8.1
        committer: Benjamin Wolsey <address@hidden>
        branch nick: avm2-work
        timestamp: Wed 2009-04-01 10:07:28 +0200
        message:
          Log error when top of stack is not an object as expected.
        modified:
          libcore/vm/Machine.cpp
        ------------------------------------------------------------
        revno: 9439.8.2
        committer: Benjamin Wolsey <address@hidden>
        branch nick: avm2-work
        timestamp: Wed 2009-04-01 10:08:07 +0200
        message:
          Indentation.
        modified:
          libcore/parser/abc_block.cpp
        ------------------------------------------------------------
        revno: 9439.8.3
        committer: Benjamin Wolsey <address@hidden>
        branch nick: avm2-work
        timestamp: Wed 2009-04-01 10:52:19 +0200
        message:
          Add a new log level for abc logging (-vvv necessary). Don't enforce 
buffer
          flushing with endl when logging.
        modified:
          libbase/log.cpp
          libbase/log.h
        ------------------------------------------------------------
        revno: 9439.8.4
        committer: Benjamin Wolsey <address@hidden>
        branch nick: avm2-work
        timestamp: Wed 2009-04-01 16:22:00 +0200
        message:
          Merge from trunk.
        modified:
          gui/gnash.cpp
          libbase/log.cpp
          libbase/log.h
          libcore/MovieClip.cpp
          libcore/Timers.cpp
          libcore/Timers.h
          libcore/as_environment.h
          libcore/as_function.cpp
          libcore/as_function.h
          libcore/as_object.cpp
          libcore/as_value.cpp
          libcore/asobj/Array_as.cpp
          libcore/asobj/Array_as.h
          libcore/asobj/NetStream_as.cpp
          libcore/asobj/NetStream_as.h
          libcore/asobj/TextSnapshot_as.cpp
          libcore/asobj/XMLNode_as.cpp
          libcore/asobj/XMLNode_as.h
          libcore/asobj/flash/display/BitmapData_as.cpp
          libcore/asobj/flash/geom/Rectangle_as.cpp
          libcore/swf_function.cpp
          libcore/vm/ASHandlers.cpp
          libcore/vm/Machine.cpp
          libcore/vm/action.cpp
          libcore/vm/action.h
          libcore/vm/fn_call.h
          macros/pthreads.m4
          utilities/processor.cpp
    ------------------------------------------------------------
    revno: 9439.2.264
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2
    timestamp: Wed 2009-04-08 13:58:44 +0200
    message:
      Merge from trunk.
    removed:
      libcore/Sprite.h
      libcore/character.cpp
      libcore/character.h
      libcore/parser/character_def.cpp
    added:
      libcore/Geometry.cpp
      libcore/InteractiveObject.cpp
      libcore/InteractiveObject.h
      libcore/MorphShape.cpp
      libcore/MorphShape.h
      libcore/swf/ShapeRecord.cpp
      libcore/swf/ShapeRecord.h
    renamed:
      libcore/parser/character_def.h => libcore/swf/DefinitionTag.h
      libcore/parser/morph2_character_def.cpp => 
libcore/swf/DefineMorphShapeTag.cpp
      libcore/parser/morph2_character_def.h => libcore/swf/DefineMorphShapeTag.h
      libcore/parser/shape_character_def.cpp => libcore/swf/DefineShapeTag.cpp
      libcore/parser/shape_character_def.h => libcore/swf/DefineShapeTag.h
    modified:
      backend/Makefile.am
      backend/PathParser.cpp
      backend/PathParser.h
      backend/render_handler.h
      backend/render_handler_agg.cpp
      backend/render_handler_cairo.cpp
      backend/render_handler_ogl.cpp
      backend/render_handler_ogl.h
      cygnal/Makefile.am
      gui/Makefile.am
      gui/gui.cpp
      libbase/snappingrange.h
      libcore/Bitmap.cpp
      libcore/Bitmap.h
      libcore/BitmapMovieInstance.cpp
      libcore/BitmapMovieInstance.h
      libcore/Button.cpp
      libcore/Button.h
      libcore/CharacterProxy.cpp
      libcore/CharacterProxy.h
      libcore/DisplayList.cpp
      libcore/DisplayList.h
      libcore/DisplayObject.cpp
      libcore/DisplayObject.h
      libcore/DynamicShape.cpp
      libcore/DynamicShape.h
      libcore/ExportableResource.h
      libcore/Font.cpp
      libcore/Font.h
      libcore/FreetypeGlyphsProvider.cpp
      libcore/FreetypeGlyphsProvider.h
      libcore/Geometry.h
      libcore/GnashKey.h
      libcore/Makefile.am
      libcore/MouseButtonState.h
      libcore/MovieClip.cpp
      libcore/MovieClip.h
      libcore/SWFMatrix.cpp
      libcore/SWFMatrix.h
      libcore/Shape.cpp
      libcore/Shape.h
      libcore/StaticText.cpp
      libcore/StaticText.h
      libcore/TextField.cpp
      libcore/TextField.h
      libcore/Video.cpp
      libcore/Video.h
      libcore/as_environment.cpp
      libcore/as_environment.h
      libcore/as_object.h
      libcore/as_value.cpp
      libcore/as_value.h
      libcore/asobj/AsBroadcaster.cpp
      libcore/asobj/Color_as.cpp
      libcore/asobj/Global.cpp
      libcore/asobj/Key_as.cpp
      libcore/asobj/Key_as.h
      libcore/asobj/Mouse_as.cpp
      libcore/asobj/MovieClipLoader.cpp
      libcore/asobj/NetStream_as.cpp
      libcore/asobj/NetStream_as.h
      libcore/asobj/Object.cpp
      libcore/asobj/Selection_as.cpp
      libcore/asobj/SharedObject_as.cpp
      libcore/asobj/Sound_as.cpp
      libcore/asobj/Sound_as.h
      libcore/asobj/String_as.cpp
      libcore/asobj/System_as.cpp
      libcore/asobj/TextFormat_as.h
      libcore/asobj/TextSnapshot_as.cpp
      libcore/asobj/TextSnapshot_as.h
      libcore/asobj/XML_as.cpp
      libcore/asobj/flash/display/BitmapData_as.cpp
      libcore/asobj/flash/geom/Transform_as.cpp
      libcore/cxform.h
      libcore/drag_state.h
      libcore/event_id.h
      libcore/fill_style.cpp
      libcore/fill_style.h
      libcore/fontlib.cpp
      libcore/impl.cpp
      libcore/movie_instance.cpp
      libcore/movie_instance.h
      libcore/movie_root.cpp
      libcore/movie_root.h
      libcore/parser/BitmapMovieDefinition.cpp
      libcore/parser/BitmapMovieDefinition.h
      libcore/parser/Makefile.am
      libcore/parser/Namespace.h
      libcore/parser/SWFMovieDefinition.cpp
      libcore/parser/SWFMovieDefinition.h
      libcore/parser/movie_definition.h
      libcore/parser/sprite_definition.cpp
      libcore/parser/sprite_definition.h
      libcore/render.cpp
      libcore/render.h
      libcore/swf/DefineButtonCxformTag.cpp
      libcore/swf/DefineButtonSoundTag.cpp
      libcore/swf/DefineButtonSoundTag.h
      libcore/swf/DefineButtonTag.cpp
      libcore/swf/DefineButtonTag.h
      libcore/swf/DefineEditTextTag.cpp
      libcore/swf/DefineEditTextTag.h
      libcore/swf/DefineFontTag.cpp
      libcore/swf/DefineFontTag.h
      libcore/swf/DefineTextTag.cpp
      libcore/swf/DefineTextTag.h
      libcore/swf/DefineVideoStreamTag.cpp
      libcore/swf/DefineVideoStreamTag.h
      libcore/swf/DisplayListTag.h
      libcore/swf/DoInitActionTag.h
      libcore/swf/PlaceObject2Tag.cpp
      libcore/swf/PlaceObject2Tag.h
      libcore/swf/RemoveObjectTag.cpp
      libcore/swf/RemoveObjectTag.h
      libcore/swf/StartSoundTag.h
      libcore/swf/TextRecord.cpp
      libcore/swf/TextRecord.h
      libcore/swf/VideoFrameTag.cpp
      libcore/swf/VideoFrameTag.h
      libcore/swf/tag_loaders.cpp
      libcore/swf/tag_loaders.h
      libcore/swf_function.cpp
      libcore/vm/ASHandlers.cpp
      libcore/vm/ASHandlers.h
      libcore/vm/ActionExec.cpp
      libcore/vm/ActionExec.h
      libcore/vm/CodeStream.h
      libcore/vm/ExecutableCode.h
      libcore/vm/Machine.h
      pythonmodule/gnashPythonExample.py
      pythonmodule/gnashpython.cpp
      pythonmodule/gnashpython.h
      pythonmodule/pyGnash.cpp
      testsuite/DummyCharacter.h
      testsuite/DummyMovieDefinition.h
      testsuite/Makefile.am
      testsuite/MovieTester.cpp
      testsuite/MovieTester.h
      testsuite/libcore.all/ClassSizes.cpp
      testsuite/libcore.all/DisplayListTest.cpp
      testsuite/libcore.all/EdgeTest.cpp
      testsuite/libcore.all/Makefile.am
      testsuite/misc-ming.all/BitmapDataTest.c
      testsuite/misc-ming.all/ButtonEventsTest-Runner.cpp
      testsuite/misc-ming.all/ButtonEventsTest.c
      testsuite/misc-ming.all/DefineEditTextTest-Runner.cpp
      testsuite/misc-ming.all/DefineEditTextVariableNameTest-Runner.cpp
      testsuite/misc-ming.all/DefineEditTextVariableNameTest.c
      testsuite/misc-ming.all/DefineTextTest-Runner.cpp
      testsuite/misc-ming.all/DragDropTestRunner.cpp
      testsuite/misc-ming.all/DrawingApiTestRunner.cpp
      testsuite/misc-ming.all/EmbeddedSoundTest-Runner.cpp
      testsuite/misc-ming.all/KeyIsDownTest.c
      testsuite/misc-ming.all/Makefile.am
      testsuite/misc-ming.all/NetStream-SquareTest.c
      testsuite/misc-ming.all/NetStream-SquareTestRunner.cpp
      testsuite/misc-ming.all/PlaceObject2Test.c
      testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp
      testsuite/misc-ming.all/RollOverOutTest-Runner.cpp
      testsuite/misc-ming.all/SpriteButtonEventsTest-Runner.cpp
      testsuite/misc-ming.all/VarAndCharClashTest.as
      testsuite/misc-ming.all/Video-EmbedSquareTestRunner.cpp
      testsuite/misc-ming.all/attachMovieLoopingTest.c
      testsuite/misc-ming.all/attachMovieLoopingTestRunner.cpp
      testsuite/misc-ming.all/attachMovieTestRunner.cpp
      testsuite/misc-ming.all/displaylist_depths_test.c
      testsuite/misc-ming.all/displaylist_depths_test10.c
      testsuite/misc-ming.all/displaylist_depths_test11.c
      testsuite/misc-ming.all/displaylist_depths_test2.c
      testsuite/misc-ming.all/displaylist_depths_test3.c
      testsuite/misc-ming.all/displaylist_depths_test4.c
      testsuite/misc-ming.all/displaylist_depths_test5.c
      testsuite/misc-ming.all/displaylist_depths_test6.c
      testsuite/misc-ming.all/displaylist_depths_test7.c
      testsuite/misc-ming.all/displaylist_depths_test8.c
      testsuite/misc-ming.all/displaylist_depths_test9.c
      testsuite/misc-ming.all/eventSoundTest1-Runner.cpp
      testsuite/misc-ming.all/goto_frame_test.c
      testsuite/misc-ming.all/instanceNameTest.c
      testsuite/misc-ming.all/intervalTestRunner.cpp
      testsuite/misc-ming.all/key_event_test.c
      testsuite/misc-ming.all/key_event_testrunner.cpp
      testsuite/misc-ming.all/loadMovieTestRunner.cpp
      testsuite/misc-ming.all/loop_test-Runner.cpp
      testsuite/misc-ming.all/loop_test.c
      testsuite/misc-ming.all/loop_test2.c
      testsuite/misc-ming.all/loop_test2runner.cpp
      testsuite/misc-ming.all/loop_test3.c
      testsuite/misc-ming.all/loop_test4.c
      testsuite/misc-ming.all/loop_test5.c
      testsuite/misc-ming.all/loop_test6.c
      testsuite/misc-ming.all/loop_test7.c
      testsuite/misc-ming.all/loop_test8.c
      testsuite/misc-ming.all/loop_test9.c
      testsuite/misc-ming.all/masks_test.c
      testsuite/misc-ming.all/masks_test2runner.cpp
      testsuite/misc-ming.all/masks_testrunner.cpp
      testsuite/misc-ming.all/morph_test1runner.cpp
      testsuite/misc-ming.all/place_object_test.c
      testsuite/misc-ming.all/place_object_test2.c
      testsuite/misc-ming.all/registerClassTestRunner.cpp
      testsuite/misc-ming.all/replace_buttons1test.c
      testsuite/misc-ming.all/replace_buttons1test_runner.cpp
      testsuite/misc-ming.all/replace_shapes1test.c
      testsuite/misc-ming.all/replace_shapes1test_runner.cpp
      testsuite/misc-ming.all/replace_sprites1test.c
      testsuite/misc-ming.all/replace_sprites1test_runner.cpp
      testsuite/misc-ming.all/root_stop_testrunner.cpp
      testsuite/misc-ming.all/shape_test.c
      testsuite/misc-ming.all/simple_loop_test.c
      testsuite/misc-ming.all/simple_loop_testrunner.cpp
      testsuite/misc-ming.all/static_vs_dynamic2.c
      testsuite/misc-ming.all/streamingSoundTest1-Runner.cpp
      testsuite/misc-swfc.all/Makefile.am
      testsuite/misc-swfc.all/button_test1runner.cpp
      testsuite/misc-swfc.all/movieclip_destruction_test1.sc
      testsuite/misc-swfc.all/opcode_guard_test3.sc
      testsuite/misc-swfc.all/soft_reference_test1.sc
      testsuite/misc-swfmill.all/Makefile.am
      testsuite/misc-swfmill.all/backgroundTestRunner.cpp
      testsuite/misc-swfmill.all/initaction_in_definesprite.xml
      testsuite/movies.all/Makefile.am
      testsuite/movies.all/gravity_embedded-TestRunner.cpp
      testsuite/samples/Makefile.am
      testsuite/samples/clip_as_button2-TestRunner.cpp
      testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp
      testsuite/samples/subshapes-TestRunner.cpp
      utilities/Makefile.am
      libcore/swf/DefinitionTag.h
      libcore/swf/DefineMorphShapeTag.cpp
      libcore/swf/DefineMorphShapeTag.h
      libcore/swf/DefineShapeTag.cpp
      libcore/swf/DefineShapeTag.h
        ------------------------------------------------------------
        revno: 9439.9.1
        committer: Benjamin Wolsey <address@hidden>
        branch nick: avm2-work
        timestamp: Wed 2009-04-08 13:48:21 +0200
        message:
          Merge from trunk.
        removed:
          libcore/Sprite.h
          libcore/character.cpp
          libcore/character.h
          libcore/parser/character_def.cpp
        added:
          libcore/Geometry.cpp
          libcore/InteractiveObject.cpp
          libcore/InteractiveObject.h
          libcore/MorphShape.cpp
          libcore/MorphShape.h
          libcore/swf/ShapeRecord.cpp
          libcore/swf/ShapeRecord.h
        renamed:
          libcore/parser/character_def.h => libcore/swf/DefinitionTag.h
          libcore/parser/morph2_character_def.cpp => 
libcore/swf/DefineMorphShapeTag.cpp
          libcore/parser/morph2_character_def.h => 
libcore/swf/DefineMorphShapeTag.h
          libcore/parser/shape_character_def.cpp => 
libcore/swf/DefineShapeTag.cpp
          libcore/parser/shape_character_def.h => libcore/swf/DefineShapeTag.h
        modified:
          backend/Makefile.am
          backend/PathParser.cpp
          backend/PathParser.h
          backend/render_handler.h
          backend/render_handler_agg.cpp
          backend/render_handler_cairo.cpp
          backend/render_handler_ogl.cpp
          backend/render_handler_ogl.h
          cygnal/Makefile.am
          gui/Makefile.am
          gui/gui.cpp
          libbase/snappingrange.h
          libcore/Bitmap.cpp
          libcore/Bitmap.h
          libcore/BitmapMovieInstance.cpp
          libcore/BitmapMovieInstance.h
          libcore/Button.cpp
          libcore/Button.h
          libcore/CharacterProxy.cpp
          libcore/CharacterProxy.h
          libcore/DisplayList.cpp
          libcore/DisplayList.h
          libcore/DisplayObject.cpp
          libcore/DisplayObject.h
          libcore/DynamicShape.cpp
          libcore/DynamicShape.h
          libcore/ExportableResource.h
          libcore/Font.cpp
          libcore/Font.h
          libcore/FreetypeGlyphsProvider.cpp
          libcore/FreetypeGlyphsProvider.h
          libcore/Geometry.h
          libcore/GnashKey.h
          libcore/Makefile.am
          libcore/MouseButtonState.h
          libcore/MovieClip.cpp
          libcore/MovieClip.h
          libcore/SWFMatrix.cpp
          libcore/SWFMatrix.h
          libcore/Shape.cpp
          libcore/Shape.h
          libcore/StaticText.cpp
          libcore/StaticText.h
          libcore/TextField.cpp
          libcore/TextField.h
          libcore/Video.cpp
          libcore/Video.h
          libcore/as_environment.cpp
          libcore/as_environment.h
          libcore/as_object.h
          libcore/as_value.cpp
          libcore/as_value.h
          libcore/asobj/AsBroadcaster.cpp
          libcore/asobj/Color_as.cpp
          libcore/asobj/Global.cpp
          libcore/asobj/Key_as.cpp
          libcore/asobj/Key_as.h
          libcore/asobj/Mouse_as.cpp
          libcore/asobj/MovieClipLoader.cpp
          libcore/asobj/NetStream_as.cpp
          libcore/asobj/NetStream_as.h
          libcore/asobj/Object.cpp
          libcore/asobj/Selection_as.cpp
          libcore/asobj/SharedObject_as.cpp
          libcore/asobj/Sound_as.cpp
          libcore/asobj/Sound_as.h
          libcore/asobj/String_as.cpp
          libcore/asobj/System_as.cpp
          libcore/asobj/TextFormat_as.h
          libcore/asobj/TextSnapshot_as.cpp
          libcore/asobj/TextSnapshot_as.h
          libcore/asobj/XML_as.cpp
          libcore/asobj/flash/display/BitmapData_as.cpp
          libcore/asobj/flash/geom/Transform_as.cpp
          libcore/cxform.h
          libcore/drag_state.h
          libcore/event_id.h
          libcore/fill_style.cpp
          libcore/fill_style.h
          libcore/fontlib.cpp
          libcore/impl.cpp
          libcore/movie_instance.cpp
          libcore/movie_instance.h
          libcore/movie_root.cpp
          libcore/movie_root.h
          libcore/parser/BitmapMovieDefinition.cpp
          libcore/parser/BitmapMovieDefinition.h
          libcore/parser/Makefile.am
          libcore/parser/Namespace.h
          libcore/parser/SWFMovieDefinition.cpp
          libcore/parser/SWFMovieDefinition.h
          libcore/parser/movie_definition.h
          libcore/parser/sprite_definition.cpp
          libcore/parser/sprite_definition.h
          libcore/render.cpp
          libcore/render.h
          libcore/swf/DefineButtonCxformTag.cpp
          libcore/swf/DefineButtonSoundTag.cpp
          libcore/swf/DefineButtonSoundTag.h
          libcore/swf/DefineButtonTag.cpp
          libcore/swf/DefineButtonTag.h
          libcore/swf/DefineEditTextTag.cpp
          libcore/swf/DefineEditTextTag.h
          libcore/swf/DefineFontTag.cpp
          libcore/swf/DefineFontTag.h
          libcore/swf/DefineTextTag.cpp
          libcore/swf/DefineTextTag.h
          libcore/swf/DefineVideoStreamTag.cpp
          libcore/swf/DefineVideoStreamTag.h
          libcore/swf/DisplayListTag.h
          libcore/swf/DoInitActionTag.h
          libcore/swf/PlaceObject2Tag.cpp
          libcore/swf/PlaceObject2Tag.h
          libcore/swf/RemoveObjectTag.cpp
          libcore/swf/RemoveObjectTag.h
          libcore/swf/StartSoundTag.h
          libcore/swf/TextRecord.cpp
          libcore/swf/TextRecord.h
          libcore/swf/VideoFrameTag.cpp
          libcore/swf/VideoFrameTag.h
          libcore/swf/tag_loaders.cpp
          libcore/swf/tag_loaders.h
          libcore/swf_function.cpp
          libcore/vm/ASHandlers.cpp
          libcore/vm/ASHandlers.h
          libcore/vm/ActionExec.cpp
          libcore/vm/ActionExec.h
          libcore/vm/CodeStream.h
          libcore/vm/ExecutableCode.h
          libcore/vm/Machine.h
          pythonmodule/gnashPythonExample.py
          pythonmodule/gnashpython.cpp
          pythonmodule/gnashpython.h
          pythonmodule/pyGnash.cpp
          testsuite/DummyCharacter.h
          testsuite/DummyMovieDefinition.h
          testsuite/Makefile.am
          testsuite/MovieTester.cpp
          testsuite/MovieTester.h
          testsuite/libcore.all/ClassSizes.cpp
          testsuite/libcore.all/DisplayListTest.cpp
          testsuite/libcore.all/EdgeTest.cpp
          testsuite/libcore.all/Makefile.am
          testsuite/misc-ming.all/BitmapDataTest.c
          testsuite/misc-ming.all/ButtonEventsTest-Runner.cpp
          testsuite/misc-ming.all/ButtonEventsTest.c
          testsuite/misc-ming.all/DefineEditTextTest-Runner.cpp
          testsuite/misc-ming.all/DefineEditTextVariableNameTest-Runner.cpp
          testsuite/misc-ming.all/DefineEditTextVariableNameTest.c
          testsuite/misc-ming.all/DefineTextTest-Runner.cpp
          testsuite/misc-ming.all/DragDropTestRunner.cpp
          testsuite/misc-ming.all/DrawingApiTestRunner.cpp
          testsuite/misc-ming.all/EmbeddedSoundTest-Runner.cpp
          testsuite/misc-ming.all/KeyIsDownTest.c
          testsuite/misc-ming.all/Makefile.am
          testsuite/misc-ming.all/NetStream-SquareTest.c
          testsuite/misc-ming.all/NetStream-SquareTestRunner.cpp
          testsuite/misc-ming.all/PlaceObject2Test.c
          testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp
          testsuite/misc-ming.all/RollOverOutTest-Runner.cpp
          testsuite/misc-ming.all/SpriteButtonEventsTest-Runner.cpp
          testsuite/misc-ming.all/VarAndCharClashTest.as
          testsuite/misc-ming.all/Video-EmbedSquareTestRunner.cpp
          testsuite/misc-ming.all/attachMovieLoopingTest.c
          testsuite/misc-ming.all/attachMovieLoopingTestRunner.cpp
          testsuite/misc-ming.all/attachMovieTestRunner.cpp
          testsuite/misc-ming.all/displaylist_depths_test.c
          testsuite/misc-ming.all/displaylist_depths_test10.c
          testsuite/misc-ming.all/displaylist_depths_test11.c
          testsuite/misc-ming.all/displaylist_depths_test2.c
          testsuite/misc-ming.all/displaylist_depths_test3.c
          testsuite/misc-ming.all/displaylist_depths_test4.c
          testsuite/misc-ming.all/displaylist_depths_test5.c
          testsuite/misc-ming.all/displaylist_depths_test6.c
          testsuite/misc-ming.all/displaylist_depths_test7.c
          testsuite/misc-ming.all/displaylist_depths_test8.c
          testsuite/misc-ming.all/displaylist_depths_test9.c
          testsuite/misc-ming.all/eventSoundTest1-Runner.cpp
          testsuite/misc-ming.all/goto_frame_test.c
          testsuite/misc-ming.all/instanceNameTest.c
          testsuite/misc-ming.all/intervalTestRunner.cpp
          testsuite/misc-ming.all/key_event_test.c
          testsuite/misc-ming.all/key_event_testrunner.cpp
          testsuite/misc-ming.all/loadMovieTestRunner.cpp
          testsuite/misc-ming.all/loop_test-Runner.cpp
          testsuite/misc-ming.all/loop_test.c
          testsuite/misc-ming.all/loop_test2.c
          testsuite/misc-ming.all/loop_test2runner.cpp
          testsuite/misc-ming.all/loop_test3.c
          testsuite/misc-ming.all/loop_test4.c
          testsuite/misc-ming.all/loop_test5.c
          testsuite/misc-ming.all/loop_test6.c
          testsuite/misc-ming.all/loop_test7.c
          testsuite/misc-ming.all/loop_test8.c
          testsuite/misc-ming.all/loop_test9.c
          testsuite/misc-ming.all/masks_test.c
          testsuite/misc-ming.all/masks_test2runner.cpp
          testsuite/misc-ming.all/masks_testrunner.cpp
          testsuite/misc-ming.all/morph_test1runner.cpp
          testsuite/misc-ming.all/place_object_test.c
          testsuite/misc-ming.all/place_object_test2.c
          testsuite/misc-ming.all/registerClassTestRunner.cpp
          testsuite/misc-ming.all/replace_buttons1test.c
          testsuite/misc-ming.all/replace_buttons1test_runner.cpp
          testsuite/misc-ming.all/replace_shapes1test.c
          testsuite/misc-ming.all/replace_shapes1test_runner.cpp
          testsuite/misc-ming.all/replace_sprites1test.c
          testsuite/misc-ming.all/replace_sprites1test_runner.cpp
          testsuite/misc-ming.all/root_stop_testrunner.cpp
          testsuite/misc-ming.all/shape_test.c
          testsuite/misc-ming.all/simple_loop_test.c
          testsuite/misc-ming.all/simple_loop_testrunner.cpp
          testsuite/misc-ming.all/static_vs_dynamic2.c
          testsuite/misc-ming.all/streamingSoundTest1-Runner.cpp
          testsuite/misc-swfc.all/Makefile.am
          testsuite/misc-swfc.all/button_test1runner.cpp
          testsuite/misc-swfc.all/movieclip_destruction_test1.sc
          testsuite/misc-swfc.all/opcode_guard_test3.sc
          testsuite/misc-swfc.all/soft_reference_test1.sc
          testsuite/misc-swfmill.all/Makefile.am
          testsuite/misc-swfmill.all/backgroundTestRunner.cpp
          testsuite/misc-swfmill.all/initaction_in_definesprite.xml
          testsuite/movies.all/Makefile.am
          testsuite/movies.all/gravity_embedded-TestRunner.cpp
          testsuite/samples/Makefile.am
          testsuite/samples/clip_as_button2-TestRunner.cpp
          testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp
          testsuite/samples/subshapes-TestRunner.cpp
          utilities/Makefile.am
          libcore/swf/DefinitionTag.h
          libcore/swf/DefineMorphShapeTag.cpp
          libcore/swf/DefineMorphShapeTag.h
          libcore/swf/DefineShapeTag.cpp
          libcore/swf/DefineShapeTag.h
    ------------------------------------------------------------
    revno: 9439.2.265
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2-work
    timestamp: Thu 2009-04-16 10:57:58 +0200
    message:
      Rename abc_parsing to abc and abc_Trait to Trait.
    modified:
      libcore/asClass.h
      libcore/parser/abc_block.cpp
      libcore/parser/abc_block.h
    ------------------------------------------------------------
    revno: 9439.2.266
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2-work
    timestamp: Thu 2009-04-16 11:37:01 +0200
    message:
      Declare typedefs inside classes. Drop duplicated typedef.
    modified:
      libcore/parser/abc_block.h
    ------------------------------------------------------------
    revno: 9439.2.267
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2-work
    timestamp: Thu 2009-04-16 12:10:00 +0200
    message:
      More minor cleanups.
    modified:
      libcore/asClass.cpp
      libcore/asClass.h
    ------------------------------------------------------------
    revno: 9439.2.268
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2-work
    timestamp: Thu 2009-04-16 12:54:21 +0200
    message:
      Half-working, ugly implementation of instantiateClass with a string 
argument.
    modified:
      libcore/parser/abc_block.cpp
      libcore/vm/Machine.cpp
    ------------------------------------------------------------
    revno: 9439.2.269
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2-work
    timestamp: Thu 2009-05-14 10:00:05 +0200
    message:
      Replace LOG_AVM2 with log_abc.
    modified:
      libcore/abc_function.cpp
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
    ------------------------------------------------------------
    revno: 9439.2.270
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2-work
    timestamp: Thu 2009-05-14 12:26:47 +0200
    message:
      Add --enable-avm2 option. Disable the AVM2 interpreter and tag parsers
      unless avm2 is enabled at compile time.
      
      ClassHierarchy (on-demand class loading) uses asNamespace and asClass, so
      these still have to be built even when avm2 is disabled. This requires 
      ifdefs inside asClass.
      
      Split asClass file into separate files for asNamespace, asMethod, 
asException
      and asBoundValues.
    added:
      libcore/asBoundValues.h
      libcore/asException.h
      libcore/asMethod.cpp
      libcore/asMethod.h
      libcore/asNamespace.cpp
      libcore/asNamespace.h
    modified:
      configure.ac
      libcore/Makefile.am
      libcore/Property.cpp
      libcore/abc_function.h
      libcore/asClass.cpp
      libcore/asClass.h
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/ClassHierarchy.h
      libcore/impl.cpp
      libcore/parser/Makefile.am
      libcore/swf/tag_loaders.cpp
      libcore/swf/tag_loaders.h
      libcore/vm/Makefile.am
      libcore/vm/VM.cpp
      libcore/vm/VM.h
      testsuite/libcore.all/Makefile.am
      testsuite/misc-haxe.all/Makefile.am
    ------------------------------------------------------------
    revno: 9439.2.271
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2-work
    timestamp: Thu 2009-05-14 12:30:48 +0200
    message:
      Add copyright to split-off files.
    modified:
      libcore/asBoundValues.h
      libcore/asException.h
      libcore/asMethod.cpp
      libcore/asMethod.h
      libcore/asNamespace.cpp
      libcore/asNamespace.h
    ------------------------------------------------------------
    revno: 9439.2.272
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2-work
    timestamp: Thu 2009-05-14 13:05:48 +0200
    message:
      Allow building with AVM2 code.
    modified:
      configure.ac
    ------------------------------------------------------------
    revno: 9439.2.273
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2-work
    timestamp: Thu 2009-05-14 13:06:24 +0200
    message:
      Drop stubs for AS3 classes, as these can be regenerated easily in
      the newer style.
      
      Fix missing values in ClassHierarchy initialization.
    removed:
      libcore/asobj/flash/display/DisplayObjectContainer_as.cpp
      libcore/asobj/flash/display/DisplayObjectContainer_as.h
      libcore/asobj/flash/display/DisplayObject_as.cpp
      libcore/asobj/flash/display/DisplayObject_as.h
      libcore/asobj/flash/display/InteractiveObject_as.cpp
      libcore/asobj/flash/display/InteractiveObject_as.h
      libcore/asobj/flash/display/Sprite_as.cpp
      libcore/asobj/flash/display/Sprite_as.h
      libcore/asobj/flash/display/Stage_as.cpp
      libcore/asobj/flash/display/Stage_as.h
    modified:
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/Makefile.am
      libcore/asobj/flash/display_pkg.cpp
    ------------------------------------------------------------
    revno: 9439.2.274
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2-work
    timestamp: Thu 2009-05-14 13:07:52 +0200
    message:
      Include gnashconfig.h where needed.
    modified:
      libcore/asClass.h
      libcore/asMethod.cpp
      libcore/asMethod.h
    ------------------------------------------------------------
    revno: 9439.2.275
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2-work
    timestamp: Thu 2009-05-14 13:23:13 +0200
    message:
      Do includes and forward declarations properly to avoid breaking the build
      on the slightest change.
    modified:
      libcore/asClass.h
      libcore/asobj/ClassHierarchy.h
      libcore/parser/abc_block.h
      libcore/vm/asName.h
    ------------------------------------------------------------
    revno: 9439.2.276
    committer: Benjamin Wolsey <address@hidden>
    branch nick: avm2-work
    timestamp: Thu 2009-05-14 13:41:42 +0200
    message:
      Correct includes in SymbolClassTag.h
    modified:
      libcore/swf/SymbolClassTag.h
    ------------------------------------------------------------
    revno: 10851.1.1
    committer: Benjamin Wolsey <address@hidden>
    branch nick: test
    timestamp: Thu 2009-05-14 13:45:23 +0200
    message:
      Merge VM and parsing parts from avm2 branch. Disable all avm2 code by 
default,
      as it may be unstable.
      
      Most new classes have not been merged because they were only stubs and 
can be
      generated easily.
    added:
      libcore/abc_function.cpp
      libcore/abc_function.h
      libcore/asBoundValues.h
      libcore/asException.h
      libcore/asMethod.cpp
      libcore/asMethod.h
      libcore/asNamespace.cpp
      libcore/asNamespace.h
      libcore/asobj/flash/text/TextFieldAutoSize_as.cpp
      libcore/asobj/flash/text/TextFieldAutoSize_as.h
      libcore/asobj/int_as.cpp
      libcore/asobj/int_as.h
      libcore/swf/DoABCTag.cpp
      libcore/swf/DoABCTag.h
      libcore/swf/SymbolClassTag.h
      libcore/vm/CodeStream.cpp
      testsuite/actionscript.all/haxe-swf9/
      testsuite/actionscript.all/haxe-swf9/Dejagnu.hx
      testsuite/actionscript.all/haxe-swf9/as_to_hx.pl
      testsuite/actionscript.all/haxe-swf9/check.as
      testsuite/libcore.all/CodeStreamTest.cpp
      testsuite/misc-haxe.all/AddChild.hx
    modified:
      configure.ac
      libbase/log.cpp
      libbase/log.h
      libcore/Makefile.am
      libcore/Property.cpp
      libcore/SWFStream.cpp
      libcore/SWFStream.h
      libcore/asClass.cpp
      libcore/asClass.h
      libcore/as_environment.cpp
      libcore/as_object.cpp
      libcore/as_object.h
      libcore/asobj/ClassHierarchy.cpp
      libcore/asobj/ClassHierarchy.h
      libcore/asobj/Global.cpp
      libcore/asobj/Makefile.am
      libcore/asobj/flash/display_pkg.cpp
      libcore/asobj/flash/text_pkg.cpp
      libcore/asobj/flash_pkg.cpp
      libcore/impl.cpp
      libcore/namedStrings.cpp
      libcore/namedStrings.h
      libcore/parser/Makefile.am
      libcore/parser/abc_block.cpp
      libcore/parser/abc_block.h
      libcore/parser/action_buffer.cpp
      libcore/parser/action_buffer.h
      libcore/swf/tag_loaders.cpp
      libcore/swf/tag_loaders.h
      libcore/vm/CodeStream.h
      libcore/vm/Machine.cpp
      libcore/vm/Machine.h
      libcore/vm/Makefile.am
      libcore/vm/VM.cpp
      libcore/vm/VM.h
      libcore/vm/asName.h
      testsuite/actionscript.all/Makefile.am
      testsuite/actionscript.all/String.as
      testsuite/libcore.all/Makefile.am
      testsuite/misc-haxe.all/Makefile.am
    ------------------------------------------------------------
    revno: 10851.1.2
    committer: Benjamin Wolsey <address@hidden>
    branch nick: test
    timestamp: Thu 2009-05-14 14:05:01 +0200
    message:
      Fix Makefiles for dropped files.
      
      Drop ctor for TextFieldAutoSize, which only contains static variables.
    modified:
      libcore/asClass.cpp
      libcore/asobj/Makefile.am
      libcore/asobj/flash/text/TextFieldAutoSize_as.cpp
    ------------------------------------------------------------
    revno: 10851.1.3
    committer: Benjamin Wolsey <address@hidden>
    branch nick: test
    timestamp: Thu 2009-05-14 14:34:16 +0200
    message:
      Define ENABLE_AVM2 properly.
      
      Drop more from the Makefile.
    modified:
      configure.ac
      libcore/Makefile.am
      libcore/asobj/Makefile.am
      libcore/asobj/flash_pkg.cpp
      libcore/impl.cpp
    ------------------------------------------------------------
    revno: 10851.1.4
    committer: Benjamin Wolsey <address@hidden>
    branch nick: test
    timestamp: Thu 2009-05-14 14:54:04 +0200
    message:
      Add comments to abc_block.
      
      Remove Namespace.h, which was replaced long ago by the asNamespace class.
    removed:
      libcore/parser/Namespace.h
    modified:
      libcore/parser/abc_block.cpp
    ------------------------------------------------------------
    revno: 10851.1.5
    committer: Benjamin Wolsey <address@hidden>
    branch nick: test
    timestamp: Thu 2009-05-14 14:54:48 +0200
    message:
      Remove Namespace.h from Makefile.
    modified:
      libcore/parser/Makefile.am
    ------------------------------------------------------------
    revno: 10851.1.6
    committer: Benjamin Wolsey <address@hidden>
    branch nick: test
    timestamp: Thu 2009-05-14 15:00:22 +0200
    message:
      Minor cleanup.
    modified:
      libcore/asNamespace.h
=== modified file 'configure.ac'
--- a/configure.ac      2009-04-28 07:30:36 +0000
+++ b/configure.ac      2009-05-14 15:02:29 +0000
@@ -214,6 +214,19 @@
 SOLDIR=${soldir}
 AC_SUBST(SOLDIR)
 
+AC_ARG_ENABLE(avm2,
+  AC_HELP_STRING([--enable-avm2], [Enable support for AS3]),
+  [case "${enableval}" in
+    yes) avm2=yes ;;
+    no)  avm2=no ;;
+    *)   AC_MSG_ERROR([bad value ${enableval} for enable-avm2 option]) ;;
+  esac], avm2=no
+)
+AM_CONDITIONAL(ENABLE_AVM2, [test x"$avm2" = xyes])
+if test x$avm2 = xyes; then
+    AC_DEFINE(ENABLE_AVM2, [1], [Enable AVM2 code])
+fi
+
 dnl lckey=0xdd3adabd
 AC_ARG_WITH(lckey,
  AC_HELP_STRING([--with-lckey],

=== modified file 'libbase/log.cpp'
--- a/libbase/log.cpp   2009-04-01 15:17:24 +0000
+++ b/libbase/log.cpp   2009-04-08 11:48:21 +0000
@@ -123,6 +123,13 @@
 }
 
 void
+processLog_abc(const boost::format& fmt)
+{
+       if (dbglogfile.getVerbosity() < LogFile::LOG_EXTRA) return;
+       dbglogfile.log(N_("ABC"), fmt.str());
+}
+
+void
 processLog_parse(const boost::format& fmt)
 {
        dbglogfile.log(fmt.str());

=== modified file 'libbase/log.h'
--- a/libbase/log.h     2009-04-20 20:10:52 +0000
+++ b/libbase/log.h     2009-05-14 11:45:23 +0000
@@ -233,6 +233,7 @@
 DSOEXPORT void processLog_swferror(const boost::format& fmt);
 DSOEXPORT void processLog_amferror(const boost::format& fmt);
 DSOEXPORT void processLog_aserror(const boost::format& fmt);
+DSOEXPORT void processLog_abc(const boost::format& fmt);
 
 /// This heap of steaming preprocessor code magically converts
 /// printf-style statements into boost::format messages using templates.
@@ -250,7 +251,7 @@
 /// the code. Append the name to log_ to call the function, e.g. 
 /// log_error, log_unimpl.
 #define LOG_TYPES (error) (debug) (unimpl) (aserror) (swferror) \
-    (amferror) (security) (action) (parse) (trace)
+    (amferror) (security) (action) (parse) (trace) (abc)
 
 /// This actually creates the template functions using the TOKENIZE
 /// functions above. The templates look like this:

=== modified file 'libcore/Makefile.am'
--- a/libcore/Makefile.am       2009-04-28 15:22:32 +0000
+++ b/libcore/Makefile.am       2009-05-14 15:02:29 +0000
@@ -47,6 +47,7 @@
        $(FONTCONFIG_CFLAGS) \
        $(NULL)
 
+
 libgnashcore_la_SOURCES = \
        BitmapMovie.cpp \
        Property.cpp \
@@ -57,7 +58,6 @@
        as_function.cpp \
        as_object.cpp \
        as_value.cpp \
-       asClass.cpp \
        DisplayObject.cpp \
        CharacterProxy.cpp \
        cxform.cpp \
@@ -121,15 +121,23 @@
        styles.cpp \
        Timers.cpp \
        RGBA.cpp        \
+       asClass.cpp \
+       asNamespace.cpp \
        $(FREETYPE_SOURCES) \
        $(NULL)
 
+if ENABLE_AVM2
+libgnashcore_la_SOURCES += \
+       abc_function.cpp \
+       asMethod.cpp
+       $(NULL)
+endif
+
 noinst_HEADERS = \
        URLAccessManager.h \
        VirtualClock.h \
        SystemClock.h \
        ManualClock.h \
-       asClass.h \
        Bitmap.h \
        BitmapMovie.h \
        Button.h \
@@ -158,6 +166,7 @@
        swf/VideoFrameTag.h \
        swf/DefineVideoStreamTag.h \
        swf/DefineFontAlignZonesTag.h \
+       swf/SymbolClassTag.h \
        swf/CSMTextSettingsTag.h \
        swf/DefineShapeTag.h \
        swf/DefineMorphShapeTag.h \
@@ -185,6 +194,16 @@
        Video.h \
        $(NULL)
 
+if ENABLE_AVM2
+noinst_HEADERS += \
+       swf/DoABCTag.h \
+       abc_function.h \
+       asMethod.h \
+       asException.h \
+       asBoundValues.h \
+       $(NULL)
+endif
+
 EXTENSIONS_API = \
        as_object.h \
        Property.h \
@@ -226,6 +245,9 @@
        BitmapInfo.h \
        RGBA.h  \
        Geometry.h      \
+       Video.h \
+       asClass.h \
+       asNamespace.h \
        $(NULL)
 
 if SDKINSTALL

=== modified file 'libcore/Property.cpp'
--- a/libcore/Property.cpp      2009-02-25 22:33:03 +0000
+++ b/libcore/Property.cpp      2009-05-14 10:26:47 +0000
@@ -18,7 +18,6 @@
 #include "Property.h"
 #include "VM.h"
 #include "as_function.h"
-#include "Machine.h"
 
 namespace gnash {
 

=== modified file 'libcore/SWFStream.cpp'
--- a/libcore/SWFStream.cpp     2009-02-10 11:33:38 +0000
+++ b/libcore/SWFStream.cpp     2009-02-20 12:24:00 +0000
@@ -23,6 +23,7 @@
 #include "IOChannel.h"
 #include "swf.h"
 #include "Property.h"
+#include "action_buffer.h"
 
 #include <cstring>
 #include <climits>
@@ -302,7 +303,7 @@
 }
 
 // Read a 64-bit double value
-long double SWFStream::read_d64()
+double SWFStream::read_d64()
 {
 #ifdef USE_TU_FILE_BYTESWAPPING 
     align();

=== modified file 'libcore/SWFStream.h'
--- a/libcore/SWFStream.h       2009-01-22 20:10:39 +0000
+++ b/libcore/SWFStream.h       2009-02-20 12:24:00 +0000
@@ -126,7 +126,7 @@
        //
        /// aligned read
        ///
-       long double read_d64();
+       double read_d64();
 
        /// Consume all bits of current byte
        //

=== added file 'libcore/abc_function.cpp'
--- a/libcore/abc_function.cpp  1970-01-01 00:00:00 +0000
+++ b/libcore/abc_function.cpp  2009-05-14 08:00:05 +0000
@@ -0,0 +1,49 @@
+// 
+//   Copyright (C) 2005, 2006, 2007, 2008 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
+
+#include "log.h"
+#include "abc_function.h"
+#include "asClass.h"
+#include "fn_call.h"
+#include "Machine.h"
+
+namespace gnash{
+
+abc_function::abc_function(asMethod *methodInfo, Machine* machine)
+    :
+    as_function(),
+    mMethodInfo(methodInfo),
+    mMachine(machine),
+    _scopeStack(0)
+{
+}
+
+// Dispatch.
+as_value
+abc_function::operator()(const fn_call& fn)
+{
+       log_abc("Calling an abc_function id=%u.",
+            mMethodInfo->methodID());
+       as_value val = mMachine->executeFunction(mMethodInfo,fn);
+       log_abc("Done calling abc_function id=%u value=%s",
+            mMethodInfo->methodID(),val.toDebugString());
+       return val;
+
+}
+
+
+}

=== added file 'libcore/abc_function.h'
--- a/libcore/abc_function.h    1970-01-01 00:00:00 +0000
+++ b/libcore/abc_function.h    2009-05-14 10:26:47 +0000
@@ -0,0 +1,71 @@
+// 
+//   Copyright (C) 2005, 2006, 2007, 2008 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
+
+#ifndef GNASH_ABC_FUNCTION_H
+#define GNASH_ABC_FUNCTION_H
+
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h" // GNASH_USE_GC
+#endif
+
+#include "as_function.h"
+#include "as_value.h"
+#include "CodeStream.h"
+#include "asClass.h"
+#include "SafeStack.h"
+#include "as_object.h"
+#include "as_environment.h"
+#include "asMethod.h"
+
+namespace gnash {
+
+class Machine;
+
+/// ABC-defined Function 
+class abc_function : public as_function
+{
+
+public:
+       abc_function(asMethod *methodInfo, Machine* mMachine);
+
+       as_value operator()(const fn_call& fn);
+
+       CodeStream* getCodeStream(){ return mMethodInfo->getBody();}
+
+       boost::uint32_t getMaxRegisters(){ return 
mMethodInfo->getMaxRegisters(); }
+
+    as_environment::ScopeStack* scopeStack() { return _scopeStack; }
+
+    void setScopeStack(as_environment::ScopeStack* stack) {
+        _scopeStack = stack;
+    }
+
+private:
+
+    asMethod *mMethodInfo;
+
+    Machine* mMachine;
+
+       as_environment::ScopeStack* _scopeStack;
+
+};
+
+
+} // end of gnash namespace
+
+// __GNASH_ABC_FUNCTION_H__
+#endif

=== added file 'libcore/asBoundValues.h'
--- a/libcore/asBoundValues.h   1970-01-01 00:00:00 +0000
+++ b/libcore/asBoundValues.h   2009-05-14 10:30:48 +0000
@@ -0,0 +1,61 @@
+// 
+//   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
+
+#ifndef GNASH_AS_BOUND_VALUES_H
+#define GNASH_AS_BOUND_VALUES_H
+
+namespace gnash {
+
+class asBoundValue;
+
+class asBoundAccessor
+{
+public:
+       bool setGetter(asMethod *p) { mGetter = p; return true; }
+       bool setSetter(asMethod *p) { _setter = p; return true; }
+       bool setValue(asBoundValue *p) { mValue = p; return true; }
+
+       asBoundValue* getValue() { return mValue; }
+       asMethod *getGetter() { return mGetter; }
+       asMethod *getSetter() { return _setter; }
+
+private:
+       asMethod *mGetter;
+       asMethod *_setter;
+       asBoundValue *mValue;
+};
+
+class asBoundValue 
+{
+public:
+       asBoundValue() : mConst(false), mValue()
+       { mValue.set_undefined(); }
+       void setValue(as_value &v) { mValue = v; }
+       as_value getCurrentValue() { return mValue; }
+
+       void setType(asClass *t) { mType = t; }
+       asClass *getType() { return mType; }
+
+private:
+       bool mConst;
+       asClass *mType;
+       as_value mValue;
+};
+
+} // namespace gnash
+
+#endif

=== modified file 'libcore/asClass.cpp'
--- a/libcore/asClass.cpp       2009-02-25 22:33:03 +0000
+++ b/libcore/asClass.cpp       2009-05-14 12:05:01 +0000
@@ -25,53 +25,25 @@
 #include "VM.h"
 #include "namedStrings.h"
 #include "as_value.h"
+#include "asNamespace.h"
+
+#ifdef ENABLE_AVM2
+#include "asMethod.h"
+#include "abc_function.h"
+#endif
 
 namespace gnash {
-#define STV(x) VM::get().getStringTable().value(x).c_str()
-
-asMethod::asMethod():mBody()
-{
-//TODO
-}
-
-void
-asMethod::setOwner(asClass *pOwner)
-{
-       mPrototype->set_member(NSV::PROP_PROTOTYPE, pOwner->getPrototype());
-}
-
-void
-asMethod::setReturnType(asClass */*type*/)
-{
-       /* No-op */
-}
-
-bool
-asMethod::addValue(string_table::key name, asNamespace *ns, boost::uint32_t 
slotId,
-       asClass *type, as_value& val, bool isconst)
-{
-       if (val.is_object())
-               
val.to_object()->set_member(string_table::key(NSV::INTERNAL_TYPE), 
-                       std::size_t(type->getName()));
-
-       string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
-
-       int flags = as_prop_flags::dontDelete;
-
-       if (isconst)
-               flags |= as_prop_flags::readOnly;
-
-       mPrototype->init_member(name, val, flags, nsname, slotId);
-       return true;
-}
-
-bool
-asClass::addValue(string_table::key name, asNamespace *ns, boost::uint32_t 
slotId,
-       asClass *type, as_value& val, bool isconst, bool isstatic)
-{
-       if (val.is_object())
+
+#ifdef ENABLE_AVM2    
+bool
+asClass::addValue(string_table::key name, asNamespace *ns,
+        boost::uint32_t slotId, asClass *type, as_value& val, bool isconst,
+        bool isstatic)
+{
+       if (val.is_object()) {
                val.to_object()->set_member(NSV::INTERNAL_TYPE, 
                        std::size_t(type->getName()));
+    }
 
        string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
 
@@ -81,7 +53,12 @@
        if (isstatic)
                flags |= as_prop_flags::staticProp;
 
-       mPrototype->init_member(name, val, flags, nsname, slotId);
+       if(slotId == 0){
+               _prototype->init_member(name, val, flags, nsname);
+       }
+       else{
+               _prototype->init_member(name, val, flags, nsname, slotId);
+       }
        return true;
 }
 
@@ -106,7 +83,7 @@
        string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
        int flags = as_prop_flags::dontDelete;
 
-       mPrototype->init_member(name, as_value(), flags, nsname, slotId);
+       _prototype->init_member(name, as_value(), flags, nsname, slotId);
        return true;
 }
 
@@ -120,6 +97,12 @@
        return addValue(name, ns, slotId, &a, b, false);
 }
 
+void
+asMethod::initPrototype(Machine* machine)
+{
+       _prototype = new abc_function(this,machine);
+}
+
 bool
 asClass::addSlotFunction(string_table::key name, asNamespace *ns,
        boost::uint32_t slotId, asMethod *method, bool isstatic)
@@ -131,41 +114,48 @@
 }
 
 bool
-asClass::addSlot(string_table::key name, asNamespace* ns, boost::uint32_t 
slotId,
-       asClass */*type*/, bool isstatic)
-{
-       string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
-       int flags = as_prop_flags::dontDelete;
-       if (isstatic)
-               flags |= as_prop_flags::staticProp;
-
-       mPrototype->init_member(name, as_value(), flags, nsname, slotId);
-       return true;
-}
-
-bool
-asMethod::addMethod(string_table::key name, asNamespace* ns, asMethod* method)
-{
-       string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
-       as_value val(method->getPrototype());
-
-       mPrototype->init_member(name, val, as_prop_flags::readOnly |
-               as_prop_flags::dontDelete | as_prop_flags::dontEnum, nsname);
-       return true;
-}
-
-bool
-asClass::addMethod(string_table::key name, asNamespace* ns, asMethod* method,
-       bool isstatic)
-{
-       string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
-       as_value val(method->getPrototype());
-       int flags = as_prop_flags::readOnly | as_prop_flags::dontDelete
-               | as_prop_flags::dontEnum;
-       if (isstatic)
-               flags |= as_prop_flags::staticProp;
-
-       mPrototype->init_member(name, val, flags, nsname);
+asClass::addSlot(string_table::key name, asNamespace* ns,
+        boost::uint32_t slotId, asClass* /*type*/, bool /*isstatic*/)
+{
+       string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
+//     int flags = as_prop_flags::dontDelete;
+//     if (isstatic)
+//             flags |= as_prop_flags::staticProp;
+//     log_debug("Before init_member.");
+       //TODO: Set flags.
+       if(slotId == 0){
+               _prototype->init_member(name,as_value(), 0, nsname);
+       }
+       else{
+               _prototype->init_member(name, as_value(), 0, nsname, slotId);
+       }
+       return true;
+}
+
+bool
+asMethod::addMethod(string_table::key /*name*/, asNamespace* /*ns*/, asMethod*
+        /*method*/)
+{
+//     string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
+//     as_value val(method->getPrototype());
+//     as value val = new 
as_value(abc_function(asMethod->getBody,_prototype->getVM().getMachine()));
+//     _prototype->init_member(name, val, as_prop_flags::readOnly |
+//             as_prop_flags::dontDelete | as_prop_flags::dontEnum, nsname);
+//     return true;
+return false;
+}
+
+bool
+asClass::addMethod(string_table::key name, asNamespace* /*ns*/,
+        asMethod* method, bool /*isstatic*/)
+{
+       as_value val = as_value(new 
abc_function(method,_prototype->getVM().getMachine()));
+       _prototype->init_member(name, val);
+//     int flags = as_prop_flags::readOnly | as_prop_flags::dontDelete
+//             | as_prop_flags::dontEnum;
+//     if (isstatic)
+//             flags |= as_prop_flags::staticProp;
+
        return true;
 }
 
@@ -175,7 +165,7 @@
 {
        string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
 
-       Property *getset = mPrototype->getOwnProperty(name, nsname);
+       Property *getset = _prototype->getOwnProperty(name, nsname);
 
        if (getset)
                getset->setGetter(method->getPrototype());
@@ -184,7 +174,7 @@
                int flags = as_prop_flags::dontDelete | as_prop_flags::dontEnum;
                if (isstatic)
                        flags |= as_prop_flags::staticProp;
-               mPrototype->init_property(name, *method->getPrototype(), 
+               _prototype->init_property(name, *method->getPrototype(), 
                        *method->getPrototype(), flags, nsname);
        }
        return true;
@@ -196,7 +186,7 @@
 {
        string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
 
-       Property *getset = mPrototype->getOwnProperty(name, nsname);
+       Property *getset = _prototype->getOwnProperty(name, nsname);
 
        if (getset)
                getset->setSetter(method->getPrototype());
@@ -205,7 +195,7 @@
                int flags = as_prop_flags::dontDelete | as_prop_flags::dontEnum;
                if (isstatic)
                        flags |= as_prop_flags::staticProp;
-               mPrototype->init_property(name, *method->getPrototype(), 
+               _prototype->init_property(name, *method->getPrototype(), 
                        *method->getPrototype(), flags, nsname);
        }
        return true;
@@ -216,14 +206,14 @@
 {
        string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
 
-       Property *getset = mPrototype->getOwnProperty(name, nsname);
+       Property *getset = _prototype->getOwnProperty(name, nsname);
 
        if (getset)
                getset->setGetter(method->getPrototype());
        else
        {
                int flags = as_prop_flags::dontDelete | as_prop_flags::dontEnum;
-               mPrototype->init_property(name, *method->getPrototype(), 
+               _prototype->init_property(name, *method->getPrototype(), 
                        *method->getPrototype(), flags, nsname);
        }
        return true;
@@ -234,27 +224,19 @@
 {
        string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
 
-       Property *getset = mPrototype->getOwnProperty(name, nsname);
+       Property *getset = _prototype->getOwnProperty(name, nsname);
 
        if (getset)
                getset->setSetter(method->getPrototype());
        else
        {
                int flags = as_prop_flags::dontDelete | as_prop_flags::dontEnum;
-               mPrototype->init_property(name, *method->getPrototype(), 
+               _prototype->init_property(name, *method->getPrototype(), 
                        *method->getPrototype(), flags, nsname);
        }
        return true;
 }
 
-void
-asNamespace::stubPrototype(string_table::key name)
-{
-       asClass *pClass = VM::get().getClassHierarchy()->newClass();
-       pClass->setName(name);
-       addClass(name, pClass);
-}
-
 #if 0 // TODO
 void
 asClass::buildFromPrototype(as_object *o, string_table::key name,
@@ -335,5 +317,8 @@
                return addBinding(name, asBinding(ns, method, slotId, 
isstatic));
        return addStaticBinding(name, asBinding(ns, method, slotId, isstatic));
 }
-#endif /* 0 */
+#endif 
+
+#endif
+
 } /* namespace gnash */

=== modified file 'libcore/asClass.h'
--- a/libcore/asClass.h 2009-02-25 22:33:03 +0000
+++ b/libcore/asClass.h 2009-05-14 11:23:13 +0000
@@ -18,456 +18,38 @@
 #ifndef GNASH_AS_CLASS_H
 #define GNASH_AS_CLASS_H
 
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
 #include <list>
 #include <map>
 #include <vector>
+#include <iostream>
 #include "string_table.h"
 #include "as_value.h"
-#include "CodeStream.h"
 #include "Property.h"
 #include "as_function.h"
 
+#ifdef ENABLE_AVM2
+# include "CodeStream.h"
+# include "abc_block.h"
+#endif
+
 namespace gnash {
 
 class as_function;
 class asNamespace;
 class asMethod;
 class asClass;
-class asException;
 typedef Property asBinding;
-//class asBinding;
 class asBoundValue;
 class asBoundAccessor;
 class ClassHierarchy;
 class Property;
-
 class asName;
-
-class asException
-{
-public:
-       void setStart(boost::uint32_t i) { mStart = i; }
-       void setEnd(boost::uint32_t i) { mEnd = i; }
-       void setCatch(boost::uint32_t i) { mCatch = i; }
-       void catchAny() { mCatchAny = true; }
-       void setCatchType(asClass* p) { mCatchType = p; }
-       void setNamespace(asNamespace* n) { mNamespace = n; }
-       void setName(string_table::key name) { mName = name; }
-
-private:
-       boost::uint32_t mStart;
-       boost::uint32_t mEnd;
-       boost::uint32_t mCatch;
-       bool mCatchAny;
-       asClass *mCatchType;
-       asNamespace *mNamespace;
-       string_table::key mName;
-};
-#if 0
-/// An abstract binding for ActionScript.
-class asBinding
-{
-public:
-       void dump(string_table::key name);
-
-       void setConst() { mConst = true; }
-       void unsetConst() { mConst = false; }
-       bool isConst() { return mConst; }
-
-       void setStatic() { mStatic = true; }
-       void unsetStatic() { mStatic = false; }
-       bool isStatic() { return mStatic; }
-
-       boost::uint32_t getSlotId() { return mSlotId; }
-       void setSlotId(boost::uint32_t s) { mSlotId = s; }
-
-       // Chad: Document
-       string_table::key getName() { return mName; }
-       void setLexOnly(bool) { /* TODO */ }
-
-       /// If true, the attribute has a setter, but no getter.
-       bool isWriteOnly();
-
-       /// If true, the attribute can be read, but not written. Might be
-       /// constant or might have a getter but no setter.
-       bool isReadOnly(); 
-
-       bool isGetSet() { return getAccessor() != NULL; }
-
-       // Conversion from Property
-       asBinding(Property *, string_table::key name);
-
-       // As a member method.
-       asBinding(asNamespace *ns, asMethod *pMethod, bool isstatic = false) :
-               mNamespace(ns), mType(T_METHOD), mSlotId(0), mConst(true),
-               mStatic(isstatic),      mMethod(pMethod)
-       {/**/}
-
-       // As an assignable function.
-       asBinding(asNamespace *ns, asMethod *pMethod, boost::uint32_t sid, bool 
isstatic) :
-               mNamespace(ns), mType(T_METHOD), mSlotId(sid), mConst(false),
-               mStatic(isstatic),      mMethod(pMethod)
-       {/**/}
-
-       asBinding(asNamespace *ns, asBoundValue *pValue, boost::uint32_t sid, 
bool isconstant,
-               bool isstatic) : mNamespace(ns), mType(T_VALUE), mSlotId(sid), 
mConst(isconstant),
-               mStatic(isstatic), mValue(pValue)
-       {/**/}
-
-       asBinding(asNamespace *ns, asBoundValue *pValue, boost::uint32_t sid, 
bool isstatic) :
-               mNamespace(ns), mType(T_VALUE), mSlotId(sid), mConst(false), 
mStatic(isstatic),
-               mValue(pValue)
-       {/**/}
-
-       asBinding(asNamespace *ns, asBoundAccessor *pAccess, bool isstatic) :
-               mNamespace(ns), mType(T_ACCESS), mSlotId(0), mConst(true), 
mStatic(isstatic),
-               mAccess(pAccess)
-       {/**/}
-
-       asBinding(asNamespace *ns, asClass *pClass, boost::uint32_t sid, bool 
isstatic) :
-               mNamespace(ns), mType(T_CLASS), mSlotId(sid), mConst(true), 
mStatic(isstatic),
-               mClass(pClass)
-       {/**/}
-
-       asBinding() : mNamespace(NULL), mType(T_CLASS), mSlotId(0), 
mConst(false), mStatic(false),
-               mClass(NULL)
-       {/**/}
-
-       asBinding(asMethod *);
-       asBinding(as_function *);
-
-       void reset(asBoundAccessor *pAccess, bool isstatic)
-       {
-               mType = T_ACCESS;
-               mAccess = pAccess;
-               mConst = true;
-               mStatic = isstatic;
-       }
-
-       asBoundAccessor* getAccessor()
-       { return mType == T_ACCESS ? mAccess : NULL; }
-
-       asBoundValue* getValue()
-       { return mType == T_VALUE ? mValue : NULL; }
-
-       asMethod* getMethod()
-       { return mType == T_METHOD ? mMethod : NULL; }
-
-       asClass* getClass()
-       { return mType == T_CLASS ? mClass : NULL; }
-
-       as_function* getASFunction();
-
-       asNamespace *mNamespace;
-
-       typedef enum
-       {
-               T_CLASS,
-               T_METHOD,
-               T_AS_FUNCTION,
-               T_VALUE,
-               T_ACCESS
-       } types;
-       types mType;
-
-       boost::uint32_t mSlotId;
-       bool mConst;
-       bool mStatic;
-       string_table::key mName;
-       as_object* mOwner;
-
-       union
-       {
-               asClass *mClass;
-               asMethod *mMethod;
-               asBoundValue *mValue;
-               asBoundAccessor *mAccess;
-       };
-};
-#endif // comment out of asBinding
-
-/// Represent an ActionScript namespace
-class asNamespace
-{
-public:
-       void markReachableResources() const { /* TODO */ }
-
-       /// Our parent (for protected)
-       void setParent(asNamespace* p) { mParent = p; }
-
-       asNamespace* getParent() { return mParent; }
-
-       /// Set the uri
-       void setURI(string_table::key name) { mUri = name; }
-
-       /// What is the Uri of the namespace?
-       string_table::key getURI() const { return mUri; }
-
-       /// What is the XML prefix?
-       string_table::key getPrefix() const { return mPrefix; }
-
-       /// Create an empty namespace
-       asNamespace() : mParent(NULL), mUri(0), mPrefix(0), mClasses(),
-               mRecursePrevent(false), mPrivate(false), mProtected(false)
-       {/**/}
-
-       /// Add a class to the namespace. The namespace stores this, but
-       /// does not take ownership. (So don't delete it.)
-       bool addClass(string_table::key name, asClass *a)
-       {
-               if (getClassInternal(name))
-                       return false;
-               mClasses[static_cast<std::size_t>(name)] = a;
-               return true;
-       }
-
-       void stubPrototype(string_table::key name);
-
-       /// Get the named class. Returns NULL if information is not known
-       /// about the class. (Stubbed classes still return NULL here.)
-       asClass *getClass(string_table::key name) 
-       {
-               if (mRecursePrevent)
-                       return NULL;
-
-               asClass *found = getClassInternal(name);
-               if (found || !getParent())
-                       return found;
-
-               mRecursePrevent = true;
-               found = getParent()->getClass(name);
-               mRecursePrevent = false;
-               return found;
-       }
-
-       void setPrivate() { mPrivate = true; }
-       void unsetPrivate() { mPrivate = false; }
-       bool isPrivate() { return mPrivate; }
-
-       void setProtected() { mProtected = true; }
-       void unsetProtected() { mProtected = false; }
-       bool isProtected() { return mProtected; }
-       
-private:
-       asNamespace *mParent;
-       string_table::key mUri;
-       string_table::key mPrefix;
-
-       typedef std::map<string_table::key, asClass*> container;
-       container mClasses;
-       mutable bool mRecursePrevent;
-
-       bool mPrivate;
-       bool mProtected;
-
-       asClass *getClassInternal(string_table::key name) const
-       {
-               container::const_iterator i;
-               if (mClasses.empty())
-                       return NULL;
-
-               i = mClasses.find(name);
-               if (i == mClasses.end())
-                       return NULL;
-               return i->second;
-       }
-};
-
-class asBoundValue;
-
-class asBoundAccessor
-{
-public:
-       bool setGetter(asMethod *p) { mGetter = p; return true; }
-       bool setSetter(asMethod *p) { mSetter = p; return true; }
-       bool setValue(asBoundValue *p) { mValue = p; return true; }
-
-       asBoundValue* getValue() { return mValue; }
-       asMethod *getGetter() { return mGetter; }
-       asMethod *getSetter() { return mSetter; }
-
-private:
-       asMethod *mGetter;
-       asMethod *mSetter;
-       asBoundValue *mValue;
-};
-
-class asBoundValue 
-{
-public:
-       asBoundValue() : mConst(false), mValue()
-       { mValue.set_undefined(); }
-       void setValue(as_value &v) { mValue = v; }
-       as_value getCurrentValue() { return mValue; }
-
-       void setType(asClass *t) { mType = t; }
-       asClass *getType() { return mType; }
-
-private:
-       bool mConst;
-       asClass *mType;
-       as_value mValue;
-};
-
-/// A class to represent, abstractly, an ActionScript method.
-///
-/// Methods are unnamed until they are bound to an object.
-class asMethod
-{
-private:
-       as_function* mPrototype;
-
-       typedef enum
-       {
-               FLAGS_FINAL = 0x01,
-               FLAGS_PROTECTED = 0x02,
-               FLAGS_PUBLIC = 0x04,
-               FLAGS_PRIVATE = 0x08
-       } flags;
-       /// A list of type identifiers
-       typedef std::list<asClass*> argumentList;
-       typedef std::map<string_table::key, asBinding> binding_container;
-
-       int mMinArguments;
-       int mMaxArguments;
-       bool mIsNative;
-       argumentList mArguments;
-       std::list<as_value> mOptionalArguments;
-       as_function *mImplementation;
-       unsigned char mFlags;
-       CodeStream *mBody;
-
-       bool addBinding(string_table::key name, asBinding b);
-
-public:
-       as_function* getPrototype() { return mPrototype; }
-
-       asBinding* getBinding(string_table::key name);
-
-       asMethod();
-
-       bool isNative() { return mIsNative; }
-       bool hasBody() const { return mBody != NULL; }
-
-       as_object* construct(as_object* /*base_scope*/) { /* TODO */ return 
NULL; }
-
-       bool hasActivation();
-
-       CodeStream *getBody() { return mBody; }
-       void setBody(CodeStream *b) { mBody = b; }
-
-       bool addValue(string_table::key name, asNamespace *ns, boost::uint32_t 
slotId,
-               asClass *type, as_value& val, bool isconst);
-
-       bool addSlot(string_table::key name, asNamespace *ns, boost::uint32_t 
slotId,
-               asClass *type);
-
-       bool addMethod(string_table::key name, asNamespace *ns, asMethod 
*method);
-
-       bool addGetter(string_table::key name, asNamespace *ns, asMethod 
*method);
-
-       bool addSetter(string_table::key name, asNamespace *ns, asMethod 
*method);
-
-       bool addMemberClass(string_table::key name, asNamespace *ns,
-               boost::uint32_t slotId, asClass *type);
-       
-       bool addSlotFunction(string_table::key name, asNamespace *ns,
-               boost::uint32_t slotId, asMethod *method);
-
-       /// \brief
-       /// Set the owner of this method.
-       void setOwner(asClass* s);
-
-       /// \brief
-       /// Get the unique identifier for the return type. 0 is 'anything'.
-       /// (This is the value of any dynamic property.)
-       /// Id reference: Type
-       asClass* getReturnType() const;
-
-       /// Set the return type
-       void setReturnType(asClass* t);
-
-       asMethod *getSuper();
-
-       void setSuper(asMethod* s);
-
-       /// \brief
-       /// Is the method final? If so, it may not be overridden.
-       bool isFinal() const { return mFlags & FLAGS_FINAL; }
-
-       /// \brief
-       /// Set the method as final.
-       void setFinal() { mFlags = mFlags | FLAGS_FINAL; }
-
-       /// \brief
-       /// Unset the method as final. Not final anymore.
-       void unsetFinal() { mFlags = mFlags & ~FLAGS_FINAL; }
-
-       /// \brief
-       /// Is the method private?
-       bool isPrivate() const { return mFlags & FLAGS_PRIVATE; }
-
-       /// \brief
-       /// Make the method private.
-       void setPrivate()
-       { mFlags = (mFlags & ~(FLAGS_PUBLIC | FLAGS_PROTECTED)) | 
FLAGS_PRIVATE; }
-
-       /// \brief
-       /// Is the method protected?
-       bool isProtected() const { return mFlags & FLAGS_PROTECTED; }
-
-       /// \brief
-       /// Make the method protected.
-       void setProtected()
-       { mFlags = (mFlags & ~(FLAGS_PUBLIC | FLAGS_PRIVATE)) | 
FLAGS_PROTECTED; }
-
-       /// \brief
-       /// Is the method public?
-       bool isPublic() const { return mFlags & FLAGS_PUBLIC; }
-
-       /// \brief
-       /// Make the method public.
-       void setPublic()
-       { mFlags = (mFlags & ~(FLAGS_PRIVATE | FLAGS_PROTECTED)) | 
FLAGS_PUBLIC; }
-
-       /// \brief
-       /// How many arguments are required? -1 means unknown.
-       int minArgumentCount() const { return mMinArguments; }
-
-       /// \brief
-       /// Set the required minimum arguments.
-       void setMinArgumentCount(int i) { mMinArguments = i; }
-
-       /// \brief
-       /// How many arguments are allowed? -1 means unknown.
-       int maxArgumentCount() const { return mMaxArguments; }
-
-       /// Set the required maximum arguments.
-       void setMaxArgumentCount(int i) { mMaxArguments = i; }
-
-       /// \brief
-       /// Push an argument of type t into the method definition
-       void pushArgument(asClass *t) { mArguments.push_back(t); }
-
-       /// \brief
-       /// Push an optional argument's default value.
-       void pushOptional(const as_value& v) { mOptionalArguments.push_back(v); 
}
-
-       /// \brief
-       /// Are any of the arguments optional?
-       bool optionalArguments() const
-       { return minArgumentCount() != maxArgumentCount(); }
-
-       /// \brief
-       /// Get a reference to a list of argument types.
-       argumentList& getArgumentList() { return mArguments; }
-
-       /// \brief
-       /// Get an object capable of executing this function.
-       /// Note: This may be NULL, because we might have information about this
-       /// function but not actually have it yet.
-       as_function* getImplementation() { return mImplementation; }
-};
+class Machine;
+class abc_function;
 
 /// A class to represent, abstractly, ActionScript prototypes.
 ///
@@ -478,15 +60,51 @@
 class asClass
 {
 public:
-       as_object* getPrototype() { return mPrototype; }
+
+       asClass()
+        :
+        _prototype(0),
+        _final(false),
+        _sealed(false),
+        _dynamic(false),
+               _interface(false),
+        _name(0),
+        _interfaces(),
+        _protectedNs(0),
+               _super(0),
+        _constructor(0),
+        _staticConstructor(0),
+               _bindings(),
+        _staticBindings(),
+        _declared(false),
+        _inherited(false),
+               _system(false)
+       {}
+
+       as_object* getPrototype() { return _prototype; }
+       
+    void setDeclared() { _declared = true; }
+       bool isDeclared() { return _declared; }
+       void setInherited() { _inherited = true; }
+       bool isInherited() { return _inherited; }
+
+       void setSystem() { _system = true; }
+       void unsetSystem() { _system = false; }
+       bool isSystem() { return _system; }
+       
+    /// Set our Name
+       void setName(string_table::key name) { _name = name; }
 
        void dump();
 
-       bool addValue(string_table::key name, asNamespace *ns, boost::uint32_t 
slotId,
-               asClass *type, as_value& val, bool isconst, bool isstatic);
-
-       bool addSlot(string_table::key name, asNamespace *ns, boost::uint32_t 
slotId,
-               asClass *type, bool isstatic);
+#ifdef ENABLE_AVM2
+
+       bool addValue(string_table::key name, asNamespace *ns,
+            boost::uint32_t slotID, asClass *type, as_value& val,
+            bool isconst, bool isstatic);
+
+       bool addSlot(string_table::key name, asNamespace *ns,
+            boost::uint32_t slotID, asClass *type, bool isstatic);
 
        bool addMethod(string_table::key name, asNamespace *ns, asMethod 
*method,
                bool isstatic);
@@ -498,150 +116,135 @@
                bool isstatic);
 
        bool addMemberClass(string_table::key name, asNamespace *ns,
-               boost::uint32_t slotId, asClass *type, bool isstatic);
+               boost::uint32_t slotID, asClass *type, bool isstatic);
 
        // TODO: Figure out how this differs from addMethod
        bool addSlotFunction(string_table::key name, asNamespace *ns,
-               boost::uint32_t slotId, asMethod *method, bool isstatic);
+               boost::uint32_t slotID, asMethod *method, bool isstatic);
 
        /// Is the class final?
-       bool isFinal() const { return mFinal; }
+       bool isFinal() const { return _final; }
 
        /// Set the class as final.
-       void setFinal() { mFinal = true; }
+       void setFinal() { _final = true; }
 
        /// Set the class as not final.
-       void unsetFinal() { mFinal = false; }
+       void unsetFinal() { _final = false; }
 
        /// Is the class sealed?
-       bool isSealed() const { return mSealed; }
+       bool isSealed() const { return _sealed; }
 
        /// Set the class as sealed.
-       void setSealed() { mSealed = true; }
+       void setSealed() { _sealed = true; }
 
        // Set the class as not sealed.
-       void unsetSealed() { mSealed = false; }
+       void unsetSealed() { _sealed = false; }
 
        /// Is the class an interface type?
-       bool isInterface() const { return mInterface; }
+       bool isInterface() const { return _interface; }
 
        /// Set the class as an interface.
-       void setInterface() { mInterface = true; }
+       void setInterface() { _interface = true; }
 
        /// Set the class as not an interface.
-       void unsetInterface() { mInterface = false; }
+       void unsetInterface() { _interface = false; }
 
        /// Is the class dynamic?
-       bool isDynamic() const { return mDynamic; }
+       bool isDynamic() const { return _dynamic; }
 
        /// Set the class as dynamic.
-       void setDynamic() { mDynamic = true; }
+       void setDynamic() { _dynamic = true; }
 
        /// Set the class as not dynamic.
-       void unsetDynamic() { mDynamic = false; }
+       void unsetDynamic() { _dynamic = false; }
 
        /// Does the class have a protected namespace to be inherited?
-       bool hasProtectedNs() const { return mProtectedNs != NULL; }
+       bool hasProtectedNs() const { return _protectedNs; }
 
        /// Get the protected namespace.
-       asNamespace *getProtectedNs() { return mProtectedNs; }
+       asNamespace *getProtectedNs() { return _protectedNs; }
 
        /// Set the protected namespace.
-       void setProtectedNs(asNamespace *n) { mProtectedNs = n; }
-
-       string_table::key getName() const { return mName; }
-
-       /// Set our Name
-       void setName(string_table::key name) { mName = name; }
+       void setProtectedNs(asNamespace *n) { _protectedNs = n; }
+
+       string_table::key getName() const { return _name; }
+
+       void initPrototype(){ _prototype = new as_object();}
 
        /// What is the type of our parent class?
-       asClass* getSuper() const { return mSuper; }
+       asClass* getSuper() const { return _super; }
 
        /// We implement this interface.
-       void pushInterface(asClass* p) { mInterfaces.push_back(p); }
+       void pushInterface(asClass* p) { _interfaces.push_back(p); }
 
        /// This is our constructor.
-       void setConstructor(asMethod *m) { mConstructor = m; }
-       asMethod *getConstructor() { return mConstructor; }
-
-       void setStaticConstructor(asMethod *m) { mStaticConstructor = m; }
-
-       void setSuper(asClass *p) { mSuper = p; }
+       void setConstructor(asMethod *m) { _constructor = m; }
+       asMethod *getConstructor() { return _constructor; }
+
+       void setStaticConstructor(asMethod *m) { _staticConstructor = m; }
+       asMethod *getStaticConstructor(){return _staticConstructor;}
+       void setSuper(asClass *p) { _super = p; }
 
        /// Try to build an asClass object from just a prototype.
-       void buildFromPrototype(as_object *o, string_table::key name,
+       void buildFro_prototype(as_object *o, string_table::key name,
                ClassHierarchy *);
 
-       void setDeclared() { mDeclared = true; }
-       bool isDeclared() { return mDeclared; }
-       void setInherited() { mInherited = true; }
-       bool isInherited() { return mInherited; }
-
-       void setSystem() { mSystem = true; }
-       void unsetSystem() { mSystem = false; }
-       bool isSystem() { return mSystem; }
-
-       asClass() : mFinal(false), mSealed(false), mDynamic(false),
-               mInterface(false), mName(0), mInterfaces(), mProtectedNs(NULL),
-               mSuper(NULL), mConstructor(NULL), mStaticConstructor(NULL),
-               mBindings(), mStaticBindings(), mDeclared(false), 
mInherited(false),
-               mSystem(false)
-       {/**/}
-
-
        asBinding *getBinding(string_table::key name)
        {
-               binding_container::iterator i;
-               if (mBindings.empty())
-                       return NULL;
-               i = mBindings.find(name);
-               if (i == mBindings.end())
+               BindingContainer::iterator i;
+               if (_bindings.empty()) return NULL;
+               i = _bindings.find(name);
+               if (i == _bindings.end())
                        return NULL;
                return &i->second;
        }
 
        asBinding* getGetBinding(as_value& v, asName& n);
        asBinding* getSetBinding(as_value& v, asName& n);
+    std::vector<abc::Trait> _traits;
+
+#endif
 
 private:
-       as_object *mPrototype;
+       
+       typedef std::map<string_table::key, asBinding> BindingContainer;
+
+    as_object *_prototype;
 
        bool addBinding(string_table::key name, asBinding b)
-       { mBindings[name] = b; return true; }
+       { _bindings[name] = b; return true; }
        bool addStaticBinding(string_table::key name, asBinding b)
-       { mStaticBindings[name] = b; return true; }
+       { _staticBindings[name] = b; return true; }
 
        asBinding *getStaticBinding(string_table::key name)
        {
-               binding_container::iterator i;
-               if (mStaticBindings.empty())
+               BindingContainer::iterator i;
+               if (_staticBindings.empty())
                        return NULL;
-               i = mStaticBindings.find(name);
-               if (i == mStaticBindings.end())
+               i = _staticBindings.find(name);
+               if (i == _staticBindings.end())
                        return NULL;
                return &i->second;
        }
 
-       bool mFinal;
-       bool mSealed;
-       bool mDynamic;
-       bool mInterface;
-       string_table::key mName;
-       std::list<asClass*> mInterfaces;
-       asNamespace *mProtectedNs;
-       asClass *mSuper;
-       asMethod *mConstructor;
-       asMethod *mStaticConstructor;
-
-       typedef std::map<string_table::key, asBinding> binding_container;
-
-       binding_container mBindings;
-       binding_container mStaticBindings;
-       bool mDeclared;
-       bool mInherited;
-       bool mSystem;
+       bool _final;
+       bool _sealed;
+       bool _dynamic;
+       bool _interface;
+       string_table::key _name;
+       std::list<asClass*> _interfaces;
+       asNamespace* _protectedNs;
+       asClass* _super;
+       asMethod* _constructor;
+       asMethod* _staticConstructor;
+
+       BindingContainer _bindings;
+       BindingContainer _staticBindings;
+       bool _declared;
+       bool _inherited;
+       bool _system;
 };
 
-} /* namespace gnash */
+} // namespace gnash
 
-#endif /* GNASH_AS_CLASS_H */
+#endif 

=== added file 'libcore/asException.h'
--- a/libcore/asException.h     1970-01-01 00:00:00 +0000
+++ b/libcore/asException.h     2009-05-14 10:30:48 +0000
@@ -0,0 +1,45 @@
+// 
+//   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
+
+#ifndef GNASH_AS_EXCEPTION_H
+#define GNASH_AS_EXCEPTION_H
+
+namespace gnash {
+
+class asException
+{
+public:
+       void setStart(boost::uint32_t i) { _start = i; }
+       void setEnd(boost::uint32_t i) { mEnd = i; }
+       void setCatch(boost::uint32_t i) { mCatch = i; }
+       void catchAny() { mCatchAny = true; }
+       void setCatchType(asClass* p) { mCatchType = p; }
+       void setNamespace(asNamespace* n) { _namespace = n; }
+       void setName(string_table::key name) { _name = name; }
+
+private:
+       boost::uint32_t _start;
+       boost::uint32_t mEnd;
+       boost::uint32_t mCatch;
+       bool mCatchAny;
+       asClass *mCatchType;
+       asNamespace *_namespace;
+       string_table::key _name;
+};
+
+} // namespace gnash
+#endif

=== added file 'libcore/asMethod.cpp'
--- a/libcore/asMethod.cpp      1970-01-01 00:00:00 +0000
+++ b/libcore/asMethod.cpp      2009-05-14 11:07:52 +0000
@@ -0,0 +1,94 @@
+// 
+//   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
+
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
+#include "asMethod.h"
+#include "asClass.h"
+#include "CodeStream.h"
+#include "abc_function.h"
+
+namespace gnash {
+
+asMethod::asMethod()
+    :
+       _minArguments(0),
+       _maxArguments(0),
+    _body(0)
+{
+}
+
+void
+asMethod::print_body()
+{
+               if (!_body) {
+                       log_parse("Method has no body.");
+                       return;
+               }
+               std::stringstream ss("Method Body:");
+               for(boost::uint32_t i = 0; i < _bodyLength ; ++i) {
+                       const boost::uint8_t opcode = _body->read_as3op();
+                       ss << "0x" << std::uppercase << std::hex << (opcode | 
0x0) << " ";
+               }
+               _body->seekTo(0);
+               log_parse("%s", ss.str());
+}
+
+void
+asMethod::setOwner(asClass *pOwner)
+{
+       log_debug("asMethod::setOwner");
+       if(!_prototype){
+               log_debug("ERROR _prototype is null.");
+       }
+       log_debug("Prototype text value: %s",_prototype->get_text_value());
+       _prototype->set_member(NSV::PROP_PROTOTYPE, pOwner->getPrototype());
+}
+
+void
+asMethod::setReturnType(asClass* /*type*/)
+{
+       /* No-op */
+}
+
+bool
+asMethod::addValue(string_table::key name, asNamespace *ns,
+        boost::uint32_t slotId, asClass *type, as_value& val, bool isconst)
+{
+       if (val.is_object()) {
+               val.to_object()->set_member(NSV::INTERNAL_TYPE,
+                size_t(type->getName()));
+    }
+
+       string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
+
+       int flags = as_prop_flags::dontDelete;
+
+       if (isconst) flags |= as_prop_flags::readOnly;
+
+       if (slotId == 0) {
+               _prototype->init_member(name, val, flags, nsname);
+       }
+       else {
+               _prototype->init_member(name, val, flags, nsname, slotId);
+       }
+       return true;
+}
+
+} // namespace gnash

=== added file 'libcore/asMethod.h'
--- a/libcore/asMethod.h        1970-01-01 00:00:00 +0000
+++ b/libcore/asMethod.h        2009-05-14 11:07:52 +0000
@@ -0,0 +1,248 @@
+// 
+//   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
+
+#ifndef GNASH_AS_METHOD_H
+#define GNASH_AS_METHOD_H
+
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
+#include "log.h"
+#include "string_table.h"
+#include "Property.h"
+#include "namedStrings.h"
+
+#include <list>
+
+// Forward declarations
+namespace gnash {
+    class CodeStream;
+    class Machine;
+    class as_object;
+    class asClass;
+    class abc_function;
+}
+
+namespace gnash {
+
+typedef Property asBinding;
+
+/// A class to represent, abstractly, an ActionScript method.
+///
+/// Methods are unnamed until they are bound to an object.
+class asMethod
+{
+public:
+       
+    typedef std::list<asClass*> ArgumentList;
+
+       asMethod();
+
+    boost::uint32_t methodID() const {
+        return _methodID;
+    }
+
+    void setMethodID(boost::uint32_t m) {
+        _methodID = m;
+    }
+
+       void initPrototype(Machine* machine);
+
+       boost::uint32_t getMaxRegisters() { return _maxRegisters;}
+
+       void setMaxRegisters(boost::uint32_t maxRegisters) { 
+        _maxRegisters = maxRegisters;
+    }
+
+       boost::uint32_t getBodyLength(){ return _bodyLength;}
+
+       void setBodyLength(boost::uint32_t length){ _bodyLength = length;}
+
+       abc_function* getPrototype() { return _prototype; }
+
+       asBinding* getBinding(string_table::key name);
+
+       bool isNative() { return _isNative; }
+       bool hasBody() const { return _body != NULL; }
+
+       as_object* construct(as_object* /*base_scope*/) { /* TODO */ return 
NULL; }
+
+       bool hasActivation();
+
+       CodeStream *getBody() { return _body; }
+       void setBody(CodeStream *b) { _body = b; }
+
+       bool addValue(string_table::key name, asNamespace *ns, boost::uint32_t 
slotID,
+               asClass *type, as_value& val, bool isconst);
+
+       bool addSlot(string_table::key name, asNamespace *ns, boost::uint32_t 
slotID,
+               asClass *type);
+
+       bool addMethod(string_table::key name, asNamespace *ns, asMethod 
*method);
+
+       bool addGetter(string_table::key name, asNamespace *ns, asMethod 
*method);
+
+       bool addSetter(string_table::key name, asNamespace *ns, asMethod 
*method);
+
+       bool addMemberClass(string_table::key name, asNamespace *ns,
+               boost::uint32_t slotID, asClass *type);
+       
+       bool addSlotFunction(string_table::key name, asNamespace *ns,
+               boost::uint32_t slotID, asMethod *method);
+
+       /// \brief
+       /// Set the owner of this method.
+       void setOwner(asClass* s);
+
+       /// \brief
+       /// Get the unique identifier for the return type. 0 is 'anything'.
+       /// (This is the value of any dynamic property.)
+       /// Id reference: Type
+       asClass* getReturnType() const;
+
+       /// Set the return type
+       void setReturnType(asClass* t);
+
+       asMethod *getSuper();
+
+       void setSuper(asMethod* s);
+
+       /// \brief
+       /// Is the method final? If so, it may not be overridden.
+       bool isFinal() const { return _flags & FLAGS_FINAL; }
+
+       /// \brief
+       /// Set the method as final.
+       void setFinal() { _flags = _flags | FLAGS_FINAL; }
+
+       /// \brief
+       /// Unset the method as final. Not final anymore.
+       void unsetFinal() { _flags = _flags & ~FLAGS_FINAL; }
+
+       /// \brief
+       /// Is the method private?
+       bool isPrivate() const { return _flags & FLAGS_PRIVATE; }
+
+       /// \brief
+       /// Make the method private.
+       void setPrivate() {
+        _flags = (_flags & ~(FLAGS_PUBLIC | FLAGS_PROTECTED)) | FLAGS_PRIVATE;
+    }
+
+       /// \brief
+       /// Is the method protected?
+       bool isProtected() const {
+        return _flags & FLAGS_PROTECTED;
+    }
+
+       /// \brief
+       /// Make the method protected.
+       void setProtected() {
+        _flags = (_flags & ~(FLAGS_PUBLIC | FLAGS_PRIVATE)) | FLAGS_PROTECTED; 
}
+
+       /// \brief
+       /// Is the method public?
+       bool isPublic() const { return _flags & FLAGS_PUBLIC; }
+
+       /// \brief
+       /// Make the method public.
+       void setPublic() {
+        _flags = (_flags & ~(FLAGS_PRIVATE | FLAGS_PROTECTED)) | FLAGS_PUBLIC;
+    }
+
+       /// \brief
+       /// How many arguments are required? -1 means unknown.
+       int minArgumentCount() const { return _minArguments; }
+
+       /// \brief
+       /// Set the required minimum arguments.
+       void setMinArgumentCount(int i) { _minArguments = i; }
+
+       /// \brief
+       /// How many arguments are allowed? -1 means unknown.
+       int maxArgumentCount() const { return _maxArguments; }
+
+       /// Set the required maximum arguments.
+       void setMaxArgumentCount(int i) { _maxArguments = i; }
+
+       /// \brief
+       /// Push an argument of type t into the method definition
+       void pushArgument(asClass *t) { _arguments.push_back(t); }
+
+       /// \brief
+       /// Push an optional argument's default value.
+       void pushOptional(const as_value& v) { _optionalArguments.push_back(v); 
}
+
+       /// \brief
+       /// Are any of the arguments optional?
+       bool optionalArguments() const {
+        return minArgumentCount() != maxArgumentCount();
+    }
+
+       /// \brief
+       /// Get a reference to a list of argument types.
+       ArgumentList& getArgumentList() { return _arguments; }
+
+       /// \brief
+       /// Get an object capable of executing this function.
+       /// Note: This may be NULL, because we might have information about this
+       /// function but not actually have it yet.
+       as_function* getImplementation() { return _implementation; }
+
+       /// \brief
+       /// Print the opcodes that define a method using log_parse.
+       void print_body();
+
+       void print_static_constructor(){
+
+       }
+
+private:
+
+       enum Flag
+       {
+               FLAGS_FINAL = 0x01,
+               FLAGS_PROTECTED = 0x02,
+               FLAGS_PUBLIC = 0x04,
+               FLAGS_PRIVATE = 0x08
+       };
+
+       /// A list of type identifiers
+       typedef std::map<string_table::key, asBinding> BindingContainer;
+
+       bool addBinding(string_table::key name, asBinding b);
+       
+    boost::uint32_t _methodID;
+
+    abc_function* _prototype;
+       int _minArguments;
+       int _maxArguments;
+       boost::uint32_t _bodyLength;
+       bool _isNative;
+       ArgumentList _arguments;
+       std::list<as_value> _optionalArguments;
+       as_function* _implementation;
+       unsigned char _flags;
+       CodeStream* _body;
+       boost::uint32_t _maxRegisters;
+
+};
+
+} // namespace gnash
+
+#endif

=== added file 'libcore/asNamespace.cpp'
--- a/libcore/asNamespace.cpp   1970-01-01 00:00:00 +0000
+++ b/libcore/asNamespace.cpp   2009-05-14 10:30:48 +0000
@@ -0,0 +1,32 @@
+// 
+//   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
+
+#include "asNamespace.h"
+#include "VM.h"
+#include "ClassHierarchy.h"
+
+namespace gnash {
+
+void
+asNamespace::stubPrototype(string_table::key name)
+{
+       asClass *pClass = VM::get().getClassHierarchy()->newClass();
+       pClass->setName(name);
+       addClass(name, pClass);
+}
+
+}

=== added file 'libcore/asNamespace.h'
--- a/libcore/asNamespace.h     1970-01-01 00:00:00 +0000
+++ b/libcore/asNamespace.h     2009-05-14 13:00:22 +0000
@@ -0,0 +1,132 @@
+// 
+//   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
+
+#ifndef GNASH_AS_NAMESPACE_H
+#define GNASH_AS_NAMESPACE_H
+
+#include "string_table.h"
+
+// Forward declarations
+namespace gnash {
+    class asClass;
+}
+
+namespace gnash {
+
+/// Represent an ActionScript namespace
+class asNamespace
+{
+public:
+
+       /// Create an empty namespace
+       asNamespace()
+        :
+        _parent(0),
+        mUri(0),
+        _prefix(0),
+        _abcURI(0),
+        mClasses(),
+               mRecursePrevent(false),
+        _private(false),
+        _protected(false)
+       {}
+
+    void markReachableResources() const { /* TODO */ }
+
+       /// Our parent (for protected)
+       void setParent(asNamespace* p) { _parent = p; }
+
+       asNamespace* getParent() { return _parent; }
+
+       /// Set the uri
+       void setURI(string_table::key name) { mUri = name; }
+
+       /// What is the Uri of the namespace?
+       string_table::key getURI() const { return mUri; }
+
+       string_table::key getAbcURI() const {return _abcURI;}
+       void setAbcURI(string_table::key n){ _abcURI = n; }
+
+       /// What is the XML prefix?
+       string_table::key getPrefix() const { return _prefix; }
+
+       /// Add a class to the namespace. The namespace stores this, but
+       /// does not take ownership. (So don't delete it.)
+       bool addClass(string_table::key name, asClass *a)
+       {
+               if (getClassInternal(name)) return false;
+               mClasses[static_cast<std::size_t>(name)] = a;
+               return true;
+       }
+
+       void stubPrototype(string_table::key name);
+
+       /// Get the named class. Returns NULL if information is not known
+       /// about the class. (Stubbed classes still return NULL here.)
+       asClass* getClass(string_table::key name) 
+       {
+               if (mRecursePrevent) return NULL;
+
+               asClass* found = getClassInternal(name);
+
+               if (found || !getParent()) return found;
+
+               mRecursePrevent = true;
+               found = getParent()->getClass(name);
+               mRecursePrevent = false;
+               return found;
+       }
+
+       void setPrivate() { _private = true; }
+       void unsetPrivate() { _private = false; }
+       bool isPrivate() { return _private; }
+
+       void setProtected() { _protected = true; }
+       void unsetProtected() { _protected = false; }
+       bool isProtected() { return _protected; }
+       
+private:
+
+       asNamespace* _parent;
+       string_table::key mUri;
+       string_table::key _prefix;
+
+       string_table::key _abcURI;
+
+       typedef std::map<string_table::key, asClass*> container;
+       container mClasses;
+       mutable bool mRecursePrevent;
+
+       bool _private;
+       bool _protected;
+
+       asClass* getClassInternal(string_table::key name) const
+       {
+               container::const_iterator i;
+               
+        if (mClasses.empty()) return NULL;
+
+               i = mClasses.find(name);
+
+               if (i == mClasses.end()) return NULL;
+               return i->second;
+       }
+};
+
+} // namespace gnash
+
+#endif

=== modified file 'libcore/as_environment.cpp'
--- a/libcore/as_environment.cpp        2009-04-22 15:17:57 +0000
+++ b/libcore/as_environment.cpp        2009-05-14 11:45:23 +0000
@@ -637,6 +637,7 @@
 #ifdef DEBUG_TARGET_FINDING 
             log_debug(_("Path is %s, returning whatever we were up to"), path);
 #endif
+
             return env;
         }
 

=== modified file 'libcore/as_object.cpp'
--- a/libcore/as_object.cpp     2009-04-15 05:33:51 +0000
+++ b/libcore/as_object.cpp     2009-05-14 11:45:23 +0000
@@ -94,6 +94,7 @@
        virtual void set_member(string_table::key /*key*/, const as_value& 
/*val*/,
                string_table::key /*nsname*/ = 0)
        {
+               log_debug("set_member.");
                // can't assign to super
                IF_VERBOSE_ASCODING_ERRORS(
                log_aserror("Can't set members on the 'super' object");
@@ -556,6 +557,31 @@
        _members.reserveSlot(name, nsId, slotId);
 }
 
+bool
+as_object::get_member_slot(int order, as_value* val){
+       
+       const Property* prop = _members.getPropertyByOrder(order);
+       if(prop){
+               return get_member(prop->getName(), val, prop->getNamespace());
+       }
+       else{
+               return false;
+       }
+}
+
+
+bool
+as_object::set_member_slot(int order, const as_value& val, bool ifFound)
+{
+       const Property* prop = _members.getPropertyByOrder(order);
+       if(prop){
+               return set_member(prop->getName(), val, prop->getNamespace(), 
ifFound);
+       }
+       else{
+               return false;
+       }
+}
+
 // Handles read_only and static properties properly.
 bool
 as_object::set_member(string_table::key key, const as_value& val,

=== modified file 'libcore/as_object.h'
--- a/libcore/as_object.h       2009-04-03 09:48:13 +0000
+++ b/libcore/as_object.h       2009-04-08 11:48:21 +0000
@@ -166,6 +166,8 @@
        Property* findProperty(string_table::key name, string_table::key nsname,
                as_object **owner = NULL);
 
+//     Property* findProperty(
+
        /// \brief
        /// Return a reference to the Virtual Machine that created
        /// this object. 
@@ -1048,6 +1050,40 @@
        ///
        virtual void enumerateNonProperties(as_environment&) const {}
 
+       ///Get a member value at a given slot.
+       //
+       ///This is a wrapper around get_member_default.
+       /// @param order
+       /// The slot index of the property.
+       ///
+       /// @param val
+       /// The as_value to store a found variable's value in.
+       ///
+       /// @return true if a member exists at the given slot, 
+       /// and the member's value is successfully retrieved,
+       /// false otherwise.
+       bool get_member_slot(int order, as_value* val);
+
+       ///Set a member value at a given slot.
+       //
+       ///This is a wrapper around set_member_default.
+       /// @param order
+       ///
+       /// The slot index of the property.
+       /// @param val
+       ///     Value to assign to the named property.
+       ///
+       /// @param ifFound
+       ///     If true, don't create a new member, but only update
+       ///     an existing one.
+       ///
+       /// @return true if the member exists at the given slot, 
+       /// false otherwise.
+       ///     NOTE: the return doesn't tell if the member exists after
+       ///           the call, as watch triggers might have deleted it
+       ///           after setting.
+       ///
+       bool set_member_slot(int order, const as_value& val, bool ifFound = 
false);
 
 #ifdef GNASH_USE_GC
        /// Mark all reachable resources, override from GcResource.

=== modified file 'libcore/asobj/ClassHierarchy.cpp'
--- a/libcore/asobj/ClassHierarchy.cpp  2009-03-19 19:16:28 +0000
+++ b/libcore/asobj/ClassHierarchy.cpp  2009-05-14 11:06:24 +0000
@@ -31,6 +31,7 @@
 #include "Date_as.h"
 #include "Error_as.h"
 #include "Global.h"
+#include "int_as.h"
 #include "String_as.h"
 #include "Key_as.h"
 #include "LoadVars_as.h"
@@ -64,10 +65,12 @@
 #include "XML_as.h"
 #include "XMLNode_as.h"
 #include "asClass.h"
+#include "flash/text/TextFieldAutoSize_as.h"
 
 namespace gnash {
 
-namespace { // anonymous namespace
+// anonymous namespace
+namespace { 
 
 void
 addVisibilityFlag(int& flags, int version)
@@ -241,7 +244,7 @@
 bool
 ClassHierarchy::declareClass(extensionClass& c)
 {
-       if (mExtension == NULL) return false; 
+       if (!mExtension) return false; 
 
        mGlobalNamespace->stubPrototype(c.name);
        mGlobalNamespace->getClass(c.name)->setDeclared();
@@ -293,39 +296,57 @@
        { boolean_class_init, NSV::CLASS_BOOLEAN, NSV::CLASS_OBJECT, NS_GLOBAL, 
5 },
        { Button::init, NSV::CLASS_BUTTON, NSV::CLASS_OBJECT, NS_GLOBAL, 5 },
        { color_class_init, NSV::CLASS_COLOR, NSV::CLASS_OBJECT, NS_GLOBAL, 5 },
-       { selection_class_init, NSV::CLASS_SELECTION, NSV::CLASS_OBJECT, 
NS_UNKNOWN, 5 },
-       { Sound_as::init, NSV::CLASS_SOUND, NSV::CLASS_OBJECT, 
NSV::NS_FLASH_MEDIA, 5 },
-       { xmlsocket_class_init, NSV::CLASS_X_M_L_SOCKET, NSV::CLASS_OBJECT, 
NSV::NS_FLASH_NET, 5 },
+       { selection_class_init, NSV::CLASS_SELECTION, NSV::CLASS_OBJECT,
+        NS_UNKNOWN, 5 },
+       { Sound_as::init, NSV::CLASS_SOUND, NSV::CLASS_OBJECT,
+        NSV::NS_FLASH_MEDIA, 5 },
+       { xmlsocket_class_init, NSV::CLASS_X_M_L_SOCKET, NSV::CLASS_OBJECT,
+        NSV::NS_FLASH_NET, 5 },
        { Date_as::init, NSV::CLASS_DATE, NSV::CLASS_OBJECT, NS_GLOBAL, 5 },
        { XML_as::init, NSV::CLASS_X_M_L, NSV::CLASS_OBJECT, NS_GLOBAL, 5 },
        { XMLNode_as::init, NSV::CLASS_X_M_L_NODE, NSV::CLASS_OBJECT,
         NSV::NS_FLASH_XML, 5 },
-       { Mouse_as::init, NSV::CLASS_MOUSE, NSV::CLASS_OBJECT, 
NSV::NS_FLASH_UI, 5 },
+       { Mouse_as::init, NSV::CLASS_MOUSE, NSV::CLASS_OBJECT, NSV::NS_FLASH_UI,
+        5 },
        { number_class_init, NSV::CLASS_NUMBER, NSV::CLASS_OBJECT, NS_GLOBAL, 5 
},
-       { TextFormat_as::init, NSV::CLASS_TEXT_FORMAT, NSV::CLASS_OBJECT, 
NS_GLOBAL, 5 },
+       { TextFormat_as::init, NSV::CLASS_TEXT_FORMAT, NSV::CLASS_OBJECT,
+        NS_GLOBAL, 5 },
        { key_class_init, NSV::CLASS_KEY, NSV::CLASS_OBJECT, NS_GLOBAL, 5 },
-       { AsBroadcaster::init, NSV::CLASS_AS_BROADCASTER, NSV::CLASS_OBJECT, 
NS_GLOBAL, 5 },
+       { AsBroadcaster::init, NSV::CLASS_AS_BROADCASTER, NSV::CLASS_OBJECT,
+        NS_GLOBAL, 5 },
        { TextSnapshot_as::init, NSV::CLASS_TEXT_SNAPSHOT, NSV::CLASS_OBJECT,
         NSV::NS_FLASH_TEXT, 5 },
-       { video_class_init, NSV::CLASS_VIDEO, NSV::CLASS_OBJECT, 
NSV::NS_FLASH_MEDIA, 6 },
-       { camera_class_init, NSV::CLASS_CAMERA, NSV::CLASS_OBJECT, 
NSV::NS_FLASH_UI, 6 },
-       { microphone_class_init, NSV::CLASS_MICROPHONE, NSV::CLASS_OBJECT, 
NSV::NS_FLASH_UI, 6 },
-       { sharedobject_class_init, NSV::CLASS_SHARED_OBJECT, NSV::CLASS_OBJECT, 
NSV::NS_FLASH_NET, 5 },
-       { loadvars_class_init, NSV::CLASS_LOAD_VARS, NSV::CLASS_OBJECT, 
NS_GLOBAL, 6 },
-       { LocalConnection_as::init, NSV::CLASS_LOCAL_CONNECTION, 
NSV::CLASS_OBJECT, NS_GLOBAL, 6 },
-       { customactions_class_init, NSV::CLASS_CUSTOM_ACTIONS, 
NSV::CLASS_OBJECT, NSV::NS_ADOBE_UTILS, 6 },
+       { video_class_init, NSV::CLASS_VIDEO, NSV::CLASS_OBJECT,
+        NSV::NS_FLASH_MEDIA, 6 },
+       { camera_class_init, NSV::CLASS_CAMERA, NSV::CLASS_OBJECT,
+        NSV::NS_FLASH_UI, 6 },
+       { microphone_class_init, NSV::CLASS_MICROPHONE, NSV::CLASS_OBJECT,
+        NSV::NS_FLASH_UI, 6 },
+       { sharedobject_class_init, NSV::CLASS_SHARED_OBJECT, NSV::CLASS_OBJECT,
+        NSV::NS_FLASH_NET, 5 },
+       { loadvars_class_init, NSV::CLASS_LOAD_VARS, NSV::CLASS_OBJECT, 
NS_GLOBAL,
+        6 },
+       { LocalConnection_as::init, NSV::CLASS_LOCAL_CONNECTION, 
NSV::CLASS_OBJECT,
+        NS_GLOBAL, 6 },
+       { customactions_class_init, NSV::CLASS_CUSTOM_ACTIONS, 
NSV::CLASS_OBJECT,
+        NSV::NS_ADOBE_UTILS, 6 },
        { NetConnection_as::init, NSV::CLASS_NET_CONNECTION, NSV::CLASS_OBJECT,
         NSV::NS_FLASH_NET, 6 },
        { NetStream_as::init, NSV::CLASS_NET_STREAM, NSV::CLASS_OBJECT,
         NSV::NS_FLASH_NET, 6 },
-       { contextmenu_class_init, NSV::CLASS_CONTEXT_MENU, NSV::CLASS_OBJECT, 
NSV::NS_FLASH_UI, 7 },
-       { moviecliploader_class_init, NSV::CLASS_MOVIE_CLIP_LOADER, 
NSV::CLASS_OBJECT, NS_GLOBAL, 7 },
+       { contextmenu_class_init, NSV::CLASS_CONTEXT_MENU, NSV::CLASS_OBJECT,
+        NSV::NS_FLASH_UI, 7 },
+       { moviecliploader_class_init, NSV::CLASS_MOVIE_CLIP_LOADER,
+        NSV::CLASS_OBJECT, NS_GLOBAL, 7 },
        { Error_class_init, NSV::CLASS_ERROR, NSV::CLASS_OBJECT, NS_GLOBAL, 5 },
-       { Accessibility_class_init, NSV::CLASS_ACCESSIBILITY, 
NSV::CLASS_OBJECT, 
-        NS_GLOBAL, 5 }
-// These classes are all implicitly constructed; that is, it is not
-// necessary for the class name to be used to construct the class, so
-// they must always be available.
+       { Accessibility_class_init, NSV::CLASS_ACCESSIBILITY, NSV::CLASS_OBJECT,
+        NS_GLOBAL, 5 },
+       { int_class_init, NSV::CLASS_INT, NSV::CLASS_OBJECT, NS_GLOBAL, 9 },
+       { TextFieldAutoSize_class_init, NSV::CLASS_TEXTFIELDAUTOSIZE,
+        NSV::CLASS_OBJECT, NS_GLOBAL, 9 }
+
+// These classes are all implicitly constructed; that is, it is not necessary 
for
+// the class name to be used to construct the class, so they must always be 
available.
 //     { object_class_init, NSV::CLASS_OBJECT, 0, NS_GLOBAL, 5 }
 //     { function_class_init, NSV::CLASS_FUNCTION, NSV::CLASS_OBJECT,
 //     NS_GLOBAL, 6 }

=== modified file 'libcore/asobj/ClassHierarchy.h'
--- a/libcore/asobj/ClassHierarchy.h    2009-02-25 22:33:03 +0000
+++ b/libcore/asobj/ClassHierarchy.h    2009-05-14 11:23:13 +0000
@@ -19,22 +19,28 @@
 #ifndef GNASH_CLASS_HIERARCHY_H
 #define GNASH_CLASS_HIERARCHY_H
 
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
+#include "as_object.h"
+#include "SafeStack.h"
+#include "asClass.h"
+#include "asNamespace.h"
+
+#ifdef ENABLE_AVM2
+# include "asBoundValues.h"
+# include "asException.h"
+# include "asMethod.h"
+#endif
+
 #include <list>
 #include <vector>
 #include <ostream>
 
-#include "as_object.h"
-#include "asClass.h"
-#include "SafeStack.h"
-
 namespace gnash {
 
 class Extension;
-class asClass;
-class asMethod;
-class asException;
-class asBoundValue;
-class asBoundAccessor;
 class as_object;
 
 /// Register all of the ActionScript classes, with their dependencies.
@@ -129,6 +135,7 @@
        ///
        void massDeclare();
 
+
        /// The global namespace
        ///
        /// Get the global namespace.  This is not the Global object -- it only
@@ -143,7 +150,7 @@
        ///
        /// @return 
        /// The namespace with the given uri or NULL if it doesn't exist.
-       asNamespace *findNamespace(string_table::key uri)
+       asNamespace* findNamespace(string_table::key uri)
        {
                namespacesContainer::iterator i;
                if (mNamespaces.empty())
@@ -175,12 +182,42 @@
        asNamespace* addNamespace(string_table::key uri)
        {
                asNamespace *n = findNamespace(uri);
-               if (n)
-                       return n;
+               if (n) return n;
                // The set should create it automatically here. TODO: Make sure
                mNamespaces[uri].setURI(uri);
                return &mNamespaces[uri];
        }
+       
+    /// Create a new asClass object for use.
+       asClass* newClass() {
+        mClassMemory.grow(1);
+        return &mClassMemory.top(0);
+    }
+
+#ifdef ENABLE_AVM2
+
+       asException* newException() {
+        mExceptionMemory.grow(1);
+        return &mExceptionMemory.top(0);
+    }
+
+       /// Create a new asMethod object for use.
+       asMethod* newMethod() {
+        mMethodMemory.grow(1);
+        return &mMethodMemory.top(0);
+    }
+
+       asBoundValue* newBoundValue() {
+        mBoundValueMemory.grow(1);
+        return &mBoundValueMemory.top(0);
+    }
+
+       asBoundAccessor* newBoundAccessor() {
+        mBoundAccessorMemory.grow(1);
+        return &mBoundAccessorMemory.top(0);
+    }
+
+#endif
 
        /// Set the extension object, since it wasn't set on construction.
        void setExtension(Extension *e) { mExtension = e; }
@@ -191,56 +228,52 @@
        /// Mark objects for garbage collector.
        void markReachableResources() const;
 
-       /// Create a new asClass object for use.
-       asClass *newClass()
-       { mClassMemory.grow(1); return &mClassMemory.top(0); }
-
-       asException *newException()
-       { mExceptionMemory.grow(1); return &mExceptionMemory.top(0); }
-
-       /// Create a new asMethod object for use.
-       asMethod *newMethod()
-       { mMethodMemory.grow(1); return &mMethodMemory.top(0); }
-
-       asBoundValue *newBoundValue()
-       { mBoundValueMemory.grow(1); return &mBoundValueMemory.top(0); }
-
-       asBoundAccessor *newBoundAccessor()
-       { mBoundAccessorMemory.grow(1); return &mBoundAccessorMemory.top(0); }
-
        /// \brief
        /// Construct the declaration object. Later set the global and
        /// extension objects using setGlobal and setExtension
-       ClassHierarchy() :
-               mGlobal(NULL), mGlobalNamespace(NULL), mExtension(NULL),
+       ClassHierarchy()
+        :
+               mGlobal(0),
+        mExtension(0) ,
                mAnonNamespaces(),
-               mClassMemory(), mExceptionMemory(),
+        mGlobalNamespace(anonNamespace(0)),
+               mClassMemory()
+#ifdef ENABLE_AVM2
+        ,
+        mExceptionMemory(),
                mMethodMemory(),
-               mBoundValueMemory(), mBoundAccessorMemory()
-       { mGlobalNamespace = anonNamespace(0); }
+               mBoundValueMemory(),
+        mBoundAccessorMemory()
+#endif
+       {}
 
        /// \brief
        /// Delete our private namespaces.
        ~ClassHierarchy();
 
 private:
-       as_object *mGlobal;
-       asNamespace *mGlobalNamespace;
-       Extension *mExtension;
+       as_object* mGlobal;
+       Extension* mExtension;
 
        typedef std::map<string_table::key, asNamespace> namespacesContainer;
        namespacesContainer mNamespaces;
        SafeStack<asNamespace> mAnonNamespaces;
+       asNamespace* mGlobalNamespace;
        SafeStack<asClass> mClassMemory;
+
+#ifdef ENABLE_AVM2
        SafeStack<asException> mExceptionMemory;
        SafeStack<asMethod> mMethodMemory;
        SafeStack<asBoundValue> mBoundValueMemory;
        SafeStack<asBoundAccessor> mBoundAccessorMemory;
+#endif
 };
 
-std::ostream& operator << (std::ostream& os, const 
ClassHierarchy::nativeClass& c);
-std::ostream& operator << (std::ostream& os, const 
ClassHierarchy::extensionClass& c);
+std::ostream&
+operator<< (std::ostream& os, const ClassHierarchy::nativeClass& c);
+std::ostream&
+operator<< (std::ostream& os, const ClassHierarchy::extensionClass& c);
 
-} /* namespace gnash */
-#endif /* GNASH_CLASS_HIERARCHY_H */
+} 
+#endif 
 

=== modified file 'libcore/asobj/Global.cpp'
--- a/libcore/asobj/Global.cpp  2009-04-28 07:30:36 +0000
+++ b/libcore/asobj/Global.cpp  2009-05-14 15:02:29 +0000
@@ -91,7 +91,6 @@
 
 namespace gnash {
 
-// Forward declarations
 namespace {
     as_value global_trace(const fn_call& fn);
     as_value global_isNaN(const fn_call& fn);
@@ -111,6 +110,8 @@
     as_value global_clearTimeout(const fn_call& fn);
     as_value global_clearInterval(const fn_call& fn);
     as_value global_setInterval(const fn_call& fn);
+    as_value global_addChild(const fn_call& fn);
+    as_value global_addChildAt(const fn_call& fn);
     
     void registerNatives(as_object& global);
 }
@@ -168,6 +169,8 @@
         default:
             // Version 10 or above reported
         case 9:
+            init_member("addChild", new builtin_function(global_addChild));
+            init_member("addChildAt", new builtin_function(global_addChildAt));
         case 8:
 
         case 7:
@@ -592,6 +595,115 @@
 }
 
 as_value
+global_addChild(const fn_call& fn)
+{
+    boost::intrusive_ptr<as_object> ptr = ensureType<as_object>(fn.this_ptr);
+
+    as_value ret;
+
+    if ( ! fn.nargs )
+    {
+        IF_VERBOSE_ASCODING_ERRORS(
+        log_aserror("_global.addChild(): %s", _("missing arguments"));
+        );
+        return ret;
+    }
+
+    if ( fn.nargs > 1 )
+    {
+        IF_VERBOSE_ASCODING_ERRORS(
+        std::stringstream ss; fn.dump_args(ss);
+        log_aserror("_global.addChild(%s): %s", ss.str(), _("ignoring args 
after the first"));
+        );
+    }
+
+    as_object* objArg = fn.arg(0).to_object().get();
+    if ( ! objArg )
+    {
+        IF_VERBOSE_ASCODING_ERRORS(
+        std::stringstream ss; fn.dump_args(ss);
+        log_aserror("_global.addChild(%s): first arg doesn't cast to an 
object", ss.str());
+        );
+        return ret;
+    }
+
+    DisplayObject* ch = objArg->toDisplayObject();
+    if ( ! ch )
+    {
+        IF_VERBOSE_ASCODING_ERRORS(
+        std::stringstream ss; fn.dump_args(ss);
+        log_aserror("_global.addChild(%s): first arg doesn't cast to a "
+            "DisplayObject", ss.str());
+        );
+        return ret;
+    }
+
+    VM& vm = ptr->getVM();
+    movie_root& stage = vm.getRoot();
+
+    stage.addChild(ch);
+
+    return as_value(ch);
+}
+
+as_value
+global_addChildAt(const fn_call& fn)
+{
+    boost::intrusive_ptr<as_object> ptr = ensureType<as_object>(fn.this_ptr);
+
+    as_value ret;
+
+    if ( fn.nargs < 2 )
+    {
+        IF_VERBOSE_ASCODING_ERRORS(
+        log_aserror("_global.addChildAt(): %s", _("missing arguments"));
+        );
+        return ret;
+    }
+
+    if ( fn.nargs > 2 )
+    {
+        IF_VERBOSE_ASCODING_ERRORS(
+        std::stringstream ss; fn.dump_args(ss);
+        log_aserror("_global.addChildAt(%s): %s", ss.str(), _("ignoring args 
after the second"));
+        );
+    }
+
+    as_object* objArg = fn.arg(0).to_object().get();
+    if ( ! objArg )
+    {
+        IF_VERBOSE_ASCODING_ERRORS(
+        std::stringstream ss; fn.dump_args(ss);
+        log_aserror("_global.addChildAt(%s): first arg doesn't cast to an 
object", ss.str());
+        );
+        return ret;
+    }
+
+    DisplayObject* ch = objArg->toDisplayObject();
+    if ( ! ch )
+    {
+        IF_VERBOSE_ASCODING_ERRORS(
+        std::stringstream ss; fn.dump_args(ss);
+        log_aserror("_global.addChildAt(%s): first arg doesn't cast to a "
+            "DisplayObject", ss.str());
+        );
+        return ret;
+    }
+
+    int depth = fn.arg(1).to_number();
+
+    VM& vm = ptr->getVM();
+    movie_root& stage = vm.getRoot();
+
+    std::stringstream ss; fn.dump_args(ss);
+    log_debug("TESTING: _global.addChildAt(%s)", ss.str());
+    
+    stage.addChildAt(ch, depth);
+
+    return as_value(ch);
+}
+
+as_value
 global_setInterval(const fn_call& fn)
 {
     
@@ -749,7 +861,6 @@
 }
 
 
-
 void
 registerNatives(as_object& global)
 {

=== modified file 'libcore/asobj/Makefile.am'
--- a/libcore/asobj/Makefile.am 2009-04-28 15:22:32 +0000
+++ b/libcore/asobj/Makefile.am 2009-05-14 15:02:29 +0000
@@ -57,6 +57,7 @@
        Date_as.cpp \
        Error_as.cpp \
        Global.cpp \
+       int_as.cpp \
        Key_as.cpp      \
        LoadVars_as.cpp \
        LocalConnection_as.cpp\
@@ -106,6 +107,7 @@
        flash/net_pkg.cpp \
        flash_pkg.cpp \
        flash/text_pkg.cpp \
+       flash/text/TextFieldAutoSize_as.cpp \
        flash/text/TextRenderer_as.cpp \
        LoadableObject.cpp \
        $(NULL)
@@ -123,6 +125,8 @@
        Error_as.h      \
        Math_as.h       \
        Global.h\
+       int_as.h \
+       Key_as.h \
        LoadVars_as.h \
        LocalConnection_as.h\
        Microphone.h \
@@ -170,6 +174,7 @@
        flash/net_pkg.h \
        flash_pkg.h \
        flash/text_pkg.h \
+       flash/text/TextFieldAutoSize_as.h \
        flash/text/TextRenderer_as.h \
        LoadableObject.h \
        $(NULL)

=== modified file 'libcore/asobj/flash/display_pkg.cpp'
--- a/libcore/asobj/flash/display_pkg.cpp       2009-02-25 22:33:03 +0000
+++ b/libcore/asobj/flash/display_pkg.cpp       2009-05-14 11:06:24 +0000
@@ -24,6 +24,8 @@
 #include "VM.h"
 
 #include "flash/display/BitmapData_as.h"
+#include "Stage_as.h"
+#include "MovieClip.h"
 
 namespace gnash {
 
@@ -35,6 +37,8 @@
        as_object* pkg = new as_object(getObjectInterface());
 
        BitmapData_class_init(*pkg);
+       stage_class_init(*pkg);
+       movieclip_class_init(*pkg);
 
        return pkg;
 }
@@ -43,7 +47,8 @@
 flash_display_package_init(as_object& where)
 {
        string_table& st = where.getVM().getStringTable();
-       where.init_destructive_property(st.find("display"), 
get_flash_display_package);
+       where.init_destructive_property(st.find("display"),
+                       get_flash_display_package);
 }
 
 

=== added file 'libcore/asobj/flash/text/TextFieldAutoSize_as.cpp'
--- a/libcore/asobj/flash/text/TextFieldAutoSize_as.cpp 1970-01-01 00:00:00 
+0000
+++ b/libcore/asobj/flash/text/TextFieldAutoSize_as.cpp 2009-05-14 12:05:01 
+0000
@@ -0,0 +1,81 @@
+// EventDispatcher.cpp:  Implementation of ActionScript TextFieldAutoSize 
class, for Gnash.
+// 
+//   Copyright (C) 2005, 2006, 2007, 2008 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
+//
+
+#include "smart_ptr.h"
+#include "fn_call.h"
+#include "as_object.h" // for inheritance
+#include "builtin_function.h" // need builtin_function
+#include "Object.h"
+
+#include "log.h"
+
+#include <string>
+#include <sstream>
+
+namespace gnash {
+void attachTextFieldAutoSizeInterface(as_object& o);
+
+class text_field_auto_size_as_object : public as_object
+{
+
+public:
+
+       text_field_auto_size_as_object()
+               :
+               as_object()
+       {
+       }
+
+};
+
+as_object*
+getTextFieldAutoSizeInterface()
+{
+       static boost::intrusive_ptr<as_object> o;
+       if ( ! o )
+       {
+               o = new as_object(getObjectInterface());
+               attachTextFieldAutoSizeInterface(*o);
+       }
+       return o.get();
+}
+
+// extern
+void TextFieldAutoSize_class_init(as_object& where)
+{
+       where.init_member("TextFieldAutoSize", getTextFieldAutoSizeInterface());
+}
+
+std::auto_ptr<as_object>
+init_text_field_auto_size_instance()
+{
+       return std::auto_ptr<as_object>(new text_field_auto_size_as_object);
+}
+
+void
+attachTextFieldAutoSizeInterface(as_object& o)
+{
+       o.init_member("CENTER", as_value("center"));
+       o.init_member("LEFT", as_value("left"));
+       o.init_member("RIGHT", as_value("right"));
+       o.init_member("NONE", as_value("none"));
+}
+
+
+}

=== added file 'libcore/asobj/flash/text/TextFieldAutoSize_as.h'
--- a/libcore/asobj/flash/text/TextFieldAutoSize_as.h   1970-01-01 00:00:00 
+0000
+++ b/libcore/asobj/flash/text/TextFieldAutoSize_as.h   2008-09-06 15:57:32 
+0000
@@ -0,0 +1,44 @@
+// 
+//   Copyright (C) 2005, 2006, 2007, 2008 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
+
+// 
+//
+//
+
+// Implementation for ActionScript TextFieldAutoSize object.
+
+#ifndef GNASH_TEXTFIELDAUTOSIZE_H
+#define GNASH_TEXTFIELDAUTOSIZE_H
+
+#include <memory> // for auto_ptr
+
+namespace gnash {
+
+class as_object;
+
+/// Initialize the TextFieldAutoSize Class
+void TextFieldAutoSize_class_init(as_object& where);
+
+/// Return a TextFieldAutoSize instance
+std::auto_ptr<as_object> init_text_field_auto_size_instance();
+
+as_object* getTextFieldAutoSizeInterface();
+
+
+}
+
+#endif // GNASH_INT_AS_H

=== modified file 'libcore/asobj/flash/text_pkg.cpp'
--- a/libcore/asobj/flash/text_pkg.cpp  2009-02-25 22:33:03 +0000
+++ b/libcore/asobj/flash/text_pkg.cpp  2009-03-04 20:30:04 +0000
@@ -24,6 +24,8 @@
 #include "VM.h"
 
 #include "flash/text/TextRenderer_as.h"
+#include "flash/text/TextFieldAutoSize_as.h"
+#include "TextField.h"
 
 namespace gnash {
 
@@ -35,6 +37,8 @@
        as_object* pkg = new as_object(getObjectInterface());
 
        TextRenderer_class_init(*pkg);
+       TextFieldAutoSize_class_init(*pkg);
+       textfield_class_init(*pkg);
 
        return pkg;
 }

=== modified file 'libcore/asobj/flash_pkg.cpp'
--- a/libcore/asobj/flash_pkg.cpp       2009-02-25 22:33:03 +0000
+++ b/libcore/asobj/flash_pkg.cpp       2009-05-14 12:34:16 +0000
@@ -46,7 +46,6 @@
        flash_geom_package_init(*pkg);
        flash_net_package_init(*pkg);
        flash_text_package_init(*pkg);
-
        return pkg;
 }
 

=== added file 'libcore/asobj/int_as.cpp'
--- a/libcore/asobj/int_as.cpp  1970-01-01 00:00:00 +0000
+++ b/libcore/asobj/int_as.cpp  2008-08-19 16:33:48 +0000
@@ -0,0 +1,82 @@
+// EventDispatcher.cpp:  Implementation of ActionScript int class, for Gnash.
+// 
+//   Copyright (C) 2005, 2006, 2007, 2008 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
+//
+
+#include "smart_ptr.h"
+#include "fn_call.h"
+#include "as_object.h" // for inheritance
+#include "builtin_function.h" // need builtin_function
+#include "Object.h"
+
+#include "log.h"
+
+#include <string>
+#include <sstream>
+
+namespace gnash {
+class int_as_object : public as_object
+{
+
+public:
+
+       int_as_object()
+               :
+               as_object()
+       {
+       }
+
+};
+
+static as_value
+int_ctor(const fn_call& fn)
+{
+       boost::intrusive_ptr<as_object> obj = new int_as_object();
+       
+       return as_value(obj.get()); // will keep alive
+}
+
+as_object*
+getintInterface()
+{
+       static boost::intrusive_ptr<as_object> o;
+       if ( ! o )
+       {
+               o = new as_object(getObjectInterface());
+       }
+       return o.get();
+}
+
+// extern (used by Global.cpp)
+void int_class_init(as_object& global)
+{
+    static boost::intrusive_ptr<builtin_function> cl;
+
+       cl=new builtin_function(&int_ctor, getintInterface());
+
+       // Register _global.DisplayObject
+       global.init_member("int", cl.get());
+}
+
+std::auto_ptr<as_object>
+init_int_instance()
+{
+       return std::auto_ptr<as_object>(new int_as_object);
+}
+
+
+}
\ No newline at end of file

=== added file 'libcore/asobj/int_as.h'
--- a/libcore/asobj/int_as.h    1970-01-01 00:00:00 +0000
+++ b/libcore/asobj/int_as.h    2008-08-19 16:33:48 +0000
@@ -0,0 +1,44 @@
+// 
+//   Copyright (C) 2005, 2006, 2007, 2008 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
+
+// 
+//
+//
+
+// Implementation for ActionScript int object.
+
+#ifndef GNASH_INT_AS_H
+#define GNASH_INT_AS_H
+
+#include <memory> // for auto_ptr
+
+namespace gnash {
+
+class as_object;
+
+/// Initialize the global int class
+void int_class_init(as_object& global);
+
+/// Return an int instance
+std::auto_ptr<as_object> init_int_instance();
+
+as_object* getintInterface();
+
+
+}
+
+#endif // GNASH_INT_AS_H

=== modified file 'libcore/impl.cpp'
--- a/libcore/impl.cpp  2009-04-09 12:45:20 +0000
+++ b/libcore/impl.cpp  2009-05-14 12:34:16 +0000
@@ -17,6 +17,9 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
+#ifdef HAVE_CONFIG_H
+# include "gnashconfig.h"
+#endif
 
 #include "smart_ptr.h" // GNASH_USE_GC
 #include "IOChannel.h"
@@ -61,6 +64,11 @@
 #include "GC.h"
 #endif
 
+#ifdef ENABLE_AVM2
+# include "SymbolClassTag.h"
+# include "DoABCTag.h"
+#endif
+
 #include <string>
 #include <map>
 #include <memory> // for auto_ptr
@@ -209,34 +217,50 @@
     // TODO: Fix this, but probably not critical.
     register_tag_loader(SWF::SETTABINDEX, fixme_loader); //66 
 
-    // TODO: Alexis reference says these are 83, 84. The 67,68 comes from 
Tamarin.
-    // Figure out which one is correct (possibly both are).
-    register_tag_loader(SWF::DEFINESHAPE4_, DefineShapeTag::loader); // 67
+    // TODO: Alexis reference says these are 83, 84. The 67, 68 comes from
+    // Tamarin. Figure out which one is correct (possibly both are).
+    // 67
+    register_tag_loader(SWF::DEFINESHAPE4_, DefineShapeTag::loader);
     // 68
     register_tag_loader(SWF::DEFINEMORPHSHAPE2_, DefineMorphShapeTag::loader);
     // 69
     register_tag_loader(SWF::FILEATTRIBUTES, file_attributes_loader);
-    register_tag_loader(SWF::PLACEOBJECT3, PlaceObject2Tag::loader); // 70
-    register_tag_loader(SWF::IMPORTASSETS2, import_loader); // 71
-
-    register_tag_loader(SWF::DOABC, abc_loader); // 72 -- AS3 codeblock.
-    register_tag_loader(SWF::DEFINEALIGNZONES, 
DefineFontAlignZonesTag::loader); // 73
-
-    register_tag_loader(SWF::CSMTEXTSETTINGS, CSMTextSettingsTag::loader); // 
74
+    // 70
+    register_tag_loader(SWF::PLACEOBJECT3, PlaceObject2Tag::loader);
+    // 71
+    register_tag_loader(SWF::IMPORTASSETS2, import_loader);
+    // 73
+    register_tag_loader(SWF::DEFINEALIGNZONES, 
DefineFontAlignZonesTag::loader);
+    // 74
+    register_tag_loader(SWF::CSMTEXTSETTINGS, CSMTextSettingsTag::loader);
     // 75
     register_tag_loader(SWF::DEFINEFONT3, DefineFontTag::loader);
-    register_tag_loader(SWF::SYMBOLCLASS, fixme_loader); // 76 
-    register_tag_loader(SWF::METADATA, metadata_loader); // 77
-    register_tag_loader(SWF::DEFINESCALINGGRID, fixme_loader); // 78
-    register_tag_loader(SWF::DOABCDEFINE, abc_loader); // 82 -- AS3 codeblock.
-    register_tag_loader(SWF::DEFINESHAPE4, DefineShapeTag::loader); // 83
+    // 77
+    register_tag_loader(SWF::METADATA, metadata_loader);
+    // 78
+    register_tag_loader(SWF::DEFINESCALINGGRID, fixme_loader);
+    // 83
+    register_tag_loader(SWF::DEFINESHAPE4, DefineShapeTag::loader);
     // 84
     register_tag_loader(SWF::DEFINEMORPHSHAPE2, DefineMorphShapeTag::loader);
-    
register_tag_loader(SWF::DEFINESCENEANDFRAMELABELDATA,define_scene_frame_label_loader);
 //86
     // 88
     register_tag_loader(SWF::DEFINEFONTNAME, DefineFontNameTag::loader);
+    // 777
+    register_tag_loader(SWF::REFLEX, reflex_loader);
+    
+    // The following tags are AVM2 only.
 
-    register_tag_loader(SWF::REFLEX, reflex_loader); // 777
+#ifdef ENABLE_AVM2
+    // 72 -- AS3 codeblock.
+    register_tag_loader(SWF::DOABC, DoABCTag::doABCLoader); 
+    // 76
+    register_tag_loader(SWF::SYMBOLCLASS, SymbolClassTag::loader);
+    // 82
+    register_tag_loader(SWF::DOABCDEFINE, DoABCTag::doABCLoader);
+    // 86
+    register_tag_loader(SWF::DEFINESCENEANDFRAMELABELDATA,
+            define_scene_frame_label_loader);
+#endif
 }
 
 // Create a movie_definition from an image format stream

=== modified file 'libcore/namedStrings.cpp'
--- a/libcore/namedStrings.cpp  2009-04-20 13:59:41 +0000
+++ b/libcore/namedStrings.cpp  2009-05-14 11:45:23 +0000
@@ -195,6 +195,13 @@
        string_table::svt( "ContextMenu", NSV::CLASS_CONTEXT_MENU ),
        string_table::svt( "MovieClipLoader", NSV::CLASS_MOVIE_CLIP_LOADER ),
        string_table::svt( "Error", NSV::CLASS_ERROR ),
+       string_table::svt( "EventDispatcher", NSV::CLASS_EVENTDISPATCHER),
+       string_table::svt( "DisplayObject", NSV::CLASS_DISPLAYOBJECT),
+       string_table::svt( "InteractiveObject", NSV::CLASS_INTERACTIVEOBJECT ),
+       string_table::svt( "DisplayObjectContainer", 
NSV::CLASS_DISPLAYOBJECTCONTAINER ),
+       string_table::svt( "Sprite", NSV::CLASS_SPRITE ),
+       string_table::svt( "int", NSV::CLASS_INT ),
+       string_table::svt( "TextFieldAutoSize", NSV::CLASS_TEXTFIELDAUTOSIZE),
        string_table::svt( "flash.display", NSV::NS_FLASH_DISPLAY ),
        string_table::svt( "flash.text", NSV::NS_FLASH_TEXT ),
        string_table::svt( "flash.geom", NSV::NS_FLASH_GEOM ),

=== modified file 'libcore/namedStrings.h'
--- a/libcore/namedStrings.h    2009-04-20 13:59:41 +0000
+++ b/libcore/namedStrings.h    2009-05-14 11:45:23 +0000
@@ -59,8 +59,13 @@
                CLASS_CONTEXT_MENU,
                CLASS_CUSTOM_ACTIONS,
                CLASS_DATE,
+               CLASS_DISPLAYOBJECT,
+               CLASS_DISPLAYOBJECTCONTAINER,
                CLASS_ERROR,
+               CLASS_EVENTDISPATCHER,
                CLASS_FUNCTION,
+               CLASS_INT,
+               CLASS_INTERACTIVEOBJECT,
                CLASS_KEY,
                CLASS_LOAD_VARS,
                CLASS_LOCAL_CONNECTION,
@@ -76,6 +81,7 @@
                CLASS_SELECTION,
                CLASS_SHARED_OBJECT,
                CLASS_SOUND,
+               CLASS_SPRITE,
                CLASS_STAGE,
                PROP_iSTAGE = CLASS_STAGE,
                CLASS_STRING,
@@ -83,6 +89,7 @@
                CLASS_TEXT_FIELD,
                CLASS_TEXT_FORMAT,
                CLASS_TEXT_SNAPSHOT,
+               CLASS_TEXTFIELDAUTOSIZE,
                CLASS_VIDEO,
                CLASS_X_M_L,
                CLASS_X_M_L_NODE,

=== modified file 'libcore/parser/Makefile.am'
--- a/libcore/parser/Makefile.am        2009-04-28 15:22:32 +0000
+++ b/libcore/parser/Makefile.am        2009-05-14 15:02:29 +0000
@@ -39,28 +39,35 @@
        -I$(top_srcdir)/libamf \
        $(GLIB_CFLAGS) \
        $(PTHREAD_CFLAGS) \
-        $(BOOST_CFLAGS) \
+       $(BOOST_CFLAGS) \
        $(FREETYPE2_CFLAGS) \
        $(NULL)
 
 libgnashparser_la_SOURCES = \
-       abc_block.cpp \
        action_buffer.cpp \
        BitmapMovieDefinition.cpp \
        SWFMovieDefinition.cpp \
        sound_definition.cpp \
        sprite_definition.cpp
 
+if ENABLE_AVM2
+libgnashparser_la_SOURCES += \
+       abc_block.cpp
+endif
+
 noinst_HEADERS = \
-       abc_block.h \
        action_buffer.h \
        BitmapMovieDefinition.h \
        movie_definition.h \
        SWFMovieDefinition.h \
-       Namespace.h \
        sound_definition.h \
        sprite_definition.h
 
+if ENABLE_AVM2
+noinst_HEADERS += \
+       abc_block.h
+endif
+
 EXTENSIONS_API = \
        movie_definition.h \
        $(NULL)

=== removed file 'libcore/parser/Namespace.h'
--- a/libcore/parser/Namespace.h        2009-04-03 09:18:40 +0000
+++ b/libcore/parser/Namespace.h        1970-01-01 00:00:00 +0000
@@ -1,192 +0,0 @@
-// 
-//   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
-
-#ifndef GNASH_NAMESPACE_H
-#define GNASH_NAMESPACE_H
-
-#ifdef HAVE_CONFIG_H
-#include "gnashconfig.h"
-#endif
-
-#include <map>
-#include "string_table.h"
-#include "as_object.h"
-
-namespace gnash {
-
-class abc_block;
-
-/// A namespace for ActionScript. Not really functional in AS2.
-///
-/// A namespace contains the prototypes of the objects in its
-/// namespace and nothing else.  In AS3 and up, namespaces are
-/// not semantically nested. (Though they may look nested by their
-/// names, this is not a true nesting as done by the bytecode.)
-class Namespace
-{
-public:
-       friend class abc_block; // Parser for abc_blocks.
-
-       typedef enum
-       {
-               KIND_NORMAL = 0x08,
-               KIND_PRIVATE = 0x05,
-               KIND_PACKAGE = 0x16,
-               KIND_PACKAGE_INTERNAL = 0x17,
-               KIND_PROTECTED = 0x18,
-               KIND_EXPLICIT = 0x19,
-               KIND_STATIC_PROTECTED = 0x1A
-       } kinds;
-
-       /// the Uri is the name of the nameSpace.
-       string_table::key getUri() const { return mUri; }
-
-       /// the Prefix is used for XML, but not otherwise.
-       string_table::key getPrefix() const { return mPrefix; }
-
-       /// \brief
-       /// Create a namespace with the given DisplayObjectistics. Such a 
namespace
-       /// will be empty upon creation.
-       Namespace(string_table::key uri, string_table::key prefix, kinds kind) :
-               mUri(uri), mPrefix(prefix), mKind(kind), mMembers()
-       {/**/}
-
-       /// \brief
-       /// Default constructor so that Namespaces can appear in containers.
-       Namespace() : mUri(0), mPrefix(0), mKind(KIND_NORMAL), mMembers()
-        {/**/}
-
-       /// \brief
-       /// Initialize the namespace with the given values.  Does not clear
-       /// the list of members of the namespace.
-       void initialize(string_table::key uri, string_table::key prefix, kinds 
kind)
-       { mUri = uri; mPrefix = prefix; mKind = kind; }
-
-       /// \brief
-       /// Add a prototype
-       ///
-       /// It is intentional that there is no facility for deleting a 
prototype.
-       /// It doesn't make any sense, and this would cause multiple problems.
-       /// If this functionality is needed, the whole namespace is probably
-       /// invalidated, and the namespace can be discarded.
-       ///
-       /// @param name
-       /// The string table key corresponding to the unqualified name of the
-       /// class.
-       ///
-       /// @param obj
-       /// The object which is the prototype of the named class.
-       ///
-       /// @return
-       /// true if the object is added, false if a different prototype object
-       /// already existed.
-       bool addPrototype(string_table::key name, as_object* obj)
-       {
-               std::map<string_table::key, as_object*>::iterator i =
-                       mMembers.find(name);
-
-               if (i != mMembers.end())
-                       return false;
-
-               mMembers[name] = obj;
-               return true;
-       }
-
-       /// \brief
-       /// Declare a class stub.
-       bool stubPrototype(string_table::key name)
-       { return addPrototype(name, NULL); }
-
-       /// \brief
-       /// Has a prototype been either stubbed or entered?
-       bool prototypeExists(string_table::key name)
-       { return mMembers.find(name) != mMembers.end(); }
-
-       /// \brief
-       /// Set a prototype for an existing stub.
-       ///
-       /// The difference between this and addPrototype is that addPrototype
-       /// will not allow the addition of the object if there is already an
-       /// entry, and this will.
-       ///
-       /// @param name
-       /// The string table key of the unqualified name of the class.
-       ///
-       /// @param obj
-       /// The object which is the prototype of the named class.
-       ///
-       /// @return
-       /// true if the stub existed, otherwise false.
-       /// The prototype is added either way.
-       bool setPrototype(string_table::key name, as_object *obj)
-       {
-               std::map<string_table::key, as_object*>::iterator i =
-                       mMembers.find(name);
-               if (i == mMembers.end())
-               {
-                       mMembers[name] = obj;
-                       return false;
-               }
-               i->second = obj;
-               return true;
-       }
-
-       /// \brief
-       /// Get a prototype
-       ///
-       /// Find a prototype object given its string table key. Returns an empty
-       /// pointer if there is no such object. Because prototypes are unique,
-       /// returns the actual prototype, not a copy. Might return NULL if the
-       /// prototype is stubbed but not set.
-       as_object* getPrototype(string_table::key name)
-       {
-               std::map<string_table::key, as_object*>::iterator i = 
-                       mMembers.find(name);
-
-               if (i == mMembers.end())
-                       return NULL;
-
-               return i->second;
-       }
-
-       /// \brief
-       /// Mark reachable resources for GC.
-       void markReachableResources() const;
-
-private:
-       string_table::key mUri;
-       string_table::key mPrefix;
-       kinds mKind;
-
-       std::map<string_table::key, as_object*> mMembers;
-};
-
-inline void
-Namespace::markReachableResources() const
-{
-       std::map<string_table::key, as_object*>::const_iterator i =
-               mMembers.begin();
-
-       for ( ; i != mMembers.end(); ++i)
-       {
-               if (i->second != NULL)
-                       i->second->setReachable();
-       }
-}
-
-}; /* namespace gnash */
-#endif /* GNASH_NAMESPACE_H */

=== modified file 'libcore/parser/abc_block.cpp'
--- a/libcore/parser/abc_block.cpp      2009-02-25 22:33:03 +0000
+++ b/libcore/parser/abc_block.cpp      2009-05-14 12:54:04 +0000
@@ -6,7 +6,7 @@
 // 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,
+// 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.
@@ -27,66 +27,79 @@
 #include "asClass.h"
 #include "namedStrings.h"
 #include "CodeStream.h"
-
-//#define ERR(x) IF_VERBOSE_MALFORMED_SWF(log_swferror x;);
-#define ERR(x) printf x; fflush(stdout);
+#include "action_buffer.h"
 
 namespace gnash {
 
-namespace abc_parsing {
+namespace abc {
 
 bool
-abc_Trait::finalize(abc_block *pBlock, asClass *pClass, bool do_static)
+Trait::finalize(abc_block *pBlock, asClass *pClass, bool do_static)
 {
-       switch (mKind)
+       log_abc("In finalize class name=%s trait kind=0x%X", 
+            pBlock->_stringPool[pClass->getName()], _kind | 0x0);
+       switch (_kind)
        {
        case KIND_SLOT:
        case KIND_CONST:
        {
                // Validate the type.
                asClass *pType;
-               if (mTypeIndex)
-                       pType = 
pBlock->locateClass(pBlock->mMultinamePool[mTypeIndex]);
-               else
+               if (_typeIndex) {
+                       log_abc("Trait type is %s", 
+                    
pBlock->_stringPool[pBlock->_multinamePool[_typeIndex].getABCName()]);
+                       pType = 
pBlock->locateClass(pBlock->_multinamePool[_typeIndex]);
+               }
+               else {
                        pType = pBlock->mTheObject;
-               if (!pType)
-               {
-                       ERR((_("ABC: Finalizing trait yielded bad type for 
slot.\n")));
+               }
+
+               if (!pType) {
+                       log_error(_("ABC: Finalizing trait yielded bad type for 
slot."));
                        return false;
                }
                // The name has been validated in read.
-               if (mHasValue)
-                       pClass->addValue(mName, mNamespace, mSlotId, pType, 
-                               mValue, mKind == KIND_CONST, do_static);
-               else
-                       pClass->addSlot(mName, mNamespace, mSlotId, pType,
-                               do_static);
+               // TODO: Find a better way to initialize trait values.
+               if (!_hasValue) {
+                       _value = as_value((as_object*)0); // NULL value, right ?
+               }
+               log_abc("Adding property=%s with value=%s slot=%u", 
pBlock->_stringPool[_name], _value.toDebugString(), _slotID);
+               pClass->addValue(_globalName, _namespace, _slotID, pType, 
+                       _value, _kind == KIND_CONST, do_static);
                break;
        }
        case KIND_METHOD:
        {
-               pClass->addMethod(mName, mNamespace, mMethod, do_static);
+               pClass->addMethod(_globalName, _namespace, _method, false);
                break;
        }
        case KIND_GETTER:
        {
-               pClass->addGetter(mName, mNamespace, mMethod, do_static);
+               log_abc("Finalize getter not implemented.");
+               break;
+               pClass->addGetter(_name, _namespace, _method, do_static);
                break;
        }
        case KIND_SETTER:
        {
-               pClass->addSetter(mName, mNamespace, mMethod, do_static);
+               log_abc("Finalize setter not implemented.");
+               break;
+               pClass->addSetter(_name, _namespace, _method, do_static);
                break;
        }
        case KIND_CLASS:
        {
-               pClass->addMemberClass(mName, mNamespace, mSlotId,
-                       pBlock->mClasses[mClassInfoIndex], do_static);
+               log_abc("Finalize class not implemented.");
+               break;
+               pClass->addMemberClass(_name, _namespace, _slotID, 
+                       pBlock->_classes[_classInfoIndex], do_static);
                break;
        }
        case KIND_FUNCTION:
        {
-               pClass->addSlotFunction(mName, mNamespace, mSlotId, mMethod, 
do_static);
+               log_abc("Finalize function not implemented.");
+               break;
+               pClass->addSlotFunction(_name, _namespace, _slotID, _method, 
do_static);
                break;
        }
        default:
@@ -98,56 +111,69 @@
 }
 
 bool
-abc_Trait::finalize_mbody(abc_block *pBlock, asMethod *pMethod)
+Trait::finalize_mbody(abc_block *pBlock, asMethod *pMethod)
 {
-       switch (mKind)
+       log_abc("Finalizing method");
+       switch (_kind)
        {
        case KIND_SLOT:
        case KIND_CONST:
        {
                // Validate the type.
                asClass *pType;
-               if (mTypeIndex)
-                       pType = 
pBlock->locateClass(pBlock->mMultinamePool[mTypeIndex]);
+               if (_typeIndex)
+                       pType = 
pBlock->locateClass(pBlock->_multinamePool[_typeIndex]);
                else
                        pType = pBlock->mTheObject;
                if (!pType)
                {
-                       ERR((_("ABC: Finalizing trait yielded bad type for 
slot.\n")));
+                       log_error(_("ABC: Finalizing trait yielded bad type for 
slot."));
                        return false;
                }
                // The name has been validated in read.
-               if (mHasValue)
-                       pMethod->addValue(mName, mNamespace, mSlotId, pType, 
-                               mValue, mKind == KIND_CONST);
-               else
-                       pMethod->addSlot(mName, mNamespace, mSlotId, pType);
+               // TODO: Find a better way to initialize trait values.
+               if (!_hasValue) {
+                       _value = as_value((as_object*)0); // NULL value, right ?
+               }
+               log_abc("Adding property=%s with value=%s slot=%u", 
pBlock->_stringPool[_name], _value.toDebugString(), _slotID);
+               pMethod->addValue(_globalName, _namespace, _slotID, pType, 
+                       _value, _kind == KIND_CONST);
                break;
        }
        case KIND_METHOD:
        {
-               pMethod->addMethod(mName, mNamespace, mMethod);
+               log_abc("Finalize method trait not implemented.  Returning");
+               break;
+               pMethod->addMethod(_name, _namespace, _method);
                break;
        }
        case KIND_GETTER:
        {
-               pMethod->addGetter(mName, mNamespace, mMethod);
+               log_abc("Finalize getter trait not implemented.  Returning");
+               break;
+               pMethod->addGetter(_name, _namespace, _method);
                break;
        }
        case KIND_SETTER:
        {
-               pMethod->addSetter(mName, mNamespace, mMethod);
+               log_abc("Finalize setter trait not implemented.  Returning");
+               break;
+               pMethod->addSetter(_name, _namespace, _method);
                break;
        }
        case KIND_CLASS:
        {
-               pMethod->addMemberClass(mName, mNamespace, mSlotId,
-                       pBlock->mClasses[mClassInfoIndex]);
+               log_abc("Finalize class trait not implemented.  Returning");
+               break;
+               pMethod->addMemberClass(_name, _namespace, _slotID, 
+                       pBlock->_classes[_classInfoIndex]);
                break;
        }
        case KIND_FUNCTION:
        {
-               pMethod->addSlotFunction(mName, mNamespace, mSlotId, mMethod);
+               log_abc("Finalize function trait not implemented.  Returning");
+               break;
+               pMethod->addSlotFunction(_name, _namespace, _slotID, _method);
                break;
        }
        default:
@@ -160,41 +186,47 @@
 
 /// Read an AS3 'trait'
 bool
-abc_Trait::read(SWFStream* in, abc_block *pBlock)
+Trait::read(SWFStream* in, abc_block *pBlock)
 {
        boost::uint32_t name = in->read_V32();
-       if (name >= pBlock->mMultinamePool.size())
-       {
-               ERR((_("ABC: Bad name for trait.\n")));
-               return false;
-       }
-       if (!pBlock->mMultinamePool[name].isQName())
-       {
-               ERR((_("ABC: Trait name must be fully qualified.\n")));
-               return false;
-       }
-       mName = pBlock->mMultinamePool[name].getName();
-       mNamespace = pBlock->mMultinamePool[name].getNamespace();
+       if (name >= pBlock->_multinamePool.size())
+       {
+               log_error(_("ABC: Bad name for trait."));
+               return false;
+       }
+       if (!pBlock->_multinamePool[name].isQName())
+       {
+               log_error(_("ABC: Trait name must be fully qualified."));
+               return false;
+       }
+       asName multiname = pBlock->_multinamePool[name];
+       _name = pBlock->_multinamePool[name].getABCName();
+       _globalName = pBlock->_multinamePool[name].getGlobalName();
+       _namespace = pBlock->_multinamePool[name].getNamespace();
 
        boost::uint8_t kind = in->read_u8();
-       mKind = static_cast<kinds> (kind & 0x0F);
-
-       switch (mKind)
+       _kind = static_cast<Kind>(kind & 0x0F);
+
+       log_abc("Trait name: %s, Trait kind: 0x%X",
+            pBlock->_stringPool[multiname.getABCName()], kind | 0x0);
+
+    switch (_kind)
        {
        case KIND_SLOT:
        case KIND_CONST:
        {
-               mSlotId = in->read_V32();
-               mTypeIndex = in->read_V32();
+               _slotID = in->read_V32();
+               _typeIndex = in->read_V32();
                boost::uint32_t vindex = in->read_V32();
+               log_abc("Slot ID=%u Type=%s Pool index=%u", _slotID, 
pBlock->_stringPool[pBlock->_multinamePool[_typeIndex].getABCName()], vindex);
                if (vindex)
                {
-                       if (!pBlock->pool_value(vindex, in->read_u8(), mValue))
+                       if (!pBlock->pool_value(vindex, in->read_u8(), _value))
                                return false; // Message done by pool_value
-                       mHasValue = true;
+                       _hasValue = true;
                }
                else
-                       mHasValue = false;
+                       _hasValue = false;
                break;
        }
        case KIND_METHOD:
@@ -204,42 +236,47 @@
                // Ignore the 'disp_id'
                in->skip_V32();
 
-               boost::uint32_t moffset = in->read_V32();
-               if (moffset >= pBlock->mMethods.size())
+               boost::uint32_t offset = in->read_V32();
+               log_abc("Method index=%u", offset);
+               if (offset >= pBlock->_methods.size())
                {
-                       ERR((_("Bad method id in trait.\n")));
+                       log_error(_("Bad method id in trait."));
                        return false;
                }
-               mMethod = pBlock->mMethods[moffset];
+               _method = pBlock->_methods[offset];
                break;
        }
        case KIND_CLASS:
        {
-               mSlotId = in->read_V32();
-               mClassInfoIndex = in->read_V32();
-               if (mClassInfoIndex >= pBlock->mClasses.size())
-               {
-                       ERR((_("Bad Class id in trait.\n")));
+               _slotID = in->read_V32();
+               _classInfoIndex = in->read_V32();
+               log_abc("Slot id: %u Class index: %u Class Name: %s", _slotID, 
+                _classInfoIndex, 
+                pBlock->_stringPool[pBlock->
+                        _classes[_classInfoIndex]->getName()]);
+
+        if (_classInfoIndex >= pBlock->_classes.size()) {
+                       log_error(_("Bad Class id in trait."));
                        return false;
                }
                break;
        }
        case KIND_FUNCTION:
        {
-               mSlotId = in->read_V32();
-               boost::uint32_t moffset = in->read_V32();
-               if (moffset >= pBlock->mMethods.size())
+               _slotID = in->read_V32();
+               boost::uint32_t offset = in->read_V32();
+               if (offset >= pBlock->_methods.size())
                {
-                       ERR((_("Bad method id in trait.\n")));
+                       log_error(_("Bad method id in trait."));
                        return false;
                }
-               mMethod = pBlock->mMethods[moffset];
+               _method = pBlock->_methods[offset];
                break;
        }
        default:
        {
-               ERR((_("ABC: Unknown type of trait.\n")));
-               return false;
+               log_error(_("ABC: Unknown type of trait."));
+//             return false;
        }
        } // end of switch statement
 
@@ -255,35 +292,93 @@
        return true;
 }
 
-} // namespace abc_parsing
-
-using namespace abc_parsing;
-
-void
-abc_block::check_multiname_name(boost::uint32_t name){
-
-       if (name >= mStringPool.size()){
+} // abc
+
+using namespace abc;
+
+abc_block::abc_block()
+    :
+    _stringTable(&VM::get().getStringTable())
+{
+       mCH = VM::get().getClassHierarchy();
+       // TODO: Make this the real 'Object' prototype.
+       mCH->getGlobalNs()->stubPrototype(NSV::CLASS_OBJECT);
+       mTheObject = mCH->getGlobalNs()->getClass(NSV::CLASS_OBJECT);
+}
+
+void
+abc_block::prepare(Machine* mach)
+{
+    std::for_each(_classes.begin(), _classes.end(),
+            std::mem_fun(&asClass::initPrototype));
+
+    std::for_each(_scripts.begin(), _scripts.end(),
+            std::mem_fun(&asClass::initPrototype));
+ 
+    std::for_each(_methods.begin(), _methods.end(),
+            boost::bind(&asMethod::initPrototype, _1, mach));
+
+    std::for_each(_traits.begin(), _traits.end(),
+            boost::bind(&Trait::finalize, _1, this));
+
+    _traits.clear();
+
+}
+
+void
+abc_block::check_multiname_name(boost::uint32_t name)
+{
+
+       if (name >= _stringPool.size()) {
                throw ParserException("ABC: Out of bounds string for 
Multiname.");
        }
 }
 
 void
-abc_block::check_multiname_namespace(boost::uint32_t ns){
-       if (ns >= mNamespacePool.size()){
+abc_block::check_multiname_namespace(boost::uint32_t ns)
+{
+       if (ns >= _namespacePool.size()) {
                throw ParserException("ABC: Out of bounds namespace for 
Multiname.");
        }
 }
 
 void
-abc_block::check_multiname_namespaceset(boost::uint32_t nsset){
-       if (!nsset){
+abc_block::check_multiname_namespaceset(boost::uint32_t nsset)
+{
+       if (!nsset)
+    {
                throw ParserException("ABC: 0 selection for namespace set is 
invalid.");
        }
-       if (nsset >= mNamespaceSetPool.size()){
+       if (nsset >= _namespaceSetPool.size())
+    {
                throw ParserException("ABC: Out of bounds namespace set for 
Multiname.");
        }
 }
 
+void
+abc_block::setMultinameNames(asName *n, string_table::key ABCName)
+{
+       
+       n->setABCName(ABCName);
+       std::string name = _stringPool[ABCName];
+       string_table::key global_key = _stringTable->find(name, true);
+       log_abc("Global key %u", global_key);
+       n->setGlobalName(global_key);
+       log_abc("Multiname: %s ABCName set to %u, global name set to %u",
+            name, n->getABCName(), n->getGlobalName());
+}
+
+void
+abc_block::setNamespaceURI(asNamespace *ns, string_table::key ABCName)
+{
+       
+       ns->setAbcURI(ABCName);
+       std::string name = _stringPool[ABCName];
+       string_table::key global_key = _stringTable->find(name, false);
+       ns->setURI(global_key);
+       log_abc("Namespace: %s AbcURI=%u URI=%u.", name, ABCName, global_key);
+}
+
 asClass *
 abc_block::locateClass(asName &m)
 {
@@ -291,37 +386,37 @@
 
        if (m.getNamespace())
        {
-               found = m.getNamespace()->getClass(m.getName());
+               found = m.getNamespace()->getClass(m.getABCName());
                if (found)
                        return found;
        }
-       if (m.mNamespaceSet && !m.mNamespaceSet->empty())
+       if (m.namespaceSet() && !m.namespaceSet()->empty())
        {
-               std::vector<asNamespace*>::iterator i;
-               for (i = m.mNamespaceSet->begin(); i != m.mNamespaceSet->end(); 
++i)
+               std::vector<asNamespace*>::const_iterator i;
+               for (i = m.namespaceSet()->begin(); i != 
m.namespaceSet()->end(); ++i)
                {
-                       found = (*i)->getClass(m.getName());
+                       found = (*i)->getClass(m.getABCName());
                        if (found)
                                return found;
                }
        }
        // One last chance: Look globally.
-       found = mCH->getGlobalNs()->getClass(m.getName());
+       found = mCH->getGlobalNs()->getClass(m.getABCName());
        if (found)
                return found;
 
        // Fake it here for a while.
        if (m.getNamespace())
        {
-               m.getNamespace()->stubPrototype(m.getName());
-               found = m.getNamespace()->getClass(m.getName());
+               m.getNamespace()->stubPrototype(m.getABCName());
+               found = m.getNamespace()->getClass(m.getABCName());
                return found;
        }
        else
        {
                // Fake in global.
-               mCH->getGlobalNs()->stubPrototype(m.getName());
-               found = mCH->getGlobalNs()->getClass(m.getName());
+               mCH->getGlobalNs()->stubPrototype(m.getABCName());
+               found = mCH->getGlobalNs()->getClass(m.getABCName());
                return found;
        }
        return NULL;
@@ -333,8 +428,8 @@
 {
        // Minor version, major version.
        mVersion = (mS->read_u16()) | (mS->read_u16() << 16);
-       ERR((_("Abc Version: %d.%d\n"), (mVersion & 0xFFFF0000) >> 16,
-               (mVersion & 0x0000FFFF)));
+       log_error(_("Abc Version: %d.%d"), (mVersion & 0xFFFF0000) >> 16, 
+               (mVersion & 0x0000FFFF));
        return true;
 }
 
@@ -344,12 +439,12 @@
 {
        // count overestimates by 1.
        boost::uint32_t count = mS->read_V32();
-       mIntegerPool.resize(count);
+       _integerPool.resize(count);
        if (count)
-               mIntegerPool[0] = 0;
+               _integerPool[0] = 0;
        for (unsigned int i = 1; i < count; ++i)
        {
-               mIntegerPool[i] = static_cast<boost::int32_t> (mS->read_V32());
+               _integerPool[i] = static_cast<boost::int32_t> (mS->read_V32());
        }
        return true;
 }
@@ -360,12 +455,12 @@
 {
        // count overestimates by 1.
        boost::uint32_t count = mS->read_V32();
-       mUIntegerPool.resize(count);
+       _uIntegerPool.resize(count);
        if (count)
-               mUIntegerPool[0] = 0;
+               _uIntegerPool[0] = 0;
        for (unsigned int i = 1; i < count; ++i)
        {
-               mUIntegerPool[i] = mS->read_V32();
+               _uIntegerPool[i] = mS->read_V32();
        }
        return true;
 }
@@ -375,12 +470,13 @@
 abc_block::read_double_constants()
 {
        boost::uint32_t count = mS->read_V32();
-       mDoublePool.resize(count);
+       _doublePool.resize(count);
        if (count)
-               mDoublePool[0] = 0.0;
+               _doublePool[0] = 0.0;
        for (unsigned int i = 1; i < count; ++i)
        {
-               mDoublePool[i] = mS->read_d64();
+               _doublePool[i] = mS->read_d64();
+               log_abc("Double %u=%lf", i, _doublePool[i]);
        }
        return true;
 }
@@ -389,63 +485,69 @@
 bool
 abc_block::read_string_constants()
 {
+       log_abc("Begin reading string constants.");
        boost::uint32_t count = mS->read_V32();
-       mStringPool.resize(count);
-       mStringPoolTableIds.resize(count);
+       log_abc("There are %u string constants.", count);
+       _stringPool.resize(count);
+       _stringPoolTableIDs.resize(count);
        if (count)
        {
-               mStringPool[0] = "";
-               mStringPoolTableIds[0] = 0;
+               _stringPool[0] = "";
+               _stringPoolTableIDs[0] = 0;
        }
        for (unsigned int i = 1; i < count; ++i)
        {
                boost::uint32_t length = mS->read_V32();
-               mS->read_string_with_length(length, mStringPool[i]);
-               mStringPoolTableIds[i] = 0;
+               mS->read_string_with_length(length, _stringPool[i]);
+               log_abc("Adding string constant to string pool: index=%u %s", 
i, _stringPool[i]);
+               _stringPoolTableIDs[i] = 0;
        }
        return true;
 }
 
 /// Read the pool of namespaces
-/// Any two namespaces with the same uri here are the same namespace,
+/// Any two namespaces with the same uri here are the same namespace, 
 /// excepting private namespaces.
 bool
 abc_block::read_namespaces()
-{
+{      
+       log_abc("Begin reading namespaces.");
        boost::uint32_t count = mS->read_V32();
-       mNamespacePool.resize(count);
+       log_abc("There are %u namespaces.", count);
+       _namespacePool.resize(count);
        if (count)
        {
-               mNamespacePool[0] = mCH->getGlobalNs();
+               _namespacePool[0] = mCH->getGlobalNs();
        }
        for (unsigned int i = 1; i < count; ++i)
        {
                boost::uint8_t kind = mS->read_u8();
                boost::uint32_t nameIndex = mS->read_V32();
+               log_abc("Namespace %u kind=0x%X index=%u name=%s", i, kind | 
0x0, nameIndex, _stringPool[nameIndex]);
 
-               if (nameIndex >= mStringPool.size())
+               if (nameIndex >= _stringPool.size())
                {
-                       ERR((_("ABC: Out of bounds string given for 
namespace.\n")));
+                       log_error(_("ABC: Out of bounds string given for 
namespace."));
                        return false;
                }
-
+               
                if (kind == PRIVATE_NS)
                {
-                       mNamespacePool[i] = mCH->anonNamespace(nameIndex);
-                       mNamespacePool[i]->setPrivate();
+                       _namespacePool[i] = mCH->anonNamespace(nameIndex);
+                       _namespacePool[i]->setPrivate();
                }
                else
                {
                        asNamespace *n = mCH->findNamespace(nameIndex);
                        if (n == NULL)
                                n = mCH->addNamespace(nameIndex);
-                       mNamespacePool[i] = n;
+                       _namespacePool[i] = n;
                }
                if (kind == PROTECTED_NS)
                {
-                       mNamespacePool[i]->setProtected();
+                       _namespacePool[i]->setProtected();
                }
-               mNamespacePool[i]->setURI(nameIndex);
+               setNamespaceURI(_namespacePool[i], nameIndex);
        }
        return true;
 }
@@ -455,24 +557,24 @@
 abc_block::read_namespace_sets()
 {
        boost::uint32_t count = mS->read_V32();
-       mNamespaceSetPool.resize(count);
+       _namespaceSetPool.resize(count);
        if (count)
        {
-               mNamespaceSetPool[0].resize(0);
+               _namespaceSetPool[0].resize(0);
        }
        for (unsigned int i = 1; i < count; ++i)
        {
                boost::uint32_t icount = mS->read_V32();
-               mNamespaceSetPool[i].resize(icount);
+               _namespaceSetPool[i].resize(icount);
                for (unsigned int j = 0; j < icount; ++j)
                {
                        boost::uint32_t selection = mS->read_V32();
-                       if (!selection || selection >= mNamespacePool.size())
+                       if (!selection || selection >= _namespacePool.size())
                        {
-                               ERR((_("ABC: Out of bounds namespace for 
namespace set.\n")));
+                               log_error(_("ABC: Out of bounds namespace for 
namespace set."));
                                return false;
                        }
-                       mNamespaceSetPool[i][j] = mNamespacePool[selection];
+                       _namespaceSetPool[i][j] = _namespacePool[selection];
                }
        }
        return true;
@@ -483,74 +585,78 @@
 abc_block::read_multinames()
 {
        boost::uint32_t count = mS->read_V32();
-       mMultinamePool.resize(count);
+       log_abc("There are %u multinames.", count);
+       _multinamePool.resize(count);
        if (count)
        {
-               mMultinamePool[0].setName(0);
-               mMultinamePool[0].setNamespace(mCH->getGlobalNs());
+//             _multinamePool[0].setABCName(0);
+               setMultinameNames(&_multinamePool[0], 0);
+               _multinamePool[0].setNamespace(mCH->getGlobalNs());
        }
        for (unsigned int i = 1; i < count; ++i)
        {
-               boost::uint8_t kind = mS->read_u8();
+        asName::Kind kind = static_cast<asName::Kind>(mS->read_u8());
                boost::uint32_t ns = 0;
                boost::uint32_t name = 0;
                boost::uint32_t nsset = 0;
 
+               log_abc("Multiname %u has kind=0x%X", i, kind | 0x0);
+
                // Read, but don't upper validate until after the switch.
                switch (kind)
                {
-        case asName::KIND_Qname:
-        case asName::KIND_QnameA:
-        {
-            ns = mS->read_V32();
-            check_multiname_namespace(ns);
-            name = mS->read_V32();
-            check_multiname_name(name);
-            break;
-        }
-        case asName::KIND_RTQname:
-        case asName::KIND_RTQnameA:
-        {
-            name = mS->read_V32();
-            check_multiname_name(name);
-            break;
-        }
-        case asName::KIND_RTQnameL:
-        case asName::KIND_RTQnameLA:
-        {
-
-            break;
-        }
-        case asName::KIND_Multiname:
-        case asName::KIND_MultinameA:
-        {
-            name = mS->read_V32();
-            check_multiname_name(name);
-            nsset = mS->read_V32();
-            check_multiname_namespaceset(nsset);
-            break;
-        }
-        case asName::KIND_MultinameL:
-        case asName::KIND_MultinameLA:
-        {
-            nsset = mS->read_V32();
-            check_multiname_namespaceset(nsset);
-            break;
-        }
-        default:
-        {
-            // Unknown type.
-            ERR((_("Action Block: Unknown multiname type (%d).\n"), kind));
-            return false;
-        } // End of cases.
-        } // End of switch.
-
-               mMultinamePool[i].mFlags = kind;
-               mMultinamePool[i].setName(name);
-               mMultinamePool[i].setNamespace(mNamespacePool[ns]);
-
-               if (nsset)
-                       mMultinamePool[i].mNamespaceSet = 
&mNamespaceSetPool[nsset];
+            case asName::KIND_Qname:
+            case asName::KIND_QnameA:
+                ns = mS->read_V32();
+                check_multiname_namespace(ns);
+                name = mS->read_V32();
+                check_multiname_name(name);
+                log_abc("\tnamespace_index=%u name_index=%u name=%s",
+                        ns, name, _stringPool[name]);
+                break;
+            
+            case asName::KIND_RTQname:
+            case asName::KIND_RTQnameA:
+                name = mS->read_V32();
+                check_multiname_name(name);
+                break;
+            
+            case asName::KIND_RTQnameL:
+            case asName::KIND_RTQnameLA:
+                break;
+            
+            case asName::KIND_Multiname:
+            case asName::KIND_MultinameA:
+                name = mS->read_V32();
+                check_multiname_name(name);
+                nsset = mS->read_V32();
+                check_multiname_namespaceset(nsset);
+                break;
+            
+            case asName::KIND_MultinameL:
+            case asName::KIND_MultinameLA:
+                nsset = mS->read_V32();
+                check_multiname_namespaceset(nsset);
+                break;
+            
+            default:
+                // Unknown type.
+                log_error(_("Action Block: Unknown multiname type (%d)."),
+                        kind);
+                return false;
+        } 
+
+               _multinamePool[i].setFlags(kind);
+               setMultinameNames(&_multinamePool[i], name);
+               log_abc("Done setting multinames: abc=%u global=%u",
+               _multinamePool[i].getABCName(),
+               _multinamePool[i].getGlobalName());
+
+        _multinamePool[i].setNamespace(_namespacePool[ns]);
+
+               if (nsset) {
+                       
_multinamePool[i].namespaceSet(&_namespaceSetPool[nsset]);
+        }
        } // End of main loop.
        return true;
 }
@@ -561,53 +667,54 @@
        if (!index)
                return true;
 
+       log_abc("Pool value: index is %u type is 0x%X", index, type | 0x0);
        switch (type)
        {
        case POOL_STRING: 
        {
-               if (index >= mStringPool.size())
+               if (index >= _stringPool.size())
                {
-                       ERR((_("Action Block: Bad index in optional 
argument.\n")));
+                       log_error(_("Action Block: Bad index in optional 
argument."));
                        return false;
                }
-               v.set_string(mStringPool[index]);
+               v.set_string(_stringPool[index]);
                break;
        }
        case POOL_INTEGER: 
        {
-               if (index >= mIntegerPool.size())
+               if (index >= _integerPool.size())
            {
-                       ERR((_("Action Block: Bad index in optional 
argument.\n")));
+                       log_error(_("Action Block: Bad index in optional 
argument."));
                        return false;
                }
-               v.set_int(mIntegerPool[index]);
+               v.set_int(_integerPool[index]);
                break;
        }
        case POOL_UINTEGER:
        {
-               if (index >= mUIntegerPool.size())
+               if (index >= _uIntegerPool.size())
                {
-                       ERR((_("Action Block: Bad index in optional 
argument.\n")));
+                       log_error(_("Action Block: Bad index in optional 
argument."));
                        return false;
                }
-               v.set_int(mUIntegerPool[index]);
+               v.set_int(_uIntegerPool[index]);
                break;
        }
        case POOL_DOUBLE: 
        {
-               if (index >= mDoublePool.size())
+               if (index >= _doublePool.size())
                {
-                       ERR((_("Action Block: Bad index in optional 
argument.\n")));
+                       log_error(_("Action Block: Bad index in optional 
argument."));
                        return false;
                }
-               v.set_double(static_cast<double>(mDoublePool[index]));
+               v.set_double(static_cast<double>(_doublePool[index]));
                break;
        }
        case POOL_NAMESPACE: // Namespace
        {
-               if (index >= mNamespacePool.size())
+               if (index >= _namespacePool.size())
                {
-                       ERR((_("ABC: Bad index in optional argument, 
namespaces.\n")));
+                       log_error(_("ABC: Bad index in optional argument, 
namespaces."));
                        return false;
                }
                break;
@@ -629,7 +736,7 @@
        }
        default: // All others are bogus.
        {
-               ERR((_("ABC: Bad default value type (%X), but continuing.\n"), 
type));
+               log_error(_("ABC: Bad default value type (%X), but 
continuing."), type);
                return true;
                break;
        }
@@ -641,29 +748,35 @@
 bool
 abc_block::read_method_infos()
 {
+       log_abc("Begin read_method_infos.");
+
        boost::uint32_t count = mS->read_V32();
-       mMethods.resize(count);
+    log_abc("Method count: %u", count);
+
+       _methods.resize(count);
        for (unsigned int i = 0; i < count; ++i)
        {
+               log_abc(" Reading method %u", i);
                asMethod *pMethod = mCH->newMethod();
-               mMethods[i] = pMethod;
-
+               pMethod->setMethodID(i);
+//             log_abc("Min arg count: %d max: %d", 
pMethod->minArgumentCount(), pMethod->maxArgumentCount());
+               _methods[i] = pMethod;
                boost::uint32_t param_count = mS->read_V32();
                boost::uint32_t return_type = mS->read_V32();
 
+               log_abc("  Param count: %u return type(index): %s(%u)", 
param_count, _stringPool[_multinamePool[return_type].getABCName()], 
return_type);
                pMethod->setMinArgumentCount(param_count);
                pMethod->setMaxArgumentCount(param_count);
 
-               if (return_type >= mMultinamePool.size())
+               if (return_type >= _multinamePool.size())
                {
-                       ERR((_("ABC: Out of bounds return type for method 
info.\n")));
+                       log_error(_("ABC: Out of bounds return type for method 
info."));
                        return false;
                }
-
-               asClass *rtClass = locateClass(mMultinamePool[return_type]);
+               asClass *rtClass = locateClass(_multinamePool[return_type]);
                if (!rtClass)
                {
-                       ERR((_("ABC: Unknown return type.\n")));
+                       log_error(_("ABC: Unknown return type."));
                        return false;
                }
 
@@ -671,43 +784,55 @@
 
                for (unsigned int j = 0; j < param_count; ++j)
                {
+                       log_abc("  Reading parameter %u", j);
                        // The parameter type.
                        boost::uint32_t ptype = mS->read_V32();
-                       if (ptype >= mMultinamePool.size())
+                       log_abc("   Parameter type(index): %s(%u)", 
_stringPool[_multinamePool[ptype].getABCName()], ptype);
+                       if (ptype >= _multinamePool.size())
                        {
-                               ERR((_("ABC: Out of bounds parameter type in 
method.\n")));
+                               log_error(_("ABC: Out of bounds parameter type 
in method."));
                                return false;
                        }
-                       asClass *param_type = 
locateClass(mMultinamePool[ptype]);
+                       asClass *param_type = 
locateClass(_multinamePool[ptype]);
+//                     log_abc("Done creating asClass object.");
                        if (!param_type)
                        {
-                               ERR((_("ABC: Unknown parameter type.\n")));
+                               log_error((_("ABC: Unknown parameter type.")));
                                return false;
                        }
+//                     log_abc("Trying to add argument to method.");
                        pMethod->pushArgument(param_type);
+//                     log_abc("Done adding argument to method object.");
                }
-
+//             log_abc("End loop j.");
                // A skippable name index.
-               mS->skip_V32();
-
+//             mS->skip_V32();
+               boost::uint32_t method_name = mS->read_V32();
+               log_abc(  "Method name=%s %d", _stringPool[method_name], 
method_name);
                boost::uint8_t flags = mS->read_u8();
-
+               log_abc("  Flags: %X", flags | 0x0);
+//             log_abc("Check if flags and optional args.");
                // If there are default parameters, read them now.
                // Runtime will do validation of whether or not these can 
actually
                // be assigned to the corresponding parameters.
                if (flags & METHOD_OPTIONAL_ARGS)
                {
+//                     log_abc("We have flags and optional args.");
                        boost::uint32_t ocount = mS->read_V32();
+                       log_abc("  Optional args: %u", ocount);
                        
pMethod->setMinArgumentCount(pMethod->maxArgumentCount() - ocount);
                        for (unsigned int j = 0; j < ocount; ++j)
                        {
+                               log_abc("  Reading optional arg: %u", j);
                                boost::uint32_t index = mS->read_V32();
                                boost::uint8_t kindof = mS->read_u8();
+                               log_abc("   Index: %u Kindof: %u", index, 
kindof);
                                as_value v;
                                if (!pool_value(index, kindof, v))
                                        return false; // message done by 
pool_value
                                pMethod->pushOptional(v);
                        }
+                       log_abc("Done handling optional args.");
                }
 
                // If there are names present for the parameters, skip them.
@@ -746,48 +871,47 @@
 abc_block::read_instances()
 {
        boost::uint32_t count = mS->read_V32();
-       mClasses.resize(count);
+       log_abc("There are %u instances.", count);
+       _classes.resize(count);
        for (unsigned int i = 0; i < count; ++i)
        {
                asClass *pClass;
-
+               //Read multiname index.
                boost::uint32_t index = mS->read_V32();
                // 0 is allowed as a name, typically for the last entry.
-               if (index >= mMultinamePool.size())
+               if (index >= _multinamePool.size())
                {
-                       ERR((_("ABC: Out of bounds instance name.\n")));
+                       log_error(_("ABC: Out of bounds instance name."));
                        return false;
                }
                // This must be a QName.
-               if (!mMultinamePool[index].isQName())
-               {
-                       ERR((_("ABC: QName required for instance.\n")));
-                       return false;
-               }
-               if (mMultinamePool[index].getNamespace() == NULL)
-               {
-                       ERR((_("ABC: No namespace to use for storing 
class.\n")));
-                       return false;
-               }
-
-               pClass = locateClass(mMultinamePool[index]);
+               if (!_multinamePool[index].isQName())
+               {
+                       log_error(_("ABC: QName required for instance."));
+                       return false;
+               }
+               if (_multinamePool[index].getNamespace() == NULL)
+               {
+                       log_error(_("ABC: No namespace to use for storing 
class."));
+                       return false;
+               }
+               pClass = locateClass(_multinamePool[index]);
                if (!pClass)
                {
                        pClass = mCH->newClass();
-                       if (!mMultinamePool[index].getNamespace()->addClass(
-                               mMultinamePool[index].getName(), pClass))
+                       if (!_multinamePool[index].getNamespace()->addClass(
+                               _multinamePool[index].getABCName(), pClass))
                        {
-                               ERR((_("Duplicate class registration.\n")));
+                               log_error(_("Duplicate class registration."));
                                return false;
                        }
                }
                pClass->setDeclared();
-               mClasses[i] = pClass;
-               boost::uint32_t super_index = mS->read_V32();
-
-               if (super_index && super_index >= mMultinamePool.size())
+               _classes[i] = pClass;
+               boost::uint32_t super_index = mS->read_V32();;
+               if (super_index && super_index >= _multinamePool.size())
                {
-                       ERR((_("ABC: Out of bounds super type.\n")));
+                       log_error(_("ABC: Out of bounds super type."));
                        return false;
                }
                if (!super_index)
@@ -796,33 +920,33 @@
                }
                else
                {
-                       asClass *pSuper = 
locateClass(mMultinamePool[super_index]);
+                       asClass *pSuper = 
locateClass(_multinamePool[super_index]);
                        if (!pSuper)
                        {
-                               ERR((_("ABC: Super type not found (%s), 
faking.\n"),
-                                       
mStringTable->value(mMultinamePool[super_index].getName()).c_str()));
+                               log_error(_("ABC: Super type not found (%s), 
faking."), 
+                                       
_stringTable->value(_multinamePool[super_index].getABCName()));
                                // While testing, we will add a fake type, 
rather than abort.
                                pSuper = mCH->newClass();
-                               
pSuper->setName(mMultinamePool[super_index].getName());
-                               
mCH->getGlobalNs()->addClass(mMultinamePool[super_index].getName(), pSuper);
+                               
pSuper->setName(_multinamePool[super_index].getABCName());
+                               
mCH->getGlobalNs()->addClass(_multinamePool[super_index].getABCName(), pSuper);
                                // return false;
                        }
 
                        if (pSuper->isFinal())
                        {
-                               ERR((_("ABC: Can't extend a class which is 
final.\n")));
+                               log_error(_("ABC: Can't extend a class which is 
final."));
                                return false;
                        }
 
                        if (pSuper->isInterface())
                        {
-                               ERR((_("ABC: Can't extend an interface 
type.\n")));
+                               log_error(_("ABC: Can't extend an interface 
type."));
                                return false;
                        }
 
                        if (pSuper == pClass)
                        {
-                               ERR((_("ABC: Class cannot be its own 
supertype.\n")));
+                               log_error(_("ABC: Class cannot be its own 
supertype."));
                                return false;
                        }
                        pClass->setSuper(pSuper);
@@ -830,6 +954,7 @@
                }
 
                boost::uint8_t flags = mS->read_u8();
+               log_abc("Instance %u multiname index=%u name=%s super index=%u 
flags=%X", i, index, _stringPool[_multinamePool[index].getABCName()], 
super_index, flags | 0x0);
 
                if (flags & INSTANCE_SEALED)
                        pClass->setSealed();
@@ -843,62 +968,64 @@
                if (flags & INSTANCE_PROTECTED_NS) // Protected Namespace
                {
                        boost::uint32_t ns_index = mS->read_V32();
-                       if (ns_index >= mNamespacePool.size())
+                       if (ns_index >= _namespacePool.size())
                        {
-                               ERR((_("ABC: Out of bounds namespace for 
protected.\n")));
+                               log_error(_("ABC: Out of bounds namespace for 
protected."));
                                return false;
                        }
                        // Set the protected namespace's parent, if it exists.
                        if (pClass->getSuper()->hasProtectedNs())
-                               
mNamespacePool[ns_index]->setParent(pClass->getSuper()->getProtectedNs());
-                       pClass->setProtectedNs(mNamespacePool[ns_index]);
+                               
_namespacePool[ns_index]->setParent(pClass->getSuper()->getProtectedNs());
+                       pClass->setProtectedNs(_namespacePool[ns_index]);
                }
 
                // This is the list of interfaces which the instances has 
agreed to
                // implement. They must be interfaces, and they must exist.
                boost::uint32_t intcount = mS->read_V32();
-
+               log_abc("This instance has %u interfaces.", intcount);
                for (unsigned int j = 0; j < intcount; ++j)
                {
                        boost::uint32_t i_index = mS->read_V32();
+                       log_abc("Interface %u has multiname index=%u", i, 
i_index);
                        // 0 is allowed as an interface, typically for the last 
one.
-                       if (i_index >= mMultinamePool.size())
+                       if (i_index >= _multinamePool.size())
                        {
-                               ERR((_("ABC: Out of bounds name for 
interface.\n")));
+                               log_error(_("ABC: Out of bounds name for 
interface."));
                                return false;
                        }
-                       asClass *pInterface = 
locateClass(mMultinamePool[i_index]);
+                       asClass *pInterface = 
locateClass(_multinamePool[i_index]);
                        // These may be undefined still, so don't check 
interface just yet.
                        if (0) //!pInterface || !pInterface->isInterface())
                        {
-                               ERR((_("ABC: Can't implement a non-interface 
type.\n")));
+                               log_error(_("ABC: Can't implement a 
non-interface type."));
                                return false;
                        }
                        pClass->pushInterface(pInterface);
                }
-
                // The next thing should be the constructor.
                // TODO: What does this mean exactly? How does it differ from 
the one in
                // the class info block?
-               boost::uint32_t moffset = mS->read_V32();
-               if (moffset >= mMethods.size())
+               boost::uint32_t offset = mS->read_V32();
+               log_abc("Moffset: %u", offset);
+               if (offset >= _methods.size())
                {
-                       ERR((_("ABC: Out of bounds method for 
initializer.\n")));
+                       log_error(_("ABC: Out of bounds method for 
initializer."));
                        return false;
                }
                // Don't validate for previous owner.
-               pClass->setConstructor(mMethods[moffset]);
+               pClass->setConstructor(_methods[offset]);
 
                /*      Calling the asMethod::setOwner always results in a 
segmentation fault, 
                since it tries to modify asMethod.mPrototype, which is never
                initialized.  The parser seems to work ok without this call.*/
-//             mMethods[moffset]->setOwner(pClass);
+//             _methods[offset]->setOwner(pClass);
 
                // Next come the 'traits' of the instance. (The members.)
                boost::uint32_t tcount = mS->read_V32();
+               log_abc("Trait count: %u", tcount);
                for (unsigned int j = 0; j < tcount; ++j)
                {
-                       abc_Trait &aTrait = newTrait();
+                       Trait &aTrait = newTrait();
                        aTrait.set_target(pClass, false);
                        if (!aTrait.read(mS, this))
                                return false;
@@ -912,29 +1039,32 @@
 abc_block::read_classes()
 {
        // Count was found in read_instances().
-       boost::uint32_t count = mClasses.size();
-
+       log_abc("Begin reading classes.");
+       boost::uint32_t count = _classes.size();
+       log_abc("There are %u classes.", count);
        for (unsigned int i = 0; i < count; ++i)
        {
-               asClass *pClass = mClasses[i];
-               boost::uint32_t moffset = mS->read_V32();
-               if (moffset >= mMethods.size())
+               asClass *pClass = _classes[i];
+               boost::uint32_t offset = mS->read_V32();
+               log_abc("Class %u static constructor index=%u", i, offset);
+               if (offset >= _methods.size())
                {
-                       ERR((_("ABC: Out of bound static constructor for 
class.\n")));
+                       log_error(_("ABC: Out of bound static constructor for 
class."));
                        return false;
                }
                // Don't validate for previous owner.
-               pClass->setStaticConstructor(mMethods[moffset]);
+               pClass->setStaticConstructor(_methods[offset]);
 
                /*      Calling the asMethod::setOwner always results in a 
segmentation fault, 
                since it tries to modify asMethod.mPrototype, which is never
                initialized.  The parser seems to work ok without this call.*/
-//             mMethods[moffset]->setOwner(pClass);
+//             _methods[offset]->setOwner(pClass);
                
                boost::uint32_t tcount = mS->read_V32();
+               log_abc("This class has %u traits.", tcount);
                for (unsigned int j = 0; j < tcount; ++j)
                {
-                       abc_Trait &aTrait = newTrait();
+                       Trait &aTrait = newTrait();
                        aTrait.set_target(pClass, true);
                        if (!(aTrait.read(mS, this)))
                                return false;
@@ -948,37 +1078,46 @@
 bool
 abc_block::read_scripts()
 {
+       log_abc("Begin reading scripts.");
        boost::uint32_t count = mS->read_V32();
-
-       mScripts.resize(count);
+       log_abc("There are %u scripts.", count);
+       _scripts.resize(count);
        for (unsigned int i = 0; i < count; ++i)
        {
                asClass *pScript = mCH->newClass();
-               mScripts[i] = pScript;
+               _scripts[i] = pScript;
 
-               boost::uint32_t moffset = mS->read_V32();
-               if (moffset >= mMethods.size())
+               boost::uint32_t offset = mS->read_V32();
+               log_abc("Reading script %u initializer method index=%u", i, 
offset);
+               if (offset >= _methods.size())
                {
-                       ERR((_("ABC: Out of bounds method for script.\n")));
+                       log_error(_("ABC: Out of bounds method for script."));
                        return false;
                }
 
-               /*Calling the asMethod::setOwner always results in a 
segmentation fault,
-               since it tries to modify asMethod.mPrototype, which is never
-               initialized.  The parser seems to work ok without this call.*/
+               // Calling the asMethod::setOwner always results in a 
segmentation
+        // fault, since it tries to modify asMethod.mPrototype, which is never
+               // initialized.  The parser seems to work ok without this call.
                // Don't validate for previous owner.
-//             mMethods[moffset]->setOwner(pScript);
+//             _methods[offset]->setOwner(pScript);
 
-               pScript->setConstructor(mMethods[moffset]);
+               pScript->setConstructor(_methods[offset]);
                pScript->setSuper(mTheObject);
 
                boost::uint32_t tcount = mS->read_V32();
                for (unsigned int j = 0; j < tcount; ++j)
                {
-                       abc_Trait &aTrait = newTrait();
+                       
+                       Trait &aTrait = newTrait();
                        aTrait.set_target(pScript, false);
-                       if (!(aTrait.read(mS, this)))
+                       if (!(aTrait.read(mS, this))) {
                                return false;
+            }
+                       log_abc("Trait: %u name: %s(%u) kind: %u value: %s ", 
j, 
+                    _stringPool[aTrait._name], aTrait._name, aTrait._kind,
+                    aTrait._value.to_string());
+
+                       pScript->_traits.push_back(aTrait);
                }
        } // end of scripts loop
        return true;
@@ -989,45 +1128,41 @@
 abc_block::read_method_bodies()
 {
        boost::uint32_t count = mS->read_V32();
-
+       log_abc("There are %u method bodies.", count);
        for (unsigned int i = 0; i < count; ++i)
        {
-               boost::uint32_t moffset = mS->read_V32();
-               if (moffset >= mMethods.size())
-               {
-                       ERR((_("ABC: Out of bounds for method body.\n")));
-                       return false;
-               }
-               if (mMethods[moffset]->getBody())
-               {
-                       ERR((_("ABC: Only one body per method.\n")));
-                       return false;
-               }
-               mMethods[moffset]->setBody(new CodeStream);
+               boost::uint32_t offset = mS->read_V32();
+               log_abc("Method body %u method offset=%u", i, offset);
+               if (offset >= _methods.size())
+               {
+                       log_error(_("ABC: Out of bounds for method body."));
+                       return false;
+               }
+               if (_methods[offset]->getBody())
+               {
+                       log_error(_("ABC: Only one body per method."));
+                       return false;
+               }
+               //TODO: Read values.
 
                // Maximum stack size.
                mS->skip_V32();
                // Maximum register size.
-               mS->skip_V32();
+               _methods[offset]->setMaxRegisters(mS->read_V32());
                // Scope depth.
                mS->skip_V32();
                // Max scope depth.
                mS->skip_V32();
                // Code length
                boost::uint32_t clength = mS->read_V32();
+               _methods[offset]->setBodyLength(clength);
                // The code.
-               std::vector<char> body(clength);
-               body.resize(clength);
-               unsigned int got_length;
-               if ((got_length = mS->read(&body.front(), clength)) != clength)
-               {
-                       ERR((_("ABC: Not enough method body. Wanted %d but got 
%d.\n"),
-                               clength, got_length));
-                       return false;
-               }
-               else
-                       
mMethods[moffset]->getBody()->reInitialize(&body.front(), clength, true);
+               //TODO: Clean this up.
+               std::string body;
+               mS->read_string_with_length(clength, body);
 
+               _methods[offset]->setBody(new CodeStream(body));
+               
                boost::uint32_t ecount = mS->read_V32();
                for (unsigned int j = 0; j < ecount; ++j)
                {
@@ -1042,10 +1177,10 @@
 
                        // What types should be caught.
                        boost::uint32_t catch_type = mS->read_V32();
-                       if (catch_type >= mMultinamePool.size())
+                       if (catch_type >= _multinamePool.size())
                        {
-                               ERR((_("ABC: Out of bound type for 
exception.\n")));
-                               return false;
+                               log_error(_("ABC: Out of bound type for 
exception."));
+//                             return false;
                        }
                        if (!catch_type)
                        {
@@ -1053,11 +1188,11 @@
                        }
                        else
                        {
-                               asClass *pType = 
locateClass(mMultinamePool[catch_type]);
+                               asClass *pType = 
locateClass(_multinamePool[catch_type]);
                                if (!pType)
                                {
-                                       ERR((_("ABC: Unknown type of object to 
catch. (%s)\n"),
-                                               
mStringTable->value(mMultinamePool[catch_type].getName()).c_str()));
+                                       log_error(_("ABC: Unknown type of 
object to catch. (%s)"), 
+                                               
_stringTable->value(_multinamePool[catch_type].getABCName()));
                                        // return false;
                                        // Fake it, for now:
                                        pExcept->catchAny();
@@ -1073,23 +1208,28 @@
                        if (mVersion != ((46 << 16) | 15))
                        {
                                boost::uint32_t cvn = mS->read_V32();
-                               if (cvn >= mMultinamePool.size())
+                               if (cvn >= _multinamePool.size())
                                {
-                                       ERR((_("ABC: Out of bound name for 
caught exception.\n")));
-                                       return false;
+                                       log_error(_("ABC: Out of bound name for 
caught exception."));
+//                                     return false;
                                }
-                               pExcept->setName(mMultinamePool[cvn].getName());
-                               
pExcept->setNamespace(mMultinamePool[cvn].getNamespace());
+                               
pExcept->setName(_multinamePool[cvn].getABCName());
+                               
pExcept->setNamespace(_multinamePool[cvn].getNamespace());
                        }
                } // end of exceptions
 
                boost::uint32_t tcount = mS->read_V32();
                for (unsigned int j = 0; j < tcount; ++j)
                {
-                       abc_Trait &aTrait = newTrait();
-                       aTrait.set_target(mMethods[moffset]);
-                       if (!aTrait.read(mS, this)) // TODO: 'method body 
activation traits'
+                       Trait &aTrait = newTrait();
+                       aTrait.set_target(_methods[offset]);
+                       if (!aTrait.read(mS, this)) {
+                // TODO: 'method body activation traits'
                                return false;
+            }
+                       log_abc("Trait: %u name: %s kind: %u value: %s ", j, 
+                    _stringPool[aTrait._name], aTrait._kind, 
+                    aTrait._value.to_string());
                }
        } // end of bodies loop
        return true;
@@ -1105,22 +1245,38 @@
        if (!read_version()) return false;
        if (!read_integer_constants()) return false;
        if (!read_unsigned_integer_constants()) return false;
+       log_abc("Done reading unsigned integer constants.");
        if (!read_double_constants()) return false;
+       log_abc("Done reading double constants.");
        if (!read_string_constants()) return false;
+       log_abc("Done reading string constants.");
        if (!read_namespaces()) return false;
+       log_abc("Done reading namespaces.");
        if (!read_namespace_sets()) return false;
+       log_abc("Done reading namespace sets.");
        if (!read_multinames()) return false;
+       log_abc("Done reading multinames.");
        if (!read_method_infos()) return false;
+       log_abc("Done reading method infos.");
        if (!skip_metadata()) return false;
+       log_abc("Done reading metadata.");
        if (!read_instances()) return false;
+       log_abc("Done reading instances.");
        if (!read_classes()) return false;
+       log_abc("Done reading classes.");
        if (!read_scripts()) return false;
+       log_abc("Done reading scripts.");
        if (!read_method_bodies()) return false;
+       log_abc("Done reading stuff.");
 
+       for(unsigned int i=0;i<_methods.size();i++) {
+               log_abc("Method %d body:", i);
+               IF_VERBOSE_PARSE(_methods[i]->print_body());
+       }
 /*     The loop below causes a segmentation fault, because it tries to modify 
        asMethod.mPrototype, which is never initialized.  The parser seems 
        to work ok without this call.*/
-/*     std::vector<abc_Trait*>::iterator i = mTraits.begin();
+/*     std::vector<Trait*>::iterator i = mTraits.begin();
        for ( ; i != mTraits.end(); ++i)
        {
                if (!(*i)->finalize(this))
@@ -1132,12 +1288,55 @@
        return true;
 }
 
-abc_block::abc_block() : mStringTable(&VM::get().getStringTable())
-{
-       mCH = VM::get().getClassHierarchy();
-       // TODO: Make this the real 'Object' prototype.
-       mCH->getGlobalNs()->stubPrototype(NSV::CLASS_OBJECT);
-       mTheObject = mCH->getGlobalNs()->getClass(NSV::CLASS_OBJECT);
+asClass*
+abc_block::locateClass(const std::string& className)
+{
+
+    // TODO: this is rubbish and should be done properly. Machine.cpp also
+    // has completeName for runtime names, so should probably use common
+    // code (construction of asName?).
+
+    const std::string::size_type pos = className.rfind(".");
+    
+    if (pos == std::string::npos) {
+        for (std::vector<asClass*>::iterator i = _classes.begin();
+                i != _classes.end(); ++i) {
+            if (_stringPool[(*i)->getName()] == className) {
+                return *i;
+            }
+        }      
+        return 0;
+    }
+    
+    const std::string& nsstr = className.substr(0, pos);
+    const std::string& clstr = className.substr(pos + 1);
+    
+    for (std::vector<asNamespace*>::iterator i = _namespacePool.begin();
+            i != _namespacePool.end(); ++i) {
+        if (_stringPool[(*i)->getAbcURI()] == nsstr) {
+
+            for (std::vector<asClass*>::iterator j = _classes.begin();
+                    j != _classes.end(); ++j) {
+                if (_stringPool[(*j)->getName()] == clstr) {
+                    return (*i)->getClass((*j)->getName());
+                }
+            }  
+        return 0;
+        
+        }
+    }  
+       return 0;
+
+}
+
+void
+abc_block::update_global_name(unsigned int multiname_index)
+{
+       
+       asName* multiname = &_multinamePool[multiname_index];
+       string_table::key new_key = 
+        _stringTable->find(_stringPool[multiname->getABCName()], false);
+       multiname->setGlobalName(new_key);      
 }
 
 } /* namespace gnash */

=== modified file 'libcore/parser/abc_block.h'
--- a/libcore/parser/abc_block.h        2009-02-25 22:33:03 +0000
+++ b/libcore/parser/abc_block.h        2009-05-14 11:23:13 +0000
@@ -21,33 +21,34 @@
 #ifndef GNASH_ABC_BLOCK_H
 #define GNASH_ABC_BLOCK_H
 
+#include "string_table.h"
+#include "asName.h"
+#include "asNamespace.h"
+#include "as_value.h"
+
 #include <vector>
 #include <string>
 #include <boost/scoped_array.hpp>
 
-#include "string_table.h"
-#include "asClass.h"
-#include "asName.h"
-
 namespace gnash {
        class SWFStream; // for read signature
 }
 
 namespace gnash {
 
-typedef std::vector<asNamespace *> abcNamespaceSet;
-
 class abc_block;
 class ClassHierarchy;
-
-namespace abc_parsing {
-
-class abc_Trait;
-
-class abc_Trait
+class asMethod;
+class asClass;
+class Machine;
+
+namespace abc {
+
+class Trait
 {
 public:
-       typedef enum
+
+    enum Kind
        {
                KIND_SLOT = 0,
                KIND_CONST = 6,
@@ -56,53 +57,171 @@
                KIND_SETTER = 3,
                KIND_CLASS = 4,
                KIND_FUNCTION = 5
-       } kinds;
-
-       bool mHasValue;
-       kinds mKind;
-       boost::uint32_t mSlotId;
-       boost::uint32_t mTypeIndex;
-       boost::uint32_t mClassInfoIndex;
-       as_value mValue;
-       string_table::key mName;
-       asNamespace *mNamespace;
-       asMethod *mMethod;
-       bool mValueSet;
-
-       asClass *mCTarget;
-       asMethod *mMTarget;
-       bool mStatic;
-
-       abc_Trait() : mHasValue(false), mKind(KIND_SLOT), mSlotId(0),
-               mTypeIndex(0), mClassInfoIndex(0), mValue(), mName(0),
-               mNamespace(NULL), mMethod(NULL), mValueSet(false)
-       {/**/}
+       };
+
+       bool _hasValue;
+       Kind _kind;
+       boost::uint32_t _slotID;
+       boost::uint32_t _typeIndex;
+       boost::uint32_t _classInfoIndex;
+       as_value _value;
+       string_table::key _name;
+       string_table::key _globalName;
+       asNamespace* _namespace;
+       asMethod* _method;
+       bool _valueSet;
+
+       asClass* _classTarget;
+       asMethod* _methodTarget;
+       bool _static;
+
+       Trait()
+        :
+        _hasValue(false),
+        _kind(KIND_SLOT),
+        _slotID(0),
+        _typeIndex(0),
+        _classInfoIndex(0),
+        _value(),
+        _name(0),
+        _globalName(),
+        _namespace(0),
+        _method(0),
+        _valueSet(false),
+        _classTarget(0),
+        _methodTarget(0),
+        _static(false)
+       {}
 
        bool read(SWFStream* in, abc_block *pBlock);
-       bool finalize(abc_block *pBlock, asClass *pClass, bool do_static);
-       bool finalize_mbody(abc_block *pBlock, asMethod *pMethod);
-
-       void set_target(asClass *pClass, bool do_static)
-       { mCTarget = pClass; mStatic = do_static; }
-       void set_target(asMethod *pMethod)
-       { mCTarget = NULL; mMTarget = pMethod; }
-
-       bool finalize(abc_block *pBlock)
+
+       bool finalize(abc_block* pBlock, asClass* pClass, bool do_static);
+
+       bool finalize_mbody(abc_block* pBlock, asMethod* pMethod);
+
+       void set_target(asClass* pClass, bool do_static) {
+        _classTarget = pClass;
+        _static = do_static;
+    }
+
+       void set_target(asMethod *pMethod) {
+        _classTarget = 0;
+        _methodTarget = pMethod;
+    }
+
+       bool finalize(abc_block* pBlock)
        {
-               if (mCTarget)
-                       return finalize(pBlock, mCTarget, mStatic);
-               return finalize_mbody(pBlock, mMTarget);
+               if (_classTarget) {
+                       return finalize(pBlock, _classTarget, _static);
+        }
+               return finalize_mbody(pBlock, _methodTarget);
        }
 };
 
-} // namespace abc_parsing
+} // namespace abc
 
-typedef std::vector<asNamespace*> NamespaceSet;
                        
 class abc_block
 {
 public:
-       typedef enum
+    
+    typedef std::vector<asNamespace*> NamespaceSet;
+
+       abc_block();
+
+    asClass* locateClass(asName &m);
+
+       asClass* locateClass(const std::string& className);
+
+       abc::Trait &newTrait()
+       {
+               abc::Trait *p = new abc::Trait;
+               _traits.push_back(p);
+               return *p;
+       }
+       
+    bool read(SWFStream& in);
+
+       bool pool_value(boost::uint32_t index, boost::uint8_t type, as_value 
&v);
+
+       void update_global_name(unsigned int multiname_index);
+
+    const std::vector<asClass*>& scripts() const {
+        return _scripts;
+    }
+
+    boost::uint32_t uIntegerPoolAt(size_t i) const {
+        assert(i < _uIntegerPool.size());
+        return _uIntegerPool[i];
+    }
+
+    const std::string& stringPoolAt(size_t i) const {
+        assert(i < _stringPool.size());
+        return _stringPool[i];
+    }
+
+    boost::int32_t integerPoolAt(size_t i) const {
+        assert(i < _integerPool.size());
+        return _integerPool[i];
+    }
+
+    double doublePoolAt(size_t i) const {
+        assert(i < _doublePool.size());
+        return _doublePool[i];
+    }
+
+    asMethod* methodPoolAt(size_t i) const {
+        assert(i < _methods.size());
+        return _methods[i];
+    }
+
+    asName multinamePoolAt(size_t i) const {
+        assert(i < _multinamePool.size());
+        return _multinamePool[i];
+    }
+
+    asClass* classPoolAt(size_t i) const {
+        assert(i < _classes.size());
+        return _classes[i];
+    }
+
+    asNamespace* namespacePoolAt(size_t i) const {
+        assert(i < _namespacePool.size());
+        return _namespacePool[i];
+    }
+
+    void prepare(Machine* mach);
+
+private:
+
+    friend class abc::Trait;
+
+       bool read_version();
+       bool read_integer_constants();
+       bool read_unsigned_integer_constants();
+       bool read_double_constants();
+       bool read_string_constants();
+       bool read_namespaces();
+       bool read_namespace_sets();
+       bool read_multinames();
+       bool read_method_infos();
+       bool skip_metadata();
+       bool read_instances();
+       bool read_classes();
+       bool read_scripts();
+       bool read_method_bodies();
+
+       void check_multiname_name(boost::uint32_t name);
+
+       void check_multiname_namespace(boost::uint32_t ns);
+
+       void check_multiname_namespaceset(boost::uint32_t nsset);
+
+       void setMultinameNames(asName *n,string_table::key ABCName);
+
+       void setNamespaceURI(asNamespace *ns,string_table::key ABCName);
+
+       enum Constants
        {
                PRIVATE_NS = 0x05,
                PROTECTED_NS = 0x18,
@@ -127,22 +246,22 @@
                POOL_FALSE = 0x0A,
                POOL_TRUE = 0x0B,
                POOL_NULL = 0x0C
-       } constants;
-
-       std::vector<boost::int32_t> mIntegerPool;
-       std::vector<boost::uint32_t> mUIntegerPool;
-       std::vector<double> mDoublePool;
-       std::vector<std::string> mStringPool;
-       std::vector<string_table::key> mStringPoolTableIds;
-       std::vector<asNamespace*> mNamespacePool;
-       std::vector<NamespaceSet> mNamespaceSetPool;
-       std::vector<asMethod*> mMethods;
-       std::vector<asName> mMultinamePool;
-       std::vector<asClass*> mClasses; 
-       std::vector<asClass*> mScripts;
-       std::vector<abc_parsing::abc_Trait*> mTraits;
-
-       string_table* mStringTable;
+       };
+
+       std::vector<boost::int32_t> _integerPool;
+       std::vector<boost::uint32_t> _uIntegerPool;
+       std::vector<double> _doublePool;
+       std::vector<std::string> _stringPool;
+       std::vector<string_table::key> _stringPoolTableIDs;
+       std::vector<asNamespace*> _namespacePool;
+       std::vector<NamespaceSet> _namespaceSetPool;
+       std::vector<asMethod*> _methods;
+       std::vector<asName> _multinamePool;
+       std::vector<asClass*> _classes; 
+       std::vector<asClass*> _scripts;
+       std::vector<abc::Trait*> _traits;
+
+       string_table* _stringTable;
        SWFStream* mS; // Not stored beyond one read.
 
        asClass *mTheObject;
@@ -150,45 +269,10 @@
 
        boost::uint32_t mVersion;
 
-       asClass *locateClass(asName &m);
-
-       abc_parsing::abc_Trait &newTrait()
-       {
-               abc_parsing::abc_Trait *p = new abc_parsing::abc_Trait;
-               mTraits.push_back(p);
-               return *p;
-       }
-
-public:
-       bool read_version();
-       bool read_integer_constants();
-       bool read_unsigned_integer_constants();
-       bool read_double_constants();
-       bool read_string_constants();
-       bool read_namespaces();
-       bool read_namespace_sets();
-       bool read_multinames();
-       bool read_method_infos();
-       bool skip_metadata();
-       bool read_instances();
-       bool read_classes();
-       bool read_scripts();
-       bool read_method_bodies();
-
-       bool read(SWFStream& in);
-
-       bool pool_value(boost::uint32_t index, boost::uint8_t type, as_value 
&v);
-
-       abc_block();
-
-private:
-       void check_multiname_name(boost::uint32_t name);
-       void check_multiname_namespace(boost::uint32_t ns);
-       void check_multiname_namespaceset(boost::uint32_t nsset);
 
 };
 
-} /* namespace gnash */
+} 
 
 #endif /* GNASH_ABC_BLOCK_H */
 

=== modified file 'libcore/parser/action_buffer.cpp'
--- a/libcore/parser/action_buffer.cpp  2009-03-05 16:57:54 +0000
+++ b/libcore/parser/action_buffer.cpp  2009-03-09 06:50:41 +0000
@@ -42,7 +42,6 @@
 
 // Forward declarations
 static float convert_float_little(const void *p);
-static double convert_double_wacky(const void *p);
 
 action_buffer::action_buffer(const movie_definition& md)
     :
@@ -531,7 +530,7 @@
 // Read a 64-bit double from memory, stored in word-swapped little-endian
 // format and return it as a host-endian double.
 // "Wacky format" is 45670123.
-static double
+double
 convert_double_wacky(const void *p)
 {
     const boost::uint8_t *cp = (const boost::uint8_t *)p;    // Handy uchar 
version

=== modified file 'libcore/parser/action_buffer.h'
--- a/libcore/parser/action_buffer.h    2009-01-22 20:10:39 +0000
+++ b/libcore/parser/action_buffer.h    2009-02-20 12:24:00 +0000
@@ -39,6 +39,8 @@
 
 class ActionExec;
 
+double convert_double_wacky(const void *p);
+
 /// A code segment.
 //
 /// This currently holds the actions in a memory

=== added file 'libcore/swf/DoABCTag.cpp'
=== added file 'libcore/swf/DoABCTag.h'
--- a/libcore/swf/DoABCTag.h    1970-01-01 00:00:00 +0000
+++ b/libcore/swf/DoABCTag.h    2009-03-25 11:02:48 +0000
@@ -0,0 +1,118 @@
+// 
+//   Copyright (C) 2007, 2008 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
+
+#ifndef GNASH_SWF_DOABCTAG_H
+#define GNASH_SWF_DOABCTAG_H
+
+#include "ControlTag.h" // for inheritance
+#include "swf.h" // for tag_type definition
+#include "action_buffer.h" // for composition
+#include "MovieClip.h" // for inlines
+#include "SWFStream.h" // for inlines
+#include "abc_block.h"
+#include "Machine.h"
+
+// Forward declarations
+namespace gnash {
+       class movie_definition;
+}
+
+namespace gnash {
+namespace SWF {
+
+/// SWF Tag DoABC (72)
+//
+///
+class DoABCTag : public ControlTag
+{
+public:
+
+       DoABCTag(abc_block *block) : mABC(block)
+
+       {}
+
+       virtual void execute(MovieClip* /*m*/, DisplayList& /* dlist */) const
+       {
+               VM& vm = VM::get();
+               log_debug("getting machine.");
+               Machine *mach = vm.getMachine();
+               as_object* global = vm.getGlobal();
+               
+        mABC->prepare(mach);
+
+               log_debug("Begin execute abc_block.");
+//             log_debug("Getting entry script.");
+//             asClass* start_script = a.mScripts.back();
+//             log_debug("Getting constructor.");
+//             asMethod* method = start_script->getConstructor();
+//             log_debug("Loding code stream.");
+               mach->initMachine(mABC,global);
+               log_debug("Executing machine...");
+               mach->execute();
+       }
+
+       // Tell the caller that we are an action tag.
+       virtual bool is_action_tag() const
+       {
+           return true;
+       }
+
+    void read(SWFStream* /*in*/)
+    {
+    }
+       
+       static void doABCLoader(SWFStream& in, TagType tag,
+                       movie_definition& m, const gnash::RunInfo&)
+       {
+               if (tag == SWF::DOABCDEFINE) {
+                       in.ensureBytes(4);
+                       static_cast<void> (in.read_u32());
+                       std::string name;
+                       in.read_string(name);
+               }
+
+               abc_block* block = new abc_block();
+               block->read(in);
+//             mABC = block;
+               DoABCTag *ABCtag = new DoABCTag(block);
+               
+/*
+               IF_VERBOSE_PARSE (
+               log_parse(_("tag %d: do_action_loader"), tag);
+               log_parse(_("-- actions in frame %d"), m->get_loading_frame());
+               );*/
+
+               m.addControlTag(ABCtag); // ownership transferred
+       }
+
+private:
+
+       abc_block *mABC;
+       
+};
+
+} // namespace gnash::SWF
+} // namespace gnash
+
+
+#endif // GNASH_SWF_DOABCTAG_H
+
+
+// Local Variables:
+// mode: C++
+// indent-tabs-mode: t
+// End:

=== added file 'libcore/swf/SymbolClassTag.h'
--- a/libcore/swf/SymbolClassTag.h      1970-01-01 00:00:00 +0000
+++ b/libcore/swf/SymbolClassTag.h      2009-05-14 11:41:42 +0000
@@ -0,0 +1,99 @@
+// 
+//   Copyright (C) 2007, 2008 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
+
+#ifndef GNASH_SWF_SYMBOLCLASSTAG_H
+#define GNASH_SWF_SYMBOLCLASSTAG_H
+
+#include "ControlTag.h" // for inheritance
+#include "swf.h" // for tag_type definition
+#include "action_buffer.h" // for composition
+#include "MovieClip.h" // for inlines
+#include "SWFStream.h" // for inlines
+#include "Machine.h"
+#include "VM.h"
+
+// Forward declarations
+namespace gnash {
+       class movie_definition;
+}
+
+namespace gnash {
+namespace SWF {
+
+/// SWF Tag SymbolClass (76) 
+//
+class SymbolClassTag : public ControlTag
+{
+public:
+
+       SymbolClassTag(std::string name) 
+        :
+        _rootClass(name)
+
+       {}
+
+       virtual void execute(MovieClip* /*m*/, DisplayList& /* dlist */) const
+       {
+               VM& vm = VM::get();
+               Machine *mach = vm.getMachine();
+               log_debug("SymbolClassTag: Creating class %s.", _rootClass);
+               mach->instantiateClass(_rootClass, vm.getGlobal());
+       }
+
+       // Tell the caller that we are an action tag.
+       virtual bool is_action_tag() const
+       {
+           return true;
+       }
+       static void loader(SWFStream& in, TagType tag,
+                       movie_definition& m, const RunInfo& /*r*/)
+       {
+               assert(tag == SYMBOLCLASS); //76
+
+               log_unimpl(_("%s tag parsed but not yet used"), "SYMBOLCLASS");
+               in.ensureBytes(2);
+               boost::uint16_t num_symbols = in.read_u16();
+               log_debug("There are %u symbols.", num_symbols);
+               for (unsigned int i = 0; i < num_symbols; ++i) {
+                       in.ensureBytes(2);
+                       boost::uint16_t character = in.read_u16();
+                       std::string name;
+                       in.read_string(name);
+                       log_debug("Symbol %u name=%s tag=%u", i, name, 
character);
+                       if (character == 0) {
+                               SymbolClassTag *symbolClassTag = new 
SymbolClassTag(name);
+                               m.addControlTag(symbolClassTag);
+                       }
+               }
+       }
+
+private:
+
+    const std::string _rootClass;
+};
+
+} // namespace gnash::SWF
+} // namespace gnash
+
+
+#endif // GNASH_SWF_SYMBOLCLASSTAG_H
+
+
+// Local Variables:
+// mode: C++
+// indent-tabs-mode: t
+// End:

=== modified file 'libcore/swf/tag_loaders.cpp'
--- a/libcore/swf/tag_loaders.cpp       2009-04-09 12:45:20 +0000
+++ b/libcore/swf/tag_loaders.cpp       2009-05-14 11:45:23 +0000
@@ -44,15 +44,12 @@
 #include "GnashException.h"
 #include "swf/DefineVideoStreamTag.h"
 #include "sound_definition.h"
-#include "abc_block.h"
 #include "SoundInfo.h"
-#include "gnash.h" // FileType enum
+#include "gnash.h" 
 #include "MediaHandler.h"
 #include "SimpleBuffer.h"
 #include "sound_handler.h"
 #include "ExportableResource.h"
-
-// TODO: pass the render handler with RunInfo and use that.
 #include "render.h"
 
 #ifdef HAVE_ZLIB_H
@@ -1323,41 +1320,23 @@
 }
 
 void
-abc_loader(SWFStream& in, TagType tag, movie_definition& /*m*/,
-        const RunInfo& /*r*/)
-{
-    assert(tag == SWF::DOABC
-        || tag == SWF::DOABCDEFINE); // 72 or 82
-
-    abc_block a;
-
-    if (tag == SWF::DOABCDEFINE)
-    {
-
-        // Skip the 'flags' until they are actually used.
-        in.ensureBytes(4);
-        static_cast<void> (in.read_u32());
-        std::string name;
-        in.read_string(name);
-    }
-
-    //TODO: Move this to execution time so that as_object can be used.
-    // bool success = a.read(in);
-
-    log_unimpl(_("%s tag parsed but not yet used"),
-            tag == SWF::DOABC ? "DOABC" : "DOABCDEFINE");
-}
-
-void
-define_scene_frame_label_loader(SWFStream& /*in*/, TagType tag,
+define_scene_frame_label_loader(SWFStream& in, TagType tag,
         movie_definition& /*m*/, const RunInfo& /*r*/)
 {
     assert(tag == SWF::DEFINESCENEANDFRAMELABELDATA); //86
 
-    log_unimpl(_("%s tag parsed but not yet used"), 
-            "DEFINESCENEANDFRAMELABELDATA");
+    in.ensureBytes(4);
+
+    boost::uint32_t scene_count = in.read_u32();
+    std::stringstream ss;
+    ss << "Scene count is " << scene_count << ".\n";
+
+    log_debug("%s", ss.str());
+
+    log_unimpl(_("%s tag parsed but not yet used"), 
"DEFINESCENEANDFRAMELABELDATA");
 }
 
+
 } // namespace gnash::SWF::tag_loaders
 } // namespace gnash::SWF
 

=== modified file 'libcore/swf/tag_loaders.h'
--- a/libcore/swf/tag_loaders.h 2009-04-07 12:45:25 +0000
+++ b/libcore/swf/tag_loaders.h 2009-05-14 10:26:47 +0000
@@ -114,8 +114,6 @@
 void sound_stream_block_loader(SWFStream&, TagType, movie_definition&,
                const RunInfo&);
 
-void abc_loader(SWFStream&, TagType, movie_definition&, const RunInfo&);
-
 void
 define_video_loader(SWFStream& in, TagType tag, movie_definition& m,
                const RunInfo& r);

=== added file 'libcore/vm/CodeStream.cpp'
--- a/libcore/vm/CodeStream.cpp 1970-01-01 00:00:00 +0000
+++ b/libcore/vm/CodeStream.cpp 2008-08-28 12:39:21 +0000
@@ -0,0 +1,130 @@
+// CodeStream.cpp A class which allows bounds-checked reading from a char array
+//
+//   Copyright (C) 2007, 2008 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
+
+#include "CodeStream.h"
+#include <iostream>
+
+namespace gnash {
+
+/// Read a variable length encoded 32 bit unsigned integer
+boost::uint32_t
+CodeStream::read_V32()
+{
+       char data;
+
+       read(&data,1);
+       boost::uint32_t result = data;
+       if (!(result & 0x00000080))     return result;
+
+       read(&data,1);
+       result = (result & 0x0000007F) | data << 7;
+       if (!(result & 0x00004000)) return result;
+       
+       read(&data,1);
+       result = (result & 0x00003FFF) | data << 14;
+       if (!(result & 0x00200000)) return result;
+
+       read(&data,1);
+       result = (result & 0x001FFFFF) | data << 21;
+       if (!(result & 0x10000000)) return result;
+
+       read(&data,1);
+       return (result & 0x0FFFFFFF) | data << 28;
+
+}
+
+/// Read an opcode for ActionScript 3
+boost::uint8_t
+CodeStream::read_as3op()
+{
+       char data;
+       read(&data,1);
+       if(eof()){
+               return 0;
+       }
+       else{
+               return static_cast<boost::uint8_t> (data);
+       }
+}
+
+/// Change the current position by a relative value.
+void
+CodeStream::seekBy(int change)
+{
+       seekg(change,ios_base::cur);
+}
+
+/// Set the current position to an absolute value (relative to the start)
+void
+CodeStream::seekTo(unsigned int set)
+{
+       seekg(set);
+}
+
+//TODO: Is there a better way to read a 24 bit signed int?
+boost::int32_t
+CodeStream::read_S24()
+{
+       char buffer[3];
+       read(buffer,3);
+       uint32_t result = buffer[0] & 0xFF;
+       result |= buffer[1] & 0xFF << 8;
+       result |= buffer[2] & 0xFF << 16;
+       if (result & (1 << 23)) {
+               result |= -1 << 24;
+       }
+
+       return static_cast<boost::int32_t>(result);
+}
+       
+/// Read a signed 8-bit character.
+int8_t
+CodeStream::read_s8()
+{
+       char data;
+       read(&data,1);
+       return static_cast<int8_t> (data);
+}
+
+/// Read an unsigned 8-bit character.
+boost::uint8_t
+CodeStream::read_u8()
+{
+       char data;
+       read(&data,1);
+       return static_cast<boost::uint8_t> (data);
+}
+
+/// Same as read_V32(), but doesn't bother with the arithmetic for
+/// calculating the value.
+void 
+CodeStream::skip_V32()
+{
+       // shortcut evalution is mandated as standard.
+       //TODO: Make this more efficient.
+//     if ((*mCurrent++ & 0x80) && (*mCurrent++ & 0x80) && (*mCurrent++ &0x80)
+//             && (*mCurrent++ & 0x80) && (*mCurrent++ & 0x80)){
+//             return;
+//     }
+       read_V32();
+       return;
+
+}
+
+} // namespace gnash
+

=== modified file 'libcore/vm/CodeStream.h'
--- a/libcore/vm/CodeStream.h   2009-04-03 09:18:40 +0000
+++ b/libcore/vm/CodeStream.h   2009-04-08 11:48:21 +0000
@@ -20,6 +20,9 @@
 #define GNASH_CODESTREAM_H
 
 #include <boost/utility.hpp>
+#include <boost/cstdint.hpp>
+#include <istream>
+#include <sstream>
 
 namespace gnash {
 
@@ -32,222 +35,39 @@
 /// CodeStream provides a safe interface to read various things from a
 /// DisplayObject array of known size.  Any attempt to access memory outside
 /// of the given array will throw an exception of type CodeStreamException
-class CodeStream : private boost::noncopyable
+class CodeStream : public std::istream, private boost::noncopyable
 {
 public:
-       /// Construct a CodeStream
-       ///
-       /// @param pStart
-       /// The beginning of the DisplayObject array
-       ///
-       /// @param length
-       /// The length of the array. Memory in [pStart, pStart + length) may
-       /// be accessed. It is not an error to send a length of 0.
-       ///
-       /// @param own
-       /// If true, the given memory will be copied. Otherwise, the caller
-       /// retains ownership and should not delete the memory before this
-       /// is invalid.
-       CodeStream(const char *pStart, std::size_t length, bool own = false) :
-               mRaw(pStart), mRawEnd(pStart + length), mEnd(pStart + length),
-               mOwn(false)
-       {
-               if (own && length > 0)
-               {
-                       mCurrent = mRaw = new char[length];
-                       memcpy(const_cast<char*>(mRaw), pStart, length);
-                       mRawEnd = mEnd = mRaw + length;
-                       mOwn = true;
-               }
-       }
-
-       /// Construct an empty CodeStream. Call reInitialize to fill it.
-       CodeStream() : mRaw(NULL), mRawEnd(NULL), mEnd(NULL), mOwn(false)
-       {/**/}
-
-       /// Destruct a CodeStream
-       ///
-       /// If the stream owns the memory, it will destroy it.
-       ~CodeStream()
-       { if (mOwn) delete [] mRaw; }
-
-       /// Pseudo-construct a CodeStream
-       ///
-       /// This has the same parameters as the non-default constructor,
-       /// but it can be used to re-initialize the CodeStream object.
-       void reInitialize(const char *pStart, std::size_t length,
-               bool own = false)
-       {
-               if (own)
-               {
-                       // Delete mRaw if it's not large enough and it's ours.
-                       if (mOwn && length > static_cast<unsigned int> (mRawEnd 
- mRaw))
-                       {
-                               mOwn = false;
-                               delete [] mRaw;
-                       }
-                       if (!mOwn)
-                               mRaw = new char [length];
-                       memcpy(const_cast<char *>(mRaw), pStart, length);
-                       mEnd = mRawEnd = pStart + length;
-                       mCurrent = mRaw;
-                       return;
-               }
-
-               if (mOwn)
-               {
-                       // We own now, but don't want to.
-                       delete [] mRaw;
-               }
-               mCurrent = mRaw = pStart;
-               mEnd = mRawEnd = pStart + length;
-       }
-
-       /// Read a variable length encoded 32 bit unsigned integer
-       boost::uint32_t read_V32()
-       {
-               if (mCurrent == mEnd) throw CodeStreamException();
-
-               // We can do an unchecked read in these cases.
-               if (mEnd - mCurrent > 4 || !(*(mEnd - 1) & 0x80))
-               {
-                       boost::uint32_t result = *mCurrent++;
-                       if (!(result & 0x00000080))     return result;
-                       result = (result & 0x0000007F) | *mCurrent++ << 7;
-                       if (!(result & 0x00004000)) return result;
-                       result = (result & 0x00003FFF) | *mCurrent++ << 14;
-                       if (!(result & 0x00200000)) return result;
-                       result = (result & 0x001FFFFF) | *mCurrent++ << 21;
-                       if (!(result & 0x10000000)) return result;
-                       return (result & 0x0FFFFFFF) | *mCurrent++ << 28;
-               }       
-               boost::uint32_t result = *mCurrent++;
-               if (!(result & 0x00000080))     return result;
-               if (mCurrent == mEnd) throw CodeStreamException();
-               result = (result & 0x0000007F) | *mCurrent++ << 7;
-               if (!(result & 0x00004000)) return result;
-               if (mCurrent == mEnd) throw CodeStreamException();
-               result = (result & 0x00003FFF) | *mCurrent++ << 14;
-               if (!(result & 0x00200000)) return result;
-               if (mCurrent == mEnd) throw CodeStreamException();
-               result = (result & 0x001FFFFF) | *mCurrent++ << 21;
-               if (!(result & 0x10000000)) return result;
-               if (mCurrent == mEnd) throw CodeStreamException();
-               return (result & 0x0FFFFFFF) | *mCurrent++ << 28;
-       }
-
-       /// Read an opcode for ActionScript 3
-       boost::uint8_t read_as3op()
-       {
-               if (mCurrent == mEnd)
-                       return 0;
-               return static_cast<boost::uint8_t> (*mCurrent++);
-       }
-
-       /// Provide the offset into the stream of the current position. Can be
-       /// used for seeking.
-       std::size_t tell()
-       { return mCurrent - mRaw; }
-
-       /// Change the current position by a relative value.
-       void seekBy(int change)
-       {
-               if ((change > 0 && change > (mEnd - mCurrent)) ||
-                       (change < 0 && -change > (mCurrent - mRaw)))
-                       throw CodeStreamException();
-               mCurrent += change;
-       }
-
-       /// Set the current position to an absolute value (relative to the 
start)
-       void seekTo(unsigned int set)
-       {
-               if (set > static_cast<unsigned int> (mEnd - mRaw))
-                       throw CodeStreamException();
-               mCurrent = mRaw + set;
-       }
-
-       /// Read a signed integer encoded in 24 bits.
-       boost::int32_t read_S24()
-       {
-               if (mEnd - mCurrent < 3)
-                       throw CodeStreamException();
-               int result = *mCurrent++ + (*mCurrent++ << 8) + (*mCurrent ++ 
<< 16);
-               if (result & (1 << 23)) // Negative result, adjust 
appropriately.
-                       result = -(result & ~(1 << 23));
-               return static_cast<boost::int32_t>(result);
-       }
-
-       /// Read a signed 8-bit DisplayObject.
-    boost::int8_t read_s8()
-       {
-               if (mCurrent == mEnd)
-                       throw CodeStreamException();
-               return static_cast<boost::int8_t> (*mCurrent++);
-       }
-
-       /// Read an unsigned 8-bit DisplayObject.
-       boost::uint8_t read_u8()
-       {
-               if (mCurrent == mEnd)
-                       throw CodeStreamException();
-               return static_cast<boost::uint8_t> (*mCurrent++);
-       }
-
-       /// Set a stop at position bytes from the start. This becomes the new
-       /// effective end of the code stream, but the end may be unstopped or
-       /// set to different length. In no case can the end be set to a point
-       /// beyond the original end of the stream.
-       void set_end(unsigned int position)
-       {
-               if (position > static_cast<unsigned int>(mRawEnd - mRaw))
-                       throw CodeStreamException();
-               mEnd = mRaw + position;
-               if (mCurrent > mEnd)
-                       mCurrent = mEnd;
-       }
-
-       /// Unset any stop placed on the stream.
-       void unset_end()
-       { mEnd = mRawEnd; }
-
-       /// Take ownership of mRaw.  mRaw should be a block which can be
-       /// de-allocated by calling delete [] mRaw
-       void takeMemoryOwnership()
-       { mOwn = true; }
-
-       /// Same as read_V32(), but doesn't bother with the arithmetic for
-       /// calculating the value.
-       void skip_V32()
-       {
-               if (mCurrent == mEnd) throw CodeStreamException();
-
-               // We can do an unchecked read in these cases.
-               if (mEnd - mCurrent > 4 || !(*(mEnd - 1) & 0x80))
-               {
-                       // shortcut evalution is mandated as standard.
-                       if ((*mCurrent++ & 0x80) && (*mCurrent++ & 0x80) && 
(*mCurrent++ &0x80)
-                               && (*mCurrent++ & 0x80) && (*mCurrent++ & 0x80))
-                               return;
-                       return;
-               }       
-               if (!(*mCurrent++ & 0x80)) return;
-               if (mCurrent == mEnd) throw CodeStreamException();
-               if (!(*mCurrent++ & 0x80)) return;
-               if (mCurrent == mEnd) throw CodeStreamException();
-               if (!(*mCurrent++ & 0x80)) return;
-               if (mCurrent == mEnd) throw CodeStreamException();
-               if (!(*mCurrent++ & 0x80)) return;
-               if (mCurrent == mEnd) throw CodeStreamException();
-               ++mCurrent;
-       }
-
-private:
-       const char *mRaw; // Nobody may write into this, and we handle all 
access.
-       const char *mRawEnd; // We own the memory in [mRaw, mRawEnd)
-       const char *mEnd; // We may not read this or beyond.
-       const char *mCurrent; // Our current read pointer.
-       bool mOwn; // Do we own the memory?
+       CodeStream(std::string data): std::istream(new std::stringbuf(data)){
+               
+       }
+
+/// Read a variable length encoded 32 bit unsigned integer
+boost::uint32_t read_V32();
+
+/// Read an opcode for ActionScript 3
+boost::uint8_t read_as3op();
+
+/// Change the current position by a relative value.
+void seekBy(int change);
+
+/// Set the current position to an absolute value (relative to the start)
+void seekTo(unsigned int set);
+
+///Read a signed 24 bit interger.
+boost::int32_t read_S24();
+
+/// Read a signed 8-bit character.
+int8_t read_s8();
+
+/// Read an unsigned 8-bit character.
+boost::uint8_t read_u8();
+
+/// Same as read_V32(), but doesn't bother with the arithmetic for
+/// calculating the value.
+void skip_V32();
+
 };
 
 } // namespace gnash
-#endif /* GNASH_CODESTREAM_H */
+#endif 

=== modified file 'libcore/vm/Machine.cpp'
--- a/libcore/vm/Machine.cpp    2009-02-25 22:33:03 +0000
+++ b/libcore/vm/Machine.cpp    2009-05-14 08:00:05 +0000
@@ -24,9 +24,12 @@
 #include "Array_as.h"
 #include "abc_block.h"
 #include "fn_call.h"
+#include "abc_function.h"
+#include "action.h"
+#include "Object.h"
+#include "VM.h"
 
 namespace gnash {
-
 /// The type of exceptions thrown by ActionScript.
 class ASException
 {
@@ -48,65 +51,74 @@
 {
 public:
        ASTypeError() : ASException()
-       {/**/}
+       {}
 };
 
 // Functions for getting pool constants.
-static inline std::string& pool_string(boost::uint32_t index, abc_block *pool)
-{
-       if (!pool)
-               throw ASException();
-       return pool->mStringPool.at(index);
-}
-
-static inline int pool_int(boost::uint32_t index, abc_block *pool)
-{
-       if (!pool)
-               throw ASException();
-       return pool->mIntegerPool.at(index);
-}
-
-static inline unsigned int pool_uint(boost::uint32_t index, abc_block *pool)
-{
-       if (!pool)
-               throw ASException();
-       return pool->mUIntegerPool.at(index);
-}
-
-static inline double pool_double(boost::uint32_t index, abc_block *pool)
-{
-       if (!pool)
-               throw ASException();
-       return pool->mDoublePool.at(index);
-}
-
-static inline asNamespace* pool_namespace(boost::uint32_t index, abc_block 
*pool)
-{
-       if (!pool)
-               throw ASException();
-       return pool->mNamespacePool.at(index);
-}
-
-static inline asMethod* pool_method(boost::uint32_t index, abc_block* pool)
-{
-       if (!pool)
-               throw ASException();
-       return pool->mMethods.at(index);
-}
-
-static inline asClass* pool_class(boost::uint32_t index, abc_block* pool)
-{
-       if (!pool)
-               throw ASException();
-       return pool->mClasses.at(index);
+static inline const std::string&
+pool_string(boost::uint32_t index, abc_block *pool)
+{
+       if (!pool) throw ASException();
+       return pool->stringPoolAt(index);
+}
+
+static inline int
+pool_int(boost::uint32_t index, abc_block *pool)
+{
+       if (!pool) throw ASException();
+       return pool->integerPoolAt(index);
+}
+
+static inline unsigned int
+pool_uint(boost::uint32_t index, abc_block *pool)
+{
+       if (!pool) throw ASException();
+       return pool->uIntegerPoolAt(index);
+}
+
+static inline double
+pool_double(boost::uint32_t index, abc_block *pool)
+{
+       if (!pool) throw ASException();
+       log_abc("Getting double from pool at index %u",index);
+       return pool->doublePoolAt(index);
+}
+
+static inline asNamespace*
+pool_namespace(boost::uint32_t index, abc_block *pool)
+{
+       if (!pool) throw ASException();
+       return pool->namespacePoolAt(index);
+}
+
+static inline asMethod*
+pool_method(boost::uint32_t index, abc_block* pool)
+{
+       if (!pool) throw ASException();
+       return pool->methodPoolAt(index);
+}
+
+static inline asClass*
+pool_class(boost::uint32_t index, abc_block* pool)
+{
+       if (!pool) throw ASException();
+       return pool->classPoolAt(index);
 }
 
 // Don't make this a reference or you'll taint the pool.
-static inline asName pool_name(boost::uint32_t index, abc_block* pool)
+static inline asName
+pool_name(boost::uint32_t index, abc_block* pool)
 {
-       if (!pool)
-               throw ASException();
-       return pool->mMultinamePool.at(index);
+       if (!pool) throw ASException();
+       asName multiname = pool->multinamePoolAt(index);
+#if 0
+    log_abc("Searching multiname pool for property id=%u abc name=%u "
+            "global name = %u abc string=%s flags=0x%X name_space=%u",
+            index, multiname.getABCName(), multiname.getGlobalName(),
+            pool->mStringPool[multiname.getABCName()],multiname.mFlags | 0x0,
+            multiname.getNamespace()->getURI());
+#endif
+       return multiname;
 }
 
 /// ENSURE_NUMBER makes sure that the given argument is a number,
@@ -130,11 +142,15 @@
 
 /// ENSURE_OBJECT will throw an exception if the argument isn't an
 /// object. It's a macro to match with the other ENSURE_ macros.
+#ifdef PRETEND
 #define ENSURE_OBJECT(vte)                                                     
                                                \
 {                                                                              
                                                                        \
        if (!vte.is_object())                                                   
                                                \
                throw ASException();                                            
                                                \
 }                                                                              
                   /* end of ENSURE_OBJECT */
+#else
+#define ENSURE_OBJECT(vte)
+#endif
 
 /// ENSURE_STRING makes sure that the given argument is a string,
 /// calling the toString method if necessary -- it's a macro so that
@@ -189,40 +205,12 @@
        }                                                                       
                                                                        \
 }                                                                              
                /* end of ABSTRACT_COMPARE */
 
-#define ABSTRACT_EQUALITY(st, ev1, ev2, strictness_on)                         
                \
-{                                                                              
                                                                        \
-       bool *store = &st;                                                      
                                                        \
-       as_value &a = ev1; /* Don't call ev1 multiple times */                  
                \
-       as_value &b = ev2; /* Don't call ev2 multiple times */                  
                \
-       if (a.is_object() && b.is_object())                                     
                                        \
-               *store = a.to_object() == b.to_object();                        
                                \
-       else if (a.is_object() || b.is_object())                                
                                \
-               *store = false;                                                 
                                                        \
-       else if (a.ptype() != b.ptype())                                        
                                        \
-       {                                                                       
                                                                        \
-               if (!strictness_on && (a.is_undefined() || b.is_undefined()) && 
        \
-                       (a.is_null() || b.is_null()))                           
                                        \
-                       *store = true;                                          
                                                        \
-               else                                                            
                                                                \
-                       *store = false;                                         
                                                        \
-       }                                                                       
                                                                        \
-       else if (a.is_number())                                                 
                                                \
-       {                                                                       
                                                                        \
-               double ad = a.to_number(); double bd = b.to_number();           
                \
-               if (isNaN(ad) || isNaN(bd))                                     
                                                \
-                       *store = false;                                         
                                                        \
-               else if (isInf(ad) && ad > 0)                                   
                                        \
-                       *store = (isInf(bd) && bd > 0);                         
                                        \
-               else if (isInf(ad) && ad < 0)                                   
                                        \
-                       *store = (isInf(bd) && bd < 0);                         
                                        \
-               else                                                            
                                                                \
-                       *store = (ad == bd);                                    
                                                \
-       }                                                                       
                                                                        \
-       else if (a.is_bool() && b.is_bool())                                    
                                \
-               *store = a.to_bool() == b.to_bool();                            
                                \
-       else                                                                    
                                                                \
-               *store = false;                                                 
                                                        \
-}                                                                              
           /* end of ABSTRACT_EQUALITY */
+inline bool abstractEquality(const as_value& a, const as_value& b,
+       bool strictness_on)
+{
+    if ( strictness_on ) return a.strictly_equals(b);
+    else return a.equals(b);
+}                                                              
 
 #define ABSTRACT_TYPELATE(st, checkval, matchval)                              
                        \
 {                                                                              
                                                                        \
@@ -257,23 +245,27 @@
 void
 Machine::execute()
 {
-       boost::uint8_t opcode;
-
        for ( ; ; )
        {
-               std::size_t opStart = mStream->tell();
-
-       if (mIsAS3)
+               std::size_t opStart = mStream->tellg();
+//             std::size_t opStart = mStreamStack.top(0)->tell();
+       if (1/*mIsAS3*/)
        {
-       switch ((opcode = mStream->read_as3op())) // Assignment intentional
+    SWF::abc_action_type opcode = (SWF::abc_action_type)mStream->read_as3op();
+       
+       log_abc("** Executing opcode: %s (%d) **", opcode, (int)opcode);
+//     continue;
+       switch ((opcode /*= mStream->read_as3op()*/)) // Assignment intentional
        {
        default:
                throw ASException();
-       case 0:
+               break;
+       case SWF::ABC_ACTION_END:
        {
 // This is not actually an opcode -- it occurs when the stream is
 // empty. We may need to return from a function, or we may be done.
-               break;
+//             break;
+               return;
        }
 /// 0x01 ABC_ACTION_BKPT
 /// Do: Enter the debugger if one has been invoked.
@@ -320,7 +312,7 @@
                // If we don't have a super, throw.
                if (!super)
                        throw ASReferenceError();
-               Property *b = super->findProperty(a.getName(), 
+               Property *b = super->findProperty(a.getABCName(), 
                        a.getNamespace()->getURI());
                // The object is on the top already.
                pushGet(super, mStack.top(0), b);
@@ -347,7 +339,7 @@
                as_object* super = 
mStack.pop().to_object()->get_prototype().get();
                if (!super)
                        throw ASReferenceError();
-               Property* b = super->findProperty(a.getName(), 
+               Property* b = super->findProperty(a.getABCName(), 
                        a.getNamespace()->getURI());
                mStack.push(vobj);
                pushSet(super, vobj, b);
@@ -361,7 +353,7 @@
        case SWF::ABC_ACTION_DXNS:
        {
                boost::uint32_t soffset = mStream->read_V32();
-               std::string& uri = pool_string(soffset, mPoolObject);
+               const std::string& uri = pool_string(soffset, mPoolObject);
                mDefaultXMLNamespace = mCH->anonNamespace(mST.find(uri));
                break;
        }
@@ -387,7 +379,7 @@
        case SWF::ABC_ACTION_KILL:
        {
                boost::uint32_t regNum = mStream->read_V32();
-               mFrame.value(regNum).set_undefined();
+               mRegisters[regNum].set_undefined();
                break;
        }
 /// 0x09 ABC_ACTION_LABEL
@@ -466,7 +458,10 @@
 /// Equivalent: ACTION_BRANCHALWAYS
        case SWF::ABC_ACTION_JUMP:
        {
-               JUMPIF(true);
+               boost::int32_t bytes = mStream->read_S24();
+               log_abc("Jumping %d bytes.",bytes);
+               mStream->seekBy(bytes);
+
                break;
        }
 /// 0x11 ABC_ACTION_IFTRUE
@@ -479,9 +474,14 @@
 /// Equivalent: ACTION_BRANCHIFTRUE
        case SWF::ABC_ACTION_IFTRUE:
        {
-               bool truth = mStack.top(0).to_bool();
-               mStack.drop(1);
-               JUMPIF(truth);
+               boost::int32_t bytes = mStream->read_S24();
+               if (pop_stack().to_bool()) {
+                       log_abc("Jumping %d bytes.",bytes);
+                       mStream->seekBy(bytes);
+               }
+               else{
+                       log_abc("Would have jumpied %d bytes.", bytes);
+               }
                break;
        }
 /// 0x12 ABC_ACTION_IFFALSE
@@ -493,9 +493,13 @@
 /// Do: If a is 'false', move by jump in stream, as ABC_ACTION_JUMP does.
        case SWF::ABC_ACTION_IFFALSE:
        {
-               bool truth = mStack.top(0).to_bool();
-               mStack.drop(1);
-               JUMPIF(!truth);
+               boost::int32_t bytes = mStream->read_S24();
+               bool truth = pop_stack().to_bool();
+               if (!truth) {
+                       log_abc("Jumping...");
+                       log_abc("%d bytes.",bytes);
+                       mStream->seekBy(bytes);
+               }
                break;
        }
 /// 0x13 ABC_ACTION_IFEQ
@@ -508,10 +512,16 @@
 /// Do: If a == b (weakly), move by jump in stream, as ABC_ACTION_JUMP does.
        case SWF::ABC_ACTION_IFEQ:
        {
-               bool truth;
-               ABSTRACT_EQUALITY(truth, mStack.top(1), mStack.top(0), false);
-               mStack.drop(2);
-               JUMPIF(truth);
+               boost::int32_t bytes = mStream->read_S24();
+               as_value b = pop_stack();
+               as_value a = pop_stack();
+               if (a.equals(b)) {
+                       log_abc("Jumping %d bytes.",bytes);
+                       mStream->seekBy(bytes);
+               }
+               else{
+                       log_abc("Would have jumped %d bytes", bytes);
+               }
                break;
        }
 /// 0x14 ABC_ACTION_IFNE
@@ -524,10 +534,16 @@
 /// Do: If a != b (weakly), move by jump in stream, as ABC_ACTION_JUMP does.
        case SWF::ABC_ACTION_IFNE:
        {
-               bool truth;
-               ABSTRACT_EQUALITY(truth, mStack.top(1), mStack.top(0), false);
-               mStack.drop(2);
-               JUMPIF(!truth);
+               as_value a = pop_stack();
+               as_value b = pop_stack();
+               boost::int32_t bytes = mStream->read_S24();
+               if (!a.equals(b)) {
+                       log_abc("Jumping... %d bytes.",bytes);
+                       mStream->seekBy(bytes);
+               }
+               else{
+                       log_abc("Would have jumped %d bytes",bytes);
+               }
                break;
        }
 /// 0x15 ABC_ACTION_IFLT
@@ -540,10 +556,17 @@
 /// Do: If a < b move by jump in stream, as ABC_ACTION_JUMP does.
        case SWF::ABC_ACTION_IFLT:
        {
-               bool truth;
-               ABSTRACT_COMPARE(truth, mStack.top(1), mStack.top(0), false);
-               mStack.drop(2);
-               JUMPIF(truth); // truth is: a < b
+               as_value b = pop_stack();
+               as_value a = pop_stack();
+               boost::int32_t bytes = mStream->read_S24();
+               bool jump = a.newLessThan(b).to_bool();
+               if (jump) {
+                       log_abc("Jumping... %d bytes.",bytes);
+                       mStream->seekBy(bytes);
+               }
+               else{
+                       log_abc("Would have jumped %d bytes",bytes);
+               }
                break;
        }
 /// 0x16 ABC_ACTION_IFLE
@@ -572,11 +595,18 @@
 /// Do: If a > b move by jump in stream, as ABC_ACTION_JUMP does.
        case SWF::ABC_ACTION_IFGT:
        {
+               boost::int32_t bytes = mStream->read_S24();
                bool truth;
                // If b < a, then a > b, with undefined as false
                ABSTRACT_COMPARE(truth, mStack.top(0), mStack.top(1), false);
                mStack.drop(2);
-               JUMPIF(truth); // truth is: b < a
+               if (truth) {
+                       log_abc("Jumping %d bytes.",bytes);
+                       mStream->seekBy(bytes);
+               }
+               else{
+                       log_abc("Would have jumped %d bytes.",bytes);
+               }
                break;
        }
 /// 0x18 ABC_ACTION_IFGE
@@ -605,8 +635,7 @@
 /// Do: If a == b (strictly), move by jump in stream, as ABC_ACTION_JUMP
        case SWF::ABC_ACTION_IFSTRICTEQ:
        {
-               bool truth;
-               ABSTRACT_EQUALITY(truth, mStack.top(1), mStack.top(0), true);
+               bool truth = abstractEquality(mStack.top(1), mStack.top(0), 
true);
                mStack.drop(2);
                JUMPIF(truth);
                break;
@@ -621,8 +650,7 @@
 /// Do: If a != b (strongly), move by jump in stream, as ABC_ACTION_JUMP
        case SWF::ABC_ACTION_IFSTRICTNE:
        {
-               bool truth;
-               ABSTRACT_EQUALITY(truth, mStack.top(1), mStack.top(0), true);
+               bool truth = abstractEquality(mStack.top(1), mStack.top(0), 
true);
                mStack.drop(2);
                JUMPIF(!truth);
                break;
@@ -638,7 +666,7 @@
 ///  Otherwise, move by cases[index] - 1 from stream position on op entry.
        case SWF::ABC_ACTION_LOOKUPSWITCH:
        {
-               std::size_t npos = mStream->tell();
+               std::size_t npos = mStream->tellg();
                if (!mStack.top(0).is_number())
                        throw ASException();
 
@@ -662,8 +690,20 @@
                }
                break;
        }
+/// 0x30 ABC_ACTION_PUSHSCOPE
+       case SWF::ABC_ACTION_PUSHSCOPE:
+       {
+               as_value scope_value = pop_stack();
+               if (!scope_value.to_object().get()) {
+                       IF_VERBOSE_ASCODING_ERRORS(
+                       log_aserror(_("Can't push a null value onto the scope 
stack (%s)."), scope_value);
+                       );
+                       scope_value = as_value(new as_object());
+               }       
+               push_scope_stack(scope_value);
+               break;
+       }
 /// 0x1C ABC_ACTION_PUSHWITH
-/// 0x30 ABC_ACTION_PUSHSCOPE
 /// Stack In:
 ///  scope -- a scope
 /// Stack Out:
@@ -673,25 +713,25 @@
        case SWF::ABC_ACTION_PUSHWITH:
        {
                // A scope object is just a regular object.
-               ENSURE_OBJECT(mStack.top(0));
-               as_object *a = mStack.top(0).to_object().get();
-
-               if (!mScopeStack.empty())
-                       a->set_prototype(mScopeStack.top(0).mScope);
-               else
-                       a->set_prototype(NULL);
-
-               if (opcode == SWF::ABC_ACTION_PUSHWITH &&
-                               mScopeStack.totalSize() == mScopeStack.size())
-               {
-                       mScopeStack.push(Scope(0, a));
-               }
-               else
-               {
-                       mScopeStack.push(Scope(mScopeStack.size(), a));
-               }
-               mCurrentScope = a;
-               mStack.drop(1);
+//             ENSURE_OBJECT(mStack.top(0));
+//             as_object *a = mStack.top(0).to_object().get();
+// 
+//             if (!mScopeStack.empty())
+//                     a->set_prototype(mScopeStack.top(0).mScope);
+//             else
+//                     a->set_prototype(NULL);
+// 
+//             if (opcode == SWF::ABC_ACTION_PUSHWITH &&
+//                             mScopeStack.totalSize() == mScopeStack.size())
+//             {
+//                     mScopeStack.push(Scope(0, a));
+//             }
+//             else
+//             {
+//                     mScopeStack.push(Scope(mScopeStack.size(), a));
+//             }
+//             mCurrentScope = a;
+//             mStack.drop(1);
                break;
        }
 /// 0x1D ABC_ACTION_POPSCOPE
@@ -699,12 +739,14 @@
 ///  shallower than the base's depth.
        case SWF::ABC_ACTION_POPSCOPE:
        {
-               Scope &s = mScopeStack.pop();
-               mScopeStack.setDownstop(s.mHeightAfterPop);
-               if (mScopeStack.empty())
-                       mCurrentScope = NULL;
-               else
-                       mCurrentScope = mScopeStack.top(0).mScope;
+//             LOG_AVM_UNIMPLEMENTED();
+               pop_scope_stack();
+//             Scope &s = mScopeStack.pop();
+//             mScopeStack.setDownstop(s.mHeightAfterPop);
+//             if (mScopeStack.empty())
+//                     mCurrentScope = NULL;
+//             else
+//                     mCurrentScope = mScopeStack.top(0).mScope;
                break;
        }
 /// 0x1E ABC_ACTION_NEXTNAME
@@ -751,8 +793,9 @@
 ///  n -- a Null object.
        case SWF::ABC_ACTION_PUSHNULL:
        {
-               mStack.grow(1);
-               mStack.top(0).set_null();
+               as_value value = as_value();
+               value.set_null();
+               push_stack(value);
                break;
        }
 /// 0x21 ABC_ACTION_PUSHUNDEFINED
@@ -793,9 +836,8 @@
 ///  byte -- as a raw byte
        case SWF::ABC_ACTION_PUSHBYTE:
        {
-        boost::int8_t b = mStream->read_s8();
-               mStack.grow(1);
-               mStack.top(0) = b;
+               int8_t b = mStream->read_s8();
+               push_stack(as_value(b));
                break;
        }
 /// 0x25 ABC_ACTION_PUSHSHORT
@@ -805,8 +847,7 @@
        case SWF::ABC_ACTION_PUSHSHORT:
        {
                signed short s = static_cast<signed short>(mStream->read_V32());
-               mStack.grow(1);
-               mStack.top(0) = s;
+               push_stack(as_value(s));
                break;
        }
 /// 0x26 ABC_ACTION_PUSHTRUE
@@ -823,8 +864,7 @@
 ///  false -- the False object
        case SWF::ABC_ACTION_PUSHFALSE:
        {
-               mStack.grow(1);
-               mStack.top(0).set_bool(false);
+               push_stack(as_value(false));
                break;
        }
 /// 0x28 ABC_ACTION_PUSHNAN
@@ -843,7 +883,7 @@
 ///  .
        case SWF::ABC_ACTION_POP:
        {
-               mStack.drop(1);
+               pop_stack();
                break;
        }
 /// 0x2A ABC_ACTION_DUP
@@ -878,8 +918,7 @@
 ///  value -- String object from string_pool[index]
        case SWF::ABC_ACTION_PUSHSTRING:
        {
-               mStack.grow(1);
-               mStack.top(0) = pool_string(mStream->read_V32(), mPoolObject);
+               push_stack(as_value(pool_string(mStream->read_V32(), 
mPoolObject)));
                break;
        }
 /// 0x2D ABC_ACTION_PUSHINT
@@ -888,8 +927,7 @@
 ///  value -- Integer object from integer_pool[index]
        case SWF::ABC_ACTION_PUSHINT:
        {
-               mStack.grow(1);
-               mStack.top(0) = pool_int(mStream->read_V32(), mPoolObject);
+               push_stack(pool_int(mStream->read_V32(), mPoolObject));
                break;
        }
 /// 0x2E ABC_ACTION_PUSHUINT
@@ -908,8 +946,7 @@
 ///  value -- Double object from double_pool[index]
        case SWF::ABC_ACTION_PUSHDOUBLE:
        {
-               mStack.grow(1);
-               mStack.top(0) = pool_double(mStream->read_V32(), mPoolObject);
+               push_stack(as_value(pool_double(mStream->read_V32(), 
mPoolObject)));
                break;
        }
 /// 0x31 ABC_ACTION_PUSHNAMESPACE
@@ -937,29 +974,33 @@
        {
                boost::int32_t oindex = mStream->read_V32();
                boost::int32_t iindex = mStream->read_V32();
-               as_value &objv = mFrame.value(oindex);
-               as_value &indexv = mFrame.value(iindex);
-               ENSURE_OBJECT(objv);
-               ENSURE_NUMBER(indexv);
+               as_value &objv = mRegisters[oindex];
+               as_value &indexv = mRegisters[iindex];
+               log_abc("Index is %u",indexv.to_number());
+//             ENSURE_OBJECT(objv);
+//             ENSURE_NUMBER(indexv);
                as_object *obj = objv.to_object().get();
                boost::uint32_t index = indexv.to_number<boost::uint32_t>();
+               log_abc("Object is %s index is %u",objv.toDebugString(),index);
                as_object *owner = NULL;
                int next = obj->nextIndex(index, &owner);
-               mStack.grow(1);
+               log_abc("Next index is %d",next);
+//             mStack.grow(1);
                if (next)
                {
-                       mStack.top(0).set_bool(true);
+//                     mStack.top(0).set_bool(true);
+                       push_stack(as_value(true));
                        if (owner)
-                               mFrame.value(oindex) = owner;
+                               mRegisters[oindex] = owner;
                        else
-                               mFrame.value(oindex).set_null();
-                       mFrame.value(iindex) = next;
+                               mRegisters[oindex].set_null();
+                       mRegisters[iindex] = next;
                }
                else
                {
-                       mStack.top(0).set_bool(false);
-                       mFrame.value(oindex).set_null();
-                       mFrame.value(iindex) = 0.0;
+                       push_stack(as_value(false));
+                       mRegisters[oindex].set_null();
+                       mRegisters[iindex] = 0.0;
                }
                break;
        }
@@ -971,9 +1012,18 @@
 ///  function from this information and bind the current scope.
        case SWF::ABC_ACTION_NEWFUNCTION:
        {
-               mStack.grow(1);
-               asMethod *m = pool_method(mStream->read_V32(), mPoolObject);
-               mStack.top(0) = m->construct(mCurrentScope);
+               boost::int32_t method_index = mStream->read_V32();
+               log_abc("Creating new abc_function: method 
index=%u",method_index);
+               asMethod *m = pool_method(method_index, mPoolObject);
+               abc_function* new_function = m->getPrototype();
+               // TODO: SafeStack contains all the scope objects
+        // in for all functions in the call stack.
+               // We should only copy the relevent scope objects
+        // to the function's scope stacks.
+        // Note: this doesn't copy any values, but rather assigns a pointer
+        // value.
+               new_function->setScopeStack(getScopeStack());
+               push_stack(as_value(new_function));
                break;
        }
 /// 0x41 ABC_ACTION_CALL
@@ -1089,7 +1139,7 @@
                as_object *super = mStack.top(argc).to_object()->get_super();
                if (!super)
                        throw ASReferenceError();
-               Property *b = super->findProperty(a.getName(), 
+               Property *b = super->findProperty(a.getABCName(), 
                        a.getNamespace()->getURI());
                if (!b)
                        throw ASReferenceError();
@@ -1119,13 +1169,56 @@
        case SWF::ABC_ACTION_CALLPROPLEX:
        case SWF::ABC_ACTION_CALLPROPVOID:
        {
-               bool lex_only = (opcode == SWF::ABC_ACTION_CALLPROPLEX);
+               as_value result;
                asName a = pool_name(mStream->read_V32(), mPoolObject);
                boost::uint32_t argc = mStream->read_V32();
-               int shift = completeName(a, argc);
+               std::auto_ptr< std::vector<as_value> > args = get_args(argc);
+               //TODO: If multiname is runtime also pop namespace and/or name 
values.
+        
+        if (a.isRuntime()) {
+            log_unimpl("ABC_ACTION_CALL* with runtime multiname");
+        }
+
+               as_value object_val = pop_stack();
+
+               as_object *object = object_val.to_object().get();
+               if (!object) {
+            IF_VERBOSE_ASCODING_ERRORS(
+                       log_aserror(_("Can't call a method of a value that 
doesn't "
+                    "cast to an object (%s)."),
+                object_val);
+            )
+               }
+               else {
+
+                       as_value property = 
object->getMember(a.getGlobalName(), 0);
+               
+                       if (!property.is_undefined() && !property.is_null()) {
+                               log_abc("Calling method %s on object %s",
+                        property.toDebugString(),object_val.toDebugString());
+                               as_environment env = as_environment(_vm);
+                               result = call_method(property,env,object,args);
+
+                       }
+                       else {
+                IF_VERBOSE_ASCODING_ERRORS(
+                               log_aserror(_("Property '%s' of object '%s' is 
'%s', "
+                        "cannot call as method"),
+                        mPoolObject->stringPoolAt(a.getABCName()),
+                        object_val, property);
+                )
+                       }
+
+               }
+        
+        if (opcode == SWF::ABC_ACTION_CALLPROPERTY) {
+            push_stack(result);
+        }
+
+/*             int shift = completeName(a, argc);
                ENSURE_OBJECT(mStack.top(shift + argc));
                as_object *obj = mStack.top(argc + shift).to_object().get();
-               Property *b = obj->findProperty(a.getName(), 
+               Property *b = obj->findProperty(a.getABCName(), 
                        a.getNamespace()->getURI());
                if (!b)
                        throw ASReferenceError();
@@ -1154,17 +1247,27 @@
                if (opcode == SWF::ABC_ACTION_CALLPROPVOID)
                        pushCall(func, obj, mIgnoreReturn, argc, -shift - 1);
                else
-                       pushCall(func, obj, mStack.top(argc + shift), argc, 
-shift);
+                       pushCall(func, obj, mStack.top(argc + shift), argc, 
-shift);*/
                break;
        }
 /// 0x47 ABC_ACTION_RETURNVOID
 /// Do: Return an undefined object up the callstack.
        case SWF::ABC_ACTION_RETURNVOID:
        {
+               mStream->seekTo(0);
+               if (mStateStack.size() == 0) {
+                       return;
+               }
+               else{
+                       restoreState();
+                       if (mExitWithReturn) {
+                               return;
+                       }
+               }
                // Slot the return.
-               *mGlobalReturn = as_value();
+//             *mGlobalReturn = as_value();
                // And restore the previous state.
-               restoreState();
+//             restoreState();
                break;
        }
 /// 0x48 ABC_ACTION_RETURNVALUE
@@ -1176,10 +1279,10 @@
        case SWF::ABC_ACTION_RETURNVALUE:
        {
                // Slot the return.
-               *mGlobalReturn = mStack.top(0);
+               mGlobalReturn = pop_stack();
                // And restore the previous state.
                restoreState();
-               break;
+               return;
        }
 /// 0x49 ABC_ACTION_CONSTRUCTSUPER
 /// Stream: V32 'arg_count'
@@ -1190,48 +1293,75 @@
 ///  .
        case SWF::ABC_ACTION_CONSTRUCTSUPER:
        {
-               // TODO
                boost::uint32_t argc = mStream->read_V32();
-               ENSURE_OBJECT(mStack.top(argc));
-               as_object *obj = mStack.top(argc).to_object().get();
-               as_object *super = mStack.top(argc).to_object()->get_super();
-               if (!super)
-               {
-                       throw ASException();
-                       break;
-               }
-               as_function *func = super->get_constructor();
+               log_abc("There are %u arguments.",argc);
+               get_args(argc);
+               //as_object *super = pop_stack().to_object().get()->get_super();
+               //TODO: Actually construct the super.
+               as_object* super = mStack.top(argc).to_object()->get_super();
+               if (!super) {
+            log_error("No super found in CONSTRUCTSUPER!");
+            throw ASException();
+        }
+               as_function *func = super->get_constructor();
+               if (!func) {
+            log_abc("Super(%s) has no constructor in CONSTRUCTSUPER!");
+        }
                // 'obj' is the 'this' for the call, we ignore the return, 
there are
                // argc arguments, and we drop all of the arguments plus 'obj' 
from
                // the stack.
-               pushCall(func, obj, mIgnoreReturn, argc, -1);
+               pushCall(func, super, mIgnoreReturn, argc, -1);
+
+        LOG_ONCE(log_unimpl("ABC_ACTION_CONSTRUCTSUPER") );
                break;
        }
-/// 0x4A ABC_ACTION_CONSTRUCTPROP
-/// Stream: V32 'name_offset' | V32 'arg_count'
-/// Stack In:
-///  argN ... arg1 -- the arg_count arguments to pass
-///  [ns [n]] -- Namespace stuff
-///  obj -- the object whose property should be constructed
-/// Stack Out:
-///  value -- the newly constructed prop from obj::(resolve)
-///   'name_offset'(arg1, ..., argN)
+    
+    /// 0x4A ABC_ACTION_CONSTRUCTPROP
+    /// Stream: V32 'name_offset' | V32 'arg_count'
+    /// Stack In:
+    ///  argN ... arg1 -- the arg_count arguments to pass
+    ///  [ns [n]] -- Namespace stuff
+    ///  obj -- the object whose property should be constructed
+    /// Stack Out:
+    ///  value -- the newly constructed prop from obj::(resolve)
+    ///   'name_offset'(arg1, ..., argN)
        case SWF::ABC_ACTION_CONSTRUCTPROP:
        {
-               // TODO
+               as_environment env = as_environment(_vm);
                asName a = pool_name(mStream->read_V32(), mPoolObject);
                boost::uint32_t argc = mStream->read_V32();
-               int shift = completeName(a, argc);
-               ENSURE_OBJECT(mStack.top(argc + shift));
-               // We have to move the stack if there was a shift.
-               if (shift)
-               {
-                       boost::uint32_t i = argc;
-                       while (i--)
-                               mStack.top(i + shift) = mStack.top(i);
-                       mStack.drop(shift);
-               }
-               // TODO: Finish this (See ECMA spec)
+               std::auto_ptr< std::vector<as_value> > args = get_args(argc);
+               as_object* object = pop_stack().to_object().get();
+               if (!object) {
+                       //TODO: Should this result in an exeception or an 
actionscript error?
+                       log_abc("Can't constructor property on a null object.  
Property not constructed.");
+                       push_stack(as_value());
+                       break;
+               }
+               //std::string& classname = 
mPoolObject->mStringPool[a.getABCName()];
+               
+               as_value constructor_val = object->getMember(a.getGlobalName());
+               boost::intrusive_ptr<as_function> constructor = 
constructor_val.to_as_function();
+               if (constructor) {
+                       boost::intrusive_ptr<as_object> newobj = 
constructor->constructInstance(env, args);
+                       push_stack(as_value(newobj));
+               }
+               //TODO: This else clause is needed to construct classes that 
aren't builtin into gnash.
+               // I don't think this is correct, and I think the problem might 
be how AVM2 adds
+               // new objects to the Global object.
+               else{
+                       log_abc("Object %s is not a 
constructor",constructor_val.toDebugString());
+                       if (constructor_val.is_null() || 
constructor_val.is_undefined()) {
+                               log_abc("Constructor is undefined, will not 
construct property.");
+                               push_stack(as_value());
+                       }
+                       else{
+                               as_value val = 
constructor_val.to_object().get()->getMember(NSV::PROP_CONSTRUCTOR,0);
+                               as_value result = 
call_method(val,env,constructor_val.to_object().get(),args);
+                               push_stack(result);
+                       }
+               }
+               
                break;
        }
 /// 0x55 ABC_ACTION_NEWOBJECT
@@ -1249,16 +1379,16 @@
 /// NB: This builds an object from its properties, it's not a constructor.
        case SWF::ABC_ACTION_NEWOBJECT:
        {
-               as_object *obj = new as_object;
+               as_object *obj = new as_object(getObjectInterface());
                boost::uint32_t argc = mStream->read_V32();
                int i = argc;
                while (i--)
                {
-                       obj->set_member(mST.find(mStack.top(i * 2 + 
1).to_string()),
-                               mStack.top(i * 2));
+                       as_value val = pop_stack();
+                       as_value name = pop_stack();
+                       obj->init_member(name.to_string(),val,0,0);
                }
-               mStack.drop(argc * 2 - 1);
-               mStack.top(0) = obj;
+               push_stack(as_value(obj));
                break;
        }
 /// 0x56 ABC_ACTION_NEWARRAY
@@ -1274,13 +1404,14 @@
        case SWF::ABC_ACTION_NEWARRAY:
        {
                boost::uint32_t asize = mStream->read_V32();
+               log_abc("Creating array of size %u",asize);
                Array_as *arr = new Array_as;
                arr->resize(asize);
                boost::uint32_t i = asize;
-               while (i--)
-                       arr->set_indexed(i, mStack.value(i));
-               mStack.drop(asize - 1);
-               mStack.top(0) = arr;
+               while (i--) {
+                       arr->set_indexed(i, pop_stack());
+               }
+               push_stack(as_value(arr));
                break;
        }
 /// 0x57 ABC_ACTION_NEWACTIVATION
@@ -1288,7 +1419,10 @@
 ///  vtable -- A new virtual table, which has the previous one as a parent.
        case SWF::ABC_ACTION_NEWACTIVATION:
        {
-               // TODO
+               // TODO:  The function contains traits that need to be included 
in the activation object.
+               //For now we are using the function object as the activation 
object.  There is probably
+               //a better way.
+               push_stack(as_value(mCurrentFunction));
                break;
        }
 /// 0x58 ABC_ACTION_NEWCLASS
@@ -1303,12 +1437,25 @@
        {
                boost::uint32_t cid = mStream->read_V32();
                asClass *c = pool_class(cid, mPoolObject);
-               ENSURE_OBJECT(mStack.top(0));
-               as_object *obj = mStack.top(0).to_object().get();
-               as_function *func = c->getConstructor()->getPrototype();
-               // func is the constructor, obj is 'this' and also the return
-               // value, no arguments, no change in stack.
-               pushCall(func, obj, mStack.top(0), 0, 0);
+               log_abc("Creating new class id=%u name=%s", c->getName(),
+                mPoolObject->stringPoolAt(c->getName()));
+               
+               as_object* base_class = pop_stack().to_object().get();
+               as_object* new_class = c->getPrototype();
+               
+               new_class->set_prototype(base_class);
+               //Create the class.
+               as_function* static_constructor = 
c->getStaticConstructor()->getPrototype();
+               as_function* constructor = c->getConstructor()->getPrototype();
+               
new_class->init_member(NSV::PROP_uuCONSTRUCTORuu,as_value(static_constructor),0);
+               
new_class->init_member(NSV::PROP_CONSTRUCTOR,as_value(constructor),0);
+               push_stack(as_value(new_class));
+
+               //Call the class's static constructor.
+               as_environment env = as_environment(_vm);
+               as_value property = 
new_class->getMember(NSV::PROP_uuCONSTRUCTORuu,0);
+               as_value value = 
call_method(property,env,new_class,get_args(0));
+
                break;
        }
 /// 0x59 ABC_ACTION_GETDESCENDANTS
@@ -1324,11 +1471,12 @@
        case SWF::ABC_ACTION_GETDESCENDANTS:
        {
                asName a = pool_name(mStream->read_V32(), mPoolObject);
-               as_value &v = mStack.top(0);
+               //as_value &v = mStack.top(0);
                ENSURE_OBJECT(v);
                mStack.drop(1);
                mStack.drop(completeName(a));
                // TODO: Decide or discover what to do with this.
+        LOG_ONCE( log_unimpl("ABC_ACTION_GETDESCENDANTS") );
                break;
        }
 /// 0x5A ABC_ACTION_NEWCATCH
@@ -1353,10 +1501,12 @@
        case SWF::ABC_ACTION_FINDPROPSTRICT:
        case SWF::ABC_ACTION_FINDPROPERTY:
        {
+//             boost::uint32_t property_name = mStream->read_V32();
                asName a = pool_name(mStream->read_V32(), mPoolObject);
-               mStack.drop(completeName(a));
+               find_prop_strict(a);
+/*             mStack.drop(completeName(a));
                as_object *owner;
-               Property *b = mCurrentScope->findProperty(a.getName(), 
+               Property *b = mCurrentScope->findProperty(a.getABCName(), 
                        a.getNamespace()->getURI(), &owner);
                if (!b)
                {
@@ -1368,7 +1518,7 @@
                else
                {
                        mStack.push(owner);
-               }
+               }*/
                break;
        }
 /// 0x5F ABC_ACTION_FINDDEF
@@ -1390,17 +1540,16 @@
        case SWF::ABC_ACTION_GETLEX:
        {
                asName a = pool_name(mStream->read_V32(), mPoolObject);
-               as_object *owner;
-               Property *b = mCurrentScope->findProperty(a.getName(),
-                       a.getNamespace()->getURI(), &owner);
-               if (!b)
-                       throw ASException();
-
-               mStack.grow(1);
-               pushGet(owner, mStack.top(0), b);
+       
+               as_value val = find_prop_strict(a);
+
+               pop_stack();
+
+               push_stack(val);
+
                break;
        }
-/// 0x61 ABC_ACTION_SETPROPERTY
+///  ABC_ACTION_SETPROPERTY
 /// Stream: V32 'name_id'
 /// Stack In:
 ///  value -- The value to be used
@@ -1417,27 +1566,31 @@
 /// key/value is set in the dictionary obj instead.
        case SWF::ABC_ACTION_SETPROPERTY:
        {
+               as_value value = pop_stack();
+               string_table::key ns = 0;
+               string_table::key name = 0;
+
                asName a = pool_name(mStream->read_V32(), mPoolObject);
-               //as_value &v = mStack.pop();
-               if (!a.isRuntime())
-               {
-                       //TODO: Set the property of mStack.top(0) v,a
-               }
-               else
-               {
-                       if (a.isRtns() || !(mStack.top(0).is_object()
-                               && mStack.top(1).to_object()->isDictionary()))
-                       {
-                               mStack.drop(completeName(a));
-                               //TODO: mStack.top(0).setProperty(a, v);
-                               mStack.drop(1);
-                       }
-                       else
-                       {
-                               //TODO: 
mStack.top(1).setDictProperty(mStack.top(0), v);
-                               mStack.drop(2);
-                       }
-               }
+               // TODO: If multiname is runtime we need to also pop namespace
+        // and name values of the stack.
+               if (a.flags() == asName::KIND_MultinameL) {
+                       as_value nameValue = pop_stack();
+                       name = mST.find(nameValue.to_string());
+               }
+               else{
+                       name = a.getGlobalName();
+               }
+
+        as_value val = pop_stack();
+               as_object *object = val.to_object().get();
+
+        if (!object) {
+            log_error("Expected object on stack, but none found (%s)!",
+                    val);
+            break;
+        }
+
+               object->set_member(name, value, ns, false);
                break;
        }
 /// 0x62 ABC_ACTION_GETLOCAL
@@ -1447,8 +1600,8 @@
 ///  value
        case SWF::ABC_ACTION_GETLOCAL:
        {
-               mStack.grow(1);
-               mStack.top(0) = mFrame.value(mStream->read_V32());
+               boost::uint32_t index = mStream->read_V32();
+               push_stack(get_register(index));
                break;
        }
 /// 0x63 ABC_ACTION_SETLOCAL
@@ -1460,8 +1613,9 @@
 ///  .
        case SWF::ABC_ACTION_SETLOCAL:
        {
-               mFrame.value(mStream->read_V32()) = mStack.top(0);
-               mStack.drop(1);
+               boost::uint32_t index = mStream->read_V32();
+               log_abc("Register index: %u",index);
+               mRegisters[index] = pop_stack();
                break;
        }
 /// 0x64 ABC_ACTION_GETGLOBALSCOPE
@@ -1469,8 +1623,9 @@
 ///  global -- The global scope object
        case SWF::ABC_ACTION_GETGLOBALSCOPE:
        {
-               mStack.grow(1);
-               mStack.top(0) = mGlobalScope;
+               //TODO: Use get_scope_stack here.
+               push_stack(as_value(mScopeStack.value(0).get()));
+//             print_stack();
                break;
        }
 /// 0x65 ABC_ACTION_GETSCOPEOBJECT
@@ -1480,8 +1635,8 @@
        case SWF::ABC_ACTION_GETSCOPEOBJECT:
        {
                boost::uint8_t depth = mStream->read_u8();
-               mStack.grow(1);
-               mStack.top(0) = mScopeStack.top(depth).mScope;
+               push_stack(get_scope_stack(depth));
+               print_scope_stack();
                break;
        }
 /// 0x66 ABC_ACTION_GETPROPERTY
@@ -1496,25 +1651,34 @@
 /// NB: See 0x61 (ABC_ACTION_SETPROPETY) for the decision of ns/key.
        case SWF::ABC_ACTION_GETPROPERTY:
        {
+               as_value prop;
+               string_table::key ns = 0;
+               string_table::key name = 0;
                asName a = pool_name(mStream->read_V32(), mPoolObject);
-               if (!a.isRuntime())
-               {
-                       //TODO: mStack.top(0) = mStack.top(0).getProperty(a, v);
-               }
-               else
-               {
-                       if (a.isRtns() || !(mStack.top(0).is_object()
-                               && mStack.top(1).to_object()->isDictionary()))
-                       {
-                               mStack.drop(completeName(a));
-                               //TODO: mStack.top(0) = 
mStack.top(0).getProperty(a);
-                       }
-                       else
-                       {
-                               //TODO: mStack.top(1) = 
mStack.top(1).getDictProperty(mStack.top(0));
-                               mStack.drop(1);
-                       }
-               }
+               //TODO: If multiname is runtime we need to also pop namespace 
and name values of the stack.
+               if (a.flags() == asName::KIND_MultinameL) {
+                       as_value nameValue = pop_stack();
+                       name = mST.find(nameValue.to_string());
+               }
+               else{
+                       name = a.getGlobalName();
+               }
+
+               as_value object_val = pop_stack();
+
+               as_object* object = object_val.to_object().get();
+               if (!object) {
+                       IF_VERBOSE_ASCODING_ERRORS(
+                       log_aserror(_("Can't get a property of a value that 
doesn't cast to an object (%s)."),
+                               object_val);
+                       )
+               }
+               else{
+                       object->get_member(name, &prop, ns);
+               }
+
+               push_stack(prop);
+
                break;
        }
 /// 0x68 ABC_ACTION_INITPROPERTY
@@ -1529,10 +1693,22 @@
 ///  Set obj::(resolve)'name_id' to value, set bindings from the context.
        case SWF::ABC_ACTION_INITPROPERTY:
        {
-               asName a = pool_name(mStream->read_V32(), mPoolObject);
-               //as_value& v = mStack.pop();
-               mStack.drop(completeName(a));
-               //TODO: mStack.pop().to_object().setProperty(a, v, true); // 
true for init
+               boost::uint32_t index = mStream->read_V32();
+               asName a = pool_name(index, mPoolObject);
+               as_value v = pop_stack();
+               //TODO: If multiname is a runtime mutiname we need to also pop 
name and namespace values.
+               as_value object_val = pop_stack();
+
+               as_object* object = object_val.to_object().get();
+               if (!object) {
+                       IF_VERBOSE_ASCODING_ERRORS(
+                       log_aserror(_("Can't initialize a property of a value 
that doesn't cast to an object (%s)."),
+                               object_val);
+                       )               
+               }
+               else{
+                       object->set_member(a.getGlobalName(),v,false);
+               }
                break;
        }
 /// 0x6A ABC_ACTION_DELETEPROPERTY
@@ -1557,11 +1733,15 @@
 ///  slot -- obj.slots[slot_index]
        case SWF::ABC_ACTION_GETSLOT:
        {
+               as_value val;
                boost::uint32_t sindex = mStream->read_V32();
-               if (!sindex)
-                       throw ASException();
-               --sindex;
-               //TODO: mStack.top(0) = mStack.top(0).getSlot(sindex);
+               as_object* object = pop_stack().to_object().get();
+
+               object->get_member_slot(sindex + 1, &val);
+
+               log_abc("object has value %s at real_slot=%u 
abc_slot=%u",val.toDebugString(),sindex + 1, sindex);
+               push_stack(val);
+               
                break;
        }
 /// 0x6D ABC_ACTION_SETSLOT
@@ -1575,11 +1755,17 @@
        case SWF::ABC_ACTION_SETSLOT:
        {
                boost::uint32_t sindex = mStream->read_V32();
-               if (!sindex)
-                       throw ASException();
-               --sindex;
-               //TODO: mStack.top(0).setSlot(sindex, mStack.top(1));
-               mStack.drop(2);
+               as_value value = pop_stack();
+               as_value object = pop_stack();
+               //We use sindex + 1, because currently as_object sets a 
property at a slot index
+               //1 higher than the index the abc_block thinks the property is 
at.
+               if (!object.to_object().get()->set_member_slot(sindex+1,value)) 
{
+                       log_abc("Failed to set property at real_slot=%u 
abc_slot=%u",sindex+1,sindex);
+               }
+               else{
+                       log_abc("Set property at real_slot=%u 
abc_slot=%u",sindex+1,sindex);
+               }
+               //TODO: Actually set the object's value.
                break;
        }
 /// 0x6E ABC_ACTION_GETGLOBALSLOT
@@ -1655,7 +1841,9 @@
        case SWF::ABC_ACTION_CONVERT_I:
        case SWF::ABC_ACTION_COERCE_I:
        {
-               mStack.top(0) = mStack.top(0).to_int();
+               as_value val = pop_stack();
+               val.to_int();
+               push_stack(val);
                break;
        }
 /// 0x74 ABC_ACTION_CONVERT_U
@@ -1679,7 +1867,7 @@
        case SWF::ABC_ACTION_CONVERT_D:
        case SWF::ABC_ACTION_COERCE_D:
        {
-               mStack.top(0) = mStack.top(0).to_number();
+               push_stack(pop_stack().to_number());
                break;
        }
 /// 0x76 ABC_ACTION_CONVERT_B
@@ -1729,8 +1917,17 @@
        case SWF::ABC_ACTION_COERCE:
        {
                asName a = pool_name(mStream->read_V32(), mPoolObject);
-               mStack.drop(completeName(a));
-               //TODO: mStack.top(0) = mStack.top(0).coerce(a);
+               as_value value = pop_stack();
+
+               //TODO: Actually coerce the value.
+//             if (value.is_null()) {
+//                     as_value new_type = get_property_value(a);
+//                     value->
+//                     push_stack(new_type);
+//             }
+//             else{
+                       push_stack(value);
+//             }
                break;
        }
 /// 0x82 ABC_ACTION_COERCE_A
@@ -1766,10 +1963,9 @@
        case SWF::ABC_ACTION_ASTYPE:
        {
                asName a = pool_name(mStream->read_V32(), mPoolObject);
-               mStack.drop(completeName(a));
-               // TODO: Might need some namespace stuff.
-               if (!mStack.top(0).conforms_to(a.getName()))
-                       mStack.top(0).set_null();
+               as_value value = pop_stack();
+               //TODO: Make sure the value is of the correct type;
+               push_stack(value);
                break;
        }
 /// 0x87 ABC_ACTION_ASTYPELATE
@@ -1780,11 +1976,10 @@
 ///  cobj -- obj if type of obj conforms to valid, otherwise Null
        case SWF::ABC_ACTION_ASTYPELATE:
        {
-               bool truth;
-               ABSTRACT_TYPELATE(truth, mStack.top(1), mStack.top(0));
-               if (!truth)
-                       mStack.top(1).set_null();
-               mStack.drop(1);
+               as_value type = pop_stack();
+               as_value value = pop_stack();
+               //TODO: If value is not the type defined by type, then push 
null.
+               push_stack(value);
                break;
        }
 /// 0x89 ABC_ACTION_COERCE_O
@@ -1817,7 +2012,8 @@
 ///  num + 1
        case SWF::ABC_ACTION_INCREMENT:
        {
-               mStack.top(0) = mStack.top(0).to_number() + 1;
+               as_value val = pop_stack();
+               push_stack(as_value(val.to_number() + 1));
                break;
        }
 /// 0x92 ABC_ACTION_INCLOCAL
@@ -1826,7 +2022,7 @@
        case SWF::ABC_ACTION_INCLOCAL:
        {
                boost::uint32_t foff = mStream->read_V32();
-               mFrame.value(foff) = mFrame.value(foff).to_number() + 1;
+               mRegisters[foff] = mRegisters[foff].to_number() + 1;
                break;
        }
 /// 0x93 ABC_ACTION_DECREMENT
@@ -1845,7 +2041,7 @@
        case SWF::ABC_ACTION_DECLOCAL:
        {
                boost::uint32_t foff = mStream->read_V32();
-               mFrame.value(foff) = mFrame.value(foff).to_number() - 1;
+               mRegisters[foff] = mRegisters[foff].to_number() - 1;
                break;
        }
 /// 0x95 ABC_ACTION_ABC_TYPEOF
@@ -1854,8 +2050,8 @@
 /// Stack Out:
 ///  type -- typeof(obj) as a string
        case SWF::ABC_ACTION_ABC_TYPEOF:
-       {
-               mStack.top(0) = mStack.top(0).typeOf();
+       {       
+               push_stack(pop_stack().typeOf());
                break;
        }
 /// 0x96 ABC_ACTION_NOT
@@ -1886,20 +2082,24 @@
 /// a + b (double if numeric)
        case SWF::ABC_ACTION_ADD:
        {
-               //TODO: mStack.top(1) = mStack.top(1).add(mStack.top(0));
-               mStack.drop(1);
+               as_value b = pop_stack();
+               as_value a = pop_stack();
+               a.newAdd(b);
+               push_stack(a);
                break;
        }
 /// 0xA1 ABC_ACTION_SUBTRACT
 /// Stack In:
+///  b
 ///  a
-///  b
 /// Stack Out:
 ///  a - b (double)
        case SWF::ABC_ACTION_SUBTRACT:
        {
-               mStack.top(1) = mStack.top(1).to_number() - 
mStack.top(1).to_number();
-               mStack.drop(1);
+               as_value b = pop_stack();
+               as_value a = pop_stack();
+               a.subtract(b);
+               push_stack(a);
                break;
        }
 /// 0xA2 ABC_ACTION_MULTIPLY
@@ -2021,10 +2221,12 @@
 ///  truth -- Truth of (a == b) (weakly)
        case SWF::ABC_ACTION_EQUALS:
        {
-               bool truth;
-               ABSTRACT_EQUALITY(truth, mStack.top(1), mStack.top(0), false);
-               mStack.drop(1);
-               mStack.top(0).set_bool(truth);
+               bool truth = abstractEquality(mStack.top(1), mStack.top(0), 
false);
+               pop_stack();
+               pop_stack();
+               as_value result = as_value();
+               result.set_bool(truth);
+               push_stack(result);
                break;
        }
 /// 0xAC ABC_ACTION_STRICTEQUALS
@@ -2036,8 +2238,7 @@
 ///   0x19 (ABC_ACTION_IFSTRICTEQ))
        case SWF::ABC_ACTION_STRICTEQUALS:
        {
-               bool truth;
-               ABSTRACT_EQUALITY(truth, mStack.top(1), mStack.top(0), true);
+               bool truth = abstractEquality(mStack.top(1), mStack.top(0), 
true);
                mStack.drop(1);
                mStack.top(0).set_bool(truth);
                break;
@@ -2124,7 +2325,7 @@
                asName a = pool_name(mStream->read_V32(), mPoolObject);
                mStack.drop(completeName(a));
                // TODO: Namespace stuff?
-               mStack.top(0).set_bool(mStack.top(0).conforms_to(a.getName()));
+               
mStack.top(0).set_bool(mStack.top(0).conforms_to(a.getABCName()));
        }
 /// 0xB3 ABC_ACTION_ISTYPELATE
 /// Stack In:
@@ -2134,10 +2335,10 @@
 ///  truth -- Truth of "obj is of type"
        case SWF::ABC_ACTION_ISTYPELATE:
        {
-               bool truth;
-               ABSTRACT_TYPELATE(truth, mStack.top(1), mStack.top(0));
-               mStack.top(1).set_bool(truth);
-               mStack.drop(1);
+               as_value type = pop_stack();
+               as_value value = pop_stack();
+               bool truth = 
value.to_object().get()->instanceOf(type.to_object().get());
+               push_stack(as_value(truth));
                break;
        }
 /// 0xB4 ABC_ACTION_IN
@@ -2174,7 +2375,7 @@
        case SWF::ABC_ACTION_INCLOCAL_I:
        {
                boost::uint32_t foff = mStream->read_V32();
-               mFrame.value(foff) = mFrame.value(foff).to_int() + 1;
+               mRegisters[foff] = mRegisters[foff].to_int() + 1;
                break;
        }
 /// 0xC3 ABC_ACTION_DECLOCAL_I
@@ -2182,7 +2383,7 @@
        case SWF::ABC_ACTION_DECLOCAL_I:
        {
                boost::uint32_t foff = mStream->read_V32();
-               mFrame.value(foff) = mFrame.value(foff).to_int() - 1;
+               mRegisters[foff] = mRegisters[foff].to_int() - 1;
                break;
        }
 /// 0xC4 ABC_ACTION_NEGATE_I
@@ -2228,8 +2429,13 @@
        case SWF::ABC_ACTION_GETLOCAL2:
        case SWF::ABC_ACTION_GETLOCAL3:
        {
-               mStack.grow(1);
-               mStack.top(0) = mFrame.value(opcode - 
SWF::ABC_ACTION_GETLOCAL0);
+               //We shouldn't need to a call grow stack, because each function 
should now how big the stack will need to be and should allocate all the space, 
when it is loaded into the vm.
+//             GROW_STACK();
+//             mStack.grow(1);
+//             mStack.push() instead?
+
+               push_stack(get_register(opcode- SWF::ABC_ACTION_GETLOCAL0));
+//             mStack.top(0) = mRegisters.value(opcode - 
SWF::ABC_ACTION_GETLOCAL0);
                break;
        }
 /// 0xD4 ABC_ACTION_SETLOCAL0
@@ -2246,8 +2452,7 @@
        case SWF::ABC_ACTION_SETLOCAL2:
        case SWF::ABC_ACTION_SETLOCAL3:
        {
-               mFrame.value(opcode - SWF::ABC_ACTION_SETLOCAL0) = 
mStack.top(0);
-               mStack.drop(1);
+               mRegisters[opcode - SWF::ABC_ACTION_SETLOCAL0] = pop_stack();
                break;
        }
 
@@ -2284,12 +2489,12 @@
                break;
        }
        } // end of switch statement
+               log_abc("* DONE *");
+               IF_VERBOSE_ACTION(print_stack());
        } // end of AS3 conditional
        else // beginning of !AS3 (this code is AS2)
        {
-       switch (opcode)
-       {
-       } // end of switch statement
+        // not using Machine for AS2 yet
        } // end of AS2 conditional (!AS3)
        } // end of main loop
 } // end of execute function
@@ -2328,7 +2533,7 @@
        return;
        // TODO:
 #if 0
-       asBinding *pBinding = pDefinition->getBinding(name.getName());
+       asBinding *pBinding = pDefinition->getBinding(name.getABCName());
 
        if (pBinding->isReadOnly())
                throw ASReferenceError();
@@ -2351,15 +2556,16 @@
 }
 
 int
-Machine::completeName(asName &name, int offset)
+Machine::completeName(asName& name, int offset)
 {
        int size = 0;
 
        if (name.isRuntime())
        {
                as_value obj = mStack.top(offset);
-               if (obj.is_object() && obj.to_object()->isQName())
+               if (obj.is_object() && obj.to_object()->isQName()) {
                        name.fill(obj.to_object().get());
+        }
                ++size;
 
                if (name.isRtns())
@@ -2376,26 +2582,22 @@
 asClass *
 Machine::findSuper(as_value &v, bool find_for_primitive)
 {
-       if (v.is_undefined() || v.is_null())
-               return NULL;
+       if (v.is_undefined() || v.is_null()) return NULL;
 
-       if (v.is_object())
-       {
+       if (v.is_object()) {
                asClass *pProto = NULL; // TODO: v.to_object()->getClass();
                return pProto ? pProto->getSuper() : NULL;
        }
 
-       if (!find_for_primitive)
-               return NULL;
+       if (!find_for_primitive) return 0;
 
-       if (v.is_number())
-       {
+       if (v.is_number()) {
                return NULL; // TODO: mCH->getClass(NSV::CLASS_NUMBER);
        }
 
        // And so on...
        // TODO: Other primitives
-       return NULL;
+       return 0;
 }
 
 void
@@ -2420,11 +2622,9 @@
 void
 Machine::pushGet(as_object *this_obj, as_value &return_slot, Property *prop)
 {
-       if (!prop)
-               return;
+       if (!prop) return;
 
-       if (prop->isGetterSetter())
-       {
+       if (prop->isGetterSetter()) {
                //TODO pushCall(prop->getGetter(), this_obj, return_slot, 0);
                return;
        }
@@ -2435,11 +2635,9 @@
 void
 Machine::pushSet(as_object *this_obj, as_value &value, Property *prop)
 {
-       if (!prop)
-               return;
+       if (!prop) return;
 
-       if (prop->isGetterSetter())
-       {
+       if (prop->isGetterSetter()) {
                mStack.push(value);
                //TODO pushCall(prop->getSetter(), this_obj, mIgnoreReturn, 1);
                return;
@@ -2478,30 +2676,294 @@
 void
 Machine::restoreState()
 {
+       log_abc("Restoring state.");
        State &s = mStateStack.top(0);
-       mStack.setAllSizes(s.mStackTotalSize, s.mStackDepth);
+       s.to_debug_string();
+//     mStack.setAllSizes(s.mStackTotalSize, s.mStackDepth);
+//     mScopeStack.setAllSizes(s.mScopeTotalSize, s.mScopeStackDepth);
        mScopeStack.setAllSizes(s.mScopeTotalSize, s.mScopeStackDepth);
        mStream = s.mStream;
-       mDefaultXMLNamespace = s.mDefaultXMLNamespace;
-       mCurrentScope = s.mCurrentScope;
-       mGlobalReturn = s.mGlobalReturn;
-       mThis = s.mThis;
-       mStateStack.drop(1);
+       mRegisters = s.mRegisters;
+       mCurrentFunction = s.mFunction;
+//     mExitWithReturn = s.mReturn;
+//     mDefaultXMLNamespace = s.mDefaultXMLNamespace;
+//     mCurrentScope = s.mCurrentScope;
+//     mGlobalReturn = s.mGlobalReturn;
+//     mThis = s.mThis;
+//     mStateStack.drop(1);
+       mStateStack.pop();
 }
 
 void
 Machine::saveState()
 {
+       log_abc("Saving state.");
        mStateStack.grow(1);
        State &s = mStateStack.top(0);
        s.mStackDepth = mStack.getDownstop();
        s.mStackTotalSize = mStack.totalSize();
        s.mScopeStackDepth = mScopeStack.getDownstop();
        s.mScopeTotalSize = mScopeStack.totalSize();
+//     s.mScopeStackDepth = mScopeStack.getDownstop();
+//     s.mScopeTotalSize = mScopeStack.totalSize();
        s.mStream = mStream;
-       s.mDefaultXMLNamespace = mDefaultXMLNamespace;
-       s.mCurrentScope = mCurrentScope;
-       s.mGlobalReturn = mGlobalReturn;
-       s.mThis = mThis;
-}
+       s.to_debug_string();
+       s.mRegisters = mRegisters;
+       s.mFunction = mCurrentFunction;
+//     s.mReturn = mExitWithReturn;
+//     s.mDefaultXMLNamespace = mDefaultXMLNamespace;
+//     s.mCurrentScope = mCurrentScope;
+//     s.mGlobalReturn = mGlobalReturn;
+//     s.mThis = mThis;
+}
+
+void
+Machine::initMachine(abc_block* pool_block, as_object* global)
+{
+       mPoolObject = pool_block;
+       log_debug("Getting entry script.");
+       asClass* start_script = pool_block->scripts().back();
+       log_debug("Getting constructor.");
+       asMethod* constructor = start_script->getConstructor();
+       clearRegisters(constructor->getMaxRegisters());
+       log_debug("Loding code stream.");
+       mStream = constructor->getBody();
+       mCurrentFunction = constructor->getPrototype();
+       mRegisters[0] = as_value(global);
+       mGlobalObject = global;
+}
+
+//This is called by abc_functions to execute their code stream.
+//TODO: There is probably a better way to do this, once we understand what the 
VM is supposed
+//todo, this should be fixed.
+as_value
+Machine::executeFunction(asMethod* function, const fn_call& fn)
+{
+       
+    //TODO: Figure out a good way to use the State object to handle
+    //returning values.
+       mCurrentFunction = function->getPrototype();
+       bool prev_ext = mExitWithReturn;
+       CodeStream *stream = function->getBody();
+       load_function(stream, function->getMaxRegisters());
+       mExitWithReturn = true;
+       mRegisters[0] = as_value(fn.this_ptr);
+       for (unsigned int i=0;i<fn.nargs;i++) {
+               mRegisters[i+1] = fn.arg(i);
+       }
+       //TODO:  There is probably a better way to do this.
+    //
+    const as_environment::ScopeStack* const ss = 
mCurrentFunction->scopeStack();
+
+       if (ss) {
+               for (unsigned int i=0; i < ss->size(); ++i) {
+                       push_scope_stack(as_value(ss->at(i)));
+               }
+       }
+       execute();
+       mExitWithReturn = prev_ext;
+       stream->seekTo(0);
+
+       return mGlobalReturn;
+}
+
+void
+Machine::executeCodeblock(CodeStream* stream)
+{
+       mStream = stream;
+       execute();
+}
+
+void
+Machine::instantiateClass(std::string className, as_object* global)
+{
+
+    log_debug("instantiateClass: class name %s", className);
+
+       asClass* cl = mPoolObject->locateClass(className);
+    if (!cl)
+    {
+        /// This seems like a big error.
+        log_error("Could not locate class '%s' for instantiation", className);
+        return;
+    }
+       
+    asMethod* ctor = cl->getConstructor();
+
+       clearRegisters(ctor->getMaxRegisters());
+       mCurrentFunction = ctor->getPrototype();
+       mStack.clear();
+       mScopeStack.clear();
+       mRegisters[0] = as_value(global);
+       executeCodeblock(ctor->getBody());
+}
+
+Machine::Machine(VM& vm)
+        :
+        mStack(),
+        mRegisters(),
+        mScopeStack(),
+        mStream(0),
+        mST(vm.getStringTable()),
+        mDefaultXMLNamespace(0),
+        mCurrentScope(0),
+        mGlobalScope(0),
+        mDefaultThis(0),
+        mThis(0),
+        mGlobalObject(0),
+        mGlobalReturn(),
+        mIgnoreReturn(),
+        mIsAS3(false),
+        mExitWithReturn(false),
+        mPoolObject(0),
+        mCurrentFunction(0),
+        _vm(vm),
+        mCH(_vm.getClassHierarchy())
+{
+       //Local registers should be initialized at the beginning of each 
function call, but
+       //we don't currently parse the number of local registers for each 
function.
+//     mRegisters.resize(16);
+//     mST = new string_table();
+//     mST = ST;
+}
+
+as_value
+Machine::find_prop_strict(asName multiname) {
+       
+       as_value val;
+       mScopeStack.push(mGlobalObject);
+       for (size_t i = 0; i < mScopeStack.size(); ++i)
+    {
+               as_object* scope_object = mScopeStack.top(i).get();
+               if (!scope_object) {
+                       log_abc("Scope object is NULL.");
+                       continue;
+               }
+               val = scope_object->getMember(multiname.getGlobalName(),
+                multiname.getNamespace()->getURI());
+
+               if (!val.is_undefined()) {
+                       push_stack(mScopeStack.top(i));
+                       mScopeStack.pop();
+                       return val;
+               }
+       }
+
+       log_abc("Cannot find property in scope stack.  Trying again using 
as_environment.");
+       as_object *target = NULL;
+       as_environment env = as_environment(_vm);
+       std::string name = mPoolObject->stringPoolAt(multiname.getABCName());
+       std::string ns = mPoolObject->stringPoolAt(
+            multiname.getNamespace()->getAbcURI());
+       std::string path = ns.size() == 0 ? name : ns + "." + name;
+       val = env.get_variable(path,*getScopeStack(),&target);
+       push_stack(as_value(target));   
+       mScopeStack.pop();
+       return val;
+}
+
+as_value
+Machine::get_property_value(asName multiname)
+{
+       return get_property_value(0, multiname);
+}
+
+as_value
+Machine::get_property_value(boost::intrusive_ptr<as_object> obj,
+        asName multiname)
+{
+
+       std::string ns = 
+        mPoolObject->stringPoolAt(multiname.getNamespace()->getAbcURI());
+       std::string name = mPoolObject->stringPoolAt(multiname.getABCName());
+       return get_property_value(obj, name, ns);
+}
+
+as_value
+Machine::get_property_value(boost::intrusive_ptr<as_object> obj,
+        std::string name, std::string ns)
+{
+
+    as_environment::ScopeStack stack;
+       as_environment env = as_environment(_vm);
+       
+    if (!obj) stack = *getScopeStack();
+       else stack.push_back(obj);
+
+       std::string path;
+
+       if (ns.empty()) path = name;
+       else path = ns + "." + name;
+
+       return env.get_variable(path, stack, 0);
+}
+
+void
+Machine::print_stack()
+{
+
+       std::stringstream ss;
+       ss << "Stack: ";
+       for (unsigned int i = 0; i < mStack.size(); ++i) {
+               if (i!=0) ss << " | ";
+               ss << mStack.value(i).toDebugString();
+       }
+       log_abc("%s", ss.str());
+}
+
+void
+Machine::print_scope_stack()
+{
+
+       std::stringstream ss;
+       ss << "ScopeStack: ";
+       for (unsigned int i=0;i<mScopeStack.size();++i) {
+               ss << as_value(mScopeStack.top(i).get()).toDebugString();
+       }
+       log_abc("%s", ss.str());
+}      
+
+std::auto_ptr<std::vector<as_value> >
+Machine::get_args(unsigned int argc)
+{
+       log_abc("There are %u args",argc);
+       std::auto_ptr<std::vector<as_value> > args = 
+        std::auto_ptr<std::vector<as_value> >(new std::vector<as_value>);
+       args->resize(argc);
+       for (unsigned int i = argc; i > 0; --i) {
+               args->at(i-1) = pop_stack();
+       }
+       return args;
+}
+
+void
+Machine::load_function(CodeStream* stream, boost::uint32_t maxRegisters)
+{
+       saveState();
+       //TODO: Maybe this call should be part of saveState(), it
+    //returns the old downstop.
+       mScopeStack.fixDownstop();
+       mStream = stream;
+       clearRegisters(maxRegisters);
+}
+
+as_environment::ScopeStack*
+Machine::getScopeStack()
+{
+       as_environment::ScopeStack *stack = new as_environment::ScopeStack();
+       for (size_t i = 0; i < mScopeStack.size(); ++i) {
+               stack->push_back(mScopeStack.top(i));
+       }
+       return stack;
+}
+
+void
+Machine::clearRegisters(boost::uint32_t maxRegisters)
+{
+       mRegisters.clear();
+       mRegisters.resize(maxRegisters);
+}
+
+
+
 } // end of namespace gnash

=== modified file 'libcore/vm/Machine.h'
--- a/libcore/vm/Machine.h      2009-04-03 09:18:40 +0000
+++ b/libcore/vm/Machine.h      2009-05-14 08:00:05 +0000
@@ -20,11 +20,13 @@
 #define GNASH_MACHINE_H
 
 #include <vector>
-
+#include <sstream>
 #include "SafeStack.h"
 #include "as_value.h"
 #include "asClass.h"
 #include "swf.h"
+#include "as_environment.h"
+#include "VM.h"
 
 namespace gnash {
 
@@ -201,7 +203,13 @@
                unsigned char stack_in, short stack_out)
        { immediateFunction(to_call, pthis, mIgnoreReturn, stack_in, 
stack_out); }
 
-       Machine(string_table &ST, ClassHierarchy *CH);
+       void initMachine(abc_block* pool_block,as_object* global);
+
+       as_value executeFunction(asMethod* function, const fn_call& fn);
+
+       void instantiateClass(std::string className, as_object* global);
+
+       Machine(VM& vm);
 
 private:
        /// The state of the machine.
@@ -212,11 +220,18 @@
                unsigned int mStackTotalSize;
                unsigned int mScopeStackDepth;
                unsigned int mScopeTotalSize;
+               bool mReturn;
                CodeStream *mStream;
                asNamespace *mDefaultXMLNamespace;
                as_object *mCurrentScope;
                as_value *mGlobalReturn;
                as_object *mThis;
+               std::vector<as_value> mRegisters;
+               abc_function* mFunction;
+       void to_debug_string(){
+               log_abc("StackDepth=%u StackTotalSize=%u ScopeStackDepth=%u 
ScopeTotalSize=%u",mStackDepth,mStackTotalSize,mScopeStackDepth,mScopeTotalSize);
+
+       }
        };
 
        class Scope
@@ -234,13 +249,67 @@
        void saveState();
        void restoreState();
 
+       as_value find_prop_strict(asName multiname);
+
+       as_value get_property_value(asName multiname);
+
+       as_value get_property_value(boost::intrusive_ptr<as_object> obj, asName 
multiname);
+
+       as_value get_property_value(boost::intrusive_ptr<as_object> obj, 
std::string name, std::string ns);
+
+       void print_stack();
+
+       void print_scope_stack();
+
+       std::auto_ptr< std::vector<as_value> > get_args(unsigned int argc);
+       
+       void load_function(CodeStream* stream, boost::uint32_t maxRegisters);
+
+       as_environment::ScopeStack* getScopeStack();
+
+       void executeCodeblock(CodeStream* stream);
+
+       void clearRegisters(boost::uint32_t maxRegsiters);
+
+       as_value get_register(int index){
+               log_abc("Getting value at a register %d ",index);
+               return mRegisters[index];
+       }
+
+       void push_stack(as_value object){
+               log_abc("Pushing value %s onto stack.",object.toDebugString());
+               mStack.push(object);
+       }
+
+       as_value pop_stack(){
+               as_value value = mStack.pop();
+               log_abc("Poping value %s off the stack.",value.toDebugString());
+               return value;
+       }
+
+       void push_scope_stack(as_value object){
+               boost::intrusive_ptr<as_object> scopeObj = object.to_object();
+               assert(scopeObj.get());
+               log_abc("Pushing value %s onto scope 
stack.",object.toDebugString());
+               mScopeStack.push(scopeObj);
+               print_scope_stack();
+       }
+
+       boost::intrusive_ptr<as_object> pop_scope_stack(){
+               log_abc("Poping value off the scope stack.  There will be %u 
items left.",mScopeStack.size()-1);
+               return mScopeStack.pop();
+       }
+       boost::intrusive_ptr<as_object> get_scope_stack(boost::uint8_t depth){
+               log_abc("Geting value from scope stack %u from the 
bottom.",depth | 0x0);
+               return mScopeStack.value(depth);
+       }
+
        SafeStack<as_value> mStack;
        SafeStack<State> mStateStack;
-       SafeStack<Scope> mScopeStack;
-       SafeStack<as_value> mFrame;
+       std::vector<as_value> mRegisters;
+       SafeStack<boost::intrusive_ptr<as_object> > mScopeStack;
        CodeStream *mStream;
 
-       ClassHierarchy *mCH;
        string_table& mST;
 
        asNamespace* mDefaultXMLNamespace;
@@ -249,12 +318,21 @@
        as_object* mDefaultThis;
        as_object* mThis;
 
-       as_value *mGlobalReturn;
+       as_object* mGlobalObject;
+
+       as_value mGlobalReturn;
        as_value mIgnoreReturn; // Throw away returns go here.
 
        bool mIsAS3; // Is the stream an AS3 stream.
+       bool mExitWithReturn;
        abc_block* mPoolObject; // Where all of the pools are stored.
+
+       abc_function* mCurrentFunction;
+
+       VM& _vm;
+       
+    ClassHierarchy *mCH;
 };
 
 } // namespace gnash
-#endif /* GNASH_MACHINE_H */
+#endif 

=== modified file 'libcore/vm/Makefile.am'
--- a/libcore/vm/Makefile.am    2009-04-28 15:22:32 +0000
+++ b/libcore/vm/Makefile.am    2009-05-14 15:02:29 +0000
@@ -40,17 +40,22 @@
 
 libgnashvm_la_SOURCES = \
        ASHandlers.cpp \
-       Machine.cpp \
        ActionExec.cpp \
        VM.cpp          \
        action.cpp \
        CallStack.cpp \
        $(NULL)
 
+if ENABLE_AVM2
+libgnashvm_la_SOURCES += \
+       CodeStream.cpp \
+       Machine.cpp
+       $(NULL)
+endif
+
 noinst_HEADERS =               \
        ASHandlers.h            \
        CodeStream.h            \
-       Machine.h                       \
        asName.h                        \
        ActionExec.h            \
        ExecutableCode.h        \
@@ -63,7 +68,16 @@
        CallStack.h \
        SafeStack.h                     \
        VM.h                    \
-       $(NULL)
+       Machine.h                       \
+       $(NULL)
+       
+if ENABLE_AVM2
+noinst_HEADERS += \
+       asName.h                        \
+       CodeStream.h            \
+       Machine.h \
+       $(NULL)
+endif
 
 if SDKINSTALL
 noinst_HEADERS += $(EXTENSIONS_API)

=== modified file 'libcore/vm/VM.cpp'
--- a/libcore/vm/VM.cpp 2009-04-14 17:49:58 +0000
+++ b/libcore/vm/VM.cpp 2009-05-14 11:45:23 +0000
@@ -34,6 +34,10 @@
 #include "ClassHierarchy.h"
 #include "VirtualClock.h" // for getTime()
 
+#ifdef ENABLE_AVM2
+# include "Machine.h"
+#endif
+
 #ifdef HAVE_SYS_UTSNAME_H
 # include <sys/utsname.h> // For system information
 #endif
@@ -64,7 +68,11 @@
 
        _singleton->mClassHierarchy.reset(new ClassHierarchy);
        _singleton->setGlobal(new Global(*_singleton, 
_singleton->mClassHierarchy.get()));
+
+#ifdef ENABLE_AVM2
+       _singleton->mMachine = new Machine(*_singleton);
        assert(_singleton->getGlobal());
+#endif
 
        return *_singleton;
 }
@@ -87,7 +95,9 @@
        :
        _rootMovie(root),
        _swfversion(version),
-       mMachine(0),
+#ifdef ENABLE_AVM2
+    mMachine(0),
+#endif
        _clock(clock),
        _stack(),
     _shLib(new SharedObjectLibrary(*this))

=== modified file 'libcore/vm/VM.h'
--- a/libcore/vm/VM.h   2009-03-28 09:31:01 +0000
+++ b/libcore/vm/VM.h   2009-05-14 10:26:47 +0000
@@ -168,8 +168,10 @@
        /// Get a reference to the string table used by the VM.
        string_table& getStringTable() const { return mStringTable; }
 
+#ifdef ENABLE_AVM2
        /// Get a pointer to the machine, if it exists.
        Machine* getMachine() const { return mMachine; }
+#endif
 
        /// Get version of the player, in a compatible representation
        //
@@ -312,8 +314,10 @@
        /// Not mutable since changing this changes behavior of the VM.
        std::auto_ptr<ClassHierarchy> mClassHierarchy;
 
+#ifdef ENABLE_AVM2
        /// A running execution thread.
        Machine *mMachine;
+#endif
 
        VirtualClock& _clock;
 

=== modified file 'libcore/vm/asName.h'
--- a/libcore/vm/asName.h       2009-02-25 22:33:03 +0000
+++ b/libcore/vm/asName.h       2009-05-14 11:23:13 +0000
@@ -22,32 +22,14 @@
 namespace gnash {
 
 class as_object;
+class asNamespace;
+class Property;
 
 class asName
 {
 public:
-       /// If true, the name needs a run-time string value to complete it.
-       bool isRuntime() { return (mFlags & FLAG_RTNAME) != 0; }
-
-       /// If true, the name needs a run-time namespace to complete it.
-       bool isRtns() { return (mFlags & FLAG_RTNS) != 0; }
-
-       bool isQName() { return (mFlags & FLAG_QNAME) != 0; }
-       void setQName() { mFlags |= FLAG_QNAME; }
-
-       void setNamespace(asNamespace *ns) { mNamespace = ns; mPairName = 0; }
-       asNamespace* getNamespace() const { return mNamespace; }
-
-       string_table::key getName() const { return mName; }
-       void setName(string_table::key n) { mName = n; mPairName = 0; }
-
-       void setAttr() { mFlags |= FLAG_ATTR; }
-
-       void fill(as_object*) {/*TODO*/}
-
-       Property* findProperty();
-
-       typedef enum
+       
+       enum Kind
        {
                KIND_Qname = 0x07,
                KIND_QnameA = 0x0D,
@@ -59,27 +41,77 @@
                KIND_MultinameA = 0x0E,
                KIND_MultinameL = 0x1B,
                KIND_MultinameLA = 0x1C
-       } kinds;
-       typedef enum
+       };
+
+       asName()
+        :
+        _flags(0),
+        _namespaceSet(0),
+        _abcName(0),
+        _globalName(0),
+               _namespace(0)
+       {}
+
+    void setFlags(Kind kind) {
+        _flags = kind;
+    }
+
+    boost::uint8_t flags() const {
+        return _flags;
+    }
+
+    /// If true, the name needs a run-time string value to complete it.
+       bool isRuntime() { return _flags & FLAG_RTNAME; }
+
+       /// If true, the name needs a run-time namespace to complete it.
+       bool isRtns() { return _flags & FLAG_RTNS; }
+
+       bool isQName() { return _flags & FLAG_QNAME; }
+       void setQName() { _flags |= FLAG_QNAME; }
+
+       void setNamespace(asNamespace *ns) { _namespace = ns; }
+       asNamespace* getNamespace() const { return _namespace; }
+
+       string_table::key getABCName() const { return _abcName; }
+       void setABCName(string_table::key n) { _abcName = n;}
+
+       string_table::key getGlobalName() const { return _globalName;}
+       void setGlobalName(string_table::key n) { _globalName = n;}
+       
+       void setAttr() { _flags |= FLAG_ATTR; }
+
+       void fill(as_object*) {}
+
+       Property* findProperty();
+    
+    void namespaceSet(std::vector<asNamespace*>* v) {
+        _namespaceSet = v;
+    }
+
+    const std::vector<asNamespace*>* namespaceSet() const {
+        return _namespaceSet;
+    }
+
+private:
+
+       enum Flag
        {
                FLAG_ATTR = 0x01,
                FLAG_QNAME = 0x02,
                FLAG_RTNS = 0x04,
                FLAG_RTNAME = 0x08,
                FLAG_NSSET = 0x10
-       } flags;
-
-       boost::uint8_t mFlags;
-       std::vector<asNamespace*> *mNamespaceSet;
-
-       asName() : mFlags(0), mNamespaceSet(NULL), mName(0), mPairName(0),
-               mNamespace(NULL)
-       {/**/}
-private:
-       string_table::key mName;
-       string_table::key mPairName; // Pre-computed ns.name value
-       asNamespace* mNamespace;
+       };
+
+    boost::uint8_t _flags;
+
+    std::vector<asNamespace*>* _namespaceSet;
+
+       string_table::key _abcName;
+       string_table::key _globalName;
+       asNamespace* _namespace;
+
 };
 
-} // end of namespace gnash
-#endif /* GNASH_AS_NAME_H */
+} // namespace gnash
+#endif 

=== modified file 'testsuite/actionscript.all/Makefile.am'
--- a/testsuite/actionscript.all/Makefile.am    2009-02-27 06:46:40 +0000
+++ b/testsuite/actionscript.all/Makefile.am    2009-05-14 15:02:29 +0000
@@ -34,11 +34,13 @@
        alltests-v7-Runner \
        alltests-v8-Runner
 
+
 base_RUNNERS = \
        astests-v5-Runner \
        astests-v6-Runner \
        astests-v7-Runner \
-       astests-v8-Runner 
+       astests-v8-Runner
+#      astests-v9-Runner
 
 check_SCRIPTS = \
        $(base_RUNNERS) \
@@ -131,18 +133,33 @@
        Rectangle.as            \
        $(NULL)
 
+if HAVE_PERL
+if ENABLE_HAXE
+HAXETESTS = \
+       String.as \
+       $(NULL)
+endif
+endif
+
+HAXE_DIR = $(srcdir)/haxe-swf9
+HAXE_CPP = $(CPP) -DHAXE -DOUTPUT_VERSION=9 -x c -P -I$(HAXE_DIR)
+HAXE_FLAGS = -cp $(HAXE_DIR) -cp $(HAXE_CLASSPATH)
+
+
 ASTESTS_OUT = $(ASTESTS:.as=.swf)
 
 ASTESTS_V5_OUT = $(ASTESTS:.as=-v5.swf)
 ASTESTS_V6_OUT = $(ASTESTS:.as=-v6.swf)
 ASTESTS_V7_OUT = $(ASTESTS:.as=-v7.swf)
 ASTESTS_V8_OUT = $(ASTESTS:.as=-v8.swf)
+ASTESTS_V9_OUT = $(HAXETESTS:.as=-v9.swf)
 
 ASTESTS_VERSIONED_OUT = \
        $(ASTESTS_V5_OUT) \
        $(ASTESTS_V6_OUT) \
        $(ASTESTS_V7_OUT) \
        $(ASTESTS_V8_OUT) \
+       $(ASTESTS_V9_OUT) \
        $(NULL)
 
 ALLTESTS_VERSIONED_OUT = \
@@ -306,6 +323,10 @@
        GNASHRC="$(top_builddir)/testsuite/gnashrc" sh $< $(top_builddir) 
$(ASTESTS_V8_OUT) > $@
        chmod 755 $@
 
+astests-v9-Runner: $(srcdir)/../generic-testrunner.sh $(ASTESTS_V9_OUT)
+       GNASHRC="$(top_builddir)/testsuite/gnashrc" sh $< $(top_builddir) 
$(HAXE_DIR)/$(ASTESTS_V9_OUT) > $@
+       chmod 755 $@
+
 # This version runs all testcases in a single SWF targetted at player 5
 alltests-v5-Runner: $(srcdir)/../generic-testrunner.sh alltests-v5.swf
        GNASHRC="$(top_builddir)/testsuite/gnashrc" sh $< $(top_builddir) 
alltests-v5.swf > $@
@@ -342,6 +363,12 @@
        @$(MAKE) ${@:-v8.swf=.swf} SWFVERSION="8"
        @mv ${@:-v8.swf=.swf} $@
 
+$(ASTESTS_V9_OUT) : $(ASTESTS) Dejagnu.swf
+       $(HAXE_CPP) $(srcdir)/${@:-v9.swf=.as} | $(PERL) 
$(HAXE_DIR)/as_to_hx.pl ${@:-v9.swf=} > $(HAXE_DIR)/${@:-v9.swf=_as.hx}
+       $(HAXE) $(HAXE_FLAGS) -main $(@:-v9.swf=_as) -swf-version 9 -swf 
$(HAXE_DIR)/$@
+#      @$(MAKE) ${@:-v9.swf=.swf} SWFVERSION="9"
+#      @mv ${@:-v9.swf=.swf} $@
+
 $(DEJAGNU_SO_PATH):
        $(MAKE) -C ../misc-ming.all Dejagnu.swf
 

=== modified file 'testsuite/actionscript.all/String.as'
--- a/testsuite/actionscript.all/String.as      2009-02-27 07:52:06 +0000
+++ b/testsuite/actionscript.all/String.as      2009-03-04 20:30:04 +0000
@@ -18,7 +18,12 @@
 
 
 rcsid="$Id: String.as,v 1.56 2008/04/25 11:11:08 bwy Exp $";
+
+#ifdef HAXE
+#include "haxe-swf9/check.as"
+#else
 #include "check.as"
+#endif
 
 check_equals(typeof(String), 'function');
 check_equals(typeof(String.prototype), 'object');
@@ -1293,7 +1298,6 @@
 
 #endif
 
-
 //----- END OF TESTS
 
 var baseTests = 319;

=== added directory 'testsuite/actionscript.all/haxe-swf9'
=== added file 'testsuite/actionscript.all/haxe-swf9/Dejagnu.hx'
--- a/testsuite/actionscript.all/haxe-swf9/Dejagnu.hx   1970-01-01 00:00:00 
+0000
+++ b/testsuite/actionscript.all/haxe-swf9/Dejagnu.hx   2008-09-25 17:05:37 
+0000
@@ -0,0 +1,135 @@
+import flash.Lib;
+import flash.text.TextField;
+class Dejagnu {
+    static var passed = 0;
+    static var failed = 0;
+    static var xpassed = 0;
+    static var xfailed = 0;
+    static var untest = 0;
+    static var unresolve = 0;
+    static var inithack = init();
+    static var tf:flash.text.TextField;
+    static function init() {
+ tf = new flash.text.TextField();
+ tf.autoSize = flash.text.TextFieldAutoSize.LEFT;
+ flash.Lib.current.addChild(tf);
+ return null;
+    }
+    static function fail (why) {
+        failed++;
+        var msg = 'FAILED: '+why;
+        xtrace(msg);
+    }
+    static function xfail(why) {
+        xfailed++;
+        var msg = 'XFAILED: '+why;
+        xtrace(msg);
+    }
+    static function pass(why) {
+        passed++;
+        var msg = 'PASSED: '+why;
+        flash.Lib.trace(msg);
+    }
+    static function xpass(why) {
+        xpassed++;
+        var msg = 'XPASSED: '+why;
+        flash.Lib.trace(msg);
+    }
+    static function testcount() {
+        var c = 0;
+        if ( passed > 0 ) c += passed;
+        if ( failed > 0 ) c += failed;
+        if ( xpassed > 0 ) c += xpassed;
+        if ( xfailed > 0 ) c += xfailed;
+        return c;
+    }
+    static function printtotals() {
+        xtrace('#passed: '+ passed);
+        xtrace('#failed: '+ failed);
+        if ( xpassed > 0 ) {
+            xtrace('#unexpected successes: '+ xpassed);
+        }
+        if ( xfailed > 0 ) {
+            xtrace('#expected failures: '+ xfailed);
+        }
+  xtrace('#total tests run: '+ testcount());
+    }
+    static public function totals(exp:Dynamic, msg:Dynamic) {
+        var obt = testcount();
+        if ( exp != null && obt != exp ) {
+            fail('Test run '+obt+' (expected '+exp+') '+msg);
+        } else {
+            pass('Test run '+obt+' '+msg);
+        }
+    }
+    static function xtotals(exp:Dynamic, msg:Dynamic) {
+        var obt = testcount();
+        if ( exp != null && obt != exp ) {
+            xfail('Test run '+obt+' (expected '+exp+') ['+msg+']');
+        } else {
+            xpass('Test run '+obt+' ['+msg+']');
+        }
+    }
+    static public function check_equals(obt:Dynamic, exp:Dynamic, msg) {
+        if(msg == null) msg = "";
+        if ( obt == exp )
+            pass(obt+' == '+exp+' '+msg);
+        else
+            fail('expected: "'+exp+'" , obtained: "'+obt+'" '+msg);
+    }
+ static public function xcheck_equals(obt:Dynamic, exp:Dynamic, msg)
+ {
+  if(msg == null) msg = "";
+  if ( obt == exp )
+  {
+   xpass(obt+' == '+exp+' '+msg);
+  }
+  else
+  {
+   xfail('expected: '+exp+' , obtained: '+obt+" "+msg);
+  }
+ }
+ static public function check(a : Dynamic, msg)
+ {
+  if ( a )
+  {
+   if ( msg != null ) pass(msg);
+   else pass(a);
+  }
+  else
+  {
+   if ( msg != null ) fail(msg);
+   else fail(a);
+  }
+ }
+ static public function xcheck(a : Dynamic, msg)
+ {
+  if ( a )
+  {
+   if ( msg != null ) xpass(msg);
+   else xpass(a);
+  }
+  else
+  {
+   if ( msg != null ) xfail(msg);
+   else xfail(a);
+  }
+ }
+    static public function note(msg) {
+        xtrace(msg);
+    }
+    static function xtrace(msg) {
+        tf.text += msg + "\n";
+        flash.Lib.trace(msg);
+    }
+    static function untested(msg) {
+        flash.Lib.trace("UNTESTED: "+msg);
+    }
+    static function unresolved(msg) {
+        flash.Lib.trace("UNRESOLVED: "+msg);
+    }
+    static public function done() {
+        printtotals();
+ flash.Lib.trace("__END_OF_TEST__");
+    }
+}

=== added file 'testsuite/actionscript.all/haxe-swf9/as_to_hx.pl'
--- a/testsuite/actionscript.all/haxe-swf9/as_to_hx.pl  1970-01-01 00:00:00 
+0000
+++ b/testsuite/actionscript.all/haxe-swf9/as_to_hx.pl  2008-11-10 16:49:48 
+0000
@@ -0,0 +1,360 @@
+# as_to_hx.pl - A perl script for converting actionscript2 code to Haxe.
+#
+#  Copyright (C) 2008 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
+#
+#
+
+use strict;
+
+my $important_string;
+my $skipped = 0;
+my $skipped_tests = 0;
+my %vars;
+
+while(<STDIN>){
+
+       #Make sure important_string is clear.
+       $important_string = 0;  
+
+       #CHECK 0
+       #Remove rcsid, I think makeSWF uses this, but I am not sure.
+       if(index($_,"rcsid=") != $[-1){
+               next;
+       }
+
+       #CHECK 1
+       #Insert class definition and main() after imports.
+       if(index($_,"import") != $[-1){
+               print $_;
+               while(<STDIN>){
+                       if(index($_,"import") != $[-1){
+                               print $_;
+                       }
+                       else{
+                               print "class $ARGV[0]_as{ static function 
main(){";
+                               last;
+                       }
+               }
+       }
+       
+       #CHECK 2
+       #Check for a variable definition.
+       if($_ =~ /(var\s+)(\w+)(.*)([\;\:])/){
+               if(!$vars{$2}){
+                       $vars{$2} = 1;
+                       #Make sure the variable still gets declared even if 
this line is commented out latter.
+                       $important_string = declare_variable($2);
+               }
+#              If the type of the variable is not delcared, make it Dynamic.
+               if($4 eq ';'){
+                       $_ = "$1$2:Dynamic $3$4\n";     
+               }
+       }
+
+       #CHECK 3 - Must run after CHECK 2
+       #Detect the first time a variable is used, and insert var varName; on 
the line above.
+       if($_ =~ /^(\s*)(\w+?)(\s*=\s*.+)/){
+               if(!$vars{$2}){
+                       print declare_variable($2) . "//FIRST OCCURENCE OF VAR 
$2\n";
+                       $vars{$2} = 1;
+               }
+       }
+
+       if(index($_,"new") != $[-1){
+               #Replace things like: new String; with new String();
+               $_ =~ s/(new \w+)(;)/$1\(\)$2/g;
+               $_ =~ s/(new \w+)(\))/$1\(\)$2/g;
+               #Replace things like o = new Object(); with o = {};
+               $_ =~ s/new Object\(\)/{}/g;
+               #Add extra arguments when Date() is called with less than 6 
args.
+               if($_ =~ /new Date\(.+\)/){
+                       my $num_args = length(split(/,/,$_));
+                       if($num_args==6){
+                               print $_;
+                               next;
+                       }
+                       my $arg_string = "";
+                       if($num_args > 0){
+                               $arg_string .=",";
+                       }
+                       while($num_args<6){     
+                               $arg_string .= "0,";
+                               $num_args++;
+                       }
+                       $arg_string = substr($arg_string,0,-1);
+                       $_ =~ s/(new Date\(.+)(\))/$1$arg_string$2/g
+               }
+               #Replace calls to new String() with new String("").
+               $_ =~ s/(new String\()\)/$1""\)/;
+
+               #TODO: We can probably figure out when to use parseFloat and 
when to use parseInt.
+               $_ =~ s/new Number\(\s*(\w+)\s*\)/Std.parseInt("$1")/g;
+               
+#              print $_;
+#              next;
+       }
+
+       #We want to Replace delete object.prop or delete object["prop"] with 
Reflect.deleteField(object,'prop')
+       #but I am no sure if Haxe's delete acts the same way as actionscript's 
delete, so it is best to
+       #skip this for now.
+       if($_ =~ /delete\s*([\w\[\]\"\\.]+)/){
+#              my $prop = $1;
+               #Letting Haxe delete a string's length property causes this:
+               #ReferenceError: Error #1120: Cannot delete property length on 
String.
+#              if($1 =~ /length/){
+                       skip_line();
+                       next;
+#              }
+               
+               #Check if we have this case: delete a["Prop"];
+#              if(index($prop,'.') == $[-1){
+#                      $prop =~ s/(\w+)\[['"](\w+)['"]\]/$1.$2/g;
+#              }
+
+               #Seperate the object from its property.
+#              my @temp = split(/\./,$prop);   
+#              my $field = $temp[-1];
+
+#              my $object;
+               #Don't join the object with itself.
+#              if($#temp == 1){
+#                      $object = $temp[0];
+#              }
+#              else{
+#                      $object = join(".",@temp[0,-2]);
+#              }
+#              $_ =~ 
s/delete\s*([\w\[\]\"\\.]+)/Reflect.deleteField($object,'$field')/;
+       }
+       
+       #Replace Class.hasOwnProperty(prop) with Reflect.hasField(Class,prop)
+       #TODO: Make this work for other classes, if necessary
+       $_ =~ 
s/String.hasOwnProperty\(\s*[\'\"](\w+)[\'\"]\s*\)/Reflect.hasField(String,'$1')/g;
+
+       #Replace things like String.charCodeAt with 
Reflect.field(String,'charCodeAt').
+       $_ =~ s/([a-zA-Z]+)\.([a-zA-Z]+)\s*([\.\)])/Reflect.field($1,'$2')$3/g;
+
+       #TODO: Handle typeof and typeOf differently?
+       #Doing this: $_ =~ s/type[Oo]f\(\s*(\S+)\s*\)/Type.typeof($1)/g;
+       #causes tests to fail, calling Type.typeof returns 'TFunction' instead 
of 'function'
+       #'TObject' instead of 'object' and 'TNull' instead of 'null'
+       #in order to convert theses test cases, we also need to change the 
expected value.
+       if($_ =~ /type[Oo]f/){
+               skip_line();
+               next;
+       }
+
+       #Replace String() with new String("")
+       $_ =~ s/(\W)String\(\)/$1new String("")/g;
+       
+       #Skip references to __proto__ Haxe does not handle __proto__ very well.
+       if($_ =~ /__proto__/ ){
+               skip_line();
+               next;
+       }
+       
+       #Replace Class.prototype with Reflect.field(Class,'prototype')
+       $_ =~ s/(\w+)\.(prototype)/Reflect.field($1,'$2')/g;
+
+       #There is no Function class in haxe, so we need someway of converting 
this to haxe:
+       #Function.prototype
+       #NOTE: $_ =~ s/Function/Type.getClass(function(){})/g; will cause 
TypeError: Error #1009
+
+       if($_ =~ /Function/ ){
+               skip_line();
+               next;
+       }
+
+       #Replace isNan(number) with Math.isNan(number)
+       $_ =~ s/isNaN/Math.isNaN/g;
+
+       #CHECK 5
+       #Calls to split()
+       if(index($_,"split") != $[-1){
+               
+               #CHECK 5.1 - Must run before CHECK 8
+               #Replace calls to split that have no arguments with an array 
whose only member is the caller.
+               $_ =~ s/(\w+)\.split\(\)/[$1]/g;
+
+               #CHECK 5.2
+               #If the delimiter is undefined, replace with an array whose 
only member is the caller
+               $_ =~ s/(\w+)\.split\(\s*undefined\s*,.+\)/[$1]/g;
+               
+               #CHECK 5.5 - Must go after CHECK 5.4 and CHECK 5.3
+               #If the string and the delimiter are both empty replace the cal 
with an empty array.
+               $_ =~ s/(\w+)\.split\(""\)/$1==""?[]:$1.split("")/g;
+
+               #CHECK 5.4 - Must go after CHECK 5.5
+               #If the limit is undefined, ignore it.
+               $_ =~ 
s/(\w+)\.split\(\s*(\S+)\s*,\s*undefined\s*\)/$1.split($2)/g;
+
+               #CHECK 5.3 - Must go after CHECK 5.5
+               #Replace calls to str.split(a,b) with 
a==""?[]:str==""||a==null?[str]:str.split(a).slice(0,b)
+               #                str                    a               b
+               $_ =~ 
s/(\w+)\.split\((.+),\s*([-\w]+)\s*\)/$2==""?[]:$1==""||$2==null?[$1]:($3<1)?[]:$1.split($2).slice(0,$3)/g;
+               
+       }
+
+       #CHECK 8 - Must run after CHECK 5.1
+       #Convert instance instanceof Class to Std.is(instance,Class)
+       $_ =~ s/(\w+|\[\w+\])\s*instanceof\s*(\w+)/Std.is($1,$2)/g;
+
+       #Remove any instanceof statements that can't be converted to Std.is
+       #We can't convert "String" instanceof String to Std.is("String",String)
+       #because they return different values.
+       if($_ =~ /instanceof/){
+               skip_line();
+               next;
+       }
+
+       #Replace undefined with null.
+       $_ =~ s/undefined/null/g;
+
+       #CHECK 10 - Must run before CHECK 9
+       #Haxe only allows one argument to String.fromCharCode(), so replace
+       #String.fromCharCode(1,2) with String.fromCharCode(1) + 
String.fromCharCode(2)
+       if($_ =~ /String.fromCharCode\((.+)\)/){
+               
+               #TODO: Can this be combined with regex above?
+               $_ =~ s/,\s*(\w+)\s*/) + String.fromCharCode($1/g;
+       }
+       
+       #CHECK 11 - Must run before CHECK 9
+       #Convert calls to chr and ord.  I think these have been depreciated 
since SWF v5.
+       $_ =~ s/chr\(\s*(\w+)\s*\)/String.fromCharCode($1)/g;
+       $_ =~ s/ord\(\s*(\S+)\s*\)/$1.charCodeAt(0)/g;
+
+       #CHECK 9 - Must run after CHECK 10 and after CHECK 11
+       #Replace calls to String.fromCharCode(0) with "" When compiled with 
haxe a trace call
+       #will die if it is passed String.fromCharCode(0)
+       $_ =~ s/String.fromCharCode\(\s*0\s*\)/""/g;
+
+       $_ =~ 
s/\((.+?)\.charCodeAt\(\s*(\S*)\s*\)/($1.charCodeAt($2)==null?0:$1.charCodeAt($2)/g;
+
+       #Replace String in "for .. in" loops that iterator over String's 
properties with 
+       #Type.getInstanceFields(String).
+       $_ =~ 
s/(for\s*\(\s*\w+\s*in\s*)String\s*\)/$1Type\.getInstanceFields\(String\)\)/g;
+
+       #Remove calls to String.gotcha.  I cannot find a Haxe equivilent for 
this.
+       if($_ =~ /String.gotcha/){
+               skip_line();
+               next;   
+       }
+
+       #CHECK 6 - Must run before CHECK 7
+       #Remove refrences to Object unless the line also contains function.
+       #This is a hack to prevent us from removing function signatures without
+       #removing the body as well.
+       if($_ =~ /Object/){
+               if($_ =~ /function/){
+                       $_  =~ s/(\W)Object(\W)/$1String$2/g;   
+               }
+               else{
+                       skip_line();
+                       next;
+               }
+       }
+
+       #CHECK 7 - Must run after CHECK 6
+       #Replace [object Dynamic] with [object Object]
+       #This undoes some of the changes made by CHECK 6.  We need to do this 
because
+       #even though there is no Object class in Haxe, when variables of type 
Dynamic are
+       #compiled int byte code, they become an Object.
+       $_ =~ s/\[object Dynamic\]/[object Object]/g;
+       
+       #Tests that expect [type Dynamic] as a result will always fail since 
the Dynamic class is 
+       #Haxe only.
+       if($_ =~ /\[type Dynamic\]/){
+               skip_line();
+               next;
+       }
+
+       #Remove calls to ASSetPropFlags.  I can't find a Haxe equivilent.
+       if($_ =~ /ASSetPropFlags/){
+               skip_line();
+               next;
+       }
+       
+       #Subtract the number of skipped tests from the total passed to 
Dejagnu.totals().
+       $_ =~ 
s/Dejagnu.totals\(\s*(\w+)\s*,(.+)/Dejagnu.totals($1-$skipped_tests,$2/g;
+
+       #Skip calls to String.lastIndexOf that have a more than two arguments, 
or have a string as
+       #the second argument.
+       if($_ =~ /lastIndexOf\((.+?)\)/){
+               print "//$1\n";
+               if ($1 =~ /.+?,\s*"/ || ($1  =~ tr/,//) >= 2){
+                       skip_line();
+                       next;
+               }
+       }
+
+       #The way Haxe compiles string.length = 5 causes
+       #ReferenceError: Error #1074: Illegal write to read-only property 
length on String.
+       #So we need to skip attempts to set a string's length property.
+       if($_ =~ /\.length\s*=/){
+               skip_line();
+               next;
+       }
+
+       #HACK: These are just quick fixes to prevent run-time errors that are 
caused when 
+       #functions are called on objects that are initialized like this o = {}. 
 The corect way
+       #to fix this is to keep track of objects that are initialized this way, 
and then
+       #only comment out those objects when they try and call functions.
+       if($_ =~ /c.toString = null;/){
+               skip_line();
+               next;
+       }
+       if($_ =~ /o.substr/){
+               skip_line();
+               next;
+       }
+
+       #Remove tests that are known to fail, and we can't fix with this 
conversion script.
+       if($_ =~ /String\.as.+?:.+?(1234|1237|1239|1250|1258|1270)/){
+               skip_line();
+               next;
+       }
+       
+
+       #Print the converted line of code.
+       print $_;
+}
+
+#Close the Class and main function definitons.
+print "}}\n";
+
+print stderr "$skipped lines were skipped.\n";
+print stderr "$skipped_tests tests were skipped\n";
+
+sub skip_line{
+       $skipped++;
+       if($important_string){
+               print $important_string;
+       }
+       #Keep track of the number of tests we skip.
+       if($_ =~ /Dejagnu.+check/){
+               $_ = "TEST DETECTED: $_";
+               $skipped_tests++;
+       }
+       print "//$_";
+
+}
+
+sub declare_variable{
+       
+       my $var_name = $_[0];
+       return "var $var_name:Dynamic='';\n"
+}

=== added file 'testsuite/actionscript.all/haxe-swf9/check.as'
--- a/testsuite/actionscript.all/haxe-swf9/check.as     1970-01-01 00:00:00 
+0000
+++ b/testsuite/actionscript.all/haxe-swf9/check.as     2008-09-25 17:05:37 
+0000
@@ -0,0 +1,52 @@
+// check.as - Include file for MTASC testcases providing common testing 
facilities
+//
+//   Copyright (C) 2005, 2006, 2007 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
+//
+//
+// Original author: David Rorex - address@hidden
+//
+
+#ifndef _CHECK_AS_
+#define _CHECK_AS_
+
+#define _INFO_ ' ['+__FILE__+':'+__LINE__+']'
+
+// First argument is the expression we test, second is the result we expect
+#define check_equals(obt, exp) Dejagnu.check_equals(obt, exp, _INFO_)
+
+// First argument is the expression we test, second is the result we expect
+#define xcheck_equals(obt, exp) Dejagnu.xcheck_equals(obt, exp, _INFO_)
+
+#define check(a) Dejagnu.check(a, #a+' '+_INFO_)
+#define xcheck(a) Dejagnu.xcheck(a, #a+' '+_INFO_)
+
+#define pass(text) Dejagnu.pass(text + _INFO_)
+#define xpass(text) Dejagnu.xpass(text + _INFO_)
+#define fail(text) Dejagnu.fail(text + _INFO_)
+#define xfail(text) Dejagnu.xfail(text + _INFO_)
+#define pass(text) Dejagnu.pass(text + _INFO_)
+#define untested(text) Dejagnu.untested(text + _INFO_)
+#define unresolved(text) Dejagnu.unresolved(text + _INFO_)
+
+#define check_totals(n) Dejagnu.totals(n,  _INFO_)
+#define xcheck_totals(n) Dejagnu.xtotals(n,  _INFO_)
+
+#define note(text) Dejagnu.note(text + _INFO_)
+
+import Dejagnu;
+
+#endif

=== added file 'testsuite/libcore.all/CodeStreamTest.cpp'
--- a/testsuite/libcore.all/CodeStreamTest.cpp  1970-01-01 00:00:00 +0000
+++ b/testsuite/libcore.all/CodeStreamTest.cpp  2008-08-28 12:39:21 +0000
@@ -0,0 +1,92 @@
+// 
+//   Copyright (C) 2005, 2006, 2007, 2008 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
+
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
+#include "CodeStream.h"
+#include "log.h"
+
+#include <iostream>
+#include <sstream>
+#include <cassert>
+#include <cmath>
+#include <string>
+
+#include "check.h"
+
+#include "utility.h"
+
+using namespace gnash;
+using std::cout;
+using std::endl;
+
+int
+main(int /*argc*/, char** /*argv*/)
+{
+       char data[10] = {0x4,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9};
+       
+       CodeStream* stream = new CodeStream(std::string(data,10));
+       
+       //Test read_as30p()
+       boost::uint8_t opcode;
+       int i = 0;
+       while(opcode = stream->read_as3op()){
+               check_equals(opcode,data[i]);
+               i++;
+       }
+       
+       //Make sure we stopped at the right spot.
+       check_equals(i,10);
+
+       //Reset stream.
+       stream->seekTo(0);
+       stream->clear();
+
+       //Test seekTo
+       stream->seekTo(5);
+       
+       opcode = stream->read_as3op();
+       check_equals(opcode,data[5]);
+
+       //Reset stream.
+       stream->seekTo(0);
+       stream->clear();        
+
+       //Test read_u8.
+       i=0;
+       while(i<10){
+               opcode = stream->read_u8();
+               check_equals(opcode,data[i]);
+               i++;
+       }
+       
+       char newData[6] = {0x5,0xC5,0x0,0x0,0x1,0x2}; 
+       CodeStream* streamA = new CodeStream(std::string(newData,6));
+       
+       boost::uint8_t byteA = streamA->read_u8(); 
+       check_equals(byteA,newData[0]);
+       
+       //Test read_S24.
+       boost::int32_t byteB = streamA->read_S24();
+       check_equals(byteB,197);
+
+       
+       
+
+}
\ No newline at end of file

=== modified file 'testsuite/libcore.all/Makefile.am'
--- a/testsuite/libcore.all/Makefile.am 2009-04-30 16:31:12 +0000
+++ b/testsuite/libcore.all/Makefile.am 2009-05-14 15:02:29 +0000
@@ -47,6 +47,11 @@
        SafeStackTest \
        $(NULL)
 
+if ENABLE_AVM2
+check_PROGRAMS += \
+       CodeStreamTest
+endif
+
 CLEANFILES = \
        testrun.sum \
        testrun.log \
@@ -120,6 +125,11 @@
        $(GNASH_LIBS) \
        $(NULL)
 
+CodeStreamTest_SOURCES = CodeStreamTest.cpp
+CodeStreamTest_LDADD = \
+       $(GNASH_LIBS) \
+       $(NULL)
+
 TEST_DRIVERS = ../simple.exp
 TEST_CASES = \
        $(check_PROGRAMS) \

=== added file 'testsuite/misc-haxe.all/AddChild.hx'
--- a/testsuite/misc-haxe.all/AddChild.hx       1970-01-01 00:00:00 +0000
+++ b/testsuite/misc-haxe.all/AddChild.hx       2008-11-13 19:14:56 +0000
@@ -0,0 +1,43 @@
+#include "check.as"
+
+// Class must be named with the PP prefix, as that's the name the
+// file passed to haxe will have after the preprocessing step
+class PP_AddChild {
+    static function main()
+    {
+        var tf = new flash.text.TextField();
+        var tf2 = flash.Lib.current.addChild(tf);
+        check_equals(tf, tf2);
+        var tf3 = flash.Lib.current.addChild(tf);
+        check_equals(tf, tf3);
+        check_equals(tf2, tf3);
+
+        var tf4 = flash.Lib.current.addChildAt(tf, 0);
+        check_equals(tf4, tf);
+
+        var tf5 = flash.Lib.current.addChildAt(tf, 0);
+        check_equals(tf5, tf);
+        check_equals(tf5, tf2);
+        check_equals(tf5, tf3);
+        check_equals(tf5, tf4);
+
+        var tf6 = flash.Lib.current.addChildAt(tf, 1);
+        check_equals(tf6, tf);
+        check_equals(tf6, tf5);
+        var tf7 = flash.Lib.current.addChildAt(tf, 1);
+        check_equals(tf7, tf);
+        check_equals(tf7, tf6);
+        check_equals(tf7, tf5);
+
+        // TODO: check depths, add a MovieClip child,
+        //       find a way to do some checks on the
+        //       actual stage content !
+
+        // Check number of tests run (for consistency)
+        check_totals(13);
+
+        // Call this after finishing all tests. It prints out the totals.
+        Dejagnu.done();
+
+    }
+}

=== modified file 'testsuite/misc-haxe.all/Makefile.am'
--- a/testsuite/misc-haxe.all/Makefile.am       2009-02-25 22:33:03 +0000
+++ b/testsuite/misc-haxe.all/Makefile.am       2009-05-14 10:26:47 +0000
@@ -20,10 +20,12 @@
 
 # These will get executed and parsed for test output
 SANE_ASTESTS = \
+       Hello.hx \
+       AddChild.hx \
        $(NULL)
+
 # These ones are the ones for which consistency check fail 
 BOGUS_ASTESTS = \
-       Hello.hx \
        $(NULL)
 
 ASTESTS = $(SANE_ASTESTS) $(BOGUS_ASTESTS)
@@ -42,10 +44,15 @@
 
 
 TEST_DRIVERS = ../simple.exp
+
 TEST_CASES = \
+       $(NULL)
+
+if ENABLE_AVM2
+TEST_CASES += \
        sanetests-runner \
-       bogustests-runner \
-       $(NULL)
+       bogustests-runner
+endif
 
 sanetests-runner: $(srcdir)/../generic-testrunner.sh $(SANE_ASTESTS_OUT) 
Makefile
        sh $< -c __END_OF_TEST__ -r 50 $(top_builddir) $(SANE_ASTESTS_OUT) > $@


reply via email to

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