This repository has been archived by the owner on Jul 3, 2019. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 1035170 - Implement lazy SWF parsing
This is a monster-patch as it's the result of squashing together 81 individual patches. It contains a full refactoring of how SWF files are parsed and the results managed. In the new system, SWFs aren't deeply parsed and all symbols and other tags extracted. Instead, they're scanned through, detecting all symbols, frames, and code blocks. The player is notified of these tags, but they're only deeply parsed upon first usage. Even then, the `SWFFile` class that represents the loaded SWF doesn't hold on to the parsed tag. It is up to the playback system to decide whether that's required or not. For now, it does happen in most cases, but we might decide to hold most parsing results temporarily only. In the following, I tried to include the important commit messages for the original patches squashed down into this one. The original patches themselves are available in [a branch](https://github.com/tschneidereit/shumway/tree/parser-unsquashed) in @tschneidereit's fork. Bug fix in SoundStreamHead: StreamSoundSampleCount field is a UI16, not UI32 Disable usage of DOM Workers in fakeSyncWorker.ts for now This creates lots and lots of IO events, overwhelming browsers in some cases. Also, it most certainly imposes substantial overhead. Move initialization of loaded frames from Loader into MovieClip Null out the SWFFile's decompressor after loading is completed, to free its memory. Don't treat BMPs as eagerly-decoded images Increases height of profiler output panel to accomodate parser timeline Remove some somewhatImplemented warnings These got in the way of trace tests after some changes to how logging of warnings works. Add timeouts to the GNU parallel command. (Original patch by @mbebenita) Add simple DOM stubs for Image, URL and Blob to the shell testing harness. (Original patch by @mbebenita) Adds profiling option -o to the shell driver. This let's you dumps out timeline events to stdout when verbose mode is also on. (Original patch by @mbebenita) Optimize DataBuffer access by providing methods for writing multiple values at the same time. Also, lazify the way views are allocated since not all views are always needed. (Original patch by @mbebenita) Switches AVM1Utils.addEventListenerProxy to a native implementation Optimize parsing of AVM1 ClipEvents And moved their application to avm1lib. Before, it was partly in FrameDelta#_initialize, partly in the late Sprite#_initAVM1Bindings. This also fixes the mapping of some of the ClipEvents to equivalent AVM2 events. Some aren't trivially mapped, so more work has to be done there. Those will show a warning at least when they're used. Add new test for mouse events on nested AVM1 objects and reactivate some existing tests The existing tests where disabled before the nat branch merge and then forgotten about. Give PromiseWrapper a `then` method Delay committing Loader updates until the right point in the event loop Support initialization from Uint8Array in source instead of special-casing BinarySymbol in ByteArray initializer Change how resolved symbols get stored on ASClasses Instead of having the Symbol ctor do that, the symbolResolver now does it. Not only is that cleaner, it's also required to make embedded images work: for those, the symbol is associated with a subclass of `Bitmap`, but we create a `BitmapSymbol` for the actual data. This was then stored on `flash.display.BitmapData`. Not ideal. Fix a few assert guards to let the assert execute in non-release mode instead of release mode Don't take 3 screenshots of an unchanging reftest Add parser tracing output for eagerly parsed images and fonts
- Loading branch information
1 parent
d375036
commit 4b42e06
Showing
69 changed files
with
2,782 additions
and
3,000 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.