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
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
Nathan Adams
c60b2cf4fc
avm1: Implement From<&'static str> for Value
2020-07-13 10:12:54 -07:00
Nathan Adams
e03e3f6c4e
avm1: Allow Avm1String to contain &'static str
2020-07-13 10:12:54 -07:00
Nathan Adams
ad733f2f21
avm1: Add Avm1String which wraps Gc<String>
2020-07-13 10:12:54 -07:00
Nathan Adams
016b9db3c5
avm1: Change Value::String(String) to Value::String(Gc<String>)
2020-07-13 10:12:54 -07:00
CUB3D
0591c0fe4b
core: Add functions to prototypes
2020-07-12 15:25:58 -07:00
CUB3D
ab022b66e9
chore: Format and cleanup clippy lints
2020-07-12 15:25:58 -07:00
CUB3D
83cca044ad
core: Add tests for ContextMenu and ContextMenuItem
2020-07-12 15:25:58 -07:00
CUB3D
46cd8eb507
core: Add ContextMenuItem
2020-07-12 15:25:58 -07:00
CUB3D
04ca652f98
core: ContextMenu fully implemented
2020-07-12 15:25:58 -07:00
CUB3D
73a98c7f78
core: Implement copy() for ContextMenu
2020-07-12 15:25:58 -07:00
CUB3D
f3aa6f7f01
core: Add stub of ContextMenuItem
2020-07-12 15:25:58 -07:00
CUB3D
c8fefc56b5
core: Add stubs for context menu
2020-07-12 15:25:58 -07:00
dependabot-preview[bot]
aaf42d1948
build(deps): bump syn from 1.0.33 to 1.0.34
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.33 to 1.0.34.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.33...1.0.34 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-12 15:01:43 -07:00
Nathan Adams
180891c58e
avm1: Add impl_custom_object!() macro to simplify custom object types
2020-07-10 16:48:05 -07:00
Nathan Adams
eb94cc54b2
chore: Move avm1 objects to their own module, we have plenty of them now
2020-07-10 16:48:05 -07:00
Mike Welsh
3322c2d916
avm1: Implement updateAfterEvent
2020-07-10 14:38:48 -07:00
Mike Welsh
8715589f50
tests: Add setInterval test
2020-07-10 14:38:48 -07:00
Mike Welsh
98e7da7d93
avm1: Implement setInterval
2020-07-10 14:38:48 -07:00
Mike Welsh
a1ff80bb18
avm1: Object.watch is case insensitive on SWFv6
2020-07-10 12:02:26 -07:00
Nathan Adams
8a0430d744
avm1: Implement Object.watch & Object.unwatch ( #268 )
2020-07-10 12:02:26 -07:00
Nathan Adams
ecbab536b5
avm1: Respect ScriptLimits for recursion depth, and use that in infinite_recursion_function
2020-07-08 14:47:38 -07:00
Nathan Adams
2b30fd32b7
avm1: Activation depth can be up to u16.
2020-07-08 14:47:38 -07:00
Nathan Adams
51ec5739c6
avm1: Throw errors when functions (user-called, or special) go too deep
2020-07-08 14:47:38 -07:00
Nathan Adams
aa98c2c24f
avm1: Track the reason for executions, if it's a function call vs
...
something special, like a getter
2020-07-08 14:47:38 -07:00
Nathan Adams
65396ba87a
avm1: All errors are ignored during getters or setters
2020-07-08 14:47:38 -07:00
Nathan Adams
3ee1902117
avm1: Don't log errors at every Activation, only at the "root" frames
2020-07-08 14:47:38 -07:00
Nathan Adams
8218e14824
avm1: Remove unused field is_executing from Activation
2020-07-08 14:47:38 -07:00
dependabot-preview[bot]
a3bdb20cf1
build(deps): bump smallvec from 1.4.0 to 1.4.1
...
Bumps [smallvec](https://github.com/servo/rust-smallvec ) from 1.4.0 to 1.4.1.
- [Release notes](https://github.com/servo/rust-smallvec/releases )
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.4.0...v1.4.1 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-06 20:30:41 -07:00
Mike Welsh
2cbbe32412
tests: Add test for GetVariable/SetVariable on _x, etc.
2020-07-05 15:15:31 -07:00
Mike Welsh
804385347f
tests: Add test for virtual properties on prototype
2020-07-05 15:15:31 -07:00
Mike Welsh
fec8cf5e52
tests: Add tests for with from issue #792
2020-07-05 15:15:31 -07:00
Mike Welsh
bd7f986594
avm1: Allow overwriting _parent
2020-07-05 15:15:31 -07:00
Mike Welsh
ad6e2ceed4
avm1: Remove TObject::is_property_overwritable
...
Local virtual properties take precedence over prototype/parent
scopes, even for read-only propreties.
2020-07-05 15:15:31 -07:00
Mike Welsh
1240c79f70
avm1: StageObject::has_property should return true for _x, etc.
2020-07-05 15:15:31 -07:00
Mike Welsh
6feb266576
avm1: with(undefined) or with(null) is ignored
2020-07-05 15:15:31 -07:00
CUB3D
00d55b05a0
chore: Fix formatting
2020-07-05 13:49:59 -07:00
CUB3D
64eed4def9
chore: Cleanup
2020-07-05 13:49:59 -07:00
CUB3D
ab58cff8b3
core: Add tests for ColorTransform and cleanup code
2020-07-05 13:49:59 -07:00
CUB3D
0dcbd05f5d
chore: Fix formatting
2020-07-05 13:49:59 -07:00
CUB3D
68eb6a6342
core: Fix ColorTransformObject virtual prototype setters
2020-07-05 13:49:59 -07:00
CUB3D
73e9dc1a82
core: Refactor ColorTransform
2020-07-05 13:49:59 -07:00
CUB3D
26ae182584
core: Update to reflect avm changes
2020-07-05 13:49:59 -07:00
CUB3D
431cc532be
core: ColorTransform no longer passed through engine ColorTransform object
2020-07-05 13:49:59 -07:00
CUB3D
a8b1be2afa
core: Remove useless to_owned in color_transform
2020-07-05 13:49:59 -07:00
CUB3D
c0315dce3f
chore: Format
2020-07-05 13:49:59 -07:00
CUB3D
a8f7638d99
core: Implement ColorTransform
2020-07-05 13:49:59 -07:00
dependabot-preview[bot]
328246dc10
build(deps): bump jpeg-decoder from 0.1.19 to 0.1.20
...
Bumps [jpeg-decoder](https://github.com/image-rs/jpeg-decoder ) from 0.1.19 to 0.1.20.
- [Release notes](https://github.com/image-rs/jpeg-decoder/releases )
- [Changelog](https://github.com/image-rs/jpeg-decoder/blob/master/CHANGELOG.md )
- [Commits](https://github.com/image-rs/jpeg-decoder/compare/v0.1.19...v0.1.20 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-04 15:29:45 -07:00
Mike Welsh
7b4045f32b
core: Remove some unneccessary `take` calls in tag functions
2020-07-03 18:52:26 -07:00
Mike Welsh
08569ae979
core: Limit tag parsing to slice of tag data
2020-07-03 18:52:26 -07:00
Nathan Adams
c50c835790
avm1: Made Executable::Action take in a Gc to Avm1Function, reducing the size of the struct significantly
2020-07-03 18:47:34 -07:00
Nathan Adams
c4980d0bf5
core: Make XMLName::node_name return Cow<str>. It's not always owned, and we don't always need it to be.
2020-07-03 17:30:59 -07:00
Nathan Adams
c036e2cf88
avm1: Made f64_to_string return Cow<str> instead of String, as we sometimes return static values
2020-07-03 17:30:59 -07:00
Nathan Adams
938d644d7d
core: Made PropertyMap::insert take &str instead of String, as ownership isn't always needed
2020-07-03 17:30:59 -07:00
Nathan Adams
fb84999778
core: Made VacantEntry store a &str instead of a String, avoiding allocation until insertation is requested
2020-07-03 17:30:59 -07:00
Nathan Adams
f4921fad45
core: Made PropertyMap::entry take &str instead of String. We often don't need ownership here.
2020-07-03 17:30:59 -07:00
Nathan Adams
b5c06be8a2
avm1: Anonymous function names for debugging when not in debug mode
2020-07-03 17:24:20 -07:00
Nathan Adams
51321713b5
avm1: Show stack frame with the avm_debug feature
2020-07-03 17:24:20 -07:00
Nathan Adams
c976cf8efb
avm1: Replace action.avm() with activation.avm to help with borrow checker in next commit
2020-07-03 17:24:20 -07:00
Mike Welsh
07814fdf53
tests: Add test for Error
2020-07-02 20:58:01 -07:00
Jon Pacheco
48c65f02a1
avm1: Implement Error object (see #251 )
2020-07-02 20:58:01 -07:00
Adrian Wielgosik
301d696670
Add a fast path for ASCII case conversions
2020-07-02 12:48:50 -07:00
Mike Welsh
3a4d432645
tests: Edit textfield_variable test for #777
2020-07-02 01:29:41 -07:00
Mike Welsh
dd32acd8fc
avm1: Empty text field does not initialize variable binding
...
If a text field with a variable binding is placed on the stage,
usually the variable is initialized with the initial text. However,
if the text field is empty, the variable remains undefined.
Fixes #777 .
2020-07-02 01:29:41 -07:00
Mike Welsh
b05da5ef0f
avm1: CastOp fails for primitive values
2020-07-01 17:30:56 -07:00
Nathan Adams
d86761db5d
avm1: Implement try {..} catch {..} finally {..} - #731
2020-07-01 17:30:56 -07:00
Nathan Adams
7c0b0a7a57
avm1: Fix instanceof checks with primitives
2020-07-01 16:36:54 -07:00
Nathan Adams
d1732dd3d6
avm1: Returning from with{} should return from the parent activation
2020-07-01 16:21:43 -07:00
Mike Welsh
4b4370b90d
avm: Refactor Avm1, move execution to StackFrame (merge #767 )
...
AVM1 refactoring: moving execution from Avm1 to StackFrame
2020-07-01 15:56:09 -07:00
Nathan Adams
8bc3eedc43
avm1: Rename StackFrame to Activation now that they're merged
2020-07-02 00:09:43 +02:00
dependabot-preview[bot]
41e262d745
build(deps): bump libflate from 1.0.1 to 1.0.2
...
Bumps [libflate](https://github.com/sile/libflate ) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/sile/libflate/releases )
- [Commits](https://github.com/sile/libflate/compare/1.0.1...1.0.2 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-01 11:43:31 -07:00
Nathan Adams
9b66b496d0
avm1: Fix double-borrow when calling a getter that calls another method
2020-07-01 18:53:16 +02:00
dependabot-preview[bot]
aa9100395f
build(deps): bump downcast-rs from 1.1.1 to 1.2.0
...
Bumps [downcast-rs](https://github.com/marcianx/downcast-rs ) from 1.1.1 to 1.2.0.
- [Release notes](https://github.com/marcianx/downcast-rs/releases )
- [Changelog](https://github.com/marcianx/downcast-rs/blob/master/CHANGELOG.md )
- [Commits](https://github.com/marcianx/downcast-rs/compare/v1.1.1...v1.2.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-30 17:32:47 -07:00
Nathan Adams
987375299b
avm1: Replace 'run_in_avm' with just building a StackFrame object, letting Rust borrowchecker do our stack management for us
2020-06-30 21:57:51 +02:00
Nathan Adams
47a806a5ee
avm1: Removed errors that are no longer possible to run into
2020-06-30 21:28:32 +02:00
Nathan Adams
a989aa235a
avm1: We don't need to lock StackFrames anymore, the borrow checker will steer us right
2020-06-30 21:26:57 +02:00
Nathan Adams
2288919663
avm1: We don't need to store data in StackFrame, it's only used when actually running data
2020-06-30 21:24:46 +02:00
Nathan Adams
45c3967deb
avm1: Merge Activation into StackFrame
2020-06-30 21:08:42 +02:00
Nathan Adams
d889b98043
avm1: Merge Activation::from_function and Activation::from_action as they're identical
2020-06-30 20:34:05 +02:00
Nathan Adams
6e4dd506da
avm1: Activation doesn't need to be in a GcCell
2020-06-30 20:31:49 +02:00
Nathan Adams
4d24bc7f09
avm1: Removed pc from Activation, it's no longer needed
2020-06-30 19:42:18 +02:00
Nathan Adams
3e9c380ba1
avm1: Remove is_function from Activation, it's no longer needed
2020-06-30 19:40:21 +02:00
Nathan Adams
ec4affcf10
avm1: Use child activations when already running from another activation
2020-06-29 10:13:59 +02:00
Nathan Adams
aaa082fb60
avm1: Replace run_with_stack_frame with run_in_avm
2020-06-29 10:13:57 +02:00
Nathan Adams
0dd2ece371
avm1: Introduce parents to StackFrame, and move run_activation from avm1 to StackFrame
2020-06-29 10:12:17 +02:00