avm2: Make TObject.install_instance_slots take a MutationContext instead of an Activation

This commit is contained in:
Lord-McSweeney 2023-04-21 19:41:30 -07:00 committed by relrelb
parent 34156cc6d1
commit 932aa8cd90
21 changed files with 24 additions and 25 deletions

View File

@ -775,9 +775,8 @@ pub trait TObject<'gc>: 'gc + Collect + Debug + Into<Object<'gc>> + Clone + Copy
.install_const_slot_late(new_slot_id, value); .install_const_slot_late(new_slot_id, value);
} }
fn install_instance_slots(&mut self, activation: &mut Activation<'_, 'gc>) { fn install_instance_slots(&mut self, mc: MutationContext<'gc, '_>) {
self.base_mut(activation.context.gc_context) self.base_mut(mc).install_instance_slots();
.install_instance_slots();
} }
/// Call the object. /// Call the object.

View File

@ -73,7 +73,7 @@ impl<'gc> ArrayObject<'gc> {
ArrayObjectData { base, array }, ArrayObjectData { base, array },
)) ))
.into(); .into();
instance.install_instance_slots(activation); instance.install_instance_slots(activation.context.gc_context);
class.call_native_init(Some(instance), &[], activation)?; class.call_native_init(Some(instance), &[], activation)?;

View File

@ -63,7 +63,7 @@ impl<'gc> BitmapDataObject<'gc> {
)); ));
bitmap_data.init_object2(activation.context.gc_context, instance.into()); bitmap_data.init_object2(activation.context.gc_context, instance.into());
instance.install_instance_slots(activation); instance.install_instance_slots(activation.context.gc_context);
class.call_native_init(Some(instance.into()), &[], activation)?; class.call_native_init(Some(instance.into()), &[], activation)?;
Ok(instance.into()) Ok(instance.into())

View File

@ -63,7 +63,7 @@ impl<'gc> ByteArrayObject<'gc> {
}, },
)) ))
.into(); .into();
instance.install_instance_slots(activation); instance.install_instance_slots(activation.context.gc_context);
class.call_native_init(Some(instance), &[], activation)?; class.call_native_init(Some(instance), &[], activation)?;

View File

@ -825,7 +825,7 @@ impl<'gc> TObject<'gc> for ClassObject<'gc> {
let mut instance = instance_allocator(self, activation)?; let mut instance = instance_allocator(self, activation)?;
instance.install_instance_slots(activation); instance.install_instance_slots(activation.context.gc_context);
self.call_init(Some(instance), arguments, activation)?; self.call_init(Some(instance), arguments, activation)?;

View File

@ -42,7 +42,7 @@ impl<'gc> Context3DObject<'gc> {
}, },
)) ))
.into(); .into();
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
class.call_native_init(Some(this), &[], activation)?; class.call_native_init(Some(this), &[], activation)?;

View File

@ -63,7 +63,7 @@ impl<'gc> DomainObject<'gc> {
DomainObjectData { base, domain }, DomainObjectData { base, domain },
)) ))
.into(); .into();
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
// Note - we do *not* call the normal constructor, since that // Note - we do *not* call the normal constructor, since that
// creates a new domain using the system domain as a parent. // creates a new domain using the system domain as a parent.

View File

@ -35,7 +35,7 @@ impl<'gc> IndexBuffer3DObject<'gc> {
}, },
)) ))
.into(); .into();
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
class.call_native_init(Some(this), &[], activation)?; class.call_native_init(Some(this), &[], activation)?;

View File

@ -147,7 +147,7 @@ impl<'gc> LoaderInfoObject<'gc> {
}, },
)) ))
.into(); .into();
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
class.call_native_init(Some(this), &[], activation)?; class.call_native_init(Some(this), &[], activation)?;
@ -191,7 +191,7 @@ impl<'gc> LoaderInfoObject<'gc> {
}, },
)) ))
.into(); .into();
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
class.call_native_init(Some(this), &[], activation)?; class.call_native_init(Some(this), &[], activation)?;

View File

