Commit Graph

882 Commits

Author SHA1 Message Date
Nathan Adams e9ad733e68 Add a test to see if the avm crashes with recursive prototypes.
Spoilers: it does.
2019-11-26 23:38:34 +01:00
Nathan Adams de1f5417ec Added test for extending MovieClip prototype 2019-11-26 23:22:07 +01:00
Nathan Adams ffaf10b604 Add test for prototyping 2019-11-26 23:22:07 +01:00
Nathan Adams 3bcd9ed71b Added test for class & interface hierarchy 2019-11-26 22:42:11 +01:00
Mike Welsh 97512d024c ci: Bump cache version 2019-11-26 12:35:33 -08:00
David Wendt 4655ebe73f Always push the constructed object on the stack. 2019-11-26 15:07:59 -05:00
David Wendt b9f02c290c Functions should be traceable. 2019-11-26 15:07:03 -05:00
David Wendt 0b1afcf8be Implement `ActionInstanceOf` (for non-interface types) 2019-11-26 14:51:06 -05:00
David Wendt 3c8d9b9c1c `new` should be called on the prototype - not the constructor function. This will allow different host object impls to subclass correctly. 2019-11-26 14:51:06 -05:00
David Wendt e8632bbcaa Implement `valueOf` for `Object` and fix the `toString` impl. 2019-11-26 14:51:06 -05:00
David Wendt 73c3b42cd4 Move `force_set` and `force_set_virtual` into the `Object` trait. They are now called `define_value` and `add_property`, respectively.
While I don't expect every host object to implement it correctly, this also gets rid of a lot of unnecessary `unwrap` calls that would allow a poorly-written Flash file to kill the interpreter.
2019-11-26 14:51:06 -05:00
David Wendt 983c0fb200 Add proto chain inspection to the object interface. 2019-11-26 14:51:06 -05:00
David Wendt 0e59e1c961 Allow host-provided constructors to override `new` and provide host objects to the AVM when a particular constructor is called. 2019-11-26 14:51:06 -05:00
David Wendt d25bdbacf8 Separate `Object` into an interface trait and a standard implementation. Host object implementations may bypass `ScriptObject` and directly interface with the AVM using this trait.
Note that host objects that do so will *not* have access to their standard representation from within member functions - you will need to extend the interface to accomodate for them. This is due to long-standing limitations with type IDs and downcasting with types that bear lifetimes - it's entirely an unsafe operation and exposing such a facility to safe Rust is unsound. However, this will at least let us separate out several things from ScriptObject that don't need to be there for the time being.
2019-11-26 14:51:05 -05:00
David Wendt 6dd40f8354 Split properties into a separate module. 2019-11-26 14:51:05 -05:00
David Wendt 813783881b Implement explicit prototypes on user-generated functions.
`Object::function` now returns a pre-allocated function object. You may supply it an explicit prototype to have it linked into the function object (which is why we have to return a cell).
2019-11-26 14:51:05 -05:00
David Wendt f347992eeb Add `as_usize` method to `Value` 2019-11-26 14:51:05 -05:00
David Wendt 207a157f20 Add missing usize conversion 2019-11-26 14:51:05 -05:00
kmeisthax fb34f73159 Manually constructing `Value` should no longer be necessary
Co-Authored-By: Nathan Adams <dinnerbone@dinnerbone.com>
2019-11-26 14:51:05 -05:00
David Wendt 1cb374da8a `ActionSetMember` accepts non-String names as parameters. 2019-11-26 14:51:04 -05:00
David Wendt fafad818d4 Implement `ActionInitObject` 2019-11-26 14:51:04 -05:00
David Wendt da315c7311 Fix docstrings on these modules 2019-11-26 14:51:04 -05:00
David Wendt b4e9b8442e Implement `isPropertyEnumerable` and `isPrototypeOf`. 2019-11-26 14:51:04 -05:00
David Wendt aa7997b658 Expose user-defined virtual properties to AVM code 2019-11-26 14:51:04 -05:00
David Wendt a8e1654c9e Implement `ActionNewMethod` and `ActionNewObject` 2019-11-26 14:51:04 -05:00
David Wendt 2f965d1c64 First stab at moving system builtins to explicit prototypes 2019-11-26 14:51:03 -05:00
Nathan Adams 882373d969 Object prototyping 2019-11-26 14:51:03 -05:00
Mike Welsh 9a258e9b51 web: Default demo build to production mode 2019-11-25 17:00:29 -08:00
Mike Welsh 2fa2addca2 ci: Tweak extension build script 2019-11-25 17:00:29 -08:00
Mike Welsh ea5ea354fa ci: Bump cache version 2019-11-25 17:00:29 -08:00
Mike Welsh 42d724292f extension: Add missing obfuscated_event_prefix 2019-11-25 17:00:29 -08:00
Mike Welsh 24bf3a49bb extension: Fix webpack config to build even if web demo hasn't been built. Fix #122 2019-11-25 17:00:29 -08:00
Mike Welsh 6eaab8efdf
core: Merge #113, interworking of Rust + ActionScript
Internal support for interworking Rust and ActionScript code
2019-11-25 04:27:05 -08:00
dependabot-preview[bot] 60c7887b88 build(deps): bump num-traits from 0.2.9 to 0.2.10
Bumps [num-traits](https://github.com/rust-num/num-traits) from 0.2.9 to 0.2.10.
- [Release notes](https://github.com/rust-num/num-traits/releases)
- [Changelog](https://github.com/rust-num/num-traits/blob/master/RELEASES.md)
- [Commits](https://github.com/rust-num/num-traits/compare/num-traits-0.2.9...num-traits-0.2.10)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 11:13:02 +00:00
dependabot-preview[bot] 112411aa7a build(deps): bump structopt from 0.3.4 to 0.3.5
Bumps [structopt](https://github.com/TeXitoi/structopt) from 0.3.4 to 0.3.5.
- [Release notes](https://github.com/TeXitoi/structopt/releases)
- [Changelog](https://github.com/TeXitoi/structopt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TeXitoi/structopt/compare/v0.3.4...v0.3.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 10:53:04 +00:00
dependabot-preview[bot] 62171e31f6 build(deps): bump serde from 1.0.102 to 1.0.103
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.102 to 1.0.103.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.102...v1.0.103)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 10:39:40 +00:00
Nathan Adams 35d80a254b chore: Use new method of setting png color & depth 2019-11-25 10:39:01 +00:00
dependabot-preview[bot] aa61516c1d build(deps): bump png from 0.14.1 to 0.15.1
Bumps [png](https://github.com/image-rs/image-png) from 0.14.1 to 0.15.1.
- [Release notes](https://github.com/image-rs/image-png/releases)
- [Changelog](https://github.com/image-rs/image-png/blob/master/CHANGES.md)
- [Commits](https://github.com/image-rs/image-png/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 10:39:01 +00:00
David Wendt b8c24890fc Allow overwriting read-only virtual properties in scope chains.
The previous behavior had an oversight: if you tried to set a variable with the same name as an in-scope property, it would always try to overwrite that property. This can fail silently and doesn't match with Flash Player behavior. Now, an attempt to overwrite a read-only property is instead correctly rejected so that it can be defined in local scope.
2019-11-23 22:00:37 -05:00
dependabot-preview[bot] 2e75f06ee5 build(deps): bump gc-arena-derive from 0.1.1 to 0.2.0
Bumps [gc-arena-derive](https://github.com/kyren/gc-arena) from 0.1.1 to 0.2.0.
- [Release notes](https://github.com/kyren/gc-arena/releases)
- [Changelog](https://github.com/kyren/gc-arena/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kyren/gc-arena/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-22 18:07:50 +00:00
Nathan Adams ae064b62be chore: Change to no_drop from empty_drop for new gc-arena 2019-11-22 17:53:05 +00:00
dependabot-preview[bot] 238c575f16 build(deps): bump gc-arena from 0.1.1 to 0.2.0
Bumps [gc-arena](https://github.com/kyren/gc-arena) from 0.1.1 to 0.2.0.
- [Release notes](https://github.com/kyren/gc-arena/releases)
- [Changelog](https://github.com/kyren/gc-arena/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kyren/gc-arena/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-22 17:53:05 +00:00
dependabot-preview[bot] 7fae0eb2d0 build(deps): bump indicatif from 0.12.0 to 0.13.0
Bumps [indicatif](https://github.com/mitsuhiko/indicatif) from 0.12.0 to 0.13.0.
- [Release notes](https://github.com/mitsuhiko/indicatif/releases)
- [Commits](https://github.com/mitsuhiko/indicatif/compare/0.12.0...0.13.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-22 17:43:19 +00:00
dependabot-preview[bot] 7382d19b63 build(deps): bump image from 0.21.3 to 0.22.3
Bumps [image](https://github.com/image-rs/image) from 0.21.3 to 0.22.3.
- [Release notes](https://github.com/image-rs/image/releases)
- [Changelog](https://github.com/image-rs/image/blob/master/CHANGES.md)
- [Commits](https://github.com/image-rs/image/compare/v0.21.3...v0.22.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-22 17:16:50 +00:00
dependabot-preview[bot] c3c82ffbe4 build(deps): bump num-derive from 0.2.5 to 0.3.0
Bumps [num-derive](https://github.com/rust-num/num-derive) from 0.2.5 to 0.3.0.
- [Release notes](https://github.com/rust-num/num-derive/releases)
- [Changelog](https://github.com/rust-num/num-derive/blob/master/RELEASES.md)
- [Commits](https://github.com/rust-num/num-derive/compare/num-derive-0.2.5...num-derive-0.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-22 17:13:32 +00:00
David Wendt bae0476113 Don't panic when double-locking a stack frame. 2019-11-20 14:30:34 -05:00
David Wendt 17215cc787 Remove the `NoResult` variant of `ReturnValue` as it is no longer useful or in use. 2019-11-20 14:30:33 -05:00
David Wendt 8c1d25b0f7 Add conversions for all the same conversions regular `Value`s have, so that you don't have to constantly mark things as `ReturnValue::Immediate` 2019-11-20 14:30:33 -05:00
David Wendt e4eb930d44 Remove all references to stack continuations from our documentation. 2019-11-20 14:30:33 -05:00
David Wendt 5bf90653c4 Add implicit coercions to remove most instances of manually constructing a `ReturnValue`. 2019-11-20 14:30:33 -05:00