David Wendt
e1916519dd
Add debug for trait installs
2020-07-13 17:43:26 -04:00
David Wendt
cfe0e333be
Fix invalid script index when loading an ABC file.
2020-07-13 17:43:26 -04:00
David Wendt
bc0bdf8496
The public namespace appears to just be an unnamed package namespace, not a regular namespace.
2020-07-13 17:43:25 -04:00
David Wendt
04879fc419
Implement class traits.
...
This allows the AVM to declare classes, which necessitated some refactoring to avoid double-borrows or having to do something "magic" that would dodge virtual properties.
2020-07-13 17:43:25 -04:00
David Wendt
ecfd5abb41
Impl `construct` and `constructprop`.
2020-07-13 17:43:24 -04:00
David Wendt
1ab4091050
Implement slots and related opcodes.
2020-07-13 17:43:24 -04:00
David Wendt
88957b2b3d
Add stub builtins for Object and Function. These are more-or-less identical to the way we did it in AVM1 (e.g. no fancy player globals file)
2020-07-13 17:43:24 -04:00
David Wendt
1945f36dc0
When running the initial script, also install it's traits onto the global scope.
2020-07-13 17:43:23 -04:00
David Wendt
35c36a807b
Always execute the last script when loading an ABC file
2020-07-13 17:43:23 -04:00
David Wendt
560900e708
ABC files are always pre-loaded.
...
Frame actions are handled as syntactic sugar on top of a `MovieClip` subclass and event handlers. ABC scripts do not live on the normal timeline.
2020-07-13 17:43:23 -04:00
David Wendt
502936f0fe
Implement non-slot trait properties (Method, Getter, and Setter)
2020-07-13 17:43:22 -04:00
David Wendt
12e9fbbffb
Impl virtual property slots
2020-07-13 17:43:22 -04:00
David Wendt
eb0c9dcaec
Allow constructing a function around a particular class definition.
...
I'm writing all this code assuming that classes and traits are syntactic sugar around ES3-style prototype chains on function objects. Hence, `FunctionObject` is still our workhorse object type for implementing typing.
2020-07-13 17:43:21 -04:00
David Wendt
cf490bedfb
Unstub `proto`.
2020-07-13 17:43:20 -04:00
David Wendt
b12c6e0ff1
Implement closure scope stacks.
2020-07-13 17:43:20 -04:00
David Wendt
7d75255a1a
Add global scope which is automatically included on all new activations.
2020-07-13 17:43:20 -04:00
David Wendt
984e701142
Swap out `has_property`'s stub impl.
2020-07-13 17:43:19 -04:00
David Wendt
e5142e85e9
Replace `get_property` and `set_property` with slightly-less-stub impls.
2020-07-13 17:43:17 -04:00
David Wendt
d56db06447
Implement `resolve_multiname`, sort of.
2020-07-13 17:43:16 -04:00
David Wendt
78a1c9a7e3
Implement `pushscope`, `popscope`, and `pushwith`.
2020-07-13 17:43:16 -04:00
David Wendt
5e6fc79f42
Implement `getproperty`, `setproperty`
2020-07-13 17:43:15 -04:00
David Wendt
60c16b0a60
Implement `findproperty`, `findpropstrict`, and `getlex`; which are necessary for interacting with global scope.
2020-07-13 17:43:15 -04:00
David Wendt
3c8035f871
clippy pls
2020-07-13 17:43:14 -04:00
David Wendt
12223d524a
Add support methods in `Scope` to support opcodes that traverse the scope chain.
2020-07-13 17:43:14 -04:00
David Wendt
0ff1ba7120
Multiname resolution is another object method.
2020-07-13 17:43:14 -04:00
David Wendt
376d1a8ca6
Add scope support
2020-07-13 17:43:13 -04:00
David Wendt
3b476cba9e
Implement `pushnamespace` since that's a value type now
2020-07-13 17:43:13 -04:00
David Wendt
1a6acb9440
Implement late binding and runtime qualifications for names.
2020-07-13 17:43:12 -04:00
David Wendt
2f3a3aff6f
Add exact type assertion methods for strings and namespace values.
2020-07-13 17:43:11 -04:00
David Wendt
6d8dc6e63d
Pull ABC constant pool methods out of Avm2 and into Value.
...
The old methods still exist and do the same thing, but the Value methods
accept arbitrary AbcFile references.
2020-07-13 17:42:51 -04:00
David Wendt
c65d93d063
Implement multinames, sans runtime namespace support.
2020-07-13 17:42:50 -04:00
David Wendt
6bd94d6bc9
`from_abc_namespace` should accept a namespace index and retrieve it from the file's constant pool itself.
2020-07-13 17:42:50 -04:00
David Wendt
43f1080fab
Implement namespaces as a value type
2020-07-13 17:42:49 -04:00
David Wendt
52ac7a6583
Implement call/return for bare functions
2020-07-13 17:42:49 -04:00
David Wendt
115f0393aa
Add `call` method to the object trait. Only functions are callable in AVM2, all others error out.
2020-07-13 17:42:48 -04:00
David Wendt
d1aeae8e02
Add support for local registers in the interpreter.
2020-07-13 17:42:47 -04:00
David Wendt
4d000e1ce0
Implement `pushxyz` opcodes for all value types that we currently support.
2020-07-13 17:42:46 -04:00
David Wendt
5600ac477c
Always execute any AVM2 code that may have been queued as a result of loading ABC files.
2020-07-13 17:42:45 -04:00
David Wendt
7f60fab1e5
Add the bare minimum necessary to get opcodes out of an ABC and into an interpreter loop.
...
Surprisingly enough, the "bare minimum" includes a stack, object model, and values already.
2020-07-13 17:42:45 -04:00
David Wendt
e80c887261
Add a very basic object model to the AVM2 interpreter.
2020-07-13 17:42:44 -04:00
David Wendt
b7f257e7c8
Add a path to get from the movie clip to the Avm2.
2020-07-13 17:42:43 -04:00
David Wendt
a852a6939a
Add an extremely trivial implementation for the AVM2 interpreter state.
2020-07-13 17:42:31 -04:00
dependabot-preview[bot]
c87e30758f
build(deps-dev): bump @wdio/local-runner from 6.1.25 to 6.2.0 in /web
...
Bumps [@wdio/local-runner](https://github.com/webdriverio/webdriverio ) from 6.1.25 to 6.2.0.
- [Release notes](https://github.com/webdriverio/webdriverio/releases )
- [Changelog](https://github.com/webdriverio/webdriverio/blob/master/CHANGELOG.md )
- [Commits](https://github.com/webdriverio/webdriverio/compare/v6.1.25...v6.2.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-13 14:01:50 -07:00
dependabot-preview[bot]
a86cac65af
build(deps-dev): bump @wdio/cli from 6.1.25 to 6.2.0 in /web
...
Bumps [@wdio/cli](https://github.com/webdriverio/webdriverio ) from 6.1.25 to 6.2.0.
- [Release notes](https://github.com/webdriverio/webdriverio/releases )
- [Changelog](https://github.com/webdriverio/webdriverio/blob/master/CHANGELOG.md )
- [Commits](https://github.com/webdriverio/webdriverio/compare/v6.1.25...v6.2.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-13 14:01:33 -07:00
dependabot-preview[bot]
7eb9d7902b
build(deps-dev): bump @wdio/sync from 6.1.14 to 6.2.0 in /web
...
Bumps [@wdio/sync](https://github.com/webdriverio/webdriverio ) from 6.1.14 to 6.2.0.
- [Release notes](https://github.com/webdriverio/webdriverio/releases )
- [Changelog](https://github.com/webdriverio/webdriverio/blob/master/CHANGELOG.md )
- [Commits](https://github.com/webdriverio/webdriverio/compare/v6.1.14...v6.2.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-13 14:01:25 -07:00
dependabot-preview[bot]
6ca608a7db
build(deps-dev): bump @wdio/mocha-framework from 6.1.19 to 6.2.0 in /web
...
Bumps [@wdio/mocha-framework](https://github.com/webdriverio/webdriverio ) from 6.1.19 to 6.2.0.
- [Release notes](https://github.com/webdriverio/webdriverio/releases )
- [Changelog](https://github.com/webdriverio/webdriverio/blob/master/CHANGELOG.md )
- [Commits](https://github.com/webdriverio/webdriverio/compare/v6.1.19...v6.2.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-13 14:01:17 -07:00
dependabot-preview[bot]
92fd0c6132
build(deps): bump wgpu from 0.5.1 to 0.5.2
...
Bumps [wgpu](https://github.com/gfx-rs/wgpu-rs ) from 0.5.1 to 0.5.2.
- [Release notes](https://github.com/gfx-rs/wgpu-rs/releases )
- [Commits](https://github.com/gfx-rs/wgpu-rs/commits )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-13 11:31:39 -07:00
Nathan Adams
fba8ccda81
avm1: Rename Avm1String to AvmString
2020-07-13 10:12:54 -07:00
Nathan Adams
d8f043fa1a
avm1: Value::coerce_to_string returns an Avm1String, as it can avoid a clone-and-reallocate
2020-07-13 10:12:54 -07:00
Nathan Adams
f0ef68cb16
avm1: Reenabled paused string-value tests during string refactor
2020-07-13 10:12:54 -07:00