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