David Wendt
fd275bdcf3
Implement constant slots and traits.
...
Class and Function traits now generate const slots, too.
2020-07-13 17:43:33 -04:00
David Wendt
412c3d8489
Implement `Function` traits.
2020-07-13 17:43:29 -04:00
David Wendt
af70024f62
Implement slot traits.
2020-07-13 17:43:28 -04:00
David Wendt
200c10b4a2
Classes can fit in slots, so let's stick them in there.
2020-07-13 17:43:27 -04:00
David Wendt
ebcfee4676
Add specific error messages for unresolvable super classes
2020-07-13 17:43:27 -04:00
David Wendt
362294181f
Implement constant pool default values (index 0).
...
All constant pools in an ABC file are actually numbered starting from one; there's an implicit 0 entry not stored in the file that the runtime is expected to retrieve when pulling constants from the pool.
The AVM2/ABC spec only mentions this in passing.
2020-07-13 17:43:27 -04:00
David Wendt
e1916519dd
Add debug for trait installs
2020-07-13 17:43:26 -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
12e9fbbffb
Impl virtual property slots
2020-07-13 17:43:22 -04:00
David Wendt
cf490bedfb
Unstub `proto`.
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
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
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
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