David Wendt
3329e2a965
avm2: Use FNV hashes for property lookup.
2021-12-02 16:30:21 -07:00
David Wendt
769c45add5
avm2: Make `QName` a copy type.
2021-12-02 16:30:21 -07:00
David Wendt
d53abfebf4
avm2: Also preresolve all class traits, too.
2021-12-02 16:30:21 -07:00
David Wendt
44162ae698
avm2: Don't clone the multiname set on each lookup
2021-12-02 16:30:21 -07:00
David Wendt
3a7dd48c81
avm2: Build a flattened traits list per class and use that in lieu of a full trait lookup.
2021-12-02 16:30:21 -07:00
David Wendt
722dd6aabf
avm2: Refactor multiname resolution to take advantage of the new value storage structure.
2021-12-02 16:30:21 -07:00
David Wendt
c99231b610
avm2: Index the property map by local name and bucket all namespaces together into a single list.
2021-12-02 16:30:21 -07:00
David Wendt
0bc2ddfc7b
avm2: Remove prototype lookups from `resolve_any`
2021-12-02 16:30:21 -07:00
David Wendt
d83a7c909c
avm2: Don't scan the prototype for each multiname check.
2021-12-02 16:30:21 -07:00
Moulins
6bd3c62195
avm1: Remove unnecessary clones in shared_object::recursive_deserialize_json
2021-12-02 07:12:22 +02:00
dependabot[bot]
7d1ac9d26b
build(deps): bump syn from 1.0.81 to 1.0.82
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.81 to 1.0.82.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.81...1.0.82 )
---
updated-dependencies:
- dependency-name: syn
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-11-29 23:04:42 +02:00
David Wendt
fa179dc63f
avm2: Unpublish a bunch of primclass methods
2021-11-28 18:40:21 -07:00
David Wendt
6d48126124
avm2: And, finally, `uint`.
2021-11-28 18:40:21 -07:00
David Wendt
640763bfda
avm2: Also do the same for `int`
2021-11-28 18:40:21 -07:00
David Wendt
593158cb04
avm2: Also allow calling `Number` methods on the prototype in the `public` namespace.
2021-11-28 18:40:21 -07:00
David Wendt
6bfca1af5f
avm2: Expose `Boolean` methods in the `public` namespace via prototypes.
2021-11-28 18:40:21 -07:00
David Wendt
3e8f13b70a
avm2: `Number.MIN_VALUE` is the machine epsilon, not the lowest possible finite value.
2021-11-28 18:40:21 -07:00
David Wendt
7569994f1f
avm2: Impl `Boolean.toString` and `Boolean.valueOf`.
2021-11-28 18:40:21 -07:00
David Wendt
aa01a682e1
avm2: Implement `uint`'s various formatting methods, too.
2021-11-28 18:40:21 -07:00
David Wendt
e43d18f7b0
avm2: Impl `int` versions of `toFixed`, `toString`, `toExponential`, and `toPrecision`
2021-11-28 18:40:21 -07:00
David Wendt
cabfe5e20c
avm2: All documented primitive class methods are in the AS3 namespace.
2021-11-28 18:40:21 -07:00
David Wendt
9e62b05157
avm2: Implement `Number.AS3::toString` and `Number.AS3::valueOf`.
...
This method has an odd flaw that we don't emulate yet. Actually, two:
1. Precision limits that are specific to the chosen radix
2. Occasional and intermittent corruption in the resulting 0 padding; usually manifesting as `x`, `W`, or `°` characters
The first could be emulated, but I've chosen not to... because the second thing listed not only isn't really possible to emulate, but actively prohibits approx-testing the results. So I'm marking the test as ignored and hoping no movies actually rely on the precision limits in `toString`.
2021-11-28 18:40:21 -07:00
David Wendt
4a09dfa3d0
avm2: Implement `Number.toFixed` and `Number.toPrecision`
2021-11-28 18:40:21 -07:00
David Wendt
55a7a1882d
avm2: Implement `Number.toExponential`
2021-11-28 18:40:21 -07:00
David Wendt
16597e0d7b
avm2: Fill out class constants for `uint`, `int`, and `Number`.
2021-11-28 18:40:21 -07:00
relrelb
2117ad8a4c
html: Ignore <p>, <li> and <br> tags in non-multiline mode
2021-11-28 22:57:48 +02:00
relrelb
9cad582e8b
html: Do not trim text in `FormatSpans::from_html`
...
Flash preserves spaces before and after text.
But since now `quick-xml` might emit empty `Text` events, those need
to be explicitly ignored in order to retain the same text format across
tags.
2021-11-28 22:57:48 +02:00
relrelb
a027d932e4
html: Use `as_ref()` instead of `clone()`
...
This should improve performance a bit.
2021-11-28 22:57:48 +02:00
Varun Ramesh
7c87f35d8d
avm2: Implement `flash.display.PixelSnapping` ( #5718 )
...
* Add flash.display.PixelSnapping enum class
* Run 'cargo format --all'
* Add 'final' class attribute
2021-11-28 07:31:39 +02:00
Moulins
9701b817f5
core: Replace WStr<'_> and WStrMut<'_> by a single DST type WStr
2021-11-27 11:20:47 -07:00
Moulins
fd8bdeb1a8
core: improve f64's FromWStr impl
...
This avoids converting the string to UTF8 if it can't possibly
be a float
2021-11-27 11:20:47 -07:00
Moulins
ee326e31b7
core: Reduce allocations in AvmString::new_utf8
...
Also remove some useless back-and-forth conversions between
AvmString and String
2021-11-27 11:20:47 -07:00
Moulins
fa30e1bc43
chore: rename AvmString::{new -> new_utf8, new_ucs2 -> new}
2021-11-27 11:20:47 -07:00
Moulins
45fe1e86ae
core: remove AvmString::as_str, and the extra UTF8 String inside
2021-11-27 11:20:47 -07:00
Moulins
e24af59197
core: remove last instances of AvmString::as_str
2021-11-27 11:20:47 -07:00
Moulins
824263d2bc
core: adapt TextField, Font & Html handling code to use WStr
2021-11-27 11:20:47 -07:00
Moulins
f149c9efce
core: remove some AvmString::as_str calls
2021-11-27 11:20:47 -07:00
Moulins
053758d77c
avm2: use WString in QName methods
2021-11-27 11:20:47 -07:00
Moulins
5ca911209b
core: implement WStr::join
2021-11-27 11:20:47 -07:00
Moulins
c496f81f13
avm1: remove AvmString::as_str usage in activation.rs and movie_clip.rs
2021-11-27 11:20:47 -07:00
Moulins
87400b829d
core: use WStrings for display object's frame and scene labels
2021-11-27 11:20:47 -07:00
Moulins
84b4e33036
core: implement FromWStr for various enum types
2021-11-27 11:20:47 -07:00
Moulins
b894d0c97f
avm1: adapt parseInt, escape & unescape to use WStr API
2021-11-27 11:20:47 -07:00
Moulins
c2349ae012
xml: use AvmString in xml code
...
This has the nice side-effect of reducing string cloning, because we can
just pass AvmStrings around instead.
2021-11-27 11:20:47 -07:00
Moulins
5db23ddbf3
avm2: use WStr in date parsing logic
2021-11-27 11:20:47 -07:00
Moulins
f49ce49d28
core: add FromWStr trait and WStr::parse
2021-11-27 11:20:47 -07:00
Moulins
8863b54db0
avm1: don't use &str for activation's path & variable logic
2021-11-27 11:20:47 -07:00
Moulins
1d9d7e6942
avm1: don't use &str methods when parsing enum parameters in MovieClip
2021-11-27 11:20:47 -07:00
Moulins
d850085d2b
avm1: partially rewrite Value::primitive_as_number
2021-11-27 11:20:47 -07:00
Moulins
4a09088d42
avm2: rewrite regexp module to not rely on AvmString::as_str
...
This is a little tricky, because we have to map the utf8 indices
returned by the regex engine to utf16 indices usable by Ruffle.
To limit the impact on performance, the regex, the string we're
currently matching on, and the last known (utf8, utf16) positions
are cached, avoiding extra utf8 conversions in common use cases
where a single string is repeatedly searched with increasing
`lastIndex`.
2021-11-27 11:20:47 -07:00