Граф коммитов

985 Коммитов

Автор SHA1 Сообщение Дата
Yury Delendik f242f5df7a Merge pull request #2386 from mbebenita/slim-fast
Remove dependency on tools in release bundles.
2015-09-14 09:50:12 -05:00
Yury Delendik 4581c26501 Adds the example of a simple swfm recorder. 2015-09-11 17:11:07 -05:00
Michael Bebenita c0398bcce8 Don't include Shumway.Tools in bundles. 2015-09-11 14:12:38 -07:00
Michael Bebenita 88baace741 Remove twits example. 2015-09-11 14:10:09 -07:00
Michael Bebenita 1b4d20d5dd Remove references to EXECUTION_MODE, and delete bit rotten code. 2015-09-08 18:11:56 -07:00
Michael Bebenita 46a854c7e7 Remove removed WebGL Options from the inspector. 2015-09-02 10:36:03 -07:00
Michael Bebenita badea815cb Remove WebGL backend. It's probably bitrotten at this point. 2015-09-01 22:28:46 -07:00
Yury Delendik f6e82e0e60 Consolidate all polyfills into src/compatibility.js 2015-08-27 17:23:35 -05:00
Till Schneidereit d4c577f7da Merge remote-tracking branch 'origin/master' into localconnection 2015-06-11 18:00:19 +02:00
Till Schneidereit 3c7632b13c Lots of bugfixes to LocalConnection implementation
Contains a shell trace test. While the test only excerts the player-internal implementation of the message sending machinery, it does test all the content-facing parts and all error handling. I verified that the implementation works as expected across browser tabs (within the same browser instance, of course) with Manual testing.
2015-06-01 19:25:31 +02:00
Yury Delendik ddd27a4e3c Creates gfxBridge 2015-05-29 12:14:49 -05:00
Yury Delendik cc778bc4cd Properly handles missing objects during removeMovieClip. 2015-05-11 16:29:07 -05:00
Yury Delendik bb93b49bd7 Fixes inspector live view functionality. 2015-05-11 08:46:25 -05:00
Yury Delendik a941054501 Fixes inspector debug terminal. 2015-05-11 08:40:16 -05:00
Yury Delendik c9a7f2695b Adds options to disable scratch canvases logging 2015-05-11 07:57:02 -05:00
Yury Delendik 6a073b1e3c Removing TestEaselHost and TestPlayer classes. 2015-05-09 08:38:14 -05:00
Yury Delendik 736fe5863d Fixes rendering assets in the inspector. 2015-04-28 09:52:43 -05:00
Till Schneidereit da66cadfb9 Merge pull request #2180 from tschneidereit/log-startup-timings
Log startup timings
2015-04-27 18:19:35 +02:00
Till Schneidereit 62270bd4f6 Implement support for Loader#close
Gets rid of the pesky `Not Implemented: processing loadClose when loading was aborted` warning.
2015-04-27 18:10:13 +02:00
Till Schneidereit bd7aa96b7b Log startup timing information in the extension and the inspector
We need to keep an eye on this, so having it logged prominently seems important. Also, this is about 950ms for a trivial ad right now - way too much.
2015-04-27 18:04:32 +02:00
Yury Delendik a3e525119a Enables log writing in the `grunt server` command. 2015-04-24 14:45:26 -05:00
Till Schneidereit 2bbdb5ce0d Rewrite of most of the AVM2 component, the core of the AVM1, plus lots of other changes to adapt to said rewrites
This is a __huge__ commit, because it's a squashed version of 777 individual commits. Taken together, they replace the vast majority of code in src/avm2 and much in src/avm1. Gone are the AVM2 JIT, the old interpreter, and huge amounts of code.

The new VMs (both AVM1 and AVM2) contain completely new implementations of the languages meta-object protocols and name resolution schemes that're much closer to what Flash is doing on a fundamental level, enabling better in-depth compatibility throughout.

Also, for AVM2 we have vastly improved test coverage, largely through importing the Tamarin test suite and a harness that runs that entire test suite in a ridiculous 25 seconds. Current pass rate: ~96.5%. (Compared to ~80% to 85% before all this.)

