avm2: Make TObject.install_instance_slots take a MutationContext instead of an Activation
This commit is contained in:
parent
34156cc6d1
commit
932aa8cd90
|
@ -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.
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
||||||
|
|
|
@ -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())
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
||||||
|
|
|
@ -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)?;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue