Skip to content

Commit 0f1b72e

Browse files
Lord-McSweeneyLord-McSweeney
Lord-McSweeney
authored andcommitted
avm2: Simplify default domain memory creation in Domain::init_default_domain_memory
1 parent 64167e2 commit 0f1b72e

File tree

2 files changed

+9
-17
lines changed

2 files changed

+9
-17
lines changed

core/src/avm2/domain.rs

+6-13
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
use std::cell::Ref;
44

55
use crate::avm2::activation::Activation;
6+
use crate::avm2::bytearray::ByteArrayStorage;
67
use crate::avm2::object::{ByteArrayObject, TObject};
78
use crate::avm2::property_map::PropertyMap;
89
use crate::avm2::script::Script;
@@ -393,16 +394,10 @@ impl<'gc> Domain<'gc> {
393394
self,
394395
activation: &mut Activation<'_, 'gc>,
395396
) -> Result<(), Error<'gc>> {
396-
let bytearray_class = activation.avm2().classes().bytearray;
397+
let initial_data = vec![0; MIN_DOMAIN_MEMORY_LENGTH];
398+
let storage = ByteArrayStorage::from_vec(initial_data);
397399

398-
let domain_memory = bytearray_class
399-
.construct(activation, &[])?
400-
.as_object()
401-
.unwrap();
402-
domain_memory
403-
.as_bytearray_mut()
404-
.unwrap()
405-
.set_length(MIN_DOMAIN_MEMORY_LENGTH);
400+
let domain_memory = ByteArrayObject::from_storage(activation, storage)?;
406401

407402
let mut write = self.0.write(activation.gc());
408403

@@ -415,10 +410,8 @@ impl<'gc> Domain<'gc> {
415410
"Already initialized domain memory!"
416411
);
417412

418-
let bytearray = domain_memory.as_bytearray_object().unwrap();
419-
420-
write.domain_memory = Some(bytearray);
421-
write.default_domain_memory = Some(bytearray);
413+
write.domain_memory = Some(domain_memory);
414+
write.default_domain_memory = Some(domain_memory);
422415

423416
Ok(())
424417
}

core/src/avm2/object/bytearray_object.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,17 @@ impl<'gc> ByteArrayObject<'gc> {
8585
pub fn from_storage(
8686
activation: &mut Activation<'_, 'gc>,
8787
bytes: ByteArrayStorage,
88-
) -> Result<Object<'gc>, Error<'gc>> {
88+
) -> Result<ByteArrayObject<'gc>, Error<'gc>> {
8989
let class = activation.avm2().classes().bytearray;
9090
let base = ScriptObjectData::new(class);
9191

92-
let instance: Object<'gc> = ByteArrayObject(Gc::new(
92+
let instance = ByteArrayObject(Gc::new(
9393
activation.gc(),
9494
ByteArrayObjectData {
9595
base,
9696
storage: RefCell::new(bytes),
9797
},
98-
))
99-
.into();
98+
));
10099

101100
class.call_init(instance.into(), &[], activation)?;
102101

0 commit comments

Comments
 (0)