The original commits can, for the time being, be found in the [redux branch](https://github.com/mozilla/shumway/tree/redux).

Here's a somewhat-curated list of the individual commit messages of the commits that were squashed down to this:

    Flash uses carriage return (\r) instead of line feed (\n) characters for new lines.
    Implements AVM1 Array.shift/unshift.
    Fix native linkage for flash.net.FileReference and .FileReferenceList
    Add toString method to GFX's TextLine class to aid debugging
    Disable AVM2 test that start failing on Apr 23, 2015.
    Fixes mouse cursor.
    Fixes AVM1 registers allocation.
    Implement TextField::getLineText.
    Fixes AVM1 ExternalInterface and external events handling.
    Prevent infinite recursion in font symbol resolution
    Add a grunt task to install a restartless version of the extension.
    Fixes Sound symbol construction
    Catch and work around NaN values flowing into SVGMatrix
        "Work around" might be a bit of a strong word here ...
    Add native class link for flash.text.TextSnapshot
        The native doesn't actually implement a single method, but at least we get the exception a slight bit later.
    Implement NOP and BKPT ops in the interpreter
        They don't actually *do* anything, so this is more than trivial.
    Test case for the interface conversions in multiple movies.
    Fix `for each` iteration on Dictionaries
    Adds FileLoadingSession type annotation to URLStream.
    Fix bugs in handling device font symbols and registering fonts by symbol id
    Bind resolver to the correct object in Font.registerEmbeddedFont
    Fix extension by commenting out reference to Shumway.AVM2.Verifier
    Use correct AXApplicationDomain in getDefinitionByName
    Make AVMX execution tracing options available in the inspector and disable old, currently unused options
    Fix start/stopDrag.
    Check for an existing session before trying to close it in URLStream.
    Initializes symbols during construction.
    Properly derive current Application- and SecurityDomains in the pertaining getters
    Fix NetStream events being dispatched with an undefined type.
    Properly derive the class name for Error classes from the abc class definition instead of mucking with the template class's name
    Replace all `false && super()` things in constructors with `super()`
        We actually do want the super ctor called now.
    Remove older src/flash/linker.ts file
    Create TextRun instances in current SecurityDomain
    Create SoundTransform object in current securityDomain in SoundChannel
    Only send the data required for asset decoding when serializing decoding requests for images and fonts
    Enables AVM1 stage-wide mouse events.
    Refactors AsBroadcaster.
    Refactors native AVM1 static usages.
    Hoist recursive inner function out of deserializedObj in recorder.ts
    Untangle all "fontOrImage" remoting stuff into individual messages for fonts and images
    Refactors setting of the AVM1 root.
    Refactors AVM1 event observer
    Fix color matrix construction.
    Update some signatures and some cleanup in flash.display, .text, and .utils
    Update some signatures and some cleanup in flash.system
    Update some signatures and some cleanup in flash.net
    Update some signatures and some cleanup in flash.media
    Box/unbox arrays going out of/into filter classes
    Remove some Air-only getters (with unboxed-array signatures) from HTTPStatusEvent
    Fix unit tests that work with unboxed arrays, and disable ones for now that fail for rounding errors
    Fix unit test that fails now because expects unboxed arrays
    Box returned array in DisplayObjectContainer#getObjectsUnderPoint
    Unbox AXArrays in Graphics._writeGradientStyle and correctly scale the transform matrix
    Properly link some natives in flash/link.ts
    Unbox args array in NetStream#invokeWithArgsArray, and remove useless NetConnection#invokeWithArgsArray
    Allow modification of properties on the dynamic prototype of sealed classes
    Disable memory tool-related AVM2 acceptance tests
    Disable sampling-related AVM2 acceptance tests
    Disable Shell-related AVM2 acceptance tests
    Disable Worker-related AVM2 acceptance tests
    Disable float4-related AVM2 acceptance test
    Store the default namespace on scope objects instead of always replacing a global value
    Reset static XML state between files in the shell's JSON execution mode
    Bugfixes in XML constructor and XML#insert
    Implement XML#prependChild
    Throw correct exception when XML#insert would create a cyclic graph
    Implement XML#insertChildAfter and XML#insertChildBefore
    Add TextField test case.
    Run LZMA compressed swfs in the shell.
    Fix JS shell path.
    Assert that SharedObjectStorage is available.
    Adds a automated mock tests for JWPlayer, this runs a considerable amount of player initialization code.
    Make sure tests don't print timing information.
    Polyfill session storage in the shell.
    Set a default stage size in the shell.
    Adds a coarse grained execution writer.
    Port all ExternalInterface methods to ts
    Tighten some method declarations on AXClass, plus cleanup
    Remove old AVM2 runtime core, natives, interpreter, and bytecode normalizer
    Changes trace tests run limit from actual time to micro task ticks.
    Read default font from AX version of Font, not the original
    Actually return the object created in Vector3D.Create
    Only give non-native functions debug names instead of overriding native functions' original name, and fix error name assignment accordingly
    Fix leaking of internal objects in ContextMenu
    Loosen type annotation in ExternalInterface#convertFromXML
    Don't just convert all the things to XMLList when we really want to coerce
    Fix running abc files in the inspector
    Explicitly apply symbol in embedded Bitmaps constructed from script rather than through timeline-placement
    Reset filter array when reusing render state objects.
    Fix calling functions with a null-receiver when no interpreted functions are on the stack
    Make SharedObject work in AVMX
    Fixes SharedObject.getLocal
    Implements AVM1 Matrix; fixes AVM1Transform.
    Fix bugs in ASJSON.stringify
    Make sure not to duplicate texture dependencies in Shape parser
    Stubs AVM1 SharedObject.
    Implements AVM1 ColorTransform.
    Implements AVM1 Rectangle.
    Fixes AVM1MovieClip.lineStyle.
    Fixes non-existent build/test folder problem during "gate".
    Fixes asGetPublicProperty and removes axDefinePublicProperty.
    Refactoring of the avm1ResolveVariable
    Thread an environment containing the current ApplicationDomain through the entire system and use it to resolve symbols
    Return false instead of throwing in ApplicationDomain#hasDefinition
    Re-enable filters support in the gfx backend.
    Associate every ABCFile with an environment, let that be a LoaderInfo in the SWF player, and use that to get to the correct chain of application domains for Loaders
        This is finally an actual use of the ApplicationDomain system. It might even already work for loading child SWFs into their own domains.
    Store applicationDomain on LoaderInfo and return it in getter
    Fix initialization of ByteArrays from SWF-embedded symbols
    Removes AVM1Context.lookupChild.
    Fixes AVM1 String.lastIndexOf,.slice,.substr and .substring and chr
    During build ensure "build" folder exists
    Verify values when constructing AXArray instances from JS arrays
    Catch and translate internal exceptions from constructing Arrays with non-index number as the only argument
    Match Tamarin's absurd behavior in Array#push when the push would cause the array to be too large
    Correctly implement String#localeCompare
    Catch and convert into proper exceptions call stack overflows
        Tamarin appears just not to create these - it consumes arbitrarily large arrays when calling Function#apply. JS engines don't, so we at least throw a proper internal error.
    Removes system error from the ShellBinaryReader.
    Implements members for AVM1 Object, Function, Boolean, Number
    Install swfdec tests.
    Disable some tests on travis.
    Implement duplicateMovieClip
    Rename test_avm2_pass to test_avm2_shumway and move run file to build/.
    Add trace test for duplicateMovie.
    Implement duplicateMovieClip.
    Fix cloning graphics data.
    Moves AVM1 assets registration code from the interpreter.
    Protects from updating value from non-existent object
    Implements AVM1 System.capabilities and .security
    Implements AVM1 Point class.
    Make RegExp.prototype is RegExp return true. Works for similar cases (e.g. Array) as well.
    Fixes AVM1 constructor property.
    Properly handle allocation overflow errors
    Use correct receiver object in generic String methods
    Fix up differences between JS and AS3 in how dates are stringified in Date#toString and #toDateString
    Adds more cleaning; automated bisect script example.
    Use custom tool to count totals for test_avm2_acceptance
    Properly handle QNames in addition to strings in more places throughout the engine
        Notably proxies, the `IN` operator, and, of course, some E4X sprinkled in.
    Adds swfdec test to the travis
    Use fully qualified names in native classes store
        This is only relevant for MethodClosure, which is internal to `builtin.as`, and could collide with `public class MethodClosure`.
    Ignore regexp syntax errors in all String methods
    Correctly handle errors in converting values for loose equality operators
    Fix a few bugs in our JSON implementation
    Move isCallable function out of AXSecurityDomain and rename to axIsCallable
    Fix linux sorting
    Remove timeout option.
    Disable versions_travis.
    Removes travis's arch update
    Adding i386 libs to travis.
    Trying to install 32bit libs on travis.
    Fixes AVM1 Sound object.
    Fixes sound playback
    Fix creation of AVM2 objects in some places in AVM1
    Lots of bugfixes in the flash package
    Adds `grunt clean`
    Moves get/setAVM1Property to the interpreter.
    Refactors AVM1 accessor properties usage.
    Refactors AVM1TextFormat and AVM1BitmapData; removes AVM1Proxy
    Use --gnu when pulling the || version.
    Print tools version on travis.
    Call listeners with the correct receiver in EventDispatcher.callListeners
    Fix error handling in axCheckFilter
    Fix subclassing of Array to create an internal `value` JS Array
    Implement XML#setNamespace
        The implementation isn't fully compliant, but close.
    Implement XML#setLocalName
        The implementation isn't fully compliant, but close.
    Fix mangling for Multinames with a null local name
    Fix some bugs in boxing of call receivers
    Correctly handle non-callable callbackfn arguments in Array methods
    Make sure not to leak the original array in Array#some and #map
    Change initialization of AXFunction to use standard facilities instead of special stuff in AXSecurityDomain#initialize
    Reinstate generic versions of RegExp-related String methods
    Make Function#call and #apply work with null and undefined as receivers
        By passing in the current script's global object instead.
    Remove || --no-notice option since it appears to be failing on travis.
    Make || behave like --gnu.
    Adds AVM1 defineProperties
    Proper type arguments of String methods that accept RegExps.
    Coerce all untrusted arguments at adapter boundary
    Minimize usage of the .wrappedJSObject
    More RegExp fixes, more passing tests.
    Install || on travis.
    Fixes AVM1 Math natives
    Run all tests in ||.
    Enable passing swfdec tests.
    Disables some of the swfdec tests.
    Bugfixes to generic String methods
    Ensure that we don't leak native arrays into AS3 and that we handle non-indexed properties correctly. This disables the descirbeJSON test because of some strange formatting issue that causes it not to diff correctly.
    Makes String prototype methods generic
    Make sure not to leak the original array in Array.prototype.forEach. We'll need to do this for all array methods.
    Fix AMF bug caused by wrong iteration over Array keys.
    Disables AVM1 exception reporting
    Don't trip over NaN in the name-related assert in axSetPublicProperty
    Prints default object's value for super's valueOf
    Some more XML bug fixing
    Makes the remaining two avm2/pass tests pass.
    Fixes some trace tests: fps and fscommand(quit)
    Fix a few describeType(JSON) issues
    Removes currentTarget and defaultTarget from AVM1 context
    Expose |argv| on the System class, this is used by pypy tests.
    Remove invalid assertions, ABC files can have numeric property names in for non-runtime names.
    Fix a few XML parsing error handling issues
    Implement PUSHNAMESPACE op
    Introduce a global stack of scope stacks that each function interpretation pushes its scope stack to
    Implement support for sealed slots, i.e. const and class fields, which musn't be writable after initial definition
    Fix handling of `finally` in the interpreter
    Fix coercion of `message` argument in Error constructor
    Mostly make describeType work again
    Fixes tsc running on Windows.
    Fixes avm1 SetVariable
    Fixes alToString for toString that return self
    Fixes wrapping of the non-existent native getters/setters
    Implements AVM1 string methods: indexOf, slice, etc.
    Fixes object conversion to string.
    Fixes AVM1Function call/apply methods.
    Making identifiers lower case for SWF6 and below
    Implements Array.prototype.sort
    Fixes arguments variable
    Fixes AVM1 attachMovie.
    Add pypy tests and grunt command.
    Move pypy benchmarks.
    Move sun spider tests and check in compiled versions.
    Remove timeouts since they are somewhat unreliable and add benchmark grunt task.
    Move some of the benchmark tests to the test folder.
    Coerce value in axSetSuper just as in axSetProperty
    Remove timezone-dependent test/avm2/pass/date-0
    Don't mangle namespaces of innocent bystander multinames in XMLList#attributes()
    Lots of bugfixes around handling of qualified names in E4X
    Don't die when trying to coerce return value of void functions
    Make sure we don't pass null or undefined as receiver for native function in generic String methods
    Implement argument count checking and consolidate some exception handling
    Don't load builtins.abc twice in the shell when running abc files
    Some test shuffling to get rid of some of the  "during op NEWCLASS: TypeError: superClass.dPrototype is not an object or ..."
    Fix convertStringToDouble craziness.
    Fix Interpreter writer flag.
    Fix number toLocaleString
    Rearrange some tests that were causing others to fail.
    Fix indexOf / lastIndexOf
    Fix maxBuffer for warning command.
    Expose constants on Number, int and uint. This alone fixes nearly 1000 tests.
    Fix handling of automatically-created DisplayObject IDs
    Explicitly set the root SWFs url in Player#load, even if the loading happens from a buffer
        This way, the SWF file can be loaded from a buffer, enabling better integration in the shell, and potentially loading sequence optimizations in the extension in the future.
    Match Tamarin behavior on toLowerCase.
    Fix date and integer handling in AMF
    Load player globals in the inspector even if we run .abc files.
    Implement AS3 behavior when stringifying undefined values.
    More AMF fixes and test case.
    Proper handling of invalid RegExp patterns and other fixes to make most of the redux RegExp tests pass.
    Extracts AVM1 baseline compiler into separate file.
    Refactors AVM1ScopeListItem usage
    Implements AVM1InterpretedFunction
    Some renaming, and removing lazy construction of arrays to make the code cleaner.
    Fail fast when trying to run a non-existent SWF in the shell
    Set a max value on the number of microTasks. This prevents exceptions from hanging the shell harness.
    Don't die in FileLoader#processLoadClose if FileLoader#file is null
    Store url field on FileLoader
    Round intervals in the shell's task queue to the nearest multiple of 10 instead of fixing them all to MIN_INTERVAL
        The fixing to `MIN_INTERVAL` breaks content because it causes events to be delivered in unexpected order. Same for timers: if I set timer `a` to be triggered in 50ms, and timer `b` in 10ms, timer `b` must be guaranteed to fire before `a`, even though it got registered later.
    Extract IAVM1Context interface.
    Removes Object.prototype reference from the AVM1Object base prototypes
    Rename AVMX.SecurityDomain to AVMX.AXSecurityDomain
        To avoid collisions with `flash.system.SecurityDomain`
    Rename AVMX.ApplicationDomain to AVMX.AXApplicationDomain, and fix some usages
        To avoid collisions with `flash.system.ApplicationDomain`
    Fix tellTarget and add target.swf test
    Fix native AVM1 object prototype chain (add.swf test)
    Adds AVM1 Date native
    Some AMF fixes, and remove date test case.
    Fixes tracetest-swfdec running.
    Fixes addProperty
    Some cleanup of the grunt command.
    Fixes AVM1 super.swf trace test.
    Add grunt command to run archive tests.
    Print correct file names for all results in warn_spell
    Build playerglobals during `grunt build`
    Removes AVM1Context.instance usages.
    Adds case normalization for the AVM1 properties
    Rename the `securityDomain` field to `sec` everywhere
        Most annoying, but `securitDomain` collides with the use of `flash.system.SecurityDomain`. Also, we need to introduce `app`, for the internal ApplicationDomain, which would collide with `flash.system.ApplicationDomain`.
    Implement enough of flash.system.ApplicationDomain and .SecurityDomain to make most exceptions caused by them go away
    Small fixes to NetStream
    Move all methods of NetConnection to TS, and somewhat-implement #close
    Disable calls to the non-implemented internal method TextEvent#copyNativeData
    Implement ESC_XATTR and ESC_XELEM opcodes
    Add grunt command to run all mongodb avm2 swfs.
    Disable tslint because it's too slow.
    Fix non-determinisn in Date test, and avoid dumping too much trace data.
    Implement some of the ApplicationDomain natives.
    Fix bug in BitmapData.
    Reenable test_swf_avm2, and add a warning task.
    Don't use color diff in test_swf_avm2 command.
    Remove more non-determinism by routing everyting to Date.now() which is overriden in the shell.
    More renaming to .baseline and .run, and make parallels keep output order.
    Cleanup testing.
    Adds flag to run each .abc file in its own security domain.
    Adds a way to create a new security domain by specifying @createSecurityDomain between two file names.
    Renames all baseline files to .baseline
    Renames all output runs to .run
    Create a .baseline for avm2 tests even though it is generated each time. We could save time in the future if we omit building the baseline.
    Moves a lot of previously failing tests to passing tests.
    Fixes add.swf, setinterval.swf and settimeout.swf tests.
    Fixed many REDUX TODOs in the flash and player packages
    Change most asFoo names to axFoo, fix a few bugs while doing so, and ignore the remaining ones during spell check
    Fix MOP calls in mp4mux.ts
    Support null and undefined in Function#prototype setter
    Fix String#toString and #valueOf functionality when applied to non-String objects
    Provide a method to construct AXObject from JS Objects and replace wrapJSObject.
    Fixes `grunt tracetest`
    Adds AVM1 pac.swf as acceptance test
    Refactoring of the AVM1 native interface.
    Fix more exceptions to throw proper AXObject values
    Properly handle Date methods being used on other receivers
        Technically, the AS3 versions would behave differently, but that doesn't seem relevant to content - at least I wasn't able to reproduce failing cases in the authoring tool.
    Change numeric MOP hooks on Vectors once again
        Because contrary to everything else in EcmaScript and my implicit assumptions, Vectors throw `RangeError`s for non-integer numbers instead of treating them as non-index property names.
    Don't call interpreted toString methods in interpreter logging
        Because it can cause infinite recursions when the logged function is `toString`. Most annoying.
    Bugfixes to Number, int, and uint methods
    Fixes to numeric MOP hooks for Vector classes
    Make applyType throw correct errors instead of asserting for invalid inputs
    Bugfixes in Vectors
    Initial AVM1 redux refactoring
    Make dataBuffer.ts compile again
    Small fixes to acceptance test failures
    Properly handle various exceptions
    Fix or comment-out code that was wrong from the beginning but looked ok because of lingering old interface members
    Implement out-of-line exception handling in the interpreter
        The interpreter's main loop should be as small as possible, so cluttering it up with type checks and exception handling isn't ideal. OTOH, lots of operations can throw JS exceptions, which we have to turn into AS3 ones before letting content script loose on them. This is achieved by calling a conversion function in the interpreter's `catch` block that takes the current Bytecode and values of various variables and returns a valid exception if it can. Otherwise it at least wraps the exception into a valid one so the internal one doesn't leak.
    Implement Object#isPrototypeOf
    Improve handling of namespaces in XML
    Remove last vestiges of isTraitsOrdPrototype
    Return proper AXObject in XML.defaultSettings
    Throw proper exceptions when the lookup in callProperty & co fails
    Show more columns in diff_test
    More XML bugfixes
    Simplify type checks in E4X classes
        These are all final, so can do direct comparison with `foo.axClass`.
    Lots of E4X bugfixes
    Use proper AX objects for loader context parameters.
    Get ExternalInterface to work.
    Change Proxy#axCallProperty to properly pass in call args
    Declare local var `name` in Multiname.FromSimpleName
    Box result of String#split
    Don't return raw JS (typed) arrays from Vector methods
    Don't fail in IndentingWriter when trying to print `undefined` as multiple lines
    Make sure that VM-internal exceptions don't just get rethrown in the interpreter's catch block
    Run multiple .abcs in the inspector.
    Throw on assigning to Getter and Method traits
    Fix bug in Assert.as that caused some tests not to work, and disable some tests we won't support
    Implement support for describeTypeJSON
        We can now even implement reflection for MethodClosures properly.
    Fix resolution of prototype
    Run avm2 tests faster.
    Make avmplus.System available everywhere, so tests work
        This is a deviation from what Flash does, but the chances of it causing compatibility issues are very, very close to 0.
    Fix JSON implementation
    Cat failed and excepted acceptance tests.
    Option to parse/scan only.
    Implement support for flash.utils.Proxy
    Revamp MOP handlers for clarity, sanity, and correctness
    Ads SWF regression testing.
    Adds a grunt command to run perf tests.
    Give Function a dPrototype `value`
        To make `Function.prototype()` and `typeof new Function()` work.
    Coerce to property's type in setProperty
    Run all other tamarin tests.
    Grunt command for parsing tests.
    Fix default value-filling and iteration for object vectors
    Inline numeric addition in the interpreter and optimize isXML*Type checks
    Update parallel command run by ats_parsetest grunt task.
    Fix isType in Transform.
    Ignore passed-in receivers in MethodClosure#call and #apply
    Print exceptions nicely.
    Fix get scenes();
    Make diff_test tell you if files are identical
    Use a hashing scheme that can be emulated in the flash player as well.
    Box namespace default values.
    Assert that constant values are valid AS3 values.
    Use securityDomain.createArray instead of securityDomain.AXArray.axBox in various places
    Don't use sliceArguments if it's not strictly required
    Don't reuse _interpret's callargs for calling out to other functions
        Because we don't clear them after initializing locals from them, and in preparation for having them optionally be IArguments, not Array
    Add ignore and sample swfs.
    Compute SWF checksum.
    Print frame checksums in the shell.
    Fix call and apply for MethodClosure
    Fix toString
    Implement and fix various native bare functions
    Make diff_test script executable
    Make acceptance test trace output more diffable
    Fix AVM1 usage of fscommand after latest change to AVM2 version
    Don't run the broken test_avm2_quick in `grunt avm2`
    Fix resolution of metadata-less native bare functions and a bug in fscommand
    Remove ActivationQueue in the extension.
    Enables AVM1 in the shell.
    Wire fscommand to AVM1.
    Install native functions on the SecurityDomain
    Ignore .idea folders.
    Avoid infinite recursion in the findDefiningScript
    Repurpose spell checker to give you warning about REDUX comments and other dangerous usages.
    Enables AVM1 in the inspector.
    From now on, run "grunt gate" before checking anything in.
    Revert back to node_js.
    Just use Java in the language field for travis.
    Buildlibs on travis.
    Running AVM1 code
    Add compiled tests.
    Warn about slow tests.
    More tests.
    Function#call and #apply with primitive thisArgs have to be called in the function's global
    Remove duplicate test and add missing abc file for another
    More tests and update baseline.
    Update baseline.
    Fixed sorting for vectors
    Adds a custom test driver for tamarin tests, and checking against a baseline.
    Retain created ObjectVector subclasses in the SecurityDomain, plus lots of cleanup and some stronger typing
    Support the weird scheme by which Vector isn't the super-class of the specialized vectors, but typechecks pretend it to be
    Add missing abc for type-6 avm2 test
    Fix coercion for vectors and creation of ObjectVector subclasses
    Upgrade tslint.
    Don't lint helper debugger statement.
    Fix lint errors.
    Make reg-x tests pass again.
    Add get/set global slot, but not tested yet.
    Remove ||s timeout and move it to the shell.
    Fix x_i opcodes.
    Build proper object wrappers for global AVM1 object.
    Misc RegExp fixes.
    Properly handle primitives being thrown as exceptions
    Pass securityDomain for AVM1 class wrappers
    Move interface-2 to redux-pass
    Give AXBasePrototype dummy runtime traits so lookups on Object.prototype succeed
    Implement axConstruct for ASArray.
    Add static parse and UTC methods.
    Install avmshell in `grunt travis`
    Check for super interfaces, too
    Update jsshell to 2015-03-30 Nightly
    Implement axApply for ASArray.
    Move ASDate to its own file.
    Extends AVM1 ISecurityDomain
    Add callproplex.
    Compiling AVM1 library
    Add support for strange byte codes used by tamarin in the acceptance test suite.
    Fix bug when printing null runtime namespaces. This makes nearly all acceptance tests parse correctly.
    Implement interface type testing and return value coercion
    Fix coercion in SETSLOT
    Load ABC files in security domains before disassembling them.
    Run tamarin acceptance tests.
    Ignore traits properties during enumeration
    Fix bugs im AMF en/decoding
    Fall back to class-default values for primitive slots without a default value, and null for object-typed slots
    Give Object a native constructor
        Avoids calling an interpreted function for each and every object instantiation
    Date tests.
    Match undocumented behaviour of tamarin for x_i opcodes. Unfortunately, I can't test this because I can't get the compiler to generate these byte codes.
    Implement ASRegExp.
    Fix number constants.
    Add Date functions.
    Fix bounds for timeline-created SimpleButton instances
    Fixing int/uint to run tests.
    Fix various net- and media-related classes
    Rename asTypeOf to axTypeOf
    Implement INCLOCAL_I and DECLOCAL_I opcodes
    Make class coercion properly deal with undefined and null
    Fix MorphShape initialization
    Fix coercion for class instances
    Make JS->AS and AS->JS object conversions in StyleSheet work again
    Install the JS shell on travis.
    Fixes tsc for shell_ts build.
    Fix SimpleButton, making mouse.js unit test pass
    Build flash sources.
    Fix tsc packaging and path in gruntfile.js
    Define missing axClass properties on some filter classes
    Move failing tests to the fail directory and fix filters bug.
    Fix compiler errors and make grunt travis work.
    Fixes mouse.js and graphics.js
    More fixes to filter instance construction and related stuff
    Fix invocation of native bare functions
        This enables passing of ~ half of all SWF tracetests
    More fixes to create proper AX instances
    Fix creation of mouse events to use proper AX Point instances
    Fix lots of wrongly constructed event instances
    Register natives for flash.util functions
    Create keyboard events in the target security domain.
    Stub registerFontOrImageImpl in the shell.
    Make MethodClosure extend Function and fix isFunction tests to work with boxed functions
    Make ABCCatalog lookups work with non-qname Multinames
    Fixes towards getting race3 working
    Fix more vector bugs.
    Move generic vector traps to a base vector class.
    Fix numbers-0.as
    Use loadAndExecuteABC instead of executeABC when running ABC blocks in the Loader
    Make Player available through securityDomain and use it in all places that require access to the various interfaces it implements
    Fix construction of some objects in flash.geom.Rectangle
    Split field initialization out of constructors for symbol-constructible classes and run it from `applySymbol`
        And other fixes to make SWFs successfully initialize (recursive) timeline-placed instances and run their ctors.
    Enough fixes to get the first SWF to run without errors. Sadly, also without producing anything but a white stage
    Add helper grunt command to run redux tests.
    Fix bug in dictionary.
    Many, many changes on the way to getting SWFs running
    Copy over ASDate and ASRegExp
    Add new test case.
    Fix mouse issues.
    Fix exceptions and parameter checks.
    Fix enough things to get a SWF to start executing its script
    Fix dragndrop.
    Fix most of graphics.js unit test
    Optionally make read-only descriptors writeable.
    Fix stage.js unit test
    Add symbol linking.
    Fix MovieClip.js unit test
    Fix issues in various JS unit tests
    Get most of matrix3D.js unit test working
    Assert that we don't inherit static properties.
    Fix registration of natives with non-public namespaces and use it for Vector classes
    Make jsGlobal.securityDomain available for unit tests running in the inspector
    Fix enough of amf.ts to make bytearray.js unit test pass
    Fix graphics.js unit test
    Got more of graphics.js to work.
    fix more of MovieClip.js
    fix most of dragndrop.js unit test
    fix propagation.js unit test
    fix vector3D.js unit test
    fix displayObjectContainer.js unit test
    fix dispatch.js unit test
    Fix most of bytearray.js unit test
    Fix broadcastEvents.js unit test
    Fix lots of issues in flash.display classes
    Fix initialization of AVM2 Error classes
    Fix LoaderInfo construction
    Fix ASQName.FromMultiname
    Fix up some constructors.
    Pass axClass as this to classInitializers.
    Fix lookup of XML.ignore* flags
    Fix typeof
    Add ability to get axClass from a class loader.
    Fix detection of XML types and implement CHECKFILTER op
    Fix Vector callable constructors
    Fix E4X callable constructors
    Implement axCallPublic.
    Fixes to some builtins' definitions, plus small e4x stuff
    Set traits as a read only property, and fix order in which properties are inherited from ASClasses.
    Change (almost) all calls to throwError to use securityDomain.throwError
    Fourth part of making E4X-related classes work
    Third part of making E4X-related classes work
    Changed all internally used names from ASQName to Multiname, fixed lots and lots and lots of sloppiness in how names were handled thus uncovered. More cleanup.
    Second part of making E4X-related classes work
    All `instanceof` tests are now replaced not by `this.securityDomain.AXFoo.axIsInstanceOf` but by `this.securityDomain.AXFoo.dPrototype.isPrototypeOf` tests. That is not only faster but also avoids problems with `Multiname` not being boxable.
    More linking.
    Fix inspector.
    Cleanup catalog business and get more of the linking to work.
    Get flash and shell to build under the new namespace, all code that failed to compile is marked with "REDUX:"
    First huge part of making E4X-related classes work
        Nothing really works yet, unfortunately. Things compile and no other tests are broken, though.
    Move installation of dynamic prototype aliases of builtins' methods into classInitializers in nat.ts
    Implement MethodClosure and don't box method traits
    Remove stale, commented-out code from nat.ts
    Introduces ASClass#classInitializer and calls it for natives to initialize their dynamic prototype methods
    Install dynamic prototype versions of all of ASObject's methods
    Fix toString for class prototypes
    Install correct dynamic and AS3 toString and valueOf methods on all primitives' classes
    Fix mangling of public namespaces with non-empty URIs
    Fix Number#toString
    Properly implement all String methods
    Define default values on all primitives' prototypes
        Because e.g. `Boolean.prototype` is a Boolean with the value `false`.
    Make hasOwnProperty work for traits, too
    Make RuntimeTraits#getTrait only deal with multinames whose `name` part is a string
        This makes everything ugly, but I don't see a really good way around it. :(
        Also adds implementations for `hasOwnProperty` and fixes a few bugs.
    Make RuntimeTraits#indexOf only deal with multinames whose `name` part is a string
        And fix a few bugs in the `Array` versions of a few MOP methods.
    Implement COERCE_S op
    Fix bugs in primitive coercion
    Make scripted constructors work at all
        By disabling the asserting constructor for native classes that we currently, invalidly, have
    Implement GETSUPER and SETSUPER ops
    Update uint and float64 vectors.
    Revamp initialization and runtime usage of traits
        The main points are that `protected` now works, without installing lots of additional properties (or aliases for the same property) in child classes, and that accessor properties are combined and defined in one go, so we don't have two `defineProperty` calls for r/w accessors.
    Simple renaming, and get arrays to work again.
    Move many of the handlers to the AS package.
    Clean up protocol handlers.
    Remove references to all code that is not part of the AVX package. I added asserts and TODOs wherever we need to fix things.
    Simple renaming.
    Partially implement exceptions, errors and apply type.
    Started to implement vectors.
    Fix bug in data buffer.
    Implement byte arrays.
    Use TS constructor as the initializer.
    Port dictionary.
    Skip over traits prototype and hide prototype functions.
    Implement in.
    Fix public mangled name bug, and implement convert_s.
    Move meta object protocol handlers to nat.
    Implement iterators.
    Implement rest and arguments.
    Fix parsing and handling of Namespaces
        These work somewhat differently to how we tried to use them before.
    Marks Traits instance as resolved instead of iterating over all contained traits over and over again
    Always pass a Trait kind to getTrait and traits.indexOf
    Starting to cleanup nat.
    Fix parsing of default values.
    Cleans up boxing and implements delete property,
    Implement default properties.
    Merge and expose constructor property.
    Implement CALLSUPER and CALLSUPERVOID ops
    Fix bugs in the core inheritance chain
    Make sure traits are resolved so indexOf works.
    Attempt at documenting prototype data structure, not quite accurate yet.
    Rename proto to prototype.
    Move default class prototype methods to the default prototype.
    Install default axConstruct and axInitializer on the AXClassPrototype object.
    Fix bug that caused findScopeProperty to not find dynamic properties of the global for strict lookups
    Remove some indirections in Multiname mangling for public names
        We're using `$Bg` as a fixed prefix in lots of places by now, so might as well also do it in these really performance-critical ones.
    Makes AXClass a proper AXObject
        And a whole lot more: lots of cleanup in SecurityDomain initialization; introduction of `asBox` method on classes that's used for internal boxing in lieu of classes being constructible by themselves; commoning out of MOP hooks into the system-wide AXBaseProto.
        Lets a staggering amount of additional tests pass. Well, two.
    Implement PUSHWITH op
    Fix implementations of Array#sort and #sortOn
    Implement construct super.
    Fix implementations of Array#sort and #sortOn
        At least as far as I can test them: `Array.NUMERIC` & co seem not to resolve properly right now.
    Call the static initializer.
    Put get/set slot on AXObject prototype.
    Make ClassTraits inherit from SlotTraits since they have slot IDs.
    Don't save the abc reference on Traits objects, each trait needs it's own ABC reference since multiple traits may be pooled together from multiple ABCs.
    Implement lookup switch and remove time tracing from the shell.
    Drastically reduce runtime of functions-1 and obj AVM2 tests
        Running those hundreds of thousands of time tests nothing except for the developer's patience.
    Introduce AXCallable interface, make both AXFunction and JS Function implement it, and use it for toString and valueOf forwarding
    Implement mode of the type checking, coerce-0 passes now.
    Implement toString and valueOf as forwarders to the $Bg versions on all AXObjects and classes
    Change NEWOBJECT op to return an instance of securityDomain.AXObject instead of a JS object
    Move code out of the big closure that is SecurityDomain#initialize
    Remove all usage of Object.setPrototypeOf from AX system
    More correctly implement AXArray methods
        By initializing the `AS3::` versions on `ASArray.prototype` and then aliasing them to the `public` namespace.
    Fix axConstruct for primitive types.
    Revert change to isRuntimeName and implement primitive casting.
    Redux: implement remaining Array methods
        ... and install them in the public namespace. AS3 namespace doesn't yet work.
    Bugfixes and much-improved readility for _parseMultiname
        _Please_ don't use the most cryptic var names you can think of.
    In CALLPROP*, store receiver in a var for easier debugging
    Implement IFSTRICTEQ and IFSTRICTNE
    Implement all straight-forward boolean and algebraic operators
    More natives.
    Fix offsets.
    Box primitive types.
    Bytecode definitions.
    Lazify parser.
    Adds a way to trace call execution.
2015-04-23 19:27:58 +02:00
Yury Delendik c11918eda0 Remove ActivationQueue in the extension. 2015-04-01 17:47:28 -07:00
Tobias Schneider 2bd567e288 Merge pull request #2034 from tobytailor/jwplayer
Video players test suite
2015-03-31 18:57:10 -07:00
Yury Delendik 134f4de00d Render in requestAnimationFrame during scoring. 2015-03-27 18:29:35 -05:00
Yury Delendik af1bbab7ae Adds scoring to the swfm player. 2015-03-27 13:17:24 -05:00
Yury Delendik 5ec03d512c Refactoring ShumwayCom to use Cu.cloneInto
- Defines separate set on functions for gfx and player
- Defines RtmpXHR/RtmpSocket interfaces
- Replaces function exports with cloneInto
- Replaces callback properties with setXXXXCallback listeners
2015-03-10 15:26:37 -05:00
Yury Delendik aa0ac51b83 Moves localStrage from the core code. 2015-03-10 08:20:43 -05:00
Yury Delendik 08e3b53a4b Removes automatic settings initialization from localStorage. 2015-03-06 08:12:56 -06:00
Yury Delendik 3edc4b37a0 Refactors createAVM2() to use SystemResourcesLoadingService 2015-03-03 13:33:56 -06:00
Yury Delendik 8979658331 Extracts GFXService logic from the Player code. 2015-03-03 13:33:56 -06:00
Yury Delendik 953c37ae69 SWF movie recording and playback. 2015-03-02 09:50:58 -06:00
Till Schneidereit 4289c9e182 Bug 1137702 - Load relooper independently from player to prevent Closure from destroying it 2015-02-27 16:40:19 +01:00
Yury Delendik 44f01fed59 Merge pull request #2090 from yurydelendik/firefoxcom
Refactoring of the ShumwayCom
2015-02-26 17:28:50 -06:00
Yury Delendik 0fde428307 Removes proxy forwarding external interface calls via gfx. 2015-02-26 16:01:18 -06:00
Yury Delendik 459aa3011e Initial FirefoxCom refactoring. 2015-02-26 16:01:11 -06:00
Till Schneidereit e9bf277760 Include the relooper in exported bundles
To unbreak the world.
2015-02-25 16:54:45 +01:00
Till Schneidereit 02e1c50029 Merge remote-tracking branch 'origin/master' into baseline 2015-02-17 22:51:04 +01:00
Yury Delendik 6ae399e131 Fixes yt arguments in the mock. 2015-02-13 13:44:55 -06:00
Yury Delendik 2dcb6e19ad Fixes yt mock 2015-02-12 15:28:50 -06:00
Yury Delendik 127c03903d Removes generated abc files; generates them during build. 2015-02-12 12:00:33 -06:00
Yury Delendik 6d27895f56 Removing unused files: embed.js, flayerglobal-fp, old bundle builder. 2015-02-12 07:36:07 -06:00
Yury Delendik edc6173a5f Add broadcast messaging allowing mutilple debuggers. 2015-02-11 20:18:50 -06:00
Yury Delendik 98f236b344 Pilot for remote debugger 2015-02-10 17:27:27 -06:00
Till Schneidereit 92fc0350f5 Change profiler to take an explicit start and show a timeline from then on instead of from the first entry
Makes it easier to see how much time we spend in the beginning not doing much of anything: first something like 250ms before the timeline even starts, then another 75ms or so until we parse our first ABC file.
2015-02-09 02:12:43 +01:00
Till Schneidereit 5e3c133a9e Merge branch 'master' into baseline
Conflicts:
	src/avm2/runtime.ts
2015-02-08 19:25:47 +01:00
Yury Delendik 1dba1cc51e Fixes loaderURL for main movie; adds override to the inspector. 2015-02-06 11:08:38 -06:00
Yury Delendik 3ec5bc1df9 Switches closure compiled code into release mode. 2015-02-05 08:29:57 -06:00
Yury Delendik 9045169c7c Merge pull request #2048 from yurydelendik/twits
Fixes space_twits game.
2015-02-04 11:48:21 -06:00
Yury Delendik 7cccb510ba Fixes space_twits game. 2015-02-04 11:47:08 -06:00