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
David Wendt
4b824370f4
Remove the stack continuation system. If we decide to structure this system in the same way in the future, we'll probably use async functions or something like that.
2019-11-20 14:30:33 -05:00
David Wendt
2aa5b62b44
Make most code that might touch user-defined functions falliable.
2019-11-20 14:30:32 -05:00
David Wendt
a49af7815c
Resolve all existing return values on the Rust stack.
2019-11-20 14:30:32 -05:00
David Wendt
bb1cde5557
Avoid double borrow panic caused by unreasonably long lifetime of `.write()` temporary
2019-11-20 14:30:32 -05:00
David Wendt
7284794c0b
Store the return value on the activation object when it's retired.
2019-11-20 14:30:32 -05:00
David Wendt
e2dcf47c56
Add a method to force resolve a `ReturnValue` on the Rust stack via recursion.
2019-11-20 14:30:31 -05:00
David Wendt
bc74b2fc4a
Track the no-double-reader flag on a per-frame basis, and add a "run until current frame exits" routine.
2019-11-20 14:30:31 -05:00
David Wendt
dd4462c104
Warn when attempting to attach a second continuation onto an existing stack frame, since we don't support that use case.
2019-11-20 14:30:31 -05:00
David Wendt
a2ee7f9e3a
Replace `Option<Value<'gc>>` with a dedicated `ReturnValue<'gc>` type with associated methods.
...
This type explicitly signals if an immediate value is to be returned, if a value is to be returned on the stack, or if no return value is to be generated. Holders of a `ReturnValue` can also use `and_then` to schedule a `StackContinuation` to be executed when and if that value is ready.
`StackContinuations` now yield `ReturnValues` as well, so they have a moderate level of composability. For example, if you need to get a property from an object and push it on the stack, you can return the result of calling `get` directly and the machinery ensures it eventually gets there.
2019-11-20 14:30:31 -05:00