@ -64,7 +64,7 @@ impl<'gc> NamespaceObject<'gc> {
NamespaceObjectData { base, namespace }, NamespaceObjectData { base, namespace },
)) ))
.into(); .into();
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
class.call_native_init(Some(this), &[], activation)?; class.call_native_init(Some(this), &[], activation)?;

View File

@ -87,7 +87,7 @@ impl<'gc> PrimitiveObject<'gc> {
PrimitiveObjectData { base, primitive }, PrimitiveObjectData { base, primitive },
)) ))
.into(); .into();
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
//We explicitly DO NOT CALL the native initializers of primitives here. //We explicitly DO NOT CALL the native initializers of primitives here.
//If we did so, then those primitive initializers' method types would //If we did so, then those primitive initializers' method types would

View File

@ -34,7 +34,7 @@ impl<'gc> Program3DObject<'gc> {
}, },
)) ))
.into(); .into();
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
class.call_native_init(Some(this), &[], activation)?; class.call_native_init(Some(this), &[], activation)?;

View File

@ -66,7 +66,7 @@ impl<'gc> QNameObject<'gc> {
QNameObjectData { base, name }, QNameObjectData { base, name },
)) ))
.into(); .into();
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
Ok(this) Ok(this)
} }

View File

@ -62,7 +62,7 @@ impl<'gc> RegExpObject<'gc> {
RegExpObjectData { base, regexp }, RegExpObjectData { base, regexp },
)) ))
.into(); .into();
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
class.call_native_init(Some(this), &[], activation)?; class.call_native_init(Some(this), &[], activation)?;

View File

@ -88,7 +88,7 @@ impl<'gc> SoundChannelObject<'gc> {
position: 0.0, position: 0.0,
}, },
)); ));
sound_object.install_instance_slots(activation); sound_object.install_instance_slots(activation.context.gc_context);
class.call_native_init(Some(sound_object.into()), &[], activation)?; class.call_native_init(Some(sound_object.into()), &[], activation)?;

View File

@ -66,7 +66,7 @@ impl<'gc> StageObject<'gc> {
display_object: Some(display_object), display_object: Some(display_object),
}, },
)); ));
instance.install_instance_slots(activation); instance.install_instance_slots(activation.context.gc_context);
Ok(instance) Ok(instance)
} }
@ -101,7 +101,7 @@ impl<'gc> StageObject<'gc> {
display_object: Some(display_object), display_object: Some(display_object),
}, },
)); ));
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
// note: for Graphics, there's no need to call init. // note: for Graphics, there's no need to call init.

View File

@ -61,7 +61,7 @@ impl<'gc> TextFormatObject<'gc> {
TextFormatObjectData { base, text_format }, TextFormatObjectData { base, text_format },
)) ))
.into(); .into();
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
Ok(this) Ok(this)
} }

View File

@ -34,7 +34,7 @@ impl<'gc> TextureObject<'gc> {
}, },
)) ))
.into(); .into();
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
class.call_native_init(Some(this), &[], activation)?; class.call_native_init(Some(this), &[], activation)?;

View File

@ -80,7 +80,7 @@ impl<'gc> VectorObject<'gc> {
)) ))
.into(); .into();
object.install_instance_slots(activation); object.install_instance_slots(activation.context.gc_context);
Ok(object) Ok(object)
} }

View File

@ -36,7 +36,7 @@ impl<'gc> VertexBuffer3DObject<'gc> {
}, },
)) ))
.into(); .into();
this.install_instance_slots(activation); this.install_instance_slots(activation.context.gc_context);
class.call_native_init(Some(this), &[], activation)?; class.call_native_init(Some(this), &[], activation)?;

View File

@ -538,7 +538,7 @@ impl<'gc> Script<'gc> {
None, None,
&mut null_activation, &mut null_activation,
)?; )?;
globals.install_instance_slots(&mut null_activation); globals.install_instance_slots(context.gc_context);
Avm2::run_script_initializer(*self, context)?; Avm2::run_script_initializer(*self, context)?;