avm1: Remove unnecessary calls to create_bare_object
In favor of ScriptObject::object and ScriptObject::array, which always succeed.
This commit is contained in:
parent
aeb8902f8c
commit
7717b97027
|
@ -408,8 +408,10 @@ pub fn clone<'gc>(
|
|||
) -> Result<Value<'gc>, Error<'gc>> {
|
||||
if let Some(bitmap_data) = this.as_bitmap_data_object() {
|
||||
if !bitmap_data.disposed() {
|
||||
let prototype = activation.context.avm1.prototypes.bitmap_data;
|
||||
let new_bitmap_data = prototype.create_bare_object(activation, prototype)?;
|
||||
let new_bitmap_data = BitmapDataObject::empty_object(
|
||||
activation.context.gc_context,
|
||||
Some(activation.context.avm1.prototypes.bitmap_data),
|
||||
);
|
||||
|
||||
new_bitmap_data
|
||||
.as_bitmap_data_object()
|
||||
|
@ -1132,8 +1134,10 @@ pub fn load_bitmap<'gc>(
|
|||
|
||||
if let Some(Character::Bitmap(bitmap_object)) = character {
|
||||
if let Some(bitmap) = renderer.get_bitmap_pixels(bitmap_object.bitmap_handle()) {
|
||||
let prototype = activation.context.avm1.prototypes.bitmap_data;
|
||||
let new_bitmap_data = prototype.create_bare_object(activation, prototype)?;
|
||||
let new_bitmap_data = BitmapDataObject::empty_object(
|
||||
activation.context.gc_context,
|
||||
Some(activation.context.avm1.prototypes.bitmap_data),
|
||||
);
|
||||
|
||||
let pixels: Vec<i32> = bitmap.data.into();
|
||||
new_bitmap_data
|
||||
|
|
|
@ -25,8 +25,10 @@ pub fn constructor<'gc>(
|
|||
|
||||
this.set("onSelect", callback.into(), activation)?;
|
||||
|
||||
let prototype = activation.context.avm1.prototypes.object;
|
||||
let built_in_items = prototype.create_bare_object(activation, prototype)?;
|
||||
let built_in_items = ScriptObject::object(
|
||||
activation.context.gc_context,
|
||||
Some(activation.context.avm1.prototypes.object),
|
||||
);
|
||||
|
||||
built_in_items.set("print", true.into(), activation)?;
|
||||
built_in_items.set("forward_back", true.into(), activation)?;
|
||||
|
|
|
@ -4,7 +4,7 @@ use crate::avm1::function::{Executable, FunctionObject};
|
|||
use crate::avm1::object::shared_object::SharedObject;
|
||||
use crate::avm1::property::Attribute;
|
||||
use crate::avm1::property_decl::{define_properties_on, Declaration};
|
||||
use crate::avm1::{AvmString, Object, TObject, Value};
|
||||
use crate::avm1::{AvmString, Object, ScriptObject, TObject, Value};
|
||||
use crate::avm_warn;
|
||||
use crate::display_object::TDisplayObject;
|
||||
use flash_lso::types::Value as AmfValue;
|
||||
|
@ -158,8 +158,10 @@ fn deserialize_value<'gc>(activation: &mut Activation<'_, 'gc, '_>, val: &AmfVal
|
|||
}
|
||||
AmfValue::Object(elements, _) => {
|
||||
// Deserialize Object
|
||||
let obj_proto = activation.context.avm1.prototypes.object;
|
||||
if let Ok(obj) = obj_proto.create_bare_object(activation, obj_proto) {
|
||||
let obj = ScriptObject::object(
|
||||
activation.context.gc_context,
|
||||
Some(activation.context.avm1.prototypes.object),
|
||||
);
|
||||
for entry in elements {
|
||||
let value = deserialize_value(activation, entry.value());
|
||||
obj.define_value(
|
||||
|
@ -170,9 +172,6 @@ fn deserialize_value<'gc>(activation: &mut Activation<'_, 'gc, '_>, val: &AmfVal
|
|||
);
|
||||
}
|
||||
obj.into()
|
||||
} else {
|
||||
Value::Undefined
|
||||
}
|
||||
}
|
||||
AmfValue::Date(time, _) => {
|
||||
let date_proto = activation.context.avm1.prototypes.date_constructor;
|
||||
|
@ -210,8 +209,10 @@ fn deserialize_lso<'gc>(
|
|||
activation: &mut Activation<'_, 'gc, '_>,
|
||||
lso: &Lso,
|
||||
) -> Result<Object<'gc>, Error<'gc>> {
|
||||
let obj_proto = activation.context.avm1.prototypes.object;
|
||||
let obj = obj_proto.create_bare_object(activation, obj_proto)?;
|
||||
let obj = ScriptObject::object(
|
||||
activation.context.gc_context,
|
||||
Some(activation.context.avm1.prototypes.object),
|
||||
);
|
||||
|
||||
for child in &lso.body {
|
||||
obj.define_value(
|
||||
|
@ -222,7 +223,7 @@ fn deserialize_lso<'gc>(
|
|||
);
|
||||
}
|
||||
|
||||
Ok(obj)
|
||||
Ok(obj.into())
|
||||
}
|
||||
|
||||
/// Deserialize a Json shared object element into a Value
|
||||
|
@ -255,8 +256,10 @@ fn deserialize_object_json<'gc>(
|
|||
activation: &mut Activation<'_, 'gc, '_>,
|
||||
) -> Value<'gc> {
|
||||
// Deserialize Object
|
||||
let obj_proto = activation.context.avm1.prototypes.object;
|
||||
if let Ok(obj) = obj_proto.create_bare_object(activation, obj_proto) {
|
||||
let obj = ScriptObject::object(
|
||||
activation.context.gc_context,
|
||||
Some(activation.context.avm1.prototypes.object),
|
||||
);
|
||||
for entry in json_obj.iter() {
|
||||
let value = recursive_deserialize_json(entry.1.clone(), activation);
|
||||
obj.define_value(
|
||||
|
@ -267,9 +270,6 @@ fn deserialize_object_json<'gc>(
|
|||
);
|
||||
}
|
||||
obj.into()
|
||||
} else {
|
||||
Value::Undefined
|
||||
}
|
||||
}
|
||||
|
||||
/// Deserialize an Array and any children from a JSON object
|
||||
|
@ -447,8 +447,11 @@ pub fn get_local<'gc>(
|
|||
|
||||
if data == Value::Undefined {
|
||||
// No data; create a fresh data object.
|
||||
let prototype = activation.context.avm1.prototypes.object;
|
||||
data = prototype.create_bare_object(activation, prototype)?.into();
|
||||
data = ScriptObject::object(
|
||||
activation.context.gc_context,
|
||||
Some(activation.context.avm1.prototypes.object),
|
||||
)
|
||||
.into();
|
||||
}
|
||||
|
||||
this.define_value(
|
||||
|
|
Loading…
Reference in New Issue