avm1: Replace `set` + `set_attributes` with `define_value`
This commit is contained in:
parent
c609fa937d
commit
3576a199cd
|
@ -1132,20 +1132,18 @@ impl<'a, 'gc, 'gc_context> Activation<'a, 'gc, 'gc_context> {
|
||||||
let super_prototype = superclass.get("prototype", self)?.coerce_to_object(self);
|
let super_prototype = superclass.get("prototype", self)?.coerce_to_object(self);
|
||||||
let sub_prototype = super_prototype.create_bare_object(self, super_prototype)?;
|
let sub_prototype = super_prototype.create_bare_object(self, super_prototype)?;
|
||||||
|
|
||||||
sub_prototype.set("constructor", superclass.into(), self)?;
|
sub_prototype.define_value(
|
||||||
sub_prototype.set_attributes(
|
|
||||||
self.context.gc_context,
|
self.context.gc_context,
|
||||||
Some("constructor"),
|
"constructor",
|
||||||
|
superclass.into(),
|
||||||
Attribute::DONT_ENUM,
|
Attribute::DONT_ENUM,
|
||||||
Attribute::empty(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
sub_prototype.set("__constructor__", superclass.into(), self)?;
|
sub_prototype.define_value(
|
||||||
sub_prototype.set_attributes(
|
|
||||||
self.context.gc_context,
|
self.context.gc_context,
|
||||||
Some("__constructor__"),
|
"__constructor__",
|
||||||
|
superclass.into(),
|
||||||
Attribute::DONT_ENUM,
|
Attribute::DONT_ENUM,
|
||||||
Attribute::empty(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
subclass.set("prototype", sub_prototype.into(), self)?;
|
subclass.set("prototype", sub_prototype.into(), self)?;
|
||||||
|
|
|
@ -576,20 +576,18 @@ impl<'gc> TObject<'gc> for FunctionObject<'gc> {
|
||||||
this: Object<'gc>,
|
this: Object<'gc>,
|
||||||
args: &[Value<'gc>],
|
args: &[Value<'gc>],
|
||||||
) -> Result<(), Error<'gc>> {
|
) -> Result<(), Error<'gc>> {
|
||||||
this.set("__constructor__", (*self).into(), activation)?;
|
this.define_value(
|
||||||
this.set_attributes(
|
|
||||||
activation.context.gc_context,
|
activation.context.gc_context,
|
||||||
Some("__constructor__"),
|
"__constructor__",
|
||||||
|
(*self).into(),
|
||||||
Attribute::DONT_ENUM,
|
Attribute::DONT_ENUM,
|
||||||
Attribute::empty(),
|
|
||||||
);
|
);
|
||||||
if activation.swf_version() < 7 {
|
if activation.swf_version() < 7 {
|
||||||
this.set("constructor", (*self).into(), activation)?;
|
this.define_value(
|
||||||
this.set_attributes(
|
|
||||||
activation.context.gc_context,
|
activation.context.gc_context,
|
||||||
Some("constructor"),
|
"constructor",
|
||||||
|
(*self).into(),
|
||||||
Attribute::DONT_ENUM,
|
Attribute::DONT_ENUM,
|
||||||
Attribute::empty(),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if let Some(exec) = &self.data.read().constructor {
|
if let Some(exec) = &self.data.read().constructor {
|
||||||
|
@ -618,20 +616,18 @@ impl<'gc> TObject<'gc> for FunctionObject<'gc> {
|
||||||
.coerce_to_object(activation);
|
.coerce_to_object(activation);
|
||||||
let this = prototype.create_bare_object(activation, prototype)?;
|
let this = prototype.create_bare_object(activation, prototype)?;
|
||||||
|
|
||||||
this.set("__constructor__", (*self).into(), activation)?;
|
this.define_value(
|
||||||
this.set_attributes(
|
|
||||||
activation.context.gc_context,
|
activation.context.gc_context,
|
||||||
Some("__constructor__"),
|
"__constructor__",
|
||||||
|
(*self).into(),
|
||||||
Attribute::DONT_ENUM,
|
Attribute::DONT_ENUM,
|
||||||
Attribute::empty(),
|
|
||||||
);
|
);
|
||||||
if activation.swf_version() < 7 {
|
if activation.swf_version() < 7 {
|
||||||
this.set("constructor", (*self).into(), activation)?;
|
this.define_value(
|
||||||
this.set_attributes(
|
|
||||||
activation.context.gc_context,
|
activation.context.gc_context,
|
||||||
Some("constructor"),
|
"constructor",
|
||||||
|
(*self).into(),
|
||||||
Attribute::DONT_ENUM,
|
Attribute::DONT_ENUM,
|
||||||
Attribute::empty(),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if let Some(exec) = &self.data.read().constructor {
|
if let Some(exec) = &self.data.read().constructor {
|
||||||
|
|
|
@ -27,14 +27,12 @@ pub fn constructor<'gc>(
|
||||||
// The target display object that this color will modify.
|
// The target display object that this color will modify.
|
||||||
let target = args.get(0).cloned().unwrap_or(Value::Undefined);
|
let target = args.get(0).cloned().unwrap_or(Value::Undefined);
|
||||||
// Set undocumented `target` property
|
// Set undocumented `target` property
|
||||||
this.set("target", target, activation)?;
|
this.define_value(
|
||||||
this.set_attributes(
|
|
||||||
activation.context.gc_context,
|
activation.context.gc_context,
|
||||||
Some("target"),
|
"target",
|
||||||
|
target,
|
||||||
Attribute::DONT_DELETE | Attribute::READ_ONLY | Attribute::DONT_ENUM,
|
Attribute::DONT_DELETE | Attribute::READ_ONLY | Attribute::DONT_ENUM,
|
||||||
Attribute::empty(),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
Ok(this.into())
|
Ok(this.